diff --git a/CHANGELOG.md b/CHANGELOG.md index fc1b9c15..6e64d185 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,10 @@ ## Changelog -### **HEAD -> main** 2022/02/07 mandic00@live.com +### **2.6.3** 2022/02/10 mandic00@live.com + + +### **origin/main** 2022/02/10 mandic00@live.com ### **2.6.2** 2022/02/07 mandic00@live.com diff --git a/dist/human.d.ts b/dist/human.d.ts index fca0ad10..121f5b21 100644 --- a/dist/human.d.ts +++ b/dist/human.d.ts @@ -167,6 +167,11 @@ export declare interface Config { * default: auto-detects to link to CDN `jsdelivr` when running in browser */ wasmPath: string; + /** Force WASM loader to use platform fetch + * + * default: auto-detects to link to CDN `jsdelivr` when running in browser + */ + wasmPlatformFetch: false; /** Print debug statements to console * * default: `true` diff --git a/dist/human.esm-nobundle.d.ts b/dist/human.esm-nobundle.d.ts index fca0ad10..121f5b21 100644 --- a/dist/human.esm-nobundle.d.ts +++ b/dist/human.esm-nobundle.d.ts @@ -167,6 +167,11 @@ export declare interface Config { * default: auto-detects to link to CDN `jsdelivr` when running in browser */ wasmPath: string; + /** Force WASM loader to use platform fetch + * + * default: auto-detects to link to CDN `jsdelivr` when running in browser + */ + wasmPlatformFetch: false; /** Print debug statements to console * * default: `true` diff --git a/dist/human.esm-nobundle.js b/dist/human.esm-nobundle.js index 1322a1e6..b9b93803 100644 --- a/dist/human.esm-nobundle.js +++ b/dist/human.esm-nobundle.js @@ -4,7 +4,7 @@ author: ' */ -var kt=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ar=Object.prototype.hasOwnProperty;var ir=(e,t,o)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Ze=(e,t)=>{for(var o in t)kt(e,o,{get:t[o],enumerable:!0})},Z=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of sr(t))!ar.call(e,n)&&(o||n!=="default")&&kt(e,n,{get:()=>t[n],enumerable:!(A=rr(t,n))||A.enumerable});return e};var w=(e,t,o)=>(ir(e,typeof t!="symbol"?t+"":t,o),o),yo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var ke=(e,t,o)=>(yo(e,t,"read from private field"),o?o.call(e):t.get(e)),Ee=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ze=(e,t,o,A)=>(yo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);function g(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function xo(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Et(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")Et(e[n],t[n],n,A);else{let s=e&&typeof e[n]!="undefined";s||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let a=e&&typeof e[n]==typeof t[n];s&&!a&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&g("invalid configuration",A),A}function o0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let s=o[n],a=A[n];Array.isArray(s)&&Array.isArray(a)?o[n]=s.concat(...a):t(s)&&t(a)?o[n]=o0(s,a):o[n]=a}),o),{})}var Y0={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var r={};Ze(r,{GraphModel:()=>zt,Tensor:()=>se,version:()=>je});Z(r,es);Z(r,ts);import*as es from"@tensorflow/tfjs/dist/index.js";import*as ts from"@tensorflow/tfjs-backend-webgl/dist/index.js";import{Tensor as se}from"@tensorflow/tfjs/dist/index.js";import{GraphModel as zt}from"@tensorflow/tfjs-converter/dist/index";var lr="3.13.0",yr="3.13.0",xr="3.13.0",cr="3.13.0",dr="3.13.0",fr="3.13.0",mr="3.13.0",pr="3.13.0",je={tfjs:lr,"tfjs-core":yr,"tfjs-data":xr,"tfjs-layers":cr,"tfjs-converter":dr,"tfjs-backend-cpu":fr,"tfjs-backend-webgl":mr,"tfjs-backend-wasm":pr};var co=` +var kt=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var ar=Object.prototype.hasOwnProperty;var ir=(e,t,o)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Ze=(e,t)=>{for(var o in t)kt(e,o,{get:t[o],enumerable:!0})},Z=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of sr(t))!ar.call(e,n)&&(o||n!=="default")&&kt(e,n,{get:()=>t[n],enumerable:!(A=rr(t,n))||A.enumerable});return e};var w=(e,t,o)=>(ir(e,typeof t!="symbol"?t+"":t,o),o),yo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var ke=(e,t,o)=>(yo(e,t,"read from private field"),o?o.call(e):t.get(e)),Ee=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ze=(e,t,o,A)=>(yo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);function g(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function xo(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var P=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Et(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")Et(e[n],t[n],n,A);else{let s=e&&typeof e[n]!="undefined";s||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let a=e&&typeof e[n]==typeof t[n];s&&!a&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&g("invalid configuration",A),A}function o0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let s=o[n],a=A[n];Array.isArray(s)&&Array.isArray(a)?o[n]=s.concat(...a):t(s)&&t(a)?o[n]=o0(s,a):o[n]=a}),o),{})}var Y0={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var r={};Ze(r,{GraphModel:()=>zt,Tensor:()=>se,version:()=>je});Z(r,es);Z(r,ts);import*as es from"@tensorflow/tfjs/dist/index.js";import*as ts from"@tensorflow/tfjs-backend-webgl/dist/index.js";import{Tensor as se}from"@tensorflow/tfjs/dist/index.js";import{GraphModel as zt}from"@tensorflow/tfjs-converter/dist/index";var lr="3.13.0",yr="3.13.0",xr="3.13.0",cr="3.13.0",dr="3.13.0",fr="3.13.0",mr="3.13.0",pr="3.13.0",je={tfjs:lr,"tfjs-core":yr,"tfjs-data":xr,"tfjs-layers":cr,"tfjs-converter":dr,"tfjs-backend-cpu":fr,"tfjs-backend-webgl":mr,"tfjs-backend-wasm":pr};var co=` precision highp float; attribute vec2 pos; attribute vec2 uv; @@ -96,7 +96,7 @@ var kt=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Objec c31 * m[6] + c32 * m[7] + c33 * m[8]; gl_FragColor.a = c22.a; } -`;var jt=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,s)=>(o[s]=0,n))},bo=class{constructor(t,o,A){w(this,"uniform",{});w(this,"attribute",{});w(this,"gl");w(this,"id");w(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(g(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(g("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),s=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!s)){if(!this.id){g("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,s),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){g(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),jt(o,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=this.gl.getAttribLocation(this.id,a);jt(o,"uniform",this.uniform),jt(A,"uniform",this.uniform);for(let a in this.uniform)this.uniform[a]=this.gl.getUniformLocation(this.id,a)}}};function go(){let e=0,t=null,o=!1,A=-1,n=[null,null],s=[],a=null,i=null,x=s0(100,100),d={},l={INTERMEDIATE:1},y=x.getContext("webgl");if(this.gl=y,!y){g("filter: cannot get webgl context");return}function c(P,p){if(!(P===x.width&&p===x.height)){if(x.width=P,x.height=p,!a){let u=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);a=y.createBuffer(),y.bindBuffer(y.ARRAY_BUFFER,a),y.bufferData(y.ARRAY_BUFFER,u,y.STATIC_DRAW),y.pixelStorei(y.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}y.viewport(0,0,x.width,x.height),n=[null,null]}}function f(P,p){let u=y.createFramebuffer();y.bindFramebuffer(y.FRAMEBUFFER,u);let E=y.createRenderbuffer();y.bindRenderbuffer(y.RENDERBUFFER,E);let W=y.createTexture();return y.bindTexture(y.TEXTURE_2D,W),y.texImage2D(y.TEXTURE_2D,0,y.RGBA,P,p,0,y.RGBA,y.UNSIGNED_BYTE,null),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MAG_FILTER,y.LINEAR),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MIN_FILTER,y.LINEAR),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_S,y.CLAMP_TO_EDGE),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_T,y.CLAMP_TO_EDGE),y.framebufferTexture2D(y.FRAMEBUFFER,y.COLOR_ATTACHMENT0,y.TEXTURE_2D,W,0),y.bindTexture(y.TEXTURE_2D,null),y.bindFramebuffer(y.FRAMEBUFFER,null),{fbo:u,texture:W}}function h(P){return n[P]=n[P]||f(x.width,x.height),n[P]}function m(P=0){if(!i)return;let p=null,u=null,E=!1;e===0?p=t:p=h(A).texture||null,e++,o&&!(P&l.INTERMEDIATE)?(u=null,E=e%2===0):(A=(A+1)%2,u=h(A).fbo||null),y.bindTexture(y.TEXTURE_2D,p),y.bindFramebuffer(y.FRAMEBUFFER,u),y.uniform1f(i.uniform.flipY,E?-1:1),y.drawArrays(y.TRIANGLES,0,6)}function v(P){if(d[P])return i=d[P],y.useProgram((i?i.id:null)||null),i;if(i=new bo(y,co,P),!i)return g("filter: could not get webgl program"),null;let p=Float32Array.BYTES_PER_ELEMENT,u=4*p;return y.enableVertexAttribArray(i.attribute.pos),y.vertexAttribPointer(i.attribute.pos,2,y.FLOAT,!1,u,0*p),y.enableVertexAttribArray(i.attribute.uv),y.vertexAttribPointer(i.attribute.uv,2,y.FLOAT,!1,u,2*p),d[P]=i,i}let b={colorMatrix:P=>{let p=new Float32Array(P);p[4]/=255,p[9]/=255,p[14]/=255,p[19]/=255;let u=p[18]===1&&p[3]===0&&p[8]===0&&p[13]===0&&p[15]===0&&p[16]===0&&p[17]===0&&p[19]===0?mo:fo,E=v(u);!E||(y.uniform1fv(E.uniform.m,p),m())},brightness:P=>{let p=(P||0)+1;b.colorMatrix([p,0,0,0,0,0,p,0,0,0,0,0,p,0,0,0,0,0,1,0])},saturation:P=>{let p=(P||0)*2/3+1,u=(p-1)*-.5;b.colorMatrix([p,u,u,0,0,u,p,u,0,0,u,u,p,0,0,0,0,0,1,0])},desaturate:()=>{b.saturation(-1)},contrast:P=>{let p=(P||0)+1,u=-128*(p-1);b.colorMatrix([p,0,0,0,u,0,p,0,0,u,0,0,p,0,u,0,0,0,1,0])},negative:()=>{b.contrast(-2)},hue:P=>{P=(P||0)/180*Math.PI;let p=Math.cos(P),u=Math.sin(P),E=.213,W=.715,C=.072;b.colorMatrix([E+p*(1-E)+u*-E,W+p*-W+u*-W,C+p*-C+u*(1-C),0,0,E+p*-E+u*.143,W+p*(1-W)+u*.14,C+p*-C+u*-.283,0,0,E+p*-E+u*-(1-E),W+p*-W+u*W,C+p*(1-C)+u*C,0,0,0,0,0,1,0])},desaturateLuminance:()=>{b.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{b.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{b.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{b.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{b.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{b.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{b.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{b.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:P=>{let p=new Float32Array(P),u=1/x.width,E=1/x.height,W=v(ho);!W||(y.uniform1fv(W.uniform.m,p),y.uniform2f(W.uniform.px,u,E),m())},detectEdges:()=>{b.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{b.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{b.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:P=>{let p=P||1;b.convolution.call(this,[0,-1*p,0,-1*p,1+4*p,-1*p,0,-1*p,0])},emboss:P=>{let p=P||1;b.convolution.call(this,[-2*p,-1*p,0,-1*p,1,1*p,0,1*p,2*p])},blur:P=>{let p=P/7/x.width,u=P/7/x.height,E=v(uo);!E||(y.uniform2f(E.uniform.px,0,u),m(l.INTERMEDIATE),y.uniform2f(E.uniform.px,p,0),m())},pixelate:P=>{let p=P/x.width,u=P/x.height,E=v(po);!E||(y.uniform2f(E.uniform.size,p,u),m())}};this.add=function(P){let p=Array.prototype.slice.call(arguments,1),u=b[P];s.push({func:u,args:p})},this.reset=function(){s=[]},this.get=function(){return s},this.apply=function(P){c(P.width,P.height),e=0,t||(t=y.createTexture()),y.bindTexture(y.TEXTURE_2D,t),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_S,y.CLAMP_TO_EDGE),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_T,y.CLAMP_TO_EDGE),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MIN_FILTER,y.NEAREST),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MAG_FILTER,y.NEAREST),y.texImage2D(y.TEXTURE_2D,0,y.RGBA,y.RGBA,y.UNSIGNED_BYTE,P);for(let p=0;pf.data())),a=.99*Math.max(s[0][0],s[1][0],s[2][0]),i=[r.sub(o[0],A[0]),r.sub(o[1],A[1]),r.sub(o[2],A[2])],x=[r.sub(n[0],A[0]),r.sub(n[1],A[1]),r.sub(n[2],A[2])],d=[r.div(a,x[0]),r.div(a,x[1]),r.div(a,x[2])],l=[r.mul(i[0],d[0]),r.mul(i[1],d[1]),r.mul(i[2],d[2])],y=r.stack([l[0],l[1],l[2]],2),c=r.reshape(y,[1,t.shape[0],t.shape[1],3]);return r.dispose([...o,...A,...n,...i,...x,...d,...l,y,t]),c}var De=2048,G=null,_=null,ae=null,D,z0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function s0(e,t){let o;if(R.browser)if(R.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof R.Canvas!="undefined"?o=new R.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function St(e,t){let o=t||s0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function ie(e,t,o=!0){if(!e)return t.debug&&g("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof se)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof R.Canvas!="undefined"&&e instanceof R.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof se){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=r.expandDims(e,0);else if(e.shape[2]===4){let n=r.slice3d(e,[0,0,0],[-1,-1,3]);A=r.expandDims(n,0),r.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=r.clone(e):e.shape[3]===4&&(A=r.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=r.cast(A,"float32");r.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?_:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&g("input stream is not ready"),{tensor:null,canvas:G};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&g("cannot determine input dimensions"),{tensor:null,canvas:G};let s=A,a=n;if(s>De&&(s=De,a=Math.trunc(s*n/A)),a>De&&(a=De,s=Math.trunc(a*A/n)),(t.filter.width||0)>0?s=t.filter.width:(t.filter.height||0)>0&&(s=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?a=t.filter.height:(t.filter.width||0)>0&&(a=n*((t.filter.width||0)/A)),!s||!a)throw new Error("input error: cannot determine dimension");(!G||(G==null?void 0:G.width)!==s||(G==null?void 0:G.height)!==a)&&(G=s0(s,a));let i=G.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?i.putImageData(e,0,0):t.filter.flip&&typeof i.translate!="undefined"?(i.translate(A,0),i.scale(-1,1),i.drawImage(e,0,0,A,n,0,0,G==null?void 0:G.width,G==null?void 0:G.height),i.setTransform(1,0,0,1,0,0)):i.drawImage(e,0,0,A,n,0,0,G==null?void 0:G.width,G==null?void 0:G.height),(!_||G.width!==_.width||(G==null?void 0:G.height)!==(_==null?void 0:_.height))&&(_=s0(G.width,G.height)),t.filter.enabled&&R.webgl.supported){if(D||(D=R.browser?new go:null),R.filter=!!D,!D||!D.add)return t.debug&&g("input process error: cannot initialize filters"),{tensor:null,canvas:G};D.reset(),t.filter.brightness!==0&&D.add("brightness",t.filter.brightness),t.filter.contrast!==0&&D.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&D.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&D.add("blur",t.filter.blur),t.filter.saturation!==0&&D.add("saturation",t.filter.saturation),t.filter.hue!==0&&D.add("hue",t.filter.hue),t.filter.negative&&D.add("negative"),t.filter.sepia&&D.add("sepia"),t.filter.vintage&&D.add("brownie"),t.filter.sepia&&D.add("sepia"),t.filter.kodachrome&&D.add("kodachrome"),t.filter.technicolor&&D.add("technicolor"),t.filter.polaroid&&D.add("polaroid"),t.filter.pixelate!==0&&D.add("pixelate",t.filter.pixelate),D.get()>0?_=D.apply(G):_=D.draw(G)}else St(G,_),D&&(D=null),R.filter=!!D;if(!o)return{tensor:null,canvas:_};if(!_)throw new Error("canvas error: cannot create output");let x,d=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(R.browser&&r.browser)x=r.browser?r.browser.fromPixels(e):null;else{d=e.data.length/e.height/e.width;let c=new Uint8Array(e.data.buffer);x=r.tensor(c,[e.height,e.width,d],"int32")}else if((!ae||_.width!==ae.width||_.height!==ae.height)&&(ae=s0(_.width,_.height)),r.browser&&R.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?x=r.browser.fromPixels(_):(ae=St(_),x=r.browser.fromPixels(ae));else{let h=St(_).getContext("2d").getImageData(0,0,s,a);d=h.data.length/s/a;let m=new Uint8Array(h.data.buffer);x=r.tensor(m,[s,a,d])}if(d===4){let c=r.slice3d(x,[0,0,0],[-1,-1,3]);r.dispose(x),x=c}if(!x)throw new Error("input error: cannot create tensor");let l=r.cast(x,"float32"),y=t.filter.equalization?await Xe(l):r.expandDims(l,0);return r.dispose([x,l]),{tensor:y,canvas:t.filter.return?_:null}}}async function Mo(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!z0.inputTensor)z0.inputTensor=r.clone(t);else if(z0.inputTensor.shape[1]!==t.shape[1]||z0.inputTensor.shape[2]!==t.shape[2])r.dispose(z0.inputTensor),z0.inputTensor=r.clone(t);else{let A={};A.diff=r.sub(t,z0.inputTensor),A.squared=r.mul(A.diff,A.diff),A.sum=r.sum(A.squared);let s=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;r.dispose([z0.inputTensor,A.diff,A.squared,A.sum]),z0.inputTensor=r.clone(t),o=s<=(e.cacheSensitivity||0)}return o}async function Po(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||g("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||g("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=r.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?r.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):r.clone(o),A.diff=r.sub(A.input1,A.input2),A.squared=r.mul(A.diff,A.diff),A.sum=r.sum(A.squared);let s=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return r.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),s}var vo=class{constructor(){w(this,"browser");w(this,"node");w(this,"worker");w(this,"platform","");w(this,"agent","");w(this,"backends",[]);w(this,"initial");w(this,"filter");w(this,"tfjs");w(this,"offscreen");w(this,"perfadd",!1);w(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});w(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});w(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});w(this,"cpu",{model:void 0,flags:[]});w(this,"kernels",[]);w(this,"Canvas");w(this,"Image");w(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:je["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(r.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&r.getBackend()==="wasm"&&(this.wasm.simd=await r.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await r.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=s0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(r.getBackend()==="webgl"||r.getBackend()==="humangl")){let A=r.backend().gpgpu!=="undefined"?await r.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=r.getKernelsForBackend(r.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},R=new vo;var j0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function gr(e,t){return j0.debug&&g("load model fetch:",e,t),fetch(e,t)}function To(e){j0.cacheModels=e.cacheModels,j0.verbose=e.debug,j0.modelBasePath=e.modelBasePath}async function N(e){let t=xo(j0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await r.io.listModels(),s=j0.cacheModels&&Object.keys(n).includes(A),a=typeof fetch=="undefined"?{}:{fetchFunc:(x,d)=>gr(x,d)},i=new zt(s?A:t,a);try{i.findIOHandler(),j0.debug&&g("model load handler:",i.handler);let x=await i.handler.load();i.loadSync(x),j0.verbose&&g("load model:",i.modelUrl)}catch(x){g("error loading model:",t,x)}if(j0.cacheModels&&!s)try{let x=await i.save(A);g("model saved:",A,x)}catch(x){g("error saving model:",t,x)}return i}var Wt="2.6.2";var u0,Ct=[],vr=["white","black","asian","indian","other"],Tr=[15,23,28,35.5,45.5,55.5,65],Ro=0,wo=0,It=Number.MAX_SAFE_INTEGER;async function ko(e){return R.initial&&(u0=null),u0?e.debug&&g("cached model:",u0.modelUrl):u0=await N(e.face.gear),u0}async function Ot(e,t,o,A){var a,i;if(!u0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=It<(((a=t.face.gear)==null?void 0:a.skipFrames)||0),s=(((i=t.face.gear)==null?void 0:i.skipTime)||0)>M()-wo;return t.skipAllowed&&s&&n&&Ro===A&&Ct[o]?(It++,Ct[o]):(It=0,new Promise(async x=>{var b,P;if(!(u0==null?void 0:u0.inputs[0].shape))return;let d={},l=[[0,.1,.9,.9]];d.resize=r.image.cropAndResize(e,l,[0],[u0.inputs[0].shape[2],u0.inputs[0].shape[1]]);let y={age:0,gender:"unknown",genderScore:0,race:[]};((b=t.face.gear)==null?void 0:b.enabled)&&([d.age,d.gender,d.race]=u0.execute(d.resize,["age_output","gender_output","race_output"]));let c=await d.gender.data();y.gender=c[0]>c[1]?"male":"female",y.genderScore=Math.round(100*(c[0]>c[1]?c[0]:c[1]))/100;let f=await d.race.data();for(let p=0;p(((P=t.face.gear)==null?void 0:P.minConfidence)||.2)&&y.race.push({score:Math.round(100*f[p])/100,race:vr[p]});y.race.sort((p,u)=>u.score-p.score);let m=Array.from(await d.age.data()).map((p,u)=>[Tr[u],p]).sort((p,u)=>u[1]-p[1]),v=m[0][0];for(let p=1;pr.dispose(d[p])),Ct[o]=y,Ro=A,wo=M(),x(y)}))}var L={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function zo(){L.tf255=r.scalar(255,"float32"),L.tf1=r.scalar(1,"float32"),L.tf2=r.scalar(2,"float32"),L.tf05=r.scalar(.5,"float32"),L.tf127=r.scalar(127.5,"float32"),L.rgb=r.tensor1d([.2989,.587,.114],"float32")}var l0,qe=[],jo=0,So=0,Nt=Number.MAX_SAFE_INTEGER;async function Wo(e){return R.initial&&(l0=null),l0?e.debug&&g("cached model:",l0.modelUrl):l0=await N(e.face.ssrnet.modelPathAge),l0}async function Lt(e,t,o,A){var a,i,x,d;if(!l0)return{age:0};let n=Nt<(((a=t.face.ssrnet)==null?void 0:a.skipFrames)||0),s=(((i=t.face.ssrnet)==null?void 0:i.skipTime)||0)>M()-So;return t.skipAllowed&&n&&s&&jo===A&&((x=qe[o])==null?void 0:x.age)&&((d=qe[o])==null?void 0:d.age)>0?(Nt++,qe[o]):(Nt=0,new Promise(async l=>{if(!(l0==null?void 0:l0.inputs)||!l0.inputs[0]||!l0.inputs[0].shape)return;let y={};y.resize=r.image.resizeBilinear(e,[l0.inputs[0].shape[2],l0.inputs[0].shape[1]],!1),y.enhance=r.mul(y.resize,L.tf255);let c={age:0};if(t.face.ssrnet.enabled&&(y.age=l0.execute(y.enhance)),y.age){let f=await y.age.data();c.age=Math.trunc(10*f[0])/10}Object.keys(y).forEach(f=>r.dispose(y[f])),qe[o]=c,jo=A,So=M(),l(c)}))}var h0,Ue=[],Io=0,Oo=0,Bt=Number.MAX_SAFE_INTEGER,Gt=[.2989,.587,.114];async function No(e){return R.initial&&(h0=null),h0?e.debug&&g("cached model:",h0.modelUrl):h0=await N(e.face.ssrnet.modelPathGender),h0}async function Ht(e,t,o,A){var a,i,x,d;if(!h0)return{gender:"unknown",genderScore:0};let n=Bt<(((a=t.face.ssrnet)==null?void 0:a.skipFrames)||0),s=(((i=t.face.ssrnet)==null?void 0:i.skipTime)||0)>M()-Oo;return t.skipAllowed&&n&&s&&Io===A&&((x=Ue[o])==null?void 0:x.gender)&&((d=Ue[o])==null?void 0:d.genderScore)>0?(Bt++,Ue[o]):(Bt=0,new Promise(async l=>{if(!(h0==null?void 0:h0.inputs[0].shape))return;let y={};y.resize=r.image.resizeBilinear(e,[h0.inputs[0].shape[2],h0.inputs[0].shape[1]],!1),y.enhance=r.tidy(()=>{let[h,m,v]=r.split(y.resize,3,3),b=r.mul(h,Gt[0]),P=r.mul(m,Gt[1]),p=r.mul(v,Gt[2]),u=r.addN([b,P,p]);return r.mul(r.sub(u,L.tf05),2)});let c={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(y.gender=h0.execute(y.enhance));let f=await y.gender.data();c.gender=f[0]>f[1]?"female":"male",c.genderScore=f[0]>f[1]?Math.trunc(100*f[0])/100:Math.trunc(100*f[1])/100,Object.keys(y).forEach(h=>r.dispose(y[h])),Ue[o]=c,Io=A,Oo=M(),l(c)}))}var A0,Je=[],Ft=Number.MAX_SAFE_INTEGER,Bo=0,Go=0;async function Ho(e){var t;return R.initial&&(A0=null),A0?e.debug&&g("cached model:",A0.modelUrl):A0=await N((t=e.face.antispoof)==null?void 0:t.modelPath),A0}async function Vt(e,t,o,A){var a,i;if(!A0)return 0;let n=(((a=t.face.antispoof)==null?void 0:a.skipTime)||0)>M()-Go,s=Ft<(((i=t.face.antispoof)==null?void 0:i.skipFrames)||0);return t.skipAllowed&&n&&s&&Bo===A&&Je[o]?(Ft++,Je[o]):(Ft=0,new Promise(async x=>{let d=r.image.resizeBilinear(e,[(A0==null?void 0:A0.inputs[0].shape)?A0.inputs[0].shape[2]:0,(A0==null?void 0:A0.inputs[0].shape)?A0.inputs[0].shape[1]:0],!1),l=A0==null?void 0:A0.execute(d),y=(await l.data())[0];Je[o]=Math.round(100*y)/100,Bo=A,Go=M(),r.dispose([d,l]),x(Je[o])}))}var b0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},Zt={count:468,mouth:13,symmetryLine:[13,b0.midwayBetweenEyes[0]]},We={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},Xt=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],Ce=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],K0=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var wr=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],kr=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],Er=[33,133,362,263,1,78,308],vs=wr.map(e=>Ce[e]),Ts=kr.map(e=>Ce[e]),Rs=Er.map(e=>Ce[e]);var le=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Ye=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],Jt=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],Yt=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],Xo=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},qt=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],s=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],a=r.image.cropAndResize(t,[s],[0],o),i=r.div(a,L.tf255);return r.dispose(a),i},Ke=(e,t)=>{let o=Ye(e),A=le(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},Qe=e=>{let t=Ye(e),o=le(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},Do=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},Ut=[[1,0,0],[0,1,0],[0,0,1]],zr=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),jr=(e,t)=>zr(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var Vo=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Q0=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],s=Vo(t[0],t[1]),a=Zo(s,n),i=Vo(-t[0],-t[1]);return Zo(a,i)},Wr=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Q0(t[0],o),-Q0(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},Cr=(e,t)=>[Q0(e,t[0]),Q0(e,t[1])];function Uo(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[s[0]/n*(f[0]-n/2),s[1]/n*(f[1]-n/2),f[2]||0]),i=o&&o!==0&&Math.abs(o)>.2,x=i?qo(o,[0,0]):Ut,d=i?a.map(f=>[...Cr(f,x),f[2]]):a,l=i?Wr(A):Ut,y=Ye(t),c=[Q0(y,l[0]),Q0(y,l[1])];return d.map(f=>[Math.trunc(f[0]+c[0]),Math.trunc(f[1]+c[1]),Math.trunc(f[2]||0)])}function Yo(e,t,o,A){let n=t.landmarks.length>=Zt.count?Zt.symmetryLine:We.symmetryLine,s=0,a=Ut,i;if(e&&R.kernels.includes("rotatewithoffset"))if(s=jr(t.landmarks[n[0]],t.landmarks[n[1]]),s&&s!==0&&Math.abs(s)>.2){let d=Ye(t),l=[d[0]/o.shape[2],d[1]/o.shape[1]],y=r.image.rotateWithOffset(o,s,0,l);a=qo(-s,d),i=qt(t,y,[A,A]),r.dispose(y)}else i=qt(t,o,[A,A]);else i=qt(t,o,[A,A]);return[s,a,i]}var Ir=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},Ko=(e,t)=>{let o=Ir(e),A=le(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var Qo=6,Or=1.2,T0,_o=null,H0=0,Ie=null,_e=()=>H0;async function $o(e){var t;return R.initial&&(T0=null),T0?e.debug&&g("cached model:",T0.modelUrl):T0=await N((t=e.face.detector)==null?void 0:t.modelPath),H0=T0.inputs[0].shape?T0.inputs[0].shape[2]:0,Ie=r.scalar(H0,"int32"),_o=r.tensor2d(Uo(H0)),T0}function Nr(e){let t={};t.boxStarts=r.slice(e,[0,1],[-1,2]),t.centers=r.add(t.boxStarts,_o),t.boxSizes=r.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=r.div(t.boxSizes,Ie),t.centersNormalized=r.div(t.centers,Ie),t.halfBoxSize=r.div(t.boxSizesNormalized,L.tf2),t.starts=r.sub(t.centersNormalized,t.halfBoxSize),t.ends=r.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=r.mul(t.starts,Ie),t.endNormalized=r.mul(t.ends,Ie);let o=r.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>r.dispose(t[A])),o}async function eA(e,t){var i,x,d,l;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=r.image.resizeBilinear(e,[H0,H0]),o.div=r.div(o.resized,L.tf127),o.normalized=r.sub(o.div,L.tf05);let A=T0==null?void 0:T0.execute(o.normalized);if(Array.isArray(A)){let y=A.sort((c,f)=>c.size-f.size);o.concat384=r.concat([y[0],y[2]],2),o.concat512=r.concat([y[1],y[3]],2),o.concat=r.concat([o.concat512,o.concat384],1),o.batch=r.squeeze(o.concat,0)}else o.batch=r.squeeze(A);r.dispose(A),o.boxes=Nr(o.batch),o.logits=r.slice(o.batch,[0,0],[-1,1]),o.sigmoid=r.sigmoid(o.logits),o.scores=r.squeeze(o.sigmoid),o.nms=await r.image.nonMaxSuppressionAsync(o.boxes,o.scores,((i=t.face.detector)==null?void 0:i.maxDetected)||0,((x=t.face.detector)==null?void 0:x.iouThreshold)||0,((d=t.face.detector)==null?void 0:d.minConfidence)||0);let n=await o.nms.array(),s=[],a=await o.scores.data();for(let y=0;y(((l=t.face.detector)==null?void 0:l.minConfidence)||0)){let f={};f.bbox=r.slice(o.boxes,[n[y],0],[1,-1]),f.slice=r.slice(o.batch,[n[y],Qo-1],[1,-1]),f.squeeze=r.squeeze(f.slice),f.landmarks=r.reshape(f.squeeze,[Qo,-1]);let h=await f.bbox.data(),m={startPoint:[h[0],h[1]],endPoint:[h[2],h[3]],landmarks:await f.landmarks.array(),confidence:c},v=Xo(m,[(e.shape[2]||0)/H0,(e.shape[1]||0)/H0]),b=Ke(v,t.face.scale||Or),P=Qe(b);s.push(P),Object.keys(f).forEach(p=>r.dispose(f[p]))}}return Object.keys(o).forEach(y=>r.dispose(o[y])),s}var $e={};Ze($e,{connected:()=>_t,kpt:()=>Qt});var Qt=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],_t={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var oA=224,Lr,Br=5,et=[8,16,32,32,32];async function AA(){let e=[],t=0;for(;to.x)),y:r.tensor1d(e.map(o=>o.y))}}function S0(e,t=[1,1]){let o=[e.map(i=>i[0]),e.map(i=>i[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],s=[A[0],A[1],n[0]-A[0],n[1]-A[1]],a=[s[0]/t[0],s[1]/t[1],s[2]/t[0],s[3]/t[1]];return{box:s,boxRaw:a}}function nA(e,t=[1,1]){let o=[e.map(d=>d[0]),e.map(d=>d[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],s=[(A[0]+n[0])/2,(A[1]+n[1])/2],a=Math.max(s[0]-A[0],s[1]-A[1],-s[0]+n[0],-s[1]+n[1]),i=[Math.trunc(s[0]-a),Math.trunc(s[1]-a),Math.trunc(2*a),Math.trunc(2*a)],x=[i[0]/t[0],i[1]/t[1],i[2]/t[0],i[3]/t[1]];return{box:i,boxRaw:x}}function tt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var aA={initial:!0},y0={detector:null,landmarks:null},ye={detector:[224,224],landmarks:[256,256]},$t=Number.MAX_SAFE_INTEGER,Hr={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},At=null,Oe,F0=[[0,0],[0,0],[0,0],[0,0]],rA=0,sA=e=>1-1/(1+Math.exp(e));async function iA(e){if(aA.initial&&(y0.detector=null),!y0.detector&&e.body.detector&&e.body.detector.modelPath){y0.detector=await N(e.body.detector.modelPath);let t=Object.values(y0.detector.modelSignature.inputs);ye.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,ye.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&y0.detector&&g("cached model:",y0.detector.modelUrl);return await AA(),y0.detector}async function lA(e){if(aA.initial&&(y0.landmarks=null),y0.landmarks)e.debug&&g("cached model:",y0.landmarks.modelUrl);else{y0.landmarks=await N(e.body.modelPath);let t=Object.values(y0.landmarks.modelSignature.inputs);ye.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,ye.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return y0.landmarks}async function Fr(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(Oe&&(o.cropped=r.image.cropAndResize(e,[Oe],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],s=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];F0=[[0,0],n,s,[0,0]],o.pad=r.pad(o.cropped||e,F0),o.resize=r.image.resizeBilinear(o.pad,[t,t]),A=r.div(o.resize,L.tf255)}else e.shape[1]!==t?(o.resize=r.image.resizeBilinear(o.cropped||e,[t,t]),A=r.div(o.resize,L.tf255)):A=r.div(o.cropped||e,L.tf255);return Object.keys(o).forEach(n=>r.dispose(o[n])),A}function Vr(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+F0[2][0]+F0[2][1])/t[0]-F0[2][0]),Math.trunc(o.position[1]*(t[1]+F0[1][0]+F0[1][1])/t[1]-F0[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(Oe)for(let o of e)o.positionRaw=[o.positionRaw[0]+Oe[1],o.positionRaw[1]+Oe[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function Zr(e){let t=e.find(i=>i.part==="leftPalm"),o=e.find(i=>i.part==="leftWrist"),A=e.find(i=>i.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(i=>i.part==="rightPalm"),s=e.find(i=>i.part==="rightWrist"),a=e.find(i=>i.part==="rightIndex");n.position[2]=((s.position[2]||0)+(a.position[2]||0))/2}async function Xr(e,t,o){var h;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(h=y0.landmarks)==null?void 0:h.execute(e,Hr.landmarks);let n=(await A.poseflag.data())[0],s=await A.ld.data(),a=await A.world.data();Object.keys(A).forEach(m=>r.dispose(A[m]));let i=[],x=5;for(let m=0;mm.position),y=S0(l,[o[0],o[1]]),c={};for(let[m,v]of Object.entries(_t)){let b=[];for(let P=0;PE.part===v[P]),u=d.find(E=>E.part===v[P+1]);p&&u&&b.push([p.position,u.position])}c[m]=b}return{id:0,score:Math.trunc(100*n)/100,box:y.box,boxRaw:y.boxRaw,keypoints:d,annotations:c}}async function e5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>M()-rA,n=$t<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&At!==null)$t++;else{let s={};s.landmarks=await Fr(e,256),At=await Xr(s.landmarks,t,o),Object.keys(s).forEach(a=>r.dispose(s[a])),rA=M(),$t=0}return At?[At]:[]}var xe=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var W0,_0=0,t5=[],xA=0,o5=Number.MAX_SAFE_INTEGER;async function cA(e){if(R.initial&&(W0=null),W0)e.debug&&g("cached model:",W0.modelUrl);else{W0=await N(e.object.modelPath);let t=Object.values(W0.modelSignature.inputs);_0=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return W0}async function Dr(e,t,o){if(!e)return[];let A={},n=[],s=await e.array();A.squeeze=r.squeeze(e);let a=r.split(A.squeeze,6,1);A.stack=r.stack([a[1],a[0],a[3],a[2]],1),A.boxes=r.squeeze(A.stack),A.scores=r.squeeze(a[4]),A.classes=r.squeeze(a[5]),r.dispose([e,...a]),A.nms=await r.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let i=await A.nms.data(),x=0;for(let d of Array.from(i)){let l=Math.trunc(100*s[0][d][4])/100,y=s[0][d][5],c=xe[y].label,[f,h]=[s[0][d][0]/_0,s[0][d][1]/_0],m=[f,h,s[0][d][2]/_0-f,s[0][d][3]/_0-h],v=[Math.trunc(m[0]*t[0]),Math.trunc(m[1]*t[1]),Math.trunc(m[2]*t[0]),Math.trunc(m[3]*t[1])];n.push({id:x++,score:l,class:y,label:c,box:v,boxRaw:m})}return Object.keys(A).forEach(d=>r.dispose(A[d])),n}async function A5(e,t){let o=(t.object.skipTime||0)>M()-xA,A=o5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&t5.length>0?(o5++,t5):(o5=0,new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],a=r.image.resizeBilinear(e,[_0,_0]),i=t.object.enabled?W0==null?void 0:W0.execute(a,["tower_0/detections"]):null;xA=M(),r.dispose(a);let x=await Dr(i,s,t);t5=x,n(x)}))}var nt={};Ze(nt,{connected:()=>r5,kpt:()=>n5});var n5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],r5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var n0,fA=0,a0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},s5=Number.MAX_SAFE_INTEGER;async function mA(e){return R.initial&&(n0=null),n0?e.debug&&g("cached model:",n0.modelUrl):n0=await N(e.body.modelPath),n0}async function qr(e,t){let[o,A]=e.shape,n=r.reshape(e,[A*o]),s=r.max(n,0),a=(await s.data())[0];if(r.dispose([n,s]),a>t){let i=r.argMax(n,0),x=r.mod(i,o),d=(await x.data())[0],l=r.div(i,r.scalar(o,"int32")),y=(await l.data())[0];return r.dispose([x,l]),[d,y,a]}return[0,0,a]}async function a5(e,t){let o=(t.body.skipTime||0)>M()-fA,A=s5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(a0.keypoints).length>0?(s5++,[a0]):(s5=0,new Promise(async n=>{var y;let s=r.tidy(()=>{if(!(n0==null?void 0:n0.inputs[0].shape))return null;let c=r.image.resizeBilinear(e,[n0.inputs[0].shape[2],n0.inputs[0].shape[1]],!1),f=r.mul(c,L.tf2);return r.sub(f,L.tf1)}),a;if(t.body.enabled&&(a=n0==null?void 0:n0.execute(s)),fA=M(),r.dispose(s),a){a0.keypoints.length=0;let c=a.squeeze();r.dispose(a);let f=c.unstack(2);r.dispose(c);for(let h=0;h(((y=t.body)==null?void 0:y.minConfidence)||0)&&a0.keypoints.push({score:Math.round(100*b)/100,part:n5[h],positionRaw:[m/n0.inputs[0].shape[2],v/n0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*m/n0.inputs[0].shape[2]),Math.round(e.shape[1]*v/n0.inputs[0].shape[1])]})}f.forEach(h=>r.dispose(h))}a0.score=a0.keypoints.reduce((c,f)=>f.score>c?f.score:c,0);let i=a0.keypoints.map(c=>c.position[0]),x=a0.keypoints.map(c=>c.position[1]);a0.box=[Math.min(...i),Math.min(...x),Math.max(...i)-Math.min(...i),Math.max(...x)-Math.min(...x)];let d=a0.keypoints.map(c=>c.positionRaw[0]),l=a0.keypoints.map(c=>c.positionRaw[1]);a0.boxRaw=[Math.min(...d),Math.min(...l),Math.max(...d)-Math.min(...d),Math.max(...l)-Math.min(...l)];for(let[c,f]of Object.entries(r5)){let h=[];for(let m=0;mP.part===f[m]),b=a0.keypoints.find(P=>P.part===f[m+1]);v&&b&&v.score>(t.body.minConfidence||0)&&b.score>(t.body.minConfidence||0)&&h.push([v.position,b.position])}a0.annotations[c]=h}n([a0])}))}var Ur=["angry","disgust","fear","happy","sad","surprise","neutral"],p0,rt=[],uA=0,hA=0,i5=Number.MAX_SAFE_INTEGER;async function bA(e){var t;return R.initial&&(p0=null),p0?e.debug&&g("cached model:",p0.modelUrl):p0=await N((t=e.face.emotion)==null?void 0:t.modelPath),p0}async function l5(e,t,o,A){var a,i;if(!p0)return[];let n=i5<(((a=t.face.emotion)==null?void 0:a.skipFrames)||0),s=(((i=t.face.emotion)==null?void 0:i.skipTime)||0)>M()-hA;return t.skipAllowed&&s&&n&&uA===A&&rt[o]&&rt[o].length>0?(i5++,rt[o]):(i5=0,new Promise(async x=>{var l,y;let d=[];if((l=t.face.emotion)==null?void 0:l.enabled){let c={},f=(p0==null?void 0:p0.inputs[0].shape)?p0.inputs[0].shape[2]:0;c.resize=r.image.resizeBilinear(e,[f,f],!1),c.channels=r.mul(c.resize,L.rgb),c.grayscale=r.sum(c.channels,3,!0),c.grayscaleSub=r.sub(c.grayscale,L.tf05),c.grayscaleMul=r.mul(c.grayscaleSub,L.tf2),c.emotion=p0==null?void 0:p0.execute(c.grayscaleMul),hA=M();let h=await c.emotion.data();for(let m=0;m(((y=t.face.emotion)==null?void 0:y.minConfidence)||0)&&d.push({score:Math.min(.99,Math.trunc(100*h[m])/100),emotion:Ur[m]});d.sort((m,v)=>v.score-m.score),Object.keys(c).forEach(m=>r.dispose(c[m]))}rt[o]=d,uA=A,x(d)}))}var x0,y5=[],MA=0,PA=0,vA=Number.MAX_SAFE_INTEGER;async function TA(e){return R.initial&&(x0=null),x0?e.debug&&g("cached model:",x0.modelUrl):x0=await N(e.face.mobilefacenet.modelPath),x0}async function x5(e,t,o,A){var a,i;if(!x0)return[];let n=vA<(((a=t.face.embedding)==null?void 0:a.skipFrames)||0),s=(((i=t.face.embedding)==null?void 0:i.skipTime)||0)>M()-PA;return t.skipAllowed&&s&&n&&MA===A&&y5[o]?(vA++,y5[o]):new Promise(async x=>{var l;let d=[];if(((l=t.face.embedding)==null?void 0:l.enabled)&&(x0==null?void 0:x0.inputs[0].shape)){let y={};y.crop=r.image.resizeBilinear(e,[x0.inputs[0].shape[2],x0.inputs[0].shape[1]],!1),y.data=x0==null?void 0:x0.execute(y.crop);let c=await y.data.data();d=Array.from(c)}y5[o]=d,MA=A,PA=M(),x(d)})}var C0,V0=0,Jr=2.3,c5=b0.leftEyeLower0,d5=b0.rightEyeLower0,ce={leftBounds:[c5[0],c5[c5.length-1]],rightBounds:[d5[0],d5[d5.length-1]]},de={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function zA(e){var t;return R.initial&&(C0=null),C0?e.debug&&g("cached model:",C0.modelUrl):C0=await N((t=e.face.iris)==null?void 0:t.modelPath),V0=C0.inputs[0].shape?C0.inputs[0].shape[2]:0,V0===-1&&(V0=64),C0}function st(e,t,o,A){for(let n=0;n{let t=e[ce.leftBounds[0]][2],o=e[ce.rightBounds[0]][2];return t-o},wA=(e,t,o,A,n,s=!1)=>{let a=Qe(Ke(Do([e[o],e[A]]),Jr)),i=le(a),x=r.image.cropAndResize(t,[[a.startPoint[1]/n,a.startPoint[0]/n,a.endPoint[1]/n,a.endPoint[0]/n]],[0],[V0,V0]);if(s&&R.kernels.includes("flipleftright")){let d=r.image.flipLeftRight(x);r.dispose(x),x=d}return{box:a,boxSize:i,crop:x}},kA=(e,t,o,A=!1)=>{let n=[];for(let s=0;s{let A=e[b0[`${o}EyeUpper0`][de.upperCenter]][2],n=e[b0[`${o}EyeLower0`][de.lowerCenter]][2],s=(A+n)/2;return t.map((a,i)=>{let x=s;return i===2?x=A:i===4&&(x=n),[a[0],a[1],x]})};async function jA(e,t,o,A){if(!C0)return o.debug&&g("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:s,crop:a}=wA(e,t,ce.leftBounds[0],ce.leftBounds[1],A,!0),{box:i,boxSize:x,crop:d}=wA(e,t,ce.rightBounds[0],ce.rightBounds[1],A,!0),l=r.concat([a,d]);r.dispose(a),r.dispose(d);let y=C0.execute(l);r.dispose(l);let c=await y.data();r.dispose(y);let f=c.slice(0,de.numCoordinates*3),{rawCoords:h,iris:m}=kA(f,n,s,!0),v=c.slice(de.numCoordinates*3),{rawCoords:b,iris:P}=kA(v,i,x),p=Yr(e);Math.abs(p)<30?(st(e,h,"left",null),st(e,b,"right",null)):p<1?st(e,h,"left",["EyeUpper0","EyeLower0"]):st(e,b,"right",["EyeUpper0","EyeLower0"]);let u=EA(e,m,"left"),E=EA(e,P,"right");return e.concat(u).concat(E)}var R0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},I0=null,fe=0;async function WA(e,t){var i,x,d,l,y,c,f,h,m;let o=(((i=t.face.detector)==null?void 0:i.skipTime)||0)>M()-R0.timestamp,A=R0.skipped<(((x=t.face.detector)==null?void 0:x.skipFrames)||0);!t.skipAllowed||!o||!A||R0.boxes.length===0?(R0.boxes=await eA(e,t),R0.timestamp=M(),R0.skipped=0):R0.skipped++;let n=[],s=[],a=0;for(let v=0;v[H[0]/(e.shape[2]||0),H[1]/(e.shape[1]||0),(H[2]||0)/fe]);for(let H of Object.keys(b0))u.annotations[H]=b0[H].map(t0=>u.mesh[t0]);u.score=u.faceScore;let B={...Ko(u.mesh,b),confidence:b.confidence,landmarks:b.landmarks};u.box=Jt(B,e),u.boxRaw=Yt(B,e),s.push(B)}}else{u.box=Jt(b,e),u.boxRaw=Yt(b,e),u.score=u.boxScore,u.mesh=b.landmarks.map(E=>[(b.startPoint[0]+b.endPoint[0])/2+(b.endPoint[0]+b.startPoint[0])*E[0]/_e(),(b.startPoint[1]+b.endPoint[1])/2+(b.endPoint[1]+b.startPoint[1])*E[1]/_e()]),u.meshRaw=u.mesh.map(E=>[E[0]/(e.shape[2]||0),E[1]/(e.shape[1]||0),(E[2]||0)/fe]);for(let E of Object.keys(We))u.annotations[E]=[u.mesh[We[E]]]}u.score>(((m=t.face.detector)==null?void 0:m.minConfidence)||1)?n.push(u):r.dispose(u.tensor)}return R0.boxes=s,n}async function CA(e){var t;return R.initial&&(I0=null),I0?e.debug&&g("cached model:",I0.modelUrl):I0=await N((t=e.face.mesh)==null?void 0:t.modelPath),fe=I0.inputs[0].shape?I0.inputs[0].shape[2]:0,I0}var IA=K0,OA=Ce;var c0,at=[],NA=0,LA=0,m5=Number.MAX_SAFE_INTEGER;async function BA(e){var t;return R.initial&&(c0=null),c0?e.debug&&g("cached model:",c0.modelUrl):c0=await N((t=e.face.description)==null?void 0:t.modelPath),c0}function p5(e){let t=e.image||e.tensor||e;if(!(c0==null?void 0:c0.inputs[0].shape))return t;let o=r.image.resizeBilinear(t,[c0.inputs[0].shape[2],c0.inputs[0].shape[1]],!1),A=r.mul(o,L.tf255);return r.dispose(o),A}async function u5(e,t,o,A){var a,i,x,d;if(!c0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=m5<(((a=t.face.description)==null?void 0:a.skipFrames)||0),s=(((i=t.face.description)==null?void 0:i.skipTime)||0)>M()-NA;return t.skipAllowed&&n&&s&&LA===A&&((x=at[o])==null?void 0:x.age)&&((d=at[o])==null?void 0:d.age)>0?(m5++,at[o]):(m5=0,new Promise(async l=>{var c,f;let y={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((c=t.face.description)==null?void 0:c.enabled){let h=p5(e),m=c0==null?void 0:c0.execute(h);NA=M(),r.dispose(h);let b=await(await m.find(O=>O.shape[1]===1)).data(),P=Math.trunc(200*Math.abs(b[0]-.5))/100;P>(((f=t.face.description)==null?void 0:f.minConfidence)||0)&&(y.gender=b[0]<=.5?"female":"male",y.genderScore=Math.min(.99,P));let p=r.argMax(m.find(O=>O.shape[1]===100),1),u=(await p.data())[0];r.dispose(p);let W=await m.find(O=>O.shape[1]===100).data();y.age=Math.round(W[u-1]>W[u+1]?10*u-100*W[u-1]:10*u+100*W[u+1])/10;let C=m.find(O=>O.shape[1]===1024),S=C?await C.data():[];y.descriptor=Array.from(S),m.forEach(O=>r.dispose(O))}at[o]=y,LA=A,l(y)}))}function it(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Ne(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function FA(e,t,o){let A=t.shape[1],n=t.shape[2],s=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return r.image.cropAndResize(t,s,[0],o)}function VA(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function lt(e,t=1.5){let o=Ne(e),A=it(e),n=[t*A[0]/2,t*A[1]/2],s=[o[0]-n[0],o[1]-n[1]],a=[o[0]+n[0],o[1]+n[1]];return{startPoint:s,endPoint:a,palmLandmarks:e.palmLandmarks}}function yt(e){let t=Ne(e),o=it(e),n=Math.max(...o)/2,s=[t[0]-n,t[1]-n],a=[t[0]+n,t[1]+n];return{startPoint:s,endPoint:a,palmLandmarks:e.palmLandmarks}}function Kr(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function ZA(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Kr(o)}var GA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function Z0(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=r.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=r.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=r.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=r.slice(t,[0,0],[-1,2]),o.boxSizes=r.slice(t,[0,2],[-1,2]),o.div=r.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=r.add(o.div,this.anchorsTensor),o.halfBoxSizes=r.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=r.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=r.mul(o.sub,this.inputSizeTensor),o.add=r.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=r.mul(o.add,this.inputSizeTensor);let A=r.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>r.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=r.reshape(t,[-1,7,2]),A.div=r.div(A.reshape,this.inputSizeTensor),A.landmarks=r.add(A.div,this.anchors[o]);let n=r.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(s=>r.dispose(A[s])),n}async predict(t,o){let A={};A.resize=r.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=r.div(A.resize,L.tf127),A.image=r.sub(A.div,L.tf1),A.batched=this.model.execute(A.image),A.predictions=r.squeeze(A.batched),A.slice=r.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=r.sigmoid(A.slice),A.scores=r.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=r.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await r.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let s=await A.nms.array(),a=[];for(let i of s){let x={};x.box=r.slice(A.norm,[i,0],[1,-1]),x.slice=r.slice(A.predictions,[i,5],[1,14]),x.norm=this.normalizeLandmarks(x.slice,i),x.palmLandmarks=r.reshape(x.norm,[-1,2]);let d=await x.box.data(),l=d.slice(0,2),y=d.slice(2,4),c=await x.palmLandmarks.array(),f={startPoint:l,endPoint:y,palmLandmarks:c,confidence:n[i]},h=VA(f,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);a.push(h),Object.keys(x).forEach(m=>r.dispose(x[m]))}return Object.keys(A).forEach(i=>r.dispose(A[i])),a}};var e2=5,UA=1.65,JA=[0,5,9,13,17,1,2],t2=0,o2=2,YA=0,P5=class{constructor(t,o){w(this,"handDetector");w(this,"handPoseModel");w(this,"inputSize");w(this,"storedBoxes");w(this,"skipped");w(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(a=>a[0]),A=t.map(a=>a[1]),n=[Math.min(...o),Math.min(...A)],s=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:s}}getBoxForPalmLandmarks(t,o){let A=t.map(s=>g5([...s,1],o)),n=this.calculateLandmarksBoundingBox(A);return lt(yt(n),e2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=lt(yt(o),UA);A.palmLandmarks=[];for(let n=0;n[a[0]*(f[0]-this.inputSize/2),a[1]*(f[1]-this.inputSize/2),a[2]*f[2]]),x=b5(A,[0,0]),d=i.map(f=>[...g5(f,x),f[2]]),l=XA(n),y=[...Ne(o),1],c=[Z0(y,l[0]),Z0(y,l[1])];return d.map(f=>[Math.trunc(f[0]+c[0]),Math.trunc(f[1]+c[1]),Math.trunc(f[2])])}async estimateHands(t,o){let A=!1,n,s=(o.hand.skipTime||0)>M()-YA,a=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&s&&a&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let i=[];for(let x=0;x=o.hand.minConfidence/4){let E=r.reshape(p,[-1,3]),W=await E.array();r.dispose(p),r.dispose(E);let C=this.transformRawCoords(W,m,l,h),S=this.getBoxForHandLandmarks(C);this.storedBoxes[x]={...S,confidence:u};let O={landmarks:C,confidence:u,boxConfidence:d.confidence,fingerConfidence:u,box:{topLeft:S.startPoint,bottomRight:S.endPoint}};i.push(O)}else this.storedBoxes[x]=null;r.dispose(p)}else{let l=lt(yt(d),UA),y={confidence:d.confidence,boxConfidence:d.confidence,fingerConfidence:0,box:{topLeft:l.startPoint,bottomRight:l.endPoint},landmarks:[]};i.push(y)}}return this.storedBoxes=this.storedBoxes.filter(x=>x!==null),this.detectedHands=i.length,i.length>o.hand.maxDetected&&(i.length=o.hand.maxDetected),i}};var i0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>i0.nameMapping[e],getPoints:e=>i0.pointsMapping[e]},X0={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>X0.nameMapping[e]},U={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>U.nameMapping[e]},$0=class{constructor(t){w(this,"name");w(this,"curls");w(this,"directions");w(this,"weights");w(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,s)=>n+s,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let s=t[n],a=this.curls[n];if(typeof a=="undefined"){A+=this.weightsRelative[n];continue}for(let[i,x]of a)if(s===i){A+=x*this.weightsRelative[n];break}}for(let n in o){let s=o[n],a=this.directions[n];if(typeof a=="undefined"){A+=this.weightsRelative[n];continue}for(let[i,x]of a)if(s===i){A+=x*this.weightsRelative[n];break}}return A/10}};var{thumb:g0,index:O0,middle:N0,ring:ee,pinky:te}=i0,{none:M0,half:n2,full:P0}=X0,{verticalUp:me,verticalDown:fa,horizontalLeft:v5,horizontalRight:r2,diagonalUpRight:s2,diagonalUpLeft:pe,diagonalDownRight:ma,diagonalDownLeft:pa}=U,D0=new $0("thumbs up");D0.curl(g0,M0,1);D0.direction(g0,me,1);D0.direction(g0,pe,.25);D0.direction(g0,s2,.25);for(let e of[i0.index,i0.middle,i0.ring,i0.pinky])D0.curl(e,P0,1),D0.direction(e,v5,1),D0.direction(e,r2,1);var K=new $0("victory");K.curl(g0,n2,.5);K.curl(g0,M0,.5);K.direction(g0,me,1);K.direction(g0,pe,1);K.curl(O0,M0,1);K.direction(O0,me,.75);K.direction(O0,pe,1);K.curl(N0,M0,1);K.direction(N0,me,1);K.direction(N0,pe,.75);K.curl(ee,P0,1);K.direction(ee,me,.2);K.direction(ee,pe,1);K.direction(ee,v5,.2);K.curl(te,P0,1);K.direction(te,me,.2);K.direction(te,pe,1);K.direction(te,v5,.2);K.weight(O0,2);K.weight(N0,2);var q0=new $0("point");q0.curl(g0,P0,1);q0.curl(O0,M0,.5);q0.curl(N0,P0,.5);q0.curl(ee,P0,.5);q0.curl(te,P0,.5);q0.weight(O0,2);q0.weight(N0,2);var U0=new $0("middle finger");U0.curl(g0,M0,1);U0.curl(O0,P0,.5);U0.curl(N0,P0,.5);U0.curl(ee,P0,.5);U0.curl(te,P0,.5);U0.weight(O0,2);U0.weight(N0,2);var ue=new $0("open palm");ue.curl(g0,M0,.75);ue.curl(O0,M0,.75);ue.curl(N0,M0,.75);ue.curl(ee,M0,.75);ue.curl(te,M0,.75);var KA=[D0,K,q0,U0,ue];var a2=.7,oe={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function QA(e,t,o,A){let n=(t-A)/(e-o),s=Math.atan(n)*180/Math.PI;return s<=0?s=-s:s>0&&(s=180-s),s}function $A(e,t){if(!e||!t)return[0,0];let o=QA(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=QA(e[1],e[2],t[1],t[2]);return[o,A]}function _A(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function i2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],i=e[1]-o[1],x=t[1]-o[1],d=e[2]-t[2],l=e[2]-o[2],y=t[2]-o[2],c=Math.sqrt(A*A+a*a+d*d),f=Math.sqrt(n*n+i*i+l*l),h=Math.sqrt(s*s+x*x+y*y),m=(h*h+c*c-f*f)/(2*h*c);m>1?m=1:m<-1&&(m=-1);let v=Math.acos(m);v=57.2958*v%180;let b;return v>oe.NO_CURL_START_LIMIT?b=X0.none:v>oe.HALF_CURL_START_LIMIT?b=X0.half:b=X0.full,b}function en(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=U.horizontalLeft:n=U.horizontalRight:A===Math.abs(t)?t>0?n=U.horizontalLeft:n=U.horizontalRight:o>0?n=U.horizontalLeft:n=U.horizontalRight,n}function tn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=U.verticalDown:n=U.verticalUp:A===Math.abs(t)?t<0?n=U.verticalDown:n=U.verticalUp:o<0?n=U.verticalDown:n=U.verticalUp,n}function l2(e,t,o,A,n,s,a,i){let x,d=tn(e,t,o,A),l=en(n,s,a,i);return d===U.verticalUp?l===U.horizontalLeft?x=U.diagonalUpLeft:x=U.diagonalUpRight:l===U.horizontalLeft?x=U.diagonalDownLeft:x=U.diagonalDownRight,x}function y2(e,t,o,A){let n=e[0]-t[0],s=e[0]-o[0],a=t[0]-o[0],i=e[1]-t[1],x=e[1]-o[1],d=t[1]-o[1],l=Math.max(Math.abs(n),Math.abs(s),Math.abs(a)),y=Math.max(Math.abs(i),Math.abs(x),Math.abs(d)),c=0,f=0,h=0,m=y/(l+1e-5);m>1.5?c+=oe.DISTANCE_VOTE_POWER:m>.66?f+=oe.DISTANCE_VOTE_POWER:h+=oe.DISTANCE_VOTE_POWER;let v=Math.sqrt(n*n+i*i),b=Math.sqrt(s*s+x*x),P=Math.sqrt(a*a+d*d),p=Math.max(v,b,P),u=e[0],E=e[1],W=o[0],C=o[1];p===v?(W=o[0],C=o[1]):p===P&&(u=t[0],E=t[1]);let V=$A([u,E],[W,C]),B=_A(V,oe.TOTAL_ANGLE_VOTE_POWER);c+=B[0],f+=B[1],h+=B[2];for(let t0 of A){let z=_A(t0,oe.SINGLE_ANGLE_VOTE_POWER);c+=z[0],f+=z[1],h+=z[2]}let H;return c===Math.max(c,f,h)?H=tn(x,i,d,y):h===Math.max(f,h)?H=en(s,n,a,l):H=l2(x,i,d,y,s,n,a,l),H}function on(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let s of i0.all){let a=i0.getPoints(s),i=[],x=[];for(let d of a){let l=e[d[0]],y=e[d[1]],c=$A(l,y),f=c[0],h=c[1];i.push(f),x.push(h)}t.push(i),o.push(x)}for(let s of i0.all){let a=s===i0.thumb?1:0,i=i0.getPoints(s),x=e[i[a][0]],d=e[i[a+1][1]],l=e[i[3][1]],y=i2(x,d,l),c=y2(x,d,l,t[s].slice(a));A[s]=y,n[s]=c}return{curls:A,directions:n}}function xt(e){if(!e||e.length===0)return null;let t=on(e),o={};for(let A of i0.all)o[i0.getName(A)]={curl:X0.getName(t.curls[A]),direction:U.getName(t.directions[A])};return o}function An(e){let t=[];if(!e||e.length===0)return t;let o=on(e);for(let A of KA){let n=A.matchAgainst(o.curls,o.directions);n>=a2&&t.push({name:A.name,confidence:n})}return t}var nn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},he,be,rn;async function R5(e,t){let o=await rn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[y]);let a=o[n].landmarks,i=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],x=[0,0,0,0];if(a&&a.length>0){for(let l of a)l[0]i[2]&&(i[2]=l[0]),l[1]>i[3]&&(i[3]=l[1]);i[2]-=i[0],i[3]-=i[1],x=[i[0]/(e.shape[2]||0),i[1]/(e.shape[1]||0),i[2]/(e.shape[2]||0),i[3]/(e.shape[1]||0)]}else i=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],x=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let d=xt(a);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:i,boxRaw:x,keypoints:a,annotations:s,landmarks:d})}return A}async function w5(e){var o,A;R.initial&&(he=null,be=null),!he||!be?[he,be]=await Promise.all([e.hand.enabled?N((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?N((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&g("cached model:",he.modelUrl),e.debug&&g("cached model:",be.modelUrl));let t=new M5(he);return rn=new P5(t,be),[he,be]}var $=[null,null],x2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],J0=[[0,0],[0,0]],c2=["hand","fist","pinch","point","face","tip","pinchtip"],an=4,ln=1.6,d2=512,f2=1.4,ct=Number.MAX_SAFE_INTEGER,k5=0,L0=[0,0],J={boxes:[],hands:[]},yn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function xn(e){var t;if(R.initial&&($[0]=null),$[0])e.debug&&g("cached model:",$[0].modelUrl);else{dt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),$[0]=await N((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values($[0].modelSignature.inputs);J0[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,J0[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return $[0]}async function cn(e){var t;if(R.initial&&($[1]=null),$[1])e.debug&&g("cached model:",$[1].modelUrl);else{$[1]=await N((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values($[1].modelSignature.inputs);J0[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,J0[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return $[1]}async function m2(e,t){let o=[];if(!e||!$[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),s=Math.min(Math.round((e.shape[1]||0)/8)*8,d2),a=Math.round(s*n/8)*8;A.resize=r.image.resizeBilinear(e,[s,a]),A.cast=r.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await $[0].executeAsync(A.cast,x2),A.boxes=r.squeeze(A.rawBoxes,[0,2]),A.scores=r.squeeze(A.rawScores,[0]);let i=r.unstack(A.scores,1);r.dispose(i[an]),i.splice(an,1),A.filtered=r.stack(i,1),r.dispose(i),A.max=r.max(A.filtered,1),A.argmax=r.argMax(A.filtered,1);let x=0;A.nms=await r.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let d=await A.nms.data(),l=await A.max.data(),y=await A.argmax.data();for(let c of Array.from(d)){let f=r.slice(A.boxes,c,1),h=await f.data();r.dispose(f);let m=[h[1],h[0],h[3]-h[1],h[2]-h[0]],v=tt(m,f2),b=[Math.trunc(m[0]*L0[0]),Math.trunc(m[1]*L0[1]),Math.trunc(m[2]*L0[0]),Math.trunc(m[3]*L0[1])],P=l[c],p=c2[y[c]],u={id:x++,score:P,box:b,boxRaw:v,label:p};o.push(u)}return Object.keys(A).forEach(c=>r.dispose(A[c])),o.sort((c,f)=>f.score-c.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function E5(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&$[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},s=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=r.image.cropAndResize(e,[s],[0],[J0[1][0],J0[1][1]],"bilinear"),n.div=r.div(n.crop,L.tf255),[n.score,n.keypoints]=$[1].execute(n.div,["Identity_1","Identity"]);let a=(await n.score.data())[0],i=(100-Math.trunc(100/(1+Math.exp(a))))/100;if(i>=(o.hand.minConfidence||0)){A.fingerScore=i,n.reshaped=r.reshape(n.keypoints,[-1,3]);let l=(await n.reshaped.array()).map(y=>[y[0]/J0[1][1],y[1]/J0[1][0],y[2]||0]).map(y=>[y[0]*t.boxRaw[2],y[1]*t.boxRaw[3],y[2]||0]);A.keypoints=l.map(y=>[L0[0]*(y[0]+t.boxRaw[0]),L0[1]*(y[1]+t.boxRaw[1]),y[2]||0]),A.landmarks=xt(A.keypoints);for(let y of Object.keys(yn))A.annotations[y]=yn[y].map(c=>A.landmarks&&A.keypoints[c]?A.keypoints[c]:null)}Object.keys(n).forEach(x=>r.dispose(n[x]))}return A}async function z5(e,t){var n,s;if(!$[0]||!$[1]||!((n=$[0])==null?void 0:n.inputs[0].shape)||!((s=$[1])==null?void 0:s.inputs[0].shape))return[];L0=[e.shape[2]||0,e.shape[1]||0],ct++;let o=(t.hand.skipTime||0)>M()-k5,A=ct<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?J.hands:new Promise(async a=>{let i=3*(t.hand.skipTime||0)>M()-k5,x=ct<3*(t.hand.skipFrames||0);t.skipAllowed&&J.hands.length===t.hand.maxDetected?J.hands=await Promise.all(J.boxes.map(l=>E5(e,l,t))):t.skipAllowed&&i&&x&&J.hands.length>0?J.hands=await Promise.all(J.boxes.map(l=>E5(e,l,t))):(J.boxes=await m2(e,t),k5=M(),J.hands=await Promise.all(J.boxes.map(l=>E5(e,l,t))),ct=0);let d=[...J.boxes];if(J.boxes.length=0,t.cacheSensitivity>0)for(let l=0;l.05&&y.box[3]/(e.shape[1]||1)>.05&&J.hands[l].fingerScore&&J.hands[l].fingerScore>(t.hand.minConfidence||0)){let c=tt(y.box,ln),f=tt(y.boxRaw,ln);J.boxes.push({...d[l],box:c,boxRaw:f})}}for(let l=0;lM()-mn,s=j5<(((i=t.face.liveness)==null?void 0:i.skipFrames)||0);return t.skipAllowed&&n&&s&&fn===A&&ft[o]?(j5++,ft[o]):(j5=0,new Promise(async x=>{let d=r.image.resizeBilinear(e,[(r0==null?void 0:r0.inputs[0].shape)?r0.inputs[0].shape[2]:0,(r0==null?void 0:r0.inputs[0].shape)?r0.inputs[0].shape[1]:0],!1),l=r0==null?void 0:r0.execute(d),y=(await l.data())[0];ft[o]=Math.round(100*y)/100,fn=A,mn=M(),r.dispose([d,l]),x(ft[o])}))}var Le={};Ze(Le,{connected:()=>pt,horizontal:()=>W5,kpt:()=>mt,relative:()=>I5,vertical:()=>C5});var mt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],W5=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],C5=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],I5=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],pt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var hn=.005,d0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function O5(e){for(let t of W5){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]d&&d.part===t[0]),n=e.keypoints.findIndex(d=>d&&d.part===t[1]),s=e.keypoints.findIndex(d=>d&&d.part===o[0]),a=e.keypoints.findIndex(d=>d&&d.part===o[1]);if(!e.keypoints[s]||!e.keypoints[a])continue;let i=e.keypoints[A]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[a].position[0]-e.keypoints[A].position[0])]:[0,0],x=e.keypoints[n]?[Math.abs(e.keypoints[a].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0])]:[0,0];if(i[0]>i[1]||x[0]>x[1]){let d=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=d}}}function bn(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=r.pad(e,d0.padding),o.resize=r.image.resizeBilinear(o.pad,[t,t]);let A=r.cast(o.resize,"int32");return Object.keys(o).forEach(n=>r.dispose(o[n])),A}function Mn(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+d0.padding[2][0]+d0.padding[2][1])/t[0]-d0.padding[2][0],A.position[1]*(t[1]+d0.padding[1][0]+d0.padding[1][1])/t[1]-d0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=S0(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var f0,ut=0,N5=Number.MAX_SAFE_INTEGER,Ae={boxes:[],bodies:[],last:0};async function Pn(e){return R.initial&&(f0=null),f0?e.debug&&g("cached model:",f0.modelUrl):(dt(["size"],e),f0=await N(e.body.modelPath)),ut=f0.inputs[0].shape?f0.inputs[0].shape[2]:0,ut<64&&(ut=256),f0}async function u2(e,t,o){let A=e[0][0],n=[],s=0;for(let l=0;lt.body.minConfidence){let y=[A[l][1],A[l][0]];n.push({score:Math.round(100*s)/100,part:mt[l],positionRaw:y,position:[Math.round((o.shape[2]||0)*y[0]),Math.round((o.shape[1]||0)*y[1])]})}s=n.reduce((l,y)=>y.score>l?y.score:l,0);let a=[],i=S0(n.map(l=>l.position),[o.shape[2],o.shape[1]]),x={};for(let[l,y]of Object.entries(pt)){let c=[];for(let f=0;fv.part===y[f]),m=n.find(v=>v.part===y[f+1]);h&&m&&h.score>(t.body.minConfidence||0)&&m.score>(t.body.minConfidence||0)&&c.push([h.position,m.position])}x[l]=c}let d={id:0,score:s,box:i.box,boxRaw:i.boxRaw,keypoints:n,annotations:x};return O5(d),a.push(d),a}async function h2(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let i=[];for(let y=0;y<17;y++){let c=s[3*y+2];if(c>t.body.minConfidence){let f=[s[3*y+1],s[3*y+0]];i.push({part:mt[y],score:Math.round(100*c)/100,positionRaw:f,position:[Math.round((o.shape[2]||0)*f[0]),Math.round((o.shape[1]||0)*f[1])]})}}let x=S0(i.map(y=>y.position),[o.shape[2],o.shape[1]]),d={};for(let[y,c]of Object.entries(pt)){let f=[];for(let h=0;hb.part===c[h]),v=i.find(b=>b.part===c[h+1]);m&&v&&m.score>(t.body.minConfidence||0)&&v.score>(t.body.minConfidence||0)&&f.push([m.position,v.position])}d[y]=f}let l={id:n,score:a,box:x.box,boxRaw:x.boxRaw,keypoints:[...i],annotations:d};O5(l),A.push(l)}}return A.sort((n,s)=>s.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function L5(e,t){if(!f0||!(f0==null?void 0:f0.inputs[0].shape))return[];t.skipAllowed||(Ae.boxes.length=0),N5++;let o=(t.body.skipTime||0)>M()-Ae.last,A=N5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ae.bodies:new Promise(async n=>{let s={};N5=0,s.input=gn(e,ut),s.res=f0==null?void 0:f0.execute(s.input),Ae.last=M();let a=await s.res.array();Ae.bodies=s.res.shape[2]===17?await u2(a,t,e):await h2(a,t,e);for(let i of Ae.bodies)Mn(i,[e.shape[2]||1,e.shape[1]||1]),bn(i.keypoints);Object.keys(s).forEach(i=>r.dispose(s[i])),n(Ae.bodies)})}var ge,ht=[],Tn=0,B5=Number.MAX_SAFE_INTEGER,gt=0,bt=2.5;async function Rn(e){if(!ge||R.initial){ge=await N(e.object.modelPath);let t=Object.values(ge.modelSignature.inputs);gt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&g("cached model:",ge.modelUrl);return ge}async function b2(e,t,o){let A=0,n=[];for(let x of[1,2,4])r.tidy(async()=>{let d=x*13,l=r.squeeze(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)===xe.length)),y=r.squeeze(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)(o.object.minConfidence||0)&&v!==61){let P=(.5+Math.trunc(m%d))/d,p=(.5+Math.trunc(m/d))/d,u=f[m].map(H=>H*(d/x/gt)),[E,W]=[P-bt/x*u[0],p-bt/x*u[1]],[C,S]=[P+bt/x*u[2]-E,p+bt/x*u[3]-W],O=[E,W,C,S];O=O.map(H=>Math.max(0,Math.min(H,1)));let V=[O[0]*t[0],O[1]*t[1],O[2]*t[0],O[3]*t[1]],B={id:A++,score:Math.round(100*b)/100,class:v+1,label:xe[v].label,box:V.map(H=>Math.trunc(H)),boxRaw:O};n.push(B)}}});e.forEach(x=>r.dispose(x));let s=n.map(x=>[x.boxRaw[1],x.boxRaw[0],x.boxRaw[3],x.boxRaw[2]]),a=n.map(x=>x.score),i=[];if(s&&s.length>0){let x=await r.image.nonMaxSuppressionAsync(s,a,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);i=await x.data(),r.dispose(x)}return n=n.filter((x,d)=>i.includes(d)).sort((x,d)=>d.score-x.score),n}async function G5(e,t){let o=(t.object.skipTime||0)>M()-Tn,A=B5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&ht.length>0?(B5++,ht):(B5=0,!R.kernels.includes("mod")||!R.kernels.includes("sparsetodense")?ht:new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],a=r.image.resizeBilinear(e,[gt,gt],!1),i=r.div(a,L.tf255),x=i.transpose([0,3,1,2]);r.dispose(i),r.dispose(a);let d;t.object.enabled&&(d=ge.execute(x)),Tn=M(),r.dispose(x);let l=await b2(d,s,t);ht=l,n(l)}))}var Ge=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],g2=Ge.length,Be=Ge.reduce((e,t,o)=>(e[t]=o,e),{}),M2=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Ha=M2.map(([e,t])=>[Be[e],Be[t]]),kn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function En(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:s},{position:{x:a,y:i}})=>({maxX:Math.max(o,a),maxY:Math.max(A,i),minX:Math.min(n,a),minY:Math.min(s,i)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function zn(e,[t,o],[A,n]){let s=t/A,a=o/n,i=(d,l)=>({id:l,score:d.score,boxRaw:[d.box[0]/n,d.box[1]/A,d.box[2]/n,d.box[3]/A],box:[Math.trunc(d.box[0]*a),Math.trunc(d.box[1]*s),Math.trunc(d.box[2]*a),Math.trunc(d.box[3]*s)],keypoints:d.keypoints.map(({score:y,part:c,position:f})=>({score:y,part:c,position:[Math.trunc(f.x*a),Math.trunc(f.y*s)],positionRaw:[f.x/A,f.y/A]})),annotations:{}});return e.map((d,l)=>i(d,l))}var H5=class{constructor(t,o){w(this,"priorityQueue");w(this,"numberOfElements");w(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function jn(e,t,o,A){let n=o-e,s=A-t;return n*n+s*s}function X5(e,t){return{x:e.x+t.x,y:e.y+t.y}}var v0,v2=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Mt=1,Me=16,T2=50**2;function Sn(e,t,o,A,n,s,a=2){let i=b=>({y:s.get(b.y,b.x,e),x:s.get(b.y,b.x,s.shape[2]/2+e)}),x=(b,P,p)=>({y:Z5(Math.round(b.y/Me),0,P-1),x:Z5(Math.round(b.x/Me),0,p-1)}),[d,l]=A.shape,y=x(t.position,d,l),c=i(y),h=X5(t.position,c);for(let b=0;b[Be[c],Be[f]]),a=s.map(([,c])=>c),i=s.map(([c])=>c),x=t.shape[2],d=a.length,l=new Array(x),y=V5(e.part,Me,o);l[e.part.id]={score:e.score,part:Ge[e.part.id],position:y};for(let c=d-1;c>=0;--c){let f=a[c],h=i[c];l[f]&&!l[h]&&(l[h]=Sn(c,l[f],h,t,o,n))}for(let c=0;ct){i=!1;break}if(!i)break}return i}function k2(e,t){let[o,A,n]=t.shape,s=new H5(o*A*n,({score:a})=>a);for(let a=0;a{var a;let s=(a=n[A])==null?void 0:a.position;return s?jn(o,t,s.y,s.x)<=T2:!1})}function E2(e,t){return t.reduce((A,{position:n,score:s},a)=>(Wn(e,n,a)||(A+=s),A),0)/t.length}function z2(e,t,o,A,n,s){let a=[],i=k2(s,t);for(;a.lengthf.score>s);let y=E2(a,l),c=En(l);y>s&&a.push({keypoints:l,box:c,score:Math.round(100*y)/100})}return a}async function D5(e,t){let o=r.tidy(()=>{if(!v0.inputs[0].shape)return[];let a=r.image.resizeBilinear(e,[v0.inputs[0].shape[2],v0.inputs[0].shape[1]]),i=r.sub(r.div(r.cast(a,"float32"),127.5),1),d=v0.execute(i,v2).map(l=>r.squeeze(l,[0]));return d[1]=r.sigmoid(d[1]),d}),A=await Promise.all(o.map(a=>a.buffer()));for(let a of o)r.dispose(a);let n=await z2(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return v0.inputs[0].shape?zn(n,[e.shape[1],e.shape[2]],[v0.inputs[0].shape[2],v0.inputs[0].shape[1]]):[]}async function Cn(e){return!v0||R.initial?v0=await N(e.body.modelPath):e.debug&&g("cached model:",v0.modelUrl),v0}var w0,q5=!1;async function U5(e){return!w0||R.initial?w0=await N(e.segmentation.modelPath):e.debug&&g("cached model:",w0.modelUrl),w0}async function On(e,t,o){var m,v;if(q5)return{data:[],canvas:null,alpha:null};q5=!0,w0||await U5(o);let A=await ie(e,o),n=((m=A.tensor)==null?void 0:m.shape[2])||0,s=((v=A.tensor)==null?void 0:v.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let a={};a.resize=r.image.resizeBilinear(A.tensor,[w0.inputs[0].shape?w0.inputs[0].shape[1]:0,w0.inputs[0].shape?w0.inputs[0].shape[2]:0],!1),r.dispose(A.tensor),a.norm=r.div(a.resize,L.tf255),a.res=w0.execute(a.norm),a.squeeze=r.squeeze(a.res,0),a.squeeze.shape[2]===2?(a.softmax=r.softmax(a.squeeze),[a.bg,a.fg]=r.unstack(a.softmax,2),a.expand=r.expandDims(a.fg,2),a.pad=r.expandDims(a.expand,0),a.crop=r.image.cropAndResize(a.pad,[[0,0,.5,.5]],[0],[n,s]),a.data=r.squeeze(a.crop,0)):a.data=r.image.resizeBilinear(a.squeeze,[s,n]);let i=Array.from(await a.data.data());if(R.node&&!R.Canvas&&typeof ImageData=="undefined")return o.debug&&g("canvas support missing"),Object.keys(a).forEach(b=>r.dispose(a[b])),{data:i,canvas:null,alpha:null};let x=s0(n,s);r.browser&&await r.browser.toPixels(a.data,x);let d=x.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(d.filter=`blur(${o.segmentation.blur}px)`);let l=d.getImageData(0,0,n,s),y=s0(n,s),c=y.getContext("2d");A.canvas&&c.drawImage(A.canvas,0,0),c.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`),c.drawImage(x,0,0),c.globalCompositeOperation="source-over",c.filter="none";let f=c.getImageData(0,0,n,s);for(let b=0;br.dispose(a[b])),q5=!1,{data:i,canvas:y,alpha:x}}var J5=class{constructor(){w(this,"ssrnetage",null);w(this,"gear",null);w(this,"blazeposedetect",null);w(this,"blazepose",null);w(this,"centernet",null);w(this,"efficientpose",null);w(this,"mobilefacenet",null);w(this,"emotion",null);w(this,"facedetect",null);w(this,"faceiris",null);w(this,"facemesh",null);w(this,"faceres",null);w(this,"ssrnetgender",null);w(this,"handpose",null);w(this,"handskeleton",null);w(this,"handtrack",null);w(this,"liveness",null);w(this,"movenet",null);w(this,"nanodet",null);w(this,"posenet",null);w(this,"segmentation",null);w(this,"antispoof",null)}};function Y5(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Ln(e){var t,o,A,n,s,a,i,x,d,l,y,c,f,h,m,v,b,P,p,u,E,W,C,S,O,V,B,H,t0,z;R.initial&&Y5(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await w5(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await w5(e.config))),e.config.body.enabled&&!e.models.blazepose&&((a=(s=e.config.body)==null?void 0:s.modelPath)==null?void 0:a.includes("blazepose"))&&(e.models.blazepose=lA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=iA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((x=(i=e.config.body)==null?void 0:i.modelPath)==null?void 0:x.includes("efficientpose"))&&(e.models.efficientpose=mA(e.config)),e.config.body.enabled&&!e.models.movenet&&((l=(d=e.config.body)==null?void 0:d.modelPath)==null?void 0:l.includes("movenet"))&&(e.models.movenet=Pn(e.config)),e.config.body.enabled&&!e.models.posenet&&((c=(y=e.config.body)==null?void 0:y.modelPath)==null?void 0:c.includes("posenet"))&&(e.models.posenet=Cn(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=$o(e.config)),e.config.face.enabled&&((f=e.config.face.antispoof)==null?void 0:f.enabled)&&!e.models.antispoof&&(e.models.antispoof=Ho(e.config)),e.config.face.enabled&&((h=e.config.face.liveness)==null?void 0:h.enabled)&&!e.models.liveness&&(e.models.liveness=pn(e.config)),e.config.face.enabled&&((m=e.config.face.description)==null?void 0:m.enabled)&&!e.models.faceres&&(e.models.faceres=BA(e.config)),e.config.face.enabled&&((v=e.config.face.emotion)==null?void 0:v.enabled)&&!e.models.emotion&&(e.models.emotion=bA(e.config)),e.config.face.enabled&&((b=e.config.face.iris)==null?void 0:b.enabled)&&!e.models.faceiris&&(e.models.faceiris=zA(e.config)),e.config.face.enabled&&((P=e.config.face.mesh)==null?void 0:P.enabled)&&!e.models.facemesh&&(e.models.facemesh=CA(e.config)),e.config.face.enabled&&((p=e.config.face.gear)==null?void 0:p.enabled)&&!e.models.gear&&(e.models.gear=ko(e.config)),e.config.face.enabled&&((u=e.config.face.ssrnet)==null?void 0:u.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=Wo(e.config)),e.config.face.enabled&&((E=e.config.face.ssrnet)==null?void 0:E.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=No(e.config)),e.config.face.enabled&&((W=e.config.face.mobilefacenet)==null?void 0:W.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=TA(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((S=(C=e.config.hand.detector)==null?void 0:C.modelPath)==null?void 0:S.includes("handtrack"))&&(e.models.handtrack=xn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((V=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:V.includes("handtrack"))&&(e.models.handskeleton=cn(e.config)),e.config.object.enabled&&!e.models.centernet&&((H=(B=e.config.object)==null?void 0:B.modelPath)==null?void 0:H.includes("centernet"))&&(e.models.centernet=cA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((z=(t0=e.config.object)==null?void 0:t0.modelPath)==null?void 0:z.includes("nanodet"))&&(e.models.nanodet=Rn(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=U5(e.config));for await(let m0 of Object.keys(e.models))e.models[m0]&&typeof e.models[m0]!="undefined"&&(e.models[m0]=await e.models[m0])}async function Bn(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],s=A==null?void 0:A.executor;if(s&&s.graph.nodes)for(let i of Object.values(s.graph.nodes)){let x=i.op.toLowerCase();n.includes(x)||n.push(x)}else!s&&e.config.debug&&g("model signature not determined:",o);let a=[];for(let i of n)!t.includes(i)&&!e.env.kernels.includes(i)&&!e.env.kernels.includes(i.replace("_",""))&&!e.env.kernels.includes(i.replace("native",""))&&!e.env.kernels.includes(i.replace("v2",""))&&a.push(i);e.config.debug&&a.length>0&&g("model validation failed:",o,a)}}var q={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function j2(){let e=q.gl;!e||(q.extensions=e.getSupportedExtensions())}async function Hn(e){var t;if(e.config.backend==="humangl"&&(q.name in r.engine().registry&&(!q.gl||!q.gl.getParameter(q.gl.VERSION))&&(g("error: humangl backend invalid context"),Y5(e)),!r.findBackend(q.name))){try{q.canvas=await s0(100,100)}catch(A){g("error: cannot create canvas:",A);return}try{if(q.gl=(t=q.canvas)==null?void 0:t.getContext("webgl2",q.webGLattr),!q.gl.getParameter(q.gl.VERSION).includes("2.0")){g("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}q.canvas&&(q.canvas.addEventListener("webglcontextlost",async n=>{throw g("error: humangl:",n.type),g("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),q.canvas.addEventListener("webglcontextrestored",n=>{g("error: humangl context restored:",n)}),q.canvas.addEventListener("webglcontextcreationerror",n=>{g("error: humangl context create:",n)}))}catch(A){g("error: cannot get WebGL context:",A);return}try{r.setWebGLContext(2,q.gl)}catch(A){g("error: cannot set WebGL context:",A);return}try{let A=new r.GPGPUContext(q.gl);r.registerBackend(q.name,()=>new r.MathBackendWebGL(A),q.priority)}catch(A){g("error: cannot register WebGL backend:",A);return}try{r.getKernelsForBackend("webgl").forEach(n=>{let s={...n,backendName:q.name};r.registerKernel(s)})}catch(A){g("error: cannot update WebGL backend registration:",A);return}let o=r.backend().getGPGPUContext?r.backend().getGPGPUContext().gl:null;if(o)g(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{g("error: no current gl context:",o,q.gl);return}try{r.ENV.set("WEBGL_VERSION",2)}catch(A){g("error: cannot set WebGL backend flags:",A);return}j2(),g("backend registered:",q.name)}}function S2(){if(!R.kernels.includes("mod")){let e={kernelName:"Mod",backendName:r.getBackend(),kernelFunc:t=>r.tidy(()=>r.sub(t.inputs.a,r.mul(r.div(t.inputs.a,t.inputs.b),t.inputs.b)))};r.registerKernel(e),R.kernels.push("mod")}if(!R.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:r.getBackend(),kernelFunc:t=>r.tidy(()=>r.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+r.mod(t.inputs.a,t.inputs.b))};r.registerKernel(e),R.kernels.push("floormod")}}async function Pt(e,t=!1){if(e.state="backend",t||R.initial||e.config.backend&&e.config.backend.length>0&&r.getBackend()!==e.config.backend){let o=M();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&g("running inside web worker"),R.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&g("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),R.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&g(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),R.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")g("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&g("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Hn(e);let A=Object.keys(r.engine().registryFactory);if(e.config.debug&&g("available backends:",A),A.includes(e.config.backend)||(g(`error: backend ${e.config.backend} not found in registry`),e.config.backend=R.node?"tensorflow":"webgl",e.config.debug&&g(`override: setting backend ${e.config.backend}`)),e.config.debug&&g("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&g("wasm path:",e.config.wasmPath),typeof(r==null?void 0:r.setWasmPaths)!="undefined")await r.setWasmPaths(e.config.wasmPath);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await r.env().getAsync("WASM_HAS_SIMD_SUPPORT"),s=await r.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&g(`wasm execution: ${n?"SIMD":"no SIMD"} ${s?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&g("warning: wasm simd support is not enabled")}try{await r.setBackend(e.config.backend),await r.ready(),zo()}catch(n){return g("error: cannot set backend:",e.config.backend,n),!1}}if(r.getBackend()==="humangl"&&(r.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),r.ENV.set("WEBGL_CPU_FORWARD",!0),r.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),r.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),r.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),r.backend().getGPGPUContext)){let A=await r.backend().getGPGPUContext().gl;e.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}r.getBackend()==="webgpu",r.enableProdMode(),await r.ready(),e.performance.initBackend=Math.trunc(M()-o),e.config.backend=r.getBackend(),await R.updateBackend(),S2()}return!0}function dt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&g("kernelFunc",o,t.backend)}};r.registerKernel(A)}R.kernels=r.getKernelsForBackend(r.getBackend()).map(o=>o.kernelName.toLowerCase())}var B0={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},K5=0,ne=e=>{if(!e)g("draw error: invalid canvas");else if(!e.getContext)g("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)g("draw error: cannot get canvas context");else return t}return null},Pe=e=>Math.round(e*180/Math.PI);function Q5(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function He(e,t,o,A,n,s){if(e.beginPath(),e.lineWidth=s.lineWidth,s.useCurves){let a=(t+t+A)/2,i=(o+o+n)/2;e.ellipse(a,i,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+s.roundRect,o),e.lineTo(t+A-s.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+s.roundRect),e.lineTo(t+A,o+n-s.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-s.roundRect,o+n),e.lineTo(t+s.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-s.roundRect),e.lineTo(t,o+s.roundRect),e.quadraticCurveTo(t,o,t+s.roundRect,o),e.closePath();e.stroke()}function Zn(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function C2(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){Zn(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&x[1].length>0){let d=i[1]>0?`#${i[1]}`:"",l=`${i[0]} ${d}: ${x[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l,8,2+s*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(l,6,0+s*A.lineHeight),s+=1}}}}async function $5(e,t,o){var s,a,i,x,d;let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n)for(let l of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&He(n,l.box[0],l.box[1],l.box[2],l.box[3],A),A.drawLabels){let y=[];if(y.push(`face: ${Math.trunc(100*l.score)}%`),l.genderScore&&y.push(`${l.gender||""} ${Math.trunc(100*l.genderScore)}%`),l.age&&y.push(`age: ${l.age||""}`),l.iris&&y.push(`distance: ${l.iris}`),l.real&&y.push(`real: ${Math.trunc(100*l.real)}%`),l.live&&y.push(`live: ${Math.trunc(100*l.live)}%`),l.emotion&&l.emotion.length>0){let c=l.emotion.map(f=>`${Math.trunc(100*f.score)}% ${f.emotion}`);c.length>3&&(c.length=3),y.push(c.join(" "))}l.rotation&&l.rotation.angle&&l.rotation.gaze&&(l.rotation.angle.roll&&y.push(`roll: ${Pe(l.rotation.angle.roll)}\xB0 yaw:${Pe(l.rotation.angle.yaw)}\xB0 pitch:${Pe(l.rotation.angle.pitch)}\xB0`),l.rotation.gaze.bearing&&y.push(`gaze: ${Pe(l.rotation.gaze.bearing)}\xB0`)),y.length===0&&y.push("face"),n.fillStyle=A.color;for(let c=y.length-1;c>=0;c--){let f=Math.max(l.box[0],0),h=c*A.lineHeight+l.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(y[c],f+5,h+16)),n.fillStyle=A.labelColor,n.fillText(y[c],f+4,h+15)}}if(n.lineWidth=2,l.mesh&&l.mesh.length>0){if(A.drawPoints)for(let y of l.mesh)Q5(n,y[0],y[1],y[2],A);if(A.drawPolygons){if(l.mesh.length>450)for(let y=0;yl.mesh[f]);Zn(n,c,A)}if(l.annotations&&l.annotations.leftEyeIris&&l.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let y=Math.abs(l.annotations.leftEyeIris[3][0]-l.annotations.leftEyeIris[1][0])/2,c=Math.abs(l.annotations.leftEyeIris[4][1]-l.annotations.leftEyeIris[2][1])/2;n.ellipse(l.annotations.leftEyeIris[0][0],l.annotations.leftEyeIris[0][1],y,c,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(l.annotations&&l.annotations.rightEyeIris&&l.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let y=Math.abs(l.annotations.rightEyeIris[3][0]-l.annotations.rightEyeIris[1][0])/2,c=Math.abs(l.annotations.rightEyeIris[4][1]-l.annotations.rightEyeIris[2][1])/2;n.ellipse(l.annotations.rightEyeIris[0][0],l.annotations.rightEyeIris[0][1],y,c,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((s=l.rotation)==null?void 0:s.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let y=l.box[0]+l.box[2]/2-l.box[3]*Pe(l.rotation.angle.yaw)/90,c=l.box[1]+l.box[3]/2+l.box[2]*Pe(l.rotation.angle.pitch)/90,f=new Path2D(` +`;var jt=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,s)=>(o[s]=0,n))},bo=class{constructor(t,o,A){w(this,"uniform",{});w(this,"attribute",{});w(this,"gl");w(this,"id");w(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(g(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(g("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),s=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!s)){if(!this.id){g("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,s),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){g(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),jt(o,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=this.gl.getAttribLocation(this.id,a);jt(o,"uniform",this.uniform),jt(A,"uniform",this.uniform);for(let a in this.uniform)this.uniform[a]=this.gl.getUniformLocation(this.id,a)}}};function go(){let e=0,t=null,o=!1,A=-1,n=[null,null],s=[],a=null,i=null,x=s0(100,100),d={},l={INTERMEDIATE:1},y=x.getContext("webgl");if(this.gl=y,!y){g("filter: cannot get webgl context");return}function c(M,p){if(!(M===x.width&&p===x.height)){if(x.width=M,x.height=p,!a){let u=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);a=y.createBuffer(),y.bindBuffer(y.ARRAY_BUFFER,a),y.bufferData(y.ARRAY_BUFFER,u,y.STATIC_DRAW),y.pixelStorei(y.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}y.viewport(0,0,x.width,x.height),n=[null,null]}}function f(M,p){let u=y.createFramebuffer();y.bindFramebuffer(y.FRAMEBUFFER,u);let E=y.createRenderbuffer();y.bindRenderbuffer(y.RENDERBUFFER,E);let W=y.createTexture();return y.bindTexture(y.TEXTURE_2D,W),y.texImage2D(y.TEXTURE_2D,0,y.RGBA,M,p,0,y.RGBA,y.UNSIGNED_BYTE,null),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MAG_FILTER,y.LINEAR),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MIN_FILTER,y.LINEAR),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_S,y.CLAMP_TO_EDGE),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_T,y.CLAMP_TO_EDGE),y.framebufferTexture2D(y.FRAMEBUFFER,y.COLOR_ATTACHMENT0,y.TEXTURE_2D,W,0),y.bindTexture(y.TEXTURE_2D,null),y.bindFramebuffer(y.FRAMEBUFFER,null),{fbo:u,texture:W}}function h(M){return n[M]=n[M]||f(x.width,x.height),n[M]}function m(M=0){if(!i)return;let p=null,u=null,E=!1;e===0?p=t:p=h(A).texture||null,e++,o&&!(M&l.INTERMEDIATE)?(u=null,E=e%2===0):(A=(A+1)%2,u=h(A).fbo||null),y.bindTexture(y.TEXTURE_2D,p),y.bindFramebuffer(y.FRAMEBUFFER,u),y.uniform1f(i.uniform.flipY,E?-1:1),y.drawArrays(y.TRIANGLES,0,6)}function v(M){if(d[M])return i=d[M],y.useProgram((i?i.id:null)||null),i;if(i=new bo(y,co,M),!i)return g("filter: could not get webgl program"),null;let p=Float32Array.BYTES_PER_ELEMENT,u=4*p;return y.enableVertexAttribArray(i.attribute.pos),y.vertexAttribPointer(i.attribute.pos,2,y.FLOAT,!1,u,0*p),y.enableVertexAttribArray(i.attribute.uv),y.vertexAttribPointer(i.attribute.uv,2,y.FLOAT,!1,u,2*p),d[M]=i,i}let b={colorMatrix:M=>{let p=new Float32Array(M);p[4]/=255,p[9]/=255,p[14]/=255,p[19]/=255;let u=p[18]===1&&p[3]===0&&p[8]===0&&p[13]===0&&p[15]===0&&p[16]===0&&p[17]===0&&p[19]===0?mo:fo,E=v(u);!E||(y.uniform1fv(E.uniform.m,p),m())},brightness:M=>{let p=(M||0)+1;b.colorMatrix([p,0,0,0,0,0,p,0,0,0,0,0,p,0,0,0,0,0,1,0])},saturation:M=>{let p=(M||0)*2/3+1,u=(p-1)*-.5;b.colorMatrix([p,u,u,0,0,u,p,u,0,0,u,u,p,0,0,0,0,0,1,0])},desaturate:()=>{b.saturation(-1)},contrast:M=>{let p=(M||0)+1,u=-128*(p-1);b.colorMatrix([p,0,0,0,u,0,p,0,0,u,0,0,p,0,u,0,0,0,1,0])},negative:()=>{b.contrast(-2)},hue:M=>{M=(M||0)/180*Math.PI;let p=Math.cos(M),u=Math.sin(M),E=.213,W=.715,C=.072;b.colorMatrix([E+p*(1-E)+u*-E,W+p*-W+u*-W,C+p*-C+u*(1-C),0,0,E+p*-E+u*.143,W+p*(1-W)+u*.14,C+p*-C+u*-.283,0,0,E+p*-E+u*-(1-E),W+p*-W+u*W,C+p*(1-C)+u*C,0,0,0,0,0,1,0])},desaturateLuminance:()=>{b.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{b.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{b.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{b.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{b.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{b.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{b.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{b.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:M=>{let p=new Float32Array(M),u=1/x.width,E=1/x.height,W=v(ho);!W||(y.uniform1fv(W.uniform.m,p),y.uniform2f(W.uniform.px,u,E),m())},detectEdges:()=>{b.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{b.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{b.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:M=>{let p=M||1;b.convolution.call(this,[0,-1*p,0,-1*p,1+4*p,-1*p,0,-1*p,0])},emboss:M=>{let p=M||1;b.convolution.call(this,[-2*p,-1*p,0,-1*p,1,1*p,0,1*p,2*p])},blur:M=>{let p=M/7/x.width,u=M/7/x.height,E=v(uo);!E||(y.uniform2f(E.uniform.px,0,u),m(l.INTERMEDIATE),y.uniform2f(E.uniform.px,p,0),m())},pixelate:M=>{let p=M/x.width,u=M/x.height,E=v(po);!E||(y.uniform2f(E.uniform.size,p,u),m())}};this.add=function(M){let p=Array.prototype.slice.call(arguments,1),u=b[M];s.push({func:u,args:p})},this.reset=function(){s=[]},this.get=function(){return s},this.apply=function(M){c(M.width,M.height),e=0,t||(t=y.createTexture()),y.bindTexture(y.TEXTURE_2D,t),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_S,y.CLAMP_TO_EDGE),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_T,y.CLAMP_TO_EDGE),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MIN_FILTER,y.NEAREST),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MAG_FILTER,y.NEAREST),y.texImage2D(y.TEXTURE_2D,0,y.RGBA,y.RGBA,y.UNSIGNED_BYTE,M);for(let p=0;pf.data())),a=.99*Math.max(s[0][0],s[1][0],s[2][0]),i=[r.sub(o[0],A[0]),r.sub(o[1],A[1]),r.sub(o[2],A[2])],x=[r.sub(n[0],A[0]),r.sub(n[1],A[1]),r.sub(n[2],A[2])],d=[r.div(a,x[0]),r.div(a,x[1]),r.div(a,x[2])],l=[r.mul(i[0],d[0]),r.mul(i[1],d[1]),r.mul(i[2],d[2])],y=r.stack([l[0],l[1],l[2]],2),c=r.reshape(y,[1,t.shape[0],t.shape[1],3]);return r.dispose([...o,...A,...n,...i,...x,...d,...l,y,t]),c}var De=2048,G=null,_=null,ae=null,D,z0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function s0(e,t){let o;if(R.browser)if(R.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof R.Canvas!="undefined"?o=new R.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function St(e,t){let o=t||s0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function ie(e,t,o=!0){if(!e)return t.debug&&g("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof se)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof R.Canvas!="undefined"&&e instanceof R.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof se){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=r.expandDims(e,0);else if(e.shape[2]===4){let n=r.slice3d(e,[0,0,0],[-1,-1,3]);A=r.expandDims(n,0),r.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=r.clone(e):e.shape[3]===4&&(A=r.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=r.cast(A,"float32");r.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?_:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&g("input stream is not ready"),{tensor:null,canvas:G};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&g("cannot determine input dimensions"),{tensor:null,canvas:G};let s=A,a=n;if(s>De&&(s=De,a=Math.trunc(s*n/A)),a>De&&(a=De,s=Math.trunc(a*A/n)),(t.filter.width||0)>0?s=t.filter.width:(t.filter.height||0)>0&&(s=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?a=t.filter.height:(t.filter.width||0)>0&&(a=n*((t.filter.width||0)/A)),!s||!a)throw new Error("input error: cannot determine dimension");(!G||(G==null?void 0:G.width)!==s||(G==null?void 0:G.height)!==a)&&(G=s0(s,a));let i=G.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?i.putImageData(e,0,0):t.filter.flip&&typeof i.translate!="undefined"?(i.translate(A,0),i.scale(-1,1),i.drawImage(e,0,0,A,n,0,0,G==null?void 0:G.width,G==null?void 0:G.height),i.setTransform(1,0,0,1,0,0)):i.drawImage(e,0,0,A,n,0,0,G==null?void 0:G.width,G==null?void 0:G.height),(!_||G.width!==_.width||(G==null?void 0:G.height)!==(_==null?void 0:_.height))&&(_=s0(G.width,G.height)),t.filter.enabled&&R.webgl.supported){if(D||(D=R.browser?new go:null),R.filter=!!D,!D||!D.add)return t.debug&&g("input process error: cannot initialize filters"),{tensor:null,canvas:G};D.reset(),t.filter.brightness!==0&&D.add("brightness",t.filter.brightness),t.filter.contrast!==0&&D.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&D.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&D.add("blur",t.filter.blur),t.filter.saturation!==0&&D.add("saturation",t.filter.saturation),t.filter.hue!==0&&D.add("hue",t.filter.hue),t.filter.negative&&D.add("negative"),t.filter.sepia&&D.add("sepia"),t.filter.vintage&&D.add("brownie"),t.filter.sepia&&D.add("sepia"),t.filter.kodachrome&&D.add("kodachrome"),t.filter.technicolor&&D.add("technicolor"),t.filter.polaroid&&D.add("polaroid"),t.filter.pixelate!==0&&D.add("pixelate",t.filter.pixelate),D.get()>0?_=D.apply(G):_=D.draw(G)}else St(G,_),D&&(D=null),R.filter=!!D;if(!o)return{tensor:null,canvas:_};if(!_)throw new Error("canvas error: cannot create output");let x,d=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(R.browser&&r.browser)x=r.browser?r.browser.fromPixels(e):null;else{d=e.data.length/e.height/e.width;let c=new Uint8Array(e.data.buffer);x=r.tensor(c,[e.height,e.width,d],"int32")}else if((!ae||_.width!==ae.width||_.height!==ae.height)&&(ae=s0(_.width,_.height)),r.browser&&R.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?x=r.browser.fromPixels(_):(ae=St(_),x=r.browser.fromPixels(ae));else{let h=St(_).getContext("2d").getImageData(0,0,s,a);d=h.data.length/s/a;let m=new Uint8Array(h.data.buffer);x=r.tensor(m,[s,a,d])}if(d===4){let c=r.slice3d(x,[0,0,0],[-1,-1,3]);r.dispose(x),x=c}if(!x)throw new Error("input error: cannot create tensor");let l=r.cast(x,"float32"),y=t.filter.equalization?await Xe(l):r.expandDims(l,0);return r.dispose([x,l]),{tensor:y,canvas:t.filter.return?_:null}}}async function Po(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!z0.inputTensor)z0.inputTensor=r.clone(t);else if(z0.inputTensor.shape[1]!==t.shape[1]||z0.inputTensor.shape[2]!==t.shape[2])r.dispose(z0.inputTensor),z0.inputTensor=r.clone(t);else{let A={};A.diff=r.sub(t,z0.inputTensor),A.squared=r.mul(A.diff,A.diff),A.sum=r.sum(A.squared);let s=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;r.dispose([z0.inputTensor,A.diff,A.squared,A.sum]),z0.inputTensor=r.clone(t),o=s<=(e.cacheSensitivity||0)}return o}async function Mo(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||g("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||g("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=r.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?r.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):r.clone(o),A.diff=r.sub(A.input1,A.input2),A.squared=r.mul(A.diff,A.diff),A.sum=r.sum(A.squared);let s=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return r.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),s}var vo=class{constructor(){w(this,"browser");w(this,"node");w(this,"worker");w(this,"platform","");w(this,"agent","");w(this,"backends",[]);w(this,"initial");w(this,"filter");w(this,"tfjs");w(this,"offscreen");w(this,"perfadd",!1);w(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});w(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});w(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});w(this,"cpu",{model:void 0,flags:[]});w(this,"kernels",[]);w(this,"Canvas");w(this,"Image");w(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:je["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(r.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&r.getBackend()==="wasm"&&(this.wasm.simd=await r.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await r.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=s0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(r.getBackend()==="webgl"||r.getBackend()==="humangl")){let A=r.backend().gpgpu!=="undefined"?await r.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=r.getKernelsForBackend(r.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},R=new vo;var j0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function gr(e,t){return j0.debug&&g("load model fetch:",e,t),fetch(e,t)}function To(e){j0.cacheModels=e.cacheModels,j0.verbose=e.debug,j0.modelBasePath=e.modelBasePath}async function N(e){let t=xo(j0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await r.io.listModels(),s=j0.cacheModels&&Object.keys(n).includes(A),a=typeof fetch=="undefined"?{}:{fetchFunc:(x,d)=>gr(x,d)},i=new zt(s?A:t,a);try{i.findIOHandler(),j0.debug&&g("model load handler:",i.handler);let x=await i.handler.load();i.loadSync(x),j0.verbose&&g("load model:",i.modelUrl)}catch(x){g("error loading model:",t,x)}if(j0.cacheModels&&!s)try{let x=await i.save(A);g("model saved:",A,x)}catch(x){g("error saving model:",t,x)}return i}var Wt="2.6.3";var u0,Ct=[],vr=["white","black","asian","indian","other"],Tr=[15,23,28,35.5,45.5,55.5,65],Ro=0,wo=0,It=Number.MAX_SAFE_INTEGER;async function ko(e){return R.initial&&(u0=null),u0?e.debug&&g("cached model:",u0.modelUrl):u0=await N(e.face.gear),u0}async function Ot(e,t,o,A){var a,i;if(!u0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=It<(((a=t.face.gear)==null?void 0:a.skipFrames)||0),s=(((i=t.face.gear)==null?void 0:i.skipTime)||0)>P()-wo;return t.skipAllowed&&s&&n&&Ro===A&&Ct[o]?(It++,Ct[o]):(It=0,new Promise(async x=>{var b,M;if(!(u0==null?void 0:u0.inputs[0].shape))return;let d={},l=[[0,.1,.9,.9]];d.resize=r.image.cropAndResize(e,l,[0],[u0.inputs[0].shape[2],u0.inputs[0].shape[1]]);let y={age:0,gender:"unknown",genderScore:0,race:[]};((b=t.face.gear)==null?void 0:b.enabled)&&([d.age,d.gender,d.race]=u0.execute(d.resize,["age_output","gender_output","race_output"]));let c=await d.gender.data();y.gender=c[0]>c[1]?"male":"female",y.genderScore=Math.round(100*(c[0]>c[1]?c[0]:c[1]))/100;let f=await d.race.data();for(let p=0;p(((M=t.face.gear)==null?void 0:M.minConfidence)||.2)&&y.race.push({score:Math.round(100*f[p])/100,race:vr[p]});y.race.sort((p,u)=>u.score-p.score);let m=Array.from(await d.age.data()).map((p,u)=>[Tr[u],p]).sort((p,u)=>u[1]-p[1]),v=m[0][0];for(let p=1;pr.dispose(d[p])),Ct[o]=y,Ro=A,wo=P(),x(y)}))}var L={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function zo(){L.tf255=r.scalar(255,"float32"),L.tf1=r.scalar(1,"float32"),L.tf2=r.scalar(2,"float32"),L.tf05=r.scalar(.5,"float32"),L.tf127=r.scalar(127.5,"float32"),L.rgb=r.tensor1d([.2989,.587,.114],"float32")}var l0,qe=[],jo=0,So=0,Nt=Number.MAX_SAFE_INTEGER;async function Wo(e){return R.initial&&(l0=null),l0?e.debug&&g("cached model:",l0.modelUrl):l0=await N(e.face.ssrnet.modelPathAge),l0}async function Lt(e,t,o,A){var a,i,x,d;if(!l0)return{age:0};let n=Nt<(((a=t.face.ssrnet)==null?void 0:a.skipFrames)||0),s=(((i=t.face.ssrnet)==null?void 0:i.skipTime)||0)>P()-So;return t.skipAllowed&&n&&s&&jo===A&&((x=qe[o])==null?void 0:x.age)&&((d=qe[o])==null?void 0:d.age)>0?(Nt++,qe[o]):(Nt=0,new Promise(async l=>{if(!(l0==null?void 0:l0.inputs)||!l0.inputs[0]||!l0.inputs[0].shape)return;let y={};y.resize=r.image.resizeBilinear(e,[l0.inputs[0].shape[2],l0.inputs[0].shape[1]],!1),y.enhance=r.mul(y.resize,L.tf255);let c={age:0};if(t.face.ssrnet.enabled&&(y.age=l0.execute(y.enhance)),y.age){let f=await y.age.data();c.age=Math.trunc(10*f[0])/10}Object.keys(y).forEach(f=>r.dispose(y[f])),qe[o]=c,jo=A,So=P(),l(c)}))}var h0,Ue=[],Io=0,Oo=0,Bt=Number.MAX_SAFE_INTEGER,Gt=[.2989,.587,.114];async function No(e){return R.initial&&(h0=null),h0?e.debug&&g("cached model:",h0.modelUrl):h0=await N(e.face.ssrnet.modelPathGender),h0}async function Ht(e,t,o,A){var a,i,x,d;if(!h0)return{gender:"unknown",genderScore:0};let n=Bt<(((a=t.face.ssrnet)==null?void 0:a.skipFrames)||0),s=(((i=t.face.ssrnet)==null?void 0:i.skipTime)||0)>P()-Oo;return t.skipAllowed&&n&&s&&Io===A&&((x=Ue[o])==null?void 0:x.gender)&&((d=Ue[o])==null?void 0:d.genderScore)>0?(Bt++,Ue[o]):(Bt=0,new Promise(async l=>{if(!(h0==null?void 0:h0.inputs[0].shape))return;let y={};y.resize=r.image.resizeBilinear(e,[h0.inputs[0].shape[2],h0.inputs[0].shape[1]],!1),y.enhance=r.tidy(()=>{let[h,m,v]=r.split(y.resize,3,3),b=r.mul(h,Gt[0]),M=r.mul(m,Gt[1]),p=r.mul(v,Gt[2]),u=r.addN([b,M,p]);return r.mul(r.sub(u,L.tf05),2)});let c={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(y.gender=h0.execute(y.enhance));let f=await y.gender.data();c.gender=f[0]>f[1]?"female":"male",c.genderScore=f[0]>f[1]?Math.trunc(100*f[0])/100:Math.trunc(100*f[1])/100,Object.keys(y).forEach(h=>r.dispose(y[h])),Ue[o]=c,Io=A,Oo=P(),l(c)}))}var A0,Je=[],Ft=Number.MAX_SAFE_INTEGER,Bo=0,Go=0;async function Ho(e){var t;return R.initial&&(A0=null),A0?e.debug&&g("cached model:",A0.modelUrl):A0=await N((t=e.face.antispoof)==null?void 0:t.modelPath),A0}async function Vt(e,t,o,A){var a,i;if(!A0)return 0;let n=(((a=t.face.antispoof)==null?void 0:a.skipTime)||0)>P()-Go,s=Ft<(((i=t.face.antispoof)==null?void 0:i.skipFrames)||0);return t.skipAllowed&&n&&s&&Bo===A&&Je[o]?(Ft++,Je[o]):(Ft=0,new Promise(async x=>{let d=r.image.resizeBilinear(e,[(A0==null?void 0:A0.inputs[0].shape)?A0.inputs[0].shape[2]:0,(A0==null?void 0:A0.inputs[0].shape)?A0.inputs[0].shape[1]:0],!1),l=A0==null?void 0:A0.execute(d),y=(await l.data())[0];Je[o]=Math.round(100*y)/100,Bo=A,Go=P(),r.dispose([d,l]),x(Je[o])}))}var b0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},Zt={count:468,mouth:13,symmetryLine:[13,b0.midwayBetweenEyes[0]]},We={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},Xt=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],Ce=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],K0=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var wr=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],kr=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],Er=[33,133,362,263,1,78,308],vs=wr.map(e=>Ce[e]),Ts=kr.map(e=>Ce[e]),Rs=Er.map(e=>Ce[e]);var le=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Ye=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],Jt=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],Yt=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],Xo=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},qt=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],s=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],a=r.image.cropAndResize(t,[s],[0],o),i=r.div(a,L.tf255);return r.dispose(a),i},Ke=(e,t)=>{let o=Ye(e),A=le(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},Qe=e=>{let t=Ye(e),o=le(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},Do=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},Ut=[[1,0,0],[0,1,0],[0,0,1]],zr=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),jr=(e,t)=>zr(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var Vo=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Q0=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],s=Vo(t[0],t[1]),a=Zo(s,n),i=Vo(-t[0],-t[1]);return Zo(a,i)},Wr=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Q0(t[0],o),-Q0(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},Cr=(e,t)=>[Q0(e,t[0]),Q0(e,t[1])];function Uo(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[s[0]/n*(f[0]-n/2),s[1]/n*(f[1]-n/2),f[2]||0]),i=o&&o!==0&&Math.abs(o)>.2,x=i?qo(o,[0,0]):Ut,d=i?a.map(f=>[...Cr(f,x),f[2]]):a,l=i?Wr(A):Ut,y=Ye(t),c=[Q0(y,l[0]),Q0(y,l[1])];return d.map(f=>[Math.trunc(f[0]+c[0]),Math.trunc(f[1]+c[1]),Math.trunc(f[2]||0)])}function Yo(e,t,o,A){let n=t.landmarks.length>=Zt.count?Zt.symmetryLine:We.symmetryLine,s=0,a=Ut,i;if(e&&R.kernels.includes("rotatewithoffset"))if(s=jr(t.landmarks[n[0]],t.landmarks[n[1]]),s&&s!==0&&Math.abs(s)>.2){let d=Ye(t),l=[d[0]/o.shape[2],d[1]/o.shape[1]],y=r.image.rotateWithOffset(o,s,0,l);a=qo(-s,d),i=qt(t,y,[A,A]),r.dispose(y)}else i=qt(t,o,[A,A]);else i=qt(t,o,[A,A]);return[s,a,i]}var Ir=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},Ko=(e,t)=>{let o=Ir(e),A=le(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var Qo=6,Or=1.2,T0,_o=null,H0=0,Ie=null,_e=()=>H0;async function $o(e){var t;return R.initial&&(T0=null),T0?e.debug&&g("cached model:",T0.modelUrl):T0=await N((t=e.face.detector)==null?void 0:t.modelPath),H0=T0.inputs[0].shape?T0.inputs[0].shape[2]:0,Ie=r.scalar(H0,"int32"),_o=r.tensor2d(Uo(H0)),T0}function Nr(e){let t={};t.boxStarts=r.slice(e,[0,1],[-1,2]),t.centers=r.add(t.boxStarts,_o),t.boxSizes=r.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=r.div(t.boxSizes,Ie),t.centersNormalized=r.div(t.centers,Ie),t.halfBoxSize=r.div(t.boxSizesNormalized,L.tf2),t.starts=r.sub(t.centersNormalized,t.halfBoxSize),t.ends=r.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=r.mul(t.starts,Ie),t.endNormalized=r.mul(t.ends,Ie);let o=r.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>r.dispose(t[A])),o}async function eA(e,t){var i,x,d,l;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=r.image.resizeBilinear(e,[H0,H0]),o.div=r.div(o.resized,L.tf127),o.normalized=r.sub(o.div,L.tf05);let A=T0==null?void 0:T0.execute(o.normalized);if(Array.isArray(A)){let y=A.sort((c,f)=>c.size-f.size);o.concat384=r.concat([y[0],y[2]],2),o.concat512=r.concat([y[1],y[3]],2),o.concat=r.concat([o.concat512,o.concat384],1),o.batch=r.squeeze(o.concat,0)}else o.batch=r.squeeze(A);r.dispose(A),o.boxes=Nr(o.batch),o.logits=r.slice(o.batch,[0,0],[-1,1]),o.sigmoid=r.sigmoid(o.logits),o.scores=r.squeeze(o.sigmoid),o.nms=await r.image.nonMaxSuppressionAsync(o.boxes,o.scores,((i=t.face.detector)==null?void 0:i.maxDetected)||0,((x=t.face.detector)==null?void 0:x.iouThreshold)||0,((d=t.face.detector)==null?void 0:d.minConfidence)||0);let n=await o.nms.array(),s=[],a=await o.scores.data();for(let y=0;y(((l=t.face.detector)==null?void 0:l.minConfidence)||0)){let f={};f.bbox=r.slice(o.boxes,[n[y],0],[1,-1]),f.slice=r.slice(o.batch,[n[y],Qo-1],[1,-1]),f.squeeze=r.squeeze(f.slice),f.landmarks=r.reshape(f.squeeze,[Qo,-1]);let h=await f.bbox.data(),m={startPoint:[h[0],h[1]],endPoint:[h[2],h[3]],landmarks:await f.landmarks.array(),confidence:c},v=Xo(m,[(e.shape[2]||0)/H0,(e.shape[1]||0)/H0]),b=Ke(v,t.face.scale||Or),M=Qe(b);s.push(M),Object.keys(f).forEach(p=>r.dispose(f[p]))}}return Object.keys(o).forEach(y=>r.dispose(o[y])),s}var $e={};Ze($e,{connected:()=>_t,kpt:()=>Qt});var Qt=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],_t={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var oA=224,Lr,Br=5,et=[8,16,32,32,32];async function AA(){let e=[],t=0;for(;to.x)),y:r.tensor1d(e.map(o=>o.y))}}function S0(e,t=[1,1]){let o=[e.map(i=>i[0]),e.map(i=>i[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],s=[A[0],A[1],n[0]-A[0],n[1]-A[1]],a=[s[0]/t[0],s[1]/t[1],s[2]/t[0],s[3]/t[1]];return{box:s,boxRaw:a}}function nA(e,t=[1,1]){let o=[e.map(d=>d[0]),e.map(d=>d[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],s=[(A[0]+n[0])/2,(A[1]+n[1])/2],a=Math.max(s[0]-A[0],s[1]-A[1],-s[0]+n[0],-s[1]+n[1]),i=[Math.trunc(s[0]-a),Math.trunc(s[1]-a),Math.trunc(2*a),Math.trunc(2*a)],x=[i[0]/t[0],i[1]/t[1],i[2]/t[0],i[3]/t[1]];return{box:i,boxRaw:x}}function tt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var aA={initial:!0},y0={detector:null,landmarks:null},ye={detector:[224,224],landmarks:[256,256]},$t=Number.MAX_SAFE_INTEGER,Hr={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},At=null,Oe,F0=[[0,0],[0,0],[0,0],[0,0]],rA=0,sA=e=>1-1/(1+Math.exp(e));async function iA(e){if(aA.initial&&(y0.detector=null),!y0.detector&&e.body.detector&&e.body.detector.modelPath){y0.detector=await N(e.body.detector.modelPath);let t=Object.values(y0.detector.modelSignature.inputs);ye.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,ye.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&y0.detector&&g("cached model:",y0.detector.modelUrl);return await AA(),y0.detector}async function lA(e){if(aA.initial&&(y0.landmarks=null),y0.landmarks)e.debug&&g("cached model:",y0.landmarks.modelUrl);else{y0.landmarks=await N(e.body.modelPath);let t=Object.values(y0.landmarks.modelSignature.inputs);ye.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,ye.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return y0.landmarks}async function Fr(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(Oe&&(o.cropped=r.image.cropAndResize(e,[Oe],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],s=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];F0=[[0,0],n,s,[0,0]],o.pad=r.pad(o.cropped||e,F0),o.resize=r.image.resizeBilinear(o.pad,[t,t]),A=r.div(o.resize,L.tf255)}else e.shape[1]!==t?(o.resize=r.image.resizeBilinear(o.cropped||e,[t,t]),A=r.div(o.resize,L.tf255)):A=r.div(o.cropped||e,L.tf255);return Object.keys(o).forEach(n=>r.dispose(o[n])),A}function Vr(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+F0[2][0]+F0[2][1])/t[0]-F0[2][0]),Math.trunc(o.position[1]*(t[1]+F0[1][0]+F0[1][1])/t[1]-F0[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(Oe)for(let o of e)o.positionRaw=[o.positionRaw[0]+Oe[1],o.positionRaw[1]+Oe[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function Zr(e){let t=e.find(i=>i.part==="leftPalm"),o=e.find(i=>i.part==="leftWrist"),A=e.find(i=>i.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(i=>i.part==="rightPalm"),s=e.find(i=>i.part==="rightWrist"),a=e.find(i=>i.part==="rightIndex");n.position[2]=((s.position[2]||0)+(a.position[2]||0))/2}async function Xr(e,t,o){var h;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(h=y0.landmarks)==null?void 0:h.execute(e,Hr.landmarks);let n=(await A.poseflag.data())[0],s=await A.ld.data(),a=await A.world.data();Object.keys(A).forEach(m=>r.dispose(A[m]));let i=[],x=5;for(let m=0;mm.position),y=S0(l,[o[0],o[1]]),c={};for(let[m,v]of Object.entries(_t)){let b=[];for(let M=0;ME.part===v[M]),u=d.find(E=>E.part===v[M+1]);p&&u&&b.push([p.position,u.position])}c[m]=b}return{id:0,score:Math.trunc(100*n)/100,box:y.box,boxRaw:y.boxRaw,keypoints:d,annotations:c}}async function e5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>P()-rA,n=$t<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&At!==null)$t++;else{let s={};s.landmarks=await Fr(e,256),At=await Xr(s.landmarks,t,o),Object.keys(s).forEach(a=>r.dispose(s[a])),rA=P(),$t=0}return At?[At]:[]}var xe=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var W0,_0=0,t5=[],xA=0,o5=Number.MAX_SAFE_INTEGER;async function cA(e){if(R.initial&&(W0=null),W0)e.debug&&g("cached model:",W0.modelUrl);else{W0=await N(e.object.modelPath);let t=Object.values(W0.modelSignature.inputs);_0=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return W0}async function Dr(e,t,o){if(!e)return[];let A={},n=[],s=await e.array();A.squeeze=r.squeeze(e);let a=r.split(A.squeeze,6,1);A.stack=r.stack([a[1],a[0],a[3],a[2]],1),A.boxes=r.squeeze(A.stack),A.scores=r.squeeze(a[4]),A.classes=r.squeeze(a[5]),r.dispose([e,...a]),A.nms=await r.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let i=await A.nms.data(),x=0;for(let d of Array.from(i)){let l=Math.trunc(100*s[0][d][4])/100,y=s[0][d][5],c=xe[y].label,[f,h]=[s[0][d][0]/_0,s[0][d][1]/_0],m=[f,h,s[0][d][2]/_0-f,s[0][d][3]/_0-h],v=[Math.trunc(m[0]*t[0]),Math.trunc(m[1]*t[1]),Math.trunc(m[2]*t[0]),Math.trunc(m[3]*t[1])];n.push({id:x++,score:l,class:y,label:c,box:v,boxRaw:m})}return Object.keys(A).forEach(d=>r.dispose(A[d])),n}async function A5(e,t){let o=(t.object.skipTime||0)>P()-xA,A=o5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&t5.length>0?(o5++,t5):(o5=0,new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],a=r.image.resizeBilinear(e,[_0,_0]),i=t.object.enabled?W0==null?void 0:W0.execute(a,["tower_0/detections"]):null;xA=P(),r.dispose(a);let x=await Dr(i,s,t);t5=x,n(x)}))}var nt={};Ze(nt,{connected:()=>r5,kpt:()=>n5});var n5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],r5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var n0,fA=0,a0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},s5=Number.MAX_SAFE_INTEGER;async function mA(e){return R.initial&&(n0=null),n0?e.debug&&g("cached model:",n0.modelUrl):n0=await N(e.body.modelPath),n0}async function qr(e,t){let[o,A]=e.shape,n=r.reshape(e,[A*o]),s=r.max(n,0),a=(await s.data())[0];if(r.dispose([n,s]),a>t){let i=r.argMax(n,0),x=r.mod(i,o),d=(await x.data())[0],l=r.div(i,r.scalar(o,"int32")),y=(await l.data())[0];return r.dispose([x,l]),[d,y,a]}return[0,0,a]}async function a5(e,t){let o=(t.body.skipTime||0)>P()-fA,A=s5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(a0.keypoints).length>0?(s5++,[a0]):(s5=0,new Promise(async n=>{var y;let s=r.tidy(()=>{if(!(n0==null?void 0:n0.inputs[0].shape))return null;let c=r.image.resizeBilinear(e,[n0.inputs[0].shape[2],n0.inputs[0].shape[1]],!1),f=r.mul(c,L.tf2);return r.sub(f,L.tf1)}),a;if(t.body.enabled&&(a=n0==null?void 0:n0.execute(s)),fA=P(),r.dispose(s),a){a0.keypoints.length=0;let c=a.squeeze();r.dispose(a);let f=c.unstack(2);r.dispose(c);for(let h=0;h(((y=t.body)==null?void 0:y.minConfidence)||0)&&a0.keypoints.push({score:Math.round(100*b)/100,part:n5[h],positionRaw:[m/n0.inputs[0].shape[2],v/n0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*m/n0.inputs[0].shape[2]),Math.round(e.shape[1]*v/n0.inputs[0].shape[1])]})}f.forEach(h=>r.dispose(h))}a0.score=a0.keypoints.reduce((c,f)=>f.score>c?f.score:c,0);let i=a0.keypoints.map(c=>c.position[0]),x=a0.keypoints.map(c=>c.position[1]);a0.box=[Math.min(...i),Math.min(...x),Math.max(...i)-Math.min(...i),Math.max(...x)-Math.min(...x)];let d=a0.keypoints.map(c=>c.positionRaw[0]),l=a0.keypoints.map(c=>c.positionRaw[1]);a0.boxRaw=[Math.min(...d),Math.min(...l),Math.max(...d)-Math.min(...d),Math.max(...l)-Math.min(...l)];for(let[c,f]of Object.entries(r5)){let h=[];for(let m=0;mM.part===f[m]),b=a0.keypoints.find(M=>M.part===f[m+1]);v&&b&&v.score>(t.body.minConfidence||0)&&b.score>(t.body.minConfidence||0)&&h.push([v.position,b.position])}a0.annotations[c]=h}n([a0])}))}var Ur=["angry","disgust","fear","happy","sad","surprise","neutral"],p0,rt=[],uA=0,hA=0,i5=Number.MAX_SAFE_INTEGER;async function bA(e){var t;return R.initial&&(p0=null),p0?e.debug&&g("cached model:",p0.modelUrl):p0=await N((t=e.face.emotion)==null?void 0:t.modelPath),p0}async function l5(e,t,o,A){var a,i;if(!p0)return[];let n=i5<(((a=t.face.emotion)==null?void 0:a.skipFrames)||0),s=(((i=t.face.emotion)==null?void 0:i.skipTime)||0)>P()-hA;return t.skipAllowed&&s&&n&&uA===A&&rt[o]&&rt[o].length>0?(i5++,rt[o]):(i5=0,new Promise(async x=>{var l,y;let d=[];if((l=t.face.emotion)==null?void 0:l.enabled){let c={},f=(p0==null?void 0:p0.inputs[0].shape)?p0.inputs[0].shape[2]:0;c.resize=r.image.resizeBilinear(e,[f,f],!1),c.channels=r.mul(c.resize,L.rgb),c.grayscale=r.sum(c.channels,3,!0),c.grayscaleSub=r.sub(c.grayscale,L.tf05),c.grayscaleMul=r.mul(c.grayscaleSub,L.tf2),c.emotion=p0==null?void 0:p0.execute(c.grayscaleMul),hA=P();let h=await c.emotion.data();for(let m=0;m(((y=t.face.emotion)==null?void 0:y.minConfidence)||0)&&d.push({score:Math.min(.99,Math.trunc(100*h[m])/100),emotion:Ur[m]});d.sort((m,v)=>v.score-m.score),Object.keys(c).forEach(m=>r.dispose(c[m]))}rt[o]=d,uA=A,x(d)}))}var x0,y5=[],PA=0,MA=0,vA=Number.MAX_SAFE_INTEGER;async function TA(e){return R.initial&&(x0=null),x0?e.debug&&g("cached model:",x0.modelUrl):x0=await N(e.face.mobilefacenet.modelPath),x0}async function x5(e,t,o,A){var a,i;if(!x0)return[];let n=vA<(((a=t.face.embedding)==null?void 0:a.skipFrames)||0),s=(((i=t.face.embedding)==null?void 0:i.skipTime)||0)>P()-MA;return t.skipAllowed&&s&&n&&PA===A&&y5[o]?(vA++,y5[o]):new Promise(async x=>{var l;let d=[];if(((l=t.face.embedding)==null?void 0:l.enabled)&&(x0==null?void 0:x0.inputs[0].shape)){let y={};y.crop=r.image.resizeBilinear(e,[x0.inputs[0].shape[2],x0.inputs[0].shape[1]],!1),y.data=x0==null?void 0:x0.execute(y.crop);let c=await y.data.data();d=Array.from(c)}y5[o]=d,PA=A,MA=P(),x(d)})}var C0,V0=0,Jr=2.3,c5=b0.leftEyeLower0,d5=b0.rightEyeLower0,ce={leftBounds:[c5[0],c5[c5.length-1]],rightBounds:[d5[0],d5[d5.length-1]]},de={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function zA(e){var t;return R.initial&&(C0=null),C0?e.debug&&g("cached model:",C0.modelUrl):C0=await N((t=e.face.iris)==null?void 0:t.modelPath),V0=C0.inputs[0].shape?C0.inputs[0].shape[2]:0,V0===-1&&(V0=64),C0}function st(e,t,o,A){for(let n=0;n{let t=e[ce.leftBounds[0]][2],o=e[ce.rightBounds[0]][2];return t-o},wA=(e,t,o,A,n,s=!1)=>{let a=Qe(Ke(Do([e[o],e[A]]),Jr)),i=le(a),x=r.image.cropAndResize(t,[[a.startPoint[1]/n,a.startPoint[0]/n,a.endPoint[1]/n,a.endPoint[0]/n]],[0],[V0,V0]);if(s&&R.kernels.includes("flipleftright")){let d=r.image.flipLeftRight(x);r.dispose(x),x=d}return{box:a,boxSize:i,crop:x}},kA=(e,t,o,A=!1)=>{let n=[];for(let s=0;s{let A=e[b0[`${o}EyeUpper0`][de.upperCenter]][2],n=e[b0[`${o}EyeLower0`][de.lowerCenter]][2],s=(A+n)/2;return t.map((a,i)=>{let x=s;return i===2?x=A:i===4&&(x=n),[a[0],a[1],x]})};async function jA(e,t,o,A){if(!C0)return o.debug&&g("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:s,crop:a}=wA(e,t,ce.leftBounds[0],ce.leftBounds[1],A,!0),{box:i,boxSize:x,crop:d}=wA(e,t,ce.rightBounds[0],ce.rightBounds[1],A,!0),l=r.concat([a,d]);r.dispose(a),r.dispose(d);let y=C0.execute(l);r.dispose(l);let c=await y.data();r.dispose(y);let f=c.slice(0,de.numCoordinates*3),{rawCoords:h,iris:m}=kA(f,n,s,!0),v=c.slice(de.numCoordinates*3),{rawCoords:b,iris:M}=kA(v,i,x),p=Yr(e);Math.abs(p)<30?(st(e,h,"left",null),st(e,b,"right",null)):p<1?st(e,h,"left",["EyeUpper0","EyeLower0"]):st(e,b,"right",["EyeUpper0","EyeLower0"]);let u=EA(e,m,"left"),E=EA(e,M,"right");return e.concat(u).concat(E)}var R0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},I0=null,fe=0;async function WA(e,t){var i,x,d,l,y,c,f,h,m;let o=(((i=t.face.detector)==null?void 0:i.skipTime)||0)>P()-R0.timestamp,A=R0.skipped<(((x=t.face.detector)==null?void 0:x.skipFrames)||0);!t.skipAllowed||!o||!A||R0.boxes.length===0?(R0.boxes=await eA(e,t),R0.timestamp=P(),R0.skipped=0):R0.skipped++;let n=[],s=[],a=0;for(let v=0;v[H[0]/(e.shape[2]||0),H[1]/(e.shape[1]||0),(H[2]||0)/fe]);for(let H of Object.keys(b0))u.annotations[H]=b0[H].map(t0=>u.mesh[t0]);u.score=u.faceScore;let B={...Ko(u.mesh,b),confidence:b.confidence,landmarks:b.landmarks};u.box=Jt(B,e),u.boxRaw=Yt(B,e),s.push(B)}}else{u.box=Jt(b,e),u.boxRaw=Yt(b,e),u.score=u.boxScore,u.mesh=b.landmarks.map(E=>[(b.startPoint[0]+b.endPoint[0])/2+(b.endPoint[0]+b.startPoint[0])*E[0]/_e(),(b.startPoint[1]+b.endPoint[1])/2+(b.endPoint[1]+b.startPoint[1])*E[1]/_e()]),u.meshRaw=u.mesh.map(E=>[E[0]/(e.shape[2]||0),E[1]/(e.shape[1]||0),(E[2]||0)/fe]);for(let E of Object.keys(We))u.annotations[E]=[u.mesh[We[E]]]}u.score>(((m=t.face.detector)==null?void 0:m.minConfidence)||1)?n.push(u):r.dispose(u.tensor)}return R0.boxes=s,n}async function CA(e){var t;return R.initial&&(I0=null),I0?e.debug&&g("cached model:",I0.modelUrl):I0=await N((t=e.face.mesh)==null?void 0:t.modelPath),fe=I0.inputs[0].shape?I0.inputs[0].shape[2]:0,I0}var IA=K0,OA=Ce;var c0,at=[],NA=0,LA=0,m5=Number.MAX_SAFE_INTEGER;async function BA(e){var t;return R.initial&&(c0=null),c0?e.debug&&g("cached model:",c0.modelUrl):c0=await N((t=e.face.description)==null?void 0:t.modelPath),c0}function p5(e){let t=e.image||e.tensor||e;if(!(c0==null?void 0:c0.inputs[0].shape))return t;let o=r.image.resizeBilinear(t,[c0.inputs[0].shape[2],c0.inputs[0].shape[1]],!1),A=r.mul(o,L.tf255);return r.dispose(o),A}async function u5(e,t,o,A){var a,i,x,d;if(!c0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=m5<(((a=t.face.description)==null?void 0:a.skipFrames)||0),s=(((i=t.face.description)==null?void 0:i.skipTime)||0)>P()-NA;return t.skipAllowed&&n&&s&&LA===A&&((x=at[o])==null?void 0:x.age)&&((d=at[o])==null?void 0:d.age)>0?(m5++,at[o]):(m5=0,new Promise(async l=>{var c,f;let y={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((c=t.face.description)==null?void 0:c.enabled){let h=p5(e),m=c0==null?void 0:c0.execute(h);NA=P(),r.dispose(h);let b=await(await m.find(O=>O.shape[1]===1)).data(),M=Math.trunc(200*Math.abs(b[0]-.5))/100;M>(((f=t.face.description)==null?void 0:f.minConfidence)||0)&&(y.gender=b[0]<=.5?"female":"male",y.genderScore=Math.min(.99,M));let p=r.argMax(m.find(O=>O.shape[1]===100),1),u=(await p.data())[0];r.dispose(p);let W=await m.find(O=>O.shape[1]===100).data();y.age=Math.round(W[u-1]>W[u+1]?10*u-100*W[u-1]:10*u+100*W[u+1])/10;let C=m.find(O=>O.shape[1]===1024),S=C?await C.data():[];y.descriptor=Array.from(S),m.forEach(O=>r.dispose(O))}at[o]=y,LA=A,l(y)}))}function it(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Ne(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function FA(e,t,o){let A=t.shape[1],n=t.shape[2],s=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return r.image.cropAndResize(t,s,[0],o)}function VA(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function lt(e,t=1.5){let o=Ne(e),A=it(e),n=[t*A[0]/2,t*A[1]/2],s=[o[0]-n[0],o[1]-n[1]],a=[o[0]+n[0],o[1]+n[1]];return{startPoint:s,endPoint:a,palmLandmarks:e.palmLandmarks}}function yt(e){let t=Ne(e),o=it(e),n=Math.max(...o)/2,s=[t[0]-n,t[1]-n],a=[t[0]+n,t[1]+n];return{startPoint:s,endPoint:a,palmLandmarks:e.palmLandmarks}}function Kr(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function ZA(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Kr(o)}var GA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function Z0(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=r.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=r.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=r.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=r.slice(t,[0,0],[-1,2]),o.boxSizes=r.slice(t,[0,2],[-1,2]),o.div=r.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=r.add(o.div,this.anchorsTensor),o.halfBoxSizes=r.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=r.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=r.mul(o.sub,this.inputSizeTensor),o.add=r.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=r.mul(o.add,this.inputSizeTensor);let A=r.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>r.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=r.reshape(t,[-1,7,2]),A.div=r.div(A.reshape,this.inputSizeTensor),A.landmarks=r.add(A.div,this.anchors[o]);let n=r.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(s=>r.dispose(A[s])),n}async predict(t,o){let A={};A.resize=r.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=r.div(A.resize,L.tf127),A.image=r.sub(A.div,L.tf1),A.batched=this.model.execute(A.image),A.predictions=r.squeeze(A.batched),A.slice=r.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=r.sigmoid(A.slice),A.scores=r.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=r.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await r.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let s=await A.nms.array(),a=[];for(let i of s){let x={};x.box=r.slice(A.norm,[i,0],[1,-1]),x.slice=r.slice(A.predictions,[i,5],[1,14]),x.norm=this.normalizeLandmarks(x.slice,i),x.palmLandmarks=r.reshape(x.norm,[-1,2]);let d=await x.box.data(),l=d.slice(0,2),y=d.slice(2,4),c=await x.palmLandmarks.array(),f={startPoint:l,endPoint:y,palmLandmarks:c,confidence:n[i]},h=VA(f,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);a.push(h),Object.keys(x).forEach(m=>r.dispose(x[m]))}return Object.keys(A).forEach(i=>r.dispose(A[i])),a}};var e2=5,UA=1.65,JA=[0,5,9,13,17,1,2],t2=0,o2=2,YA=0,M5=class{constructor(t,o){w(this,"handDetector");w(this,"handPoseModel");w(this,"inputSize");w(this,"storedBoxes");w(this,"skipped");w(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(a=>a[0]),A=t.map(a=>a[1]),n=[Math.min(...o),Math.min(...A)],s=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:s}}getBoxForPalmLandmarks(t,o){let A=t.map(s=>g5([...s,1],o)),n=this.calculateLandmarksBoundingBox(A);return lt(yt(n),e2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=lt(yt(o),UA);A.palmLandmarks=[];for(let n=0;n[a[0]*(f[0]-this.inputSize/2),a[1]*(f[1]-this.inputSize/2),a[2]*f[2]]),x=b5(A,[0,0]),d=i.map(f=>[...g5(f,x),f[2]]),l=XA(n),y=[...Ne(o),1],c=[Z0(y,l[0]),Z0(y,l[1])];return d.map(f=>[Math.trunc(f[0]+c[0]),Math.trunc(f[1]+c[1]),Math.trunc(f[2])])}async estimateHands(t,o){let A=!1,n,s=(o.hand.skipTime||0)>P()-YA,a=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&s&&a&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let i=[];for(let x=0;x=o.hand.minConfidence/4){let E=r.reshape(p,[-1,3]),W=await E.array();r.dispose(p),r.dispose(E);let C=this.transformRawCoords(W,m,l,h),S=this.getBoxForHandLandmarks(C);this.storedBoxes[x]={...S,confidence:u};let O={landmarks:C,confidence:u,boxConfidence:d.confidence,fingerConfidence:u,box:{topLeft:S.startPoint,bottomRight:S.endPoint}};i.push(O)}else this.storedBoxes[x]=null;r.dispose(p)}else{let l=lt(yt(d),UA),y={confidence:d.confidence,boxConfidence:d.confidence,fingerConfidence:0,box:{topLeft:l.startPoint,bottomRight:l.endPoint},landmarks:[]};i.push(y)}}return this.storedBoxes=this.storedBoxes.filter(x=>x!==null),this.detectedHands=i.length,i.length>o.hand.maxDetected&&(i.length=o.hand.maxDetected),i}};var i0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>i0.nameMapping[e],getPoints:e=>i0.pointsMapping[e]},X0={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>X0.nameMapping[e]},U={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>U.nameMapping[e]},$0=class{constructor(t){w(this,"name");w(this,"curls");w(this,"directions");w(this,"weights");w(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,s)=>n+s,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let s=t[n],a=this.curls[n];if(typeof a=="undefined"){A+=this.weightsRelative[n];continue}for(let[i,x]of a)if(s===i){A+=x*this.weightsRelative[n];break}}for(let n in o){let s=o[n],a=this.directions[n];if(typeof a=="undefined"){A+=this.weightsRelative[n];continue}for(let[i,x]of a)if(s===i){A+=x*this.weightsRelative[n];break}}return A/10}};var{thumb:g0,index:O0,middle:N0,ring:ee,pinky:te}=i0,{none:P0,half:n2,full:M0}=X0,{verticalUp:me,verticalDown:fa,horizontalLeft:v5,horizontalRight:r2,diagonalUpRight:s2,diagonalUpLeft:pe,diagonalDownRight:ma,diagonalDownLeft:pa}=U,D0=new $0("thumbs up");D0.curl(g0,P0,1);D0.direction(g0,me,1);D0.direction(g0,pe,.25);D0.direction(g0,s2,.25);for(let e of[i0.index,i0.middle,i0.ring,i0.pinky])D0.curl(e,M0,1),D0.direction(e,v5,1),D0.direction(e,r2,1);var K=new $0("victory");K.curl(g0,n2,.5);K.curl(g0,P0,.5);K.direction(g0,me,1);K.direction(g0,pe,1);K.curl(O0,P0,1);K.direction(O0,me,.75);K.direction(O0,pe,1);K.curl(N0,P0,1);K.direction(N0,me,1);K.direction(N0,pe,.75);K.curl(ee,M0,1);K.direction(ee,me,.2);K.direction(ee,pe,1);K.direction(ee,v5,.2);K.curl(te,M0,1);K.direction(te,me,.2);K.direction(te,pe,1);K.direction(te,v5,.2);K.weight(O0,2);K.weight(N0,2);var q0=new $0("point");q0.curl(g0,M0,1);q0.curl(O0,P0,.5);q0.curl(N0,M0,.5);q0.curl(ee,M0,.5);q0.curl(te,M0,.5);q0.weight(O0,2);q0.weight(N0,2);var U0=new $0("middle finger");U0.curl(g0,P0,1);U0.curl(O0,M0,.5);U0.curl(N0,M0,.5);U0.curl(ee,M0,.5);U0.curl(te,M0,.5);U0.weight(O0,2);U0.weight(N0,2);var ue=new $0("open palm");ue.curl(g0,P0,.75);ue.curl(O0,P0,.75);ue.curl(N0,P0,.75);ue.curl(ee,P0,.75);ue.curl(te,P0,.75);var KA=[D0,K,q0,U0,ue];var a2=.7,oe={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function QA(e,t,o,A){let n=(t-A)/(e-o),s=Math.atan(n)*180/Math.PI;return s<=0?s=-s:s>0&&(s=180-s),s}function $A(e,t){if(!e||!t)return[0,0];let o=QA(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=QA(e[1],e[2],t[1],t[2]);return[o,A]}function _A(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function i2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],i=e[1]-o[1],x=t[1]-o[1],d=e[2]-t[2],l=e[2]-o[2],y=t[2]-o[2],c=Math.sqrt(A*A+a*a+d*d),f=Math.sqrt(n*n+i*i+l*l),h=Math.sqrt(s*s+x*x+y*y),m=(h*h+c*c-f*f)/(2*h*c);m>1?m=1:m<-1&&(m=-1);let v=Math.acos(m);v=57.2958*v%180;let b;return v>oe.NO_CURL_START_LIMIT?b=X0.none:v>oe.HALF_CURL_START_LIMIT?b=X0.half:b=X0.full,b}function en(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=U.horizontalLeft:n=U.horizontalRight:A===Math.abs(t)?t>0?n=U.horizontalLeft:n=U.horizontalRight:o>0?n=U.horizontalLeft:n=U.horizontalRight,n}function tn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=U.verticalDown:n=U.verticalUp:A===Math.abs(t)?t<0?n=U.verticalDown:n=U.verticalUp:o<0?n=U.verticalDown:n=U.verticalUp,n}function l2(e,t,o,A,n,s,a,i){let x,d=tn(e,t,o,A),l=en(n,s,a,i);return d===U.verticalUp?l===U.horizontalLeft?x=U.diagonalUpLeft:x=U.diagonalUpRight:l===U.horizontalLeft?x=U.diagonalDownLeft:x=U.diagonalDownRight,x}function y2(e,t,o,A){let n=e[0]-t[0],s=e[0]-o[0],a=t[0]-o[0],i=e[1]-t[1],x=e[1]-o[1],d=t[1]-o[1],l=Math.max(Math.abs(n),Math.abs(s),Math.abs(a)),y=Math.max(Math.abs(i),Math.abs(x),Math.abs(d)),c=0,f=0,h=0,m=y/(l+1e-5);m>1.5?c+=oe.DISTANCE_VOTE_POWER:m>.66?f+=oe.DISTANCE_VOTE_POWER:h+=oe.DISTANCE_VOTE_POWER;let v=Math.sqrt(n*n+i*i),b=Math.sqrt(s*s+x*x),M=Math.sqrt(a*a+d*d),p=Math.max(v,b,M),u=e[0],E=e[1],W=o[0],C=o[1];p===v?(W=o[0],C=o[1]):p===M&&(u=t[0],E=t[1]);let V=$A([u,E],[W,C]),B=_A(V,oe.TOTAL_ANGLE_VOTE_POWER);c+=B[0],f+=B[1],h+=B[2];for(let t0 of A){let z=_A(t0,oe.SINGLE_ANGLE_VOTE_POWER);c+=z[0],f+=z[1],h+=z[2]}let H;return c===Math.max(c,f,h)?H=tn(x,i,d,y):h===Math.max(f,h)?H=en(s,n,a,l):H=l2(x,i,d,y,s,n,a,l),H}function on(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let s of i0.all){let a=i0.getPoints(s),i=[],x=[];for(let d of a){let l=e[d[0]],y=e[d[1]],c=$A(l,y),f=c[0],h=c[1];i.push(f),x.push(h)}t.push(i),o.push(x)}for(let s of i0.all){let a=s===i0.thumb?1:0,i=i0.getPoints(s),x=e[i[a][0]],d=e[i[a+1][1]],l=e[i[3][1]],y=i2(x,d,l),c=y2(x,d,l,t[s].slice(a));A[s]=y,n[s]=c}return{curls:A,directions:n}}function xt(e){if(!e||e.length===0)return null;let t=on(e),o={};for(let A of i0.all)o[i0.getName(A)]={curl:X0.getName(t.curls[A]),direction:U.getName(t.directions[A])};return o}function An(e){let t=[];if(!e||e.length===0)return t;let o=on(e);for(let A of KA){let n=A.matchAgainst(o.curls,o.directions);n>=a2&&t.push({name:A.name,confidence:n})}return t}var nn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},he,be,rn;async function R5(e,t){let o=await rn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[y]);let a=o[n].landmarks,i=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],x=[0,0,0,0];if(a&&a.length>0){for(let l of a)l[0]i[2]&&(i[2]=l[0]),l[1]>i[3]&&(i[3]=l[1]);i[2]-=i[0],i[3]-=i[1],x=[i[0]/(e.shape[2]||0),i[1]/(e.shape[1]||0),i[2]/(e.shape[2]||0),i[3]/(e.shape[1]||0)]}else i=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],x=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let d=xt(a);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:i,boxRaw:x,keypoints:a,annotations:s,landmarks:d})}return A}async function w5(e){var o,A;R.initial&&(he=null,be=null),!he||!be?[he,be]=await Promise.all([e.hand.enabled?N((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?N((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&g("cached model:",he.modelUrl),e.debug&&g("cached model:",be.modelUrl));let t=new P5(he);return rn=new M5(t,be),[he,be]}var $=[null,null],x2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],J0=[[0,0],[0,0]],c2=["hand","fist","pinch","point","face","tip","pinchtip"],an=4,ln=1.6,d2=512,f2=1.4,ct=Number.MAX_SAFE_INTEGER,k5=0,L0=[0,0],J={boxes:[],hands:[]},yn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function xn(e){var t;if(R.initial&&($[0]=null),$[0])e.debug&&g("cached model:",$[0].modelUrl);else{dt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),$[0]=await N((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values($[0].modelSignature.inputs);J0[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,J0[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return $[0]}async function cn(e){var t;if(R.initial&&($[1]=null),$[1])e.debug&&g("cached model:",$[1].modelUrl);else{$[1]=await N((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values($[1].modelSignature.inputs);J0[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,J0[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return $[1]}async function m2(e,t){let o=[];if(!e||!$[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),s=Math.min(Math.round((e.shape[1]||0)/8)*8,d2),a=Math.round(s*n/8)*8;A.resize=r.image.resizeBilinear(e,[s,a]),A.cast=r.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await $[0].executeAsync(A.cast,x2),A.boxes=r.squeeze(A.rawBoxes,[0,2]),A.scores=r.squeeze(A.rawScores,[0]);let i=r.unstack(A.scores,1);r.dispose(i[an]),i.splice(an,1),A.filtered=r.stack(i,1),r.dispose(i),A.max=r.max(A.filtered,1),A.argmax=r.argMax(A.filtered,1);let x=0;A.nms=await r.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let d=await A.nms.data(),l=await A.max.data(),y=await A.argmax.data();for(let c of Array.from(d)){let f=r.slice(A.boxes,c,1),h=await f.data();r.dispose(f);let m=[h[1],h[0],h[3]-h[1],h[2]-h[0]],v=tt(m,f2),b=[Math.trunc(m[0]*L0[0]),Math.trunc(m[1]*L0[1]),Math.trunc(m[2]*L0[0]),Math.trunc(m[3]*L0[1])],M=l[c],p=c2[y[c]],u={id:x++,score:M,box:b,boxRaw:v,label:p};o.push(u)}return Object.keys(A).forEach(c=>r.dispose(A[c])),o.sort((c,f)=>f.score-c.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function E5(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&$[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},s=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=r.image.cropAndResize(e,[s],[0],[J0[1][0],J0[1][1]],"bilinear"),n.div=r.div(n.crop,L.tf255),[n.score,n.keypoints]=$[1].execute(n.div,["Identity_1","Identity"]);let a=(await n.score.data())[0],i=(100-Math.trunc(100/(1+Math.exp(a))))/100;if(i>=(o.hand.minConfidence||0)){A.fingerScore=i,n.reshaped=r.reshape(n.keypoints,[-1,3]);let l=(await n.reshaped.array()).map(y=>[y[0]/J0[1][1],y[1]/J0[1][0],y[2]||0]).map(y=>[y[0]*t.boxRaw[2],y[1]*t.boxRaw[3],y[2]||0]);A.keypoints=l.map(y=>[L0[0]*(y[0]+t.boxRaw[0]),L0[1]*(y[1]+t.boxRaw[1]),y[2]||0]),A.landmarks=xt(A.keypoints);for(let y of Object.keys(yn))A.annotations[y]=yn[y].map(c=>A.landmarks&&A.keypoints[c]?A.keypoints[c]:null)}Object.keys(n).forEach(x=>r.dispose(n[x]))}return A}async function z5(e,t){var n,s;if(!$[0]||!$[1]||!((n=$[0])==null?void 0:n.inputs[0].shape)||!((s=$[1])==null?void 0:s.inputs[0].shape))return[];L0=[e.shape[2]||0,e.shape[1]||0],ct++;let o=(t.hand.skipTime||0)>P()-k5,A=ct<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?J.hands:new Promise(async a=>{let i=3*(t.hand.skipTime||0)>P()-k5,x=ct<3*(t.hand.skipFrames||0);t.skipAllowed&&J.hands.length===t.hand.maxDetected?J.hands=await Promise.all(J.boxes.map(l=>E5(e,l,t))):t.skipAllowed&&i&&x&&J.hands.length>0?J.hands=await Promise.all(J.boxes.map(l=>E5(e,l,t))):(J.boxes=await m2(e,t),k5=P(),J.hands=await Promise.all(J.boxes.map(l=>E5(e,l,t))),ct=0);let d=[...J.boxes];if(J.boxes.length=0,t.cacheSensitivity>0)for(let l=0;l.05&&y.box[3]/(e.shape[1]||1)>.05&&J.hands[l].fingerScore&&J.hands[l].fingerScore>(t.hand.minConfidence||0)){let c=tt(y.box,ln),f=tt(y.boxRaw,ln);J.boxes.push({...d[l],box:c,boxRaw:f})}}for(let l=0;lP()-mn,s=j5<(((i=t.face.liveness)==null?void 0:i.skipFrames)||0);return t.skipAllowed&&n&&s&&fn===A&&ft[o]?(j5++,ft[o]):(j5=0,new Promise(async x=>{let d=r.image.resizeBilinear(e,[(r0==null?void 0:r0.inputs[0].shape)?r0.inputs[0].shape[2]:0,(r0==null?void 0:r0.inputs[0].shape)?r0.inputs[0].shape[1]:0],!1),l=r0==null?void 0:r0.execute(d),y=(await l.data())[0];ft[o]=Math.round(100*y)/100,fn=A,mn=P(),r.dispose([d,l]),x(ft[o])}))}var Le={};Ze(Le,{connected:()=>pt,horizontal:()=>W5,kpt:()=>mt,relative:()=>I5,vertical:()=>C5});var mt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],W5=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],C5=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],I5=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],pt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var hn=.005,d0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function O5(e){for(let t of W5){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]d&&d.part===t[0]),n=e.keypoints.findIndex(d=>d&&d.part===t[1]),s=e.keypoints.findIndex(d=>d&&d.part===o[0]),a=e.keypoints.findIndex(d=>d&&d.part===o[1]);if(!e.keypoints[s]||!e.keypoints[a])continue;let i=e.keypoints[A]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[a].position[0]-e.keypoints[A].position[0])]:[0,0],x=e.keypoints[n]?[Math.abs(e.keypoints[a].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0])]:[0,0];if(i[0]>i[1]||x[0]>x[1]){let d=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=d}}}function bn(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=r.pad(e,d0.padding),o.resize=r.image.resizeBilinear(o.pad,[t,t]);let A=r.cast(o.resize,"int32");return Object.keys(o).forEach(n=>r.dispose(o[n])),A}function Pn(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+d0.padding[2][0]+d0.padding[2][1])/t[0]-d0.padding[2][0],A.position[1]*(t[1]+d0.padding[1][0]+d0.padding[1][1])/t[1]-d0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=S0(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var f0,ut=0,N5=Number.MAX_SAFE_INTEGER,Ae={boxes:[],bodies:[],last:0};async function Mn(e){return R.initial&&(f0=null),f0?e.debug&&g("cached model:",f0.modelUrl):(dt(["size"],e),f0=await N(e.body.modelPath)),ut=f0.inputs[0].shape?f0.inputs[0].shape[2]:0,ut<64&&(ut=256),f0}async function u2(e,t,o){let A=e[0][0],n=[],s=0;for(let l=0;lt.body.minConfidence){let y=[A[l][1],A[l][0]];n.push({score:Math.round(100*s)/100,part:mt[l],positionRaw:y,position:[Math.round((o.shape[2]||0)*y[0]),Math.round((o.shape[1]||0)*y[1])]})}s=n.reduce((l,y)=>y.score>l?y.score:l,0);let a=[],i=S0(n.map(l=>l.position),[o.shape[2],o.shape[1]]),x={};for(let[l,y]of Object.entries(pt)){let c=[];for(let f=0;fv.part===y[f]),m=n.find(v=>v.part===y[f+1]);h&&m&&h.score>(t.body.minConfidence||0)&&m.score>(t.body.minConfidence||0)&&c.push([h.position,m.position])}x[l]=c}let d={id:0,score:s,box:i.box,boxRaw:i.boxRaw,keypoints:n,annotations:x};return O5(d),a.push(d),a}async function h2(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let i=[];for(let y=0;y<17;y++){let c=s[3*y+2];if(c>t.body.minConfidence){let f=[s[3*y+1],s[3*y+0]];i.push({part:mt[y],score:Math.round(100*c)/100,positionRaw:f,position:[Math.round((o.shape[2]||0)*f[0]),Math.round((o.shape[1]||0)*f[1])]})}}let x=S0(i.map(y=>y.position),[o.shape[2],o.shape[1]]),d={};for(let[y,c]of Object.entries(pt)){let f=[];for(let h=0;hb.part===c[h]),v=i.find(b=>b.part===c[h+1]);m&&v&&m.score>(t.body.minConfidence||0)&&v.score>(t.body.minConfidence||0)&&f.push([m.position,v.position])}d[y]=f}let l={id:n,score:a,box:x.box,boxRaw:x.boxRaw,keypoints:[...i],annotations:d};O5(l),A.push(l)}}return A.sort((n,s)=>s.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function L5(e,t){if(!f0||!(f0==null?void 0:f0.inputs[0].shape))return[];t.skipAllowed||(Ae.boxes.length=0),N5++;let o=(t.body.skipTime||0)>P()-Ae.last,A=N5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ae.bodies:new Promise(async n=>{let s={};N5=0,s.input=gn(e,ut),s.res=f0==null?void 0:f0.execute(s.input),Ae.last=P();let a=await s.res.array();Ae.bodies=s.res.shape[2]===17?await u2(a,t,e):await h2(a,t,e);for(let i of Ae.bodies)Pn(i,[e.shape[2]||1,e.shape[1]||1]),bn(i.keypoints);Object.keys(s).forEach(i=>r.dispose(s[i])),n(Ae.bodies)})}var ge,ht=[],Tn=0,B5=Number.MAX_SAFE_INTEGER,gt=0,bt=2.5;async function Rn(e){if(!ge||R.initial){ge=await N(e.object.modelPath);let t=Object.values(ge.modelSignature.inputs);gt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&g("cached model:",ge.modelUrl);return ge}async function b2(e,t,o){let A=0,n=[];for(let x of[1,2,4])r.tidy(async()=>{let d=x*13,l=r.squeeze(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)===xe.length)),y=r.squeeze(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)(o.object.minConfidence||0)&&v!==61){let M=(.5+Math.trunc(m%d))/d,p=(.5+Math.trunc(m/d))/d,u=f[m].map(H=>H*(d/x/gt)),[E,W]=[M-bt/x*u[0],p-bt/x*u[1]],[C,S]=[M+bt/x*u[2]-E,p+bt/x*u[3]-W],O=[E,W,C,S];O=O.map(H=>Math.max(0,Math.min(H,1)));let V=[O[0]*t[0],O[1]*t[1],O[2]*t[0],O[3]*t[1]],B={id:A++,score:Math.round(100*b)/100,class:v+1,label:xe[v].label,box:V.map(H=>Math.trunc(H)),boxRaw:O};n.push(B)}}});e.forEach(x=>r.dispose(x));let s=n.map(x=>[x.boxRaw[1],x.boxRaw[0],x.boxRaw[3],x.boxRaw[2]]),a=n.map(x=>x.score),i=[];if(s&&s.length>0){let x=await r.image.nonMaxSuppressionAsync(s,a,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);i=await x.data(),r.dispose(x)}return n=n.filter((x,d)=>i.includes(d)).sort((x,d)=>d.score-x.score),n}async function G5(e,t){let o=(t.object.skipTime||0)>P()-Tn,A=B5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&ht.length>0?(B5++,ht):(B5=0,!R.kernels.includes("mod")||!R.kernels.includes("sparsetodense")?ht:new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],a=r.image.resizeBilinear(e,[gt,gt],!1),i=r.div(a,L.tf255),x=i.transpose([0,3,1,2]);r.dispose(i),r.dispose(a);let d;t.object.enabled&&(d=ge.execute(x)),Tn=P(),r.dispose(x);let l=await b2(d,s,t);ht=l,n(l)}))}var Ge=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],g2=Ge.length,Be=Ge.reduce((e,t,o)=>(e[t]=o,e),{}),P2=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Ha=P2.map(([e,t])=>[Be[e],Be[t]]),kn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function En(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:s},{position:{x:a,y:i}})=>({maxX:Math.max(o,a),maxY:Math.max(A,i),minX:Math.min(n,a),minY:Math.min(s,i)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function zn(e,[t,o],[A,n]){let s=t/A,a=o/n,i=(d,l)=>({id:l,score:d.score,boxRaw:[d.box[0]/n,d.box[1]/A,d.box[2]/n,d.box[3]/A],box:[Math.trunc(d.box[0]*a),Math.trunc(d.box[1]*s),Math.trunc(d.box[2]*a),Math.trunc(d.box[3]*s)],keypoints:d.keypoints.map(({score:y,part:c,position:f})=>({score:y,part:c,position:[Math.trunc(f.x*a),Math.trunc(f.y*s)],positionRaw:[f.x/A,f.y/A]})),annotations:{}});return e.map((d,l)=>i(d,l))}var H5=class{constructor(t,o){w(this,"priorityQueue");w(this,"numberOfElements");w(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function jn(e,t,o,A){let n=o-e,s=A-t;return n*n+s*s}function X5(e,t){return{x:e.x+t.x,y:e.y+t.y}}var v0,v2=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Pt=1,Pe=16,T2=50**2;function Sn(e,t,o,A,n,s,a=2){let i=b=>({y:s.get(b.y,b.x,e),x:s.get(b.y,b.x,s.shape[2]/2+e)}),x=(b,M,p)=>({y:Z5(Math.round(b.y/Pe),0,M-1),x:Z5(Math.round(b.x/Pe),0,p-1)}),[d,l]=A.shape,y=x(t.position,d,l),c=i(y),h=X5(t.position,c);for(let b=0;b[Be[c],Be[f]]),a=s.map(([,c])=>c),i=s.map(([c])=>c),x=t.shape[2],d=a.length,l=new Array(x),y=V5(e.part,Pe,o);l[e.part.id]={score:e.score,part:Ge[e.part.id],position:y};for(let c=d-1;c>=0;--c){let f=a[c],h=i[c];l[f]&&!l[h]&&(l[h]=Sn(c,l[f],h,t,o,n))}for(let c=0;ct){i=!1;break}if(!i)break}return i}function k2(e,t){let[o,A,n]=t.shape,s=new H5(o*A*n,({score:a})=>a);for(let a=0;a{var a;let s=(a=n[A])==null?void 0:a.position;return s?jn(o,t,s.y,s.x)<=T2:!1})}function E2(e,t){return t.reduce((A,{position:n,score:s},a)=>(Wn(e,n,a)||(A+=s),A),0)/t.length}function z2(e,t,o,A,n,s){let a=[],i=k2(s,t);for(;a.lengthf.score>s);let y=E2(a,l),c=En(l);y>s&&a.push({keypoints:l,box:c,score:Math.round(100*y)/100})}return a}async function D5(e,t){let o=r.tidy(()=>{if(!v0.inputs[0].shape)return[];let a=r.image.resizeBilinear(e,[v0.inputs[0].shape[2],v0.inputs[0].shape[1]]),i=r.sub(r.div(r.cast(a,"float32"),127.5),1),d=v0.execute(i,v2).map(l=>r.squeeze(l,[0]));return d[1]=r.sigmoid(d[1]),d}),A=await Promise.all(o.map(a=>a.buffer()));for(let a of o)r.dispose(a);let n=await z2(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return v0.inputs[0].shape?zn(n,[e.shape[1],e.shape[2]],[v0.inputs[0].shape[2],v0.inputs[0].shape[1]]):[]}async function Cn(e){return!v0||R.initial?v0=await N(e.body.modelPath):e.debug&&g("cached model:",v0.modelUrl),v0}var w0,q5=!1;async function U5(e){return!w0||R.initial?w0=await N(e.segmentation.modelPath):e.debug&&g("cached model:",w0.modelUrl),w0}async function On(e,t,o){var m,v;if(q5)return{data:[],canvas:null,alpha:null};q5=!0,w0||await U5(o);let A=await ie(e,o),n=((m=A.tensor)==null?void 0:m.shape[2])||0,s=((v=A.tensor)==null?void 0:v.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let a={};a.resize=r.image.resizeBilinear(A.tensor,[w0.inputs[0].shape?w0.inputs[0].shape[1]:0,w0.inputs[0].shape?w0.inputs[0].shape[2]:0],!1),r.dispose(A.tensor),a.norm=r.div(a.resize,L.tf255),a.res=w0.execute(a.norm),a.squeeze=r.squeeze(a.res,0),a.squeeze.shape[2]===2?(a.softmax=r.softmax(a.squeeze),[a.bg,a.fg]=r.unstack(a.softmax,2),a.expand=r.expandDims(a.fg,2),a.pad=r.expandDims(a.expand,0),a.crop=r.image.cropAndResize(a.pad,[[0,0,.5,.5]],[0],[n,s]),a.data=r.squeeze(a.crop,0)):a.data=r.image.resizeBilinear(a.squeeze,[s,n]);let i=Array.from(await a.data.data());if(R.node&&!R.Canvas&&typeof ImageData=="undefined")return o.debug&&g("canvas support missing"),Object.keys(a).forEach(b=>r.dispose(a[b])),{data:i,canvas:null,alpha:null};let x=s0(n,s);r.browser&&await r.browser.toPixels(a.data,x);let d=x.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(d.filter=`blur(${o.segmentation.blur}px)`);let l=d.getImageData(0,0,n,s),y=s0(n,s),c=y.getContext("2d");A.canvas&&c.drawImage(A.canvas,0,0),c.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`),c.drawImage(x,0,0),c.globalCompositeOperation="source-over",c.filter="none";let f=c.getImageData(0,0,n,s);for(let b=0;br.dispose(a[b])),q5=!1,{data:i,canvas:y,alpha:x}}var J5=class{constructor(){w(this,"ssrnetage",null);w(this,"gear",null);w(this,"blazeposedetect",null);w(this,"blazepose",null);w(this,"centernet",null);w(this,"efficientpose",null);w(this,"mobilefacenet",null);w(this,"emotion",null);w(this,"facedetect",null);w(this,"faceiris",null);w(this,"facemesh",null);w(this,"faceres",null);w(this,"ssrnetgender",null);w(this,"handpose",null);w(this,"handskeleton",null);w(this,"handtrack",null);w(this,"liveness",null);w(this,"movenet",null);w(this,"nanodet",null);w(this,"posenet",null);w(this,"segmentation",null);w(this,"antispoof",null)}};function Y5(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Ln(e){var t,o,A,n,s,a,i,x,d,l,y,c,f,h,m,v,b,M,p,u,E,W,C,S,O,V,B,H,t0,z;R.initial&&Y5(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await w5(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await w5(e.config))),e.config.body.enabled&&!e.models.blazepose&&((a=(s=e.config.body)==null?void 0:s.modelPath)==null?void 0:a.includes("blazepose"))&&(e.models.blazepose=lA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=iA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((x=(i=e.config.body)==null?void 0:i.modelPath)==null?void 0:x.includes("efficientpose"))&&(e.models.efficientpose=mA(e.config)),e.config.body.enabled&&!e.models.movenet&&((l=(d=e.config.body)==null?void 0:d.modelPath)==null?void 0:l.includes("movenet"))&&(e.models.movenet=Mn(e.config)),e.config.body.enabled&&!e.models.posenet&&((c=(y=e.config.body)==null?void 0:y.modelPath)==null?void 0:c.includes("posenet"))&&(e.models.posenet=Cn(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=$o(e.config)),e.config.face.enabled&&((f=e.config.face.antispoof)==null?void 0:f.enabled)&&!e.models.antispoof&&(e.models.antispoof=Ho(e.config)),e.config.face.enabled&&((h=e.config.face.liveness)==null?void 0:h.enabled)&&!e.models.liveness&&(e.models.liveness=pn(e.config)),e.config.face.enabled&&((m=e.config.face.description)==null?void 0:m.enabled)&&!e.models.faceres&&(e.models.faceres=BA(e.config)),e.config.face.enabled&&((v=e.config.face.emotion)==null?void 0:v.enabled)&&!e.models.emotion&&(e.models.emotion=bA(e.config)),e.config.face.enabled&&((b=e.config.face.iris)==null?void 0:b.enabled)&&!e.models.faceiris&&(e.models.faceiris=zA(e.config)),e.config.face.enabled&&((M=e.config.face.mesh)==null?void 0:M.enabled)&&!e.models.facemesh&&(e.models.facemesh=CA(e.config)),e.config.face.enabled&&((p=e.config.face.gear)==null?void 0:p.enabled)&&!e.models.gear&&(e.models.gear=ko(e.config)),e.config.face.enabled&&((u=e.config.face.ssrnet)==null?void 0:u.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=Wo(e.config)),e.config.face.enabled&&((E=e.config.face.ssrnet)==null?void 0:E.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=No(e.config)),e.config.face.enabled&&((W=e.config.face.mobilefacenet)==null?void 0:W.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=TA(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((S=(C=e.config.hand.detector)==null?void 0:C.modelPath)==null?void 0:S.includes("handtrack"))&&(e.models.handtrack=xn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((V=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:V.includes("handtrack"))&&(e.models.handskeleton=cn(e.config)),e.config.object.enabled&&!e.models.centernet&&((H=(B=e.config.object)==null?void 0:B.modelPath)==null?void 0:H.includes("centernet"))&&(e.models.centernet=cA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((z=(t0=e.config.object)==null?void 0:t0.modelPath)==null?void 0:z.includes("nanodet"))&&(e.models.nanodet=Rn(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=U5(e.config));for await(let m0 of Object.keys(e.models))e.models[m0]&&typeof e.models[m0]!="undefined"&&(e.models[m0]=await e.models[m0])}async function Bn(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],s=A==null?void 0:A.executor;if(s&&s.graph.nodes)for(let i of Object.values(s.graph.nodes)){let x=i.op.toLowerCase();n.includes(x)||n.push(x)}else!s&&e.config.debug&&g("model signature not determined:",o);let a=[];for(let i of n)!t.includes(i)&&!e.env.kernels.includes(i)&&!e.env.kernels.includes(i.replace("_",""))&&!e.env.kernels.includes(i.replace("native",""))&&!e.env.kernels.includes(i.replace("v2",""))&&a.push(i);e.config.debug&&a.length>0&&g("model validation failed:",o,a)}}var q={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function j2(){let e=q.gl;!e||(q.extensions=e.getSupportedExtensions())}async function Hn(e){var t;if(e.config.backend==="humangl"&&(q.name in r.engine().registry&&(!q.gl||!q.gl.getParameter(q.gl.VERSION))&&(g("error: humangl backend invalid context"),Y5(e)),!r.findBackend(q.name))){try{q.canvas=await s0(100,100)}catch(A){g("error: cannot create canvas:",A);return}try{if(q.gl=(t=q.canvas)==null?void 0:t.getContext("webgl2",q.webGLattr),!q.gl.getParameter(q.gl.VERSION).includes("2.0")){g("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}q.canvas&&(q.canvas.addEventListener("webglcontextlost",async n=>{throw g("error: humangl:",n.type),g("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),q.canvas.addEventListener("webglcontextrestored",n=>{g("error: humangl context restored:",n)}),q.canvas.addEventListener("webglcontextcreationerror",n=>{g("error: humangl context create:",n)}))}catch(A){g("error: cannot get WebGL context:",A);return}try{r.setWebGLContext(2,q.gl)}catch(A){g("error: cannot set WebGL context:",A);return}try{let A=new r.GPGPUContext(q.gl);r.registerBackend(q.name,()=>new r.MathBackendWebGL(A),q.priority)}catch(A){g("error: cannot register WebGL backend:",A);return}try{r.getKernelsForBackend("webgl").forEach(n=>{let s={...n,backendName:q.name};r.registerKernel(s)})}catch(A){g("error: cannot update WebGL backend registration:",A);return}let o=r.backend().getGPGPUContext?r.backend().getGPGPUContext().gl:null;if(o)g(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{g("error: no current gl context:",o,q.gl);return}try{r.ENV.set("WEBGL_VERSION",2)}catch(A){g("error: cannot set WebGL backend flags:",A);return}j2(),g("backend registered:",q.name)}}function S2(){if(!R.kernels.includes("mod")){let e={kernelName:"Mod",backendName:r.getBackend(),kernelFunc:t=>r.tidy(()=>r.sub(t.inputs.a,r.mul(r.div(t.inputs.a,t.inputs.b),t.inputs.b)))};r.registerKernel(e),R.kernels.push("mod")}if(!R.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:r.getBackend(),kernelFunc:t=>r.tidy(()=>r.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+r.mod(t.inputs.a,t.inputs.b))};r.registerKernel(e),R.kernels.push("floormod")}}async function Mt(e,t=!1){if(e.state="backend",t||R.initial||e.config.backend&&e.config.backend.length>0&&r.getBackend()!==e.config.backend){let o=P();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&g("running inside web worker"),R.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&g("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),R.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&g(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),R.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")g("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&g("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Hn(e);let A=Object.keys(r.engine().registryFactory);if(e.config.debug&&g("available backends:",A),A.includes(e.config.backend)||(g(`error: backend ${e.config.backend} not found in registry`),e.config.backend=R.node?"tensorflow":"webgl",e.config.debug&&g(`override: setting backend ${e.config.backend}`)),e.config.debug&&g("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&g("wasm path:",e.config.wasmPath),typeof(r==null?void 0:r.setWasmPaths)!="undefined")await r.setWasmPaths(e.config.wasmPath,e.config.wasmPlatformFetch);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await r.env().getAsync("WASM_HAS_SIMD_SUPPORT"),s=await r.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&g(`wasm execution: ${n?"SIMD":"no SIMD"} ${s?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&g("warning: wasm simd support is not enabled")}try{await r.setBackend(e.config.backend),await r.ready(),zo()}catch(n){return g("error: cannot set backend:",e.config.backend,n),!1}}if(r.getBackend()==="humangl"&&(r.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),r.ENV.set("WEBGL_CPU_FORWARD",!0),r.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),r.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),r.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),r.backend().getGPGPUContext)){let A=await r.backend().getGPGPUContext().gl;e.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}r.getBackend()==="webgpu",r.enableProdMode(),await r.ready(),e.performance.initBackend=Math.trunc(P()-o),e.config.backend=r.getBackend(),await R.updateBackend(),S2()}return!0}function dt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&g("kernelFunc",o,t.backend)}};r.registerKernel(A)}R.kernels=r.getKernelsForBackend(r.getBackend()).map(o=>o.kernelName.toLowerCase())}var B0={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},K5=0,ne=e=>{if(!e)g("draw error: invalid canvas");else if(!e.getContext)g("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)g("draw error: cannot get canvas context");else return t}return null},Me=e=>Math.round(e*180/Math.PI);function Q5(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function He(e,t,o,A,n,s){if(e.beginPath(),e.lineWidth=s.lineWidth,s.useCurves){let a=(t+t+A)/2,i=(o+o+n)/2;e.ellipse(a,i,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+s.roundRect,o),e.lineTo(t+A-s.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+s.roundRect),e.lineTo(t+A,o+n-s.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-s.roundRect,o+n),e.lineTo(t+s.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-s.roundRect),e.lineTo(t,o+s.roundRect),e.quadraticCurveTo(t,o,t+s.roundRect,o),e.closePath();e.stroke()}function Zn(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function C2(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){Zn(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&x[1].length>0){let d=i[1]>0?`#${i[1]}`:"",l=`${i[0]} ${d}: ${x[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l,8,2+s*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(l,6,0+s*A.lineHeight),s+=1}}}}async function $5(e,t,o){var s,a,i,x,d;let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n)for(let l of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&He(n,l.box[0],l.box[1],l.box[2],l.box[3],A),A.drawLabels){let y=[];if(y.push(`face: ${Math.trunc(100*l.score)}%`),l.genderScore&&y.push(`${l.gender||""} ${Math.trunc(100*l.genderScore)}%`),l.age&&y.push(`age: ${l.age||""}`),l.iris&&y.push(`distance: ${l.iris}`),l.real&&y.push(`real: ${Math.trunc(100*l.real)}%`),l.live&&y.push(`live: ${Math.trunc(100*l.live)}%`),l.emotion&&l.emotion.length>0){let c=l.emotion.map(f=>`${Math.trunc(100*f.score)}% ${f.emotion}`);c.length>3&&(c.length=3),y.push(c.join(" "))}l.rotation&&l.rotation.angle&&l.rotation.gaze&&(l.rotation.angle.roll&&y.push(`roll: ${Me(l.rotation.angle.roll)}\xB0 yaw:${Me(l.rotation.angle.yaw)}\xB0 pitch:${Me(l.rotation.angle.pitch)}\xB0`),l.rotation.gaze.bearing&&y.push(`gaze: ${Me(l.rotation.gaze.bearing)}\xB0`)),y.length===0&&y.push("face"),n.fillStyle=A.color;for(let c=y.length-1;c>=0;c--){let f=Math.max(l.box[0],0),h=c*A.lineHeight+l.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(y[c],f+5,h+16)),n.fillStyle=A.labelColor,n.fillText(y[c],f+4,h+15)}}if(n.lineWidth=2,l.mesh&&l.mesh.length>0){if(A.drawPoints)for(let y of l.mesh)Q5(n,y[0],y[1],y[2],A);if(A.drawPolygons){if(l.mesh.length>450)for(let y=0;yl.mesh[f]);Zn(n,c,A)}if(l.annotations&&l.annotations.leftEyeIris&&l.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let y=Math.abs(l.annotations.leftEyeIris[3][0]-l.annotations.leftEyeIris[1][0])/2,c=Math.abs(l.annotations.leftEyeIris[4][1]-l.annotations.leftEyeIris[2][1])/2;n.ellipse(l.annotations.leftEyeIris[0][0],l.annotations.leftEyeIris[0][1],y,c,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(l.annotations&&l.annotations.rightEyeIris&&l.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let y=Math.abs(l.annotations.rightEyeIris[3][0]-l.annotations.rightEyeIris[1][0])/2,c=Math.abs(l.annotations.rightEyeIris[4][1]-l.annotations.rightEyeIris[2][1])/2;n.ellipse(l.annotations.rightEyeIris[0][0],l.annotations.rightEyeIris[0][1],y,c,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((s=l.rotation)==null?void 0:s.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let y=l.box[0]+l.box[2]/2-l.box[3]*Me(l.rotation.angle.yaw)/90,c=l.box[1]+l.box[3]/2+l.box[2]*Me(l.rotation.angle.pitch)/90,f=new Path2D(` M ${l.box[0]+l.box[2]/2} ${l.box[1]} C ${y} ${l.box[1]}, @@ -108,7 +108,7 @@ var kt=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var sr=Objec ${l.box[0]} ${c}, ${l.box[0]+l.box[2]} ${c}, ${l.box[0]+l.box[2]} ${l.box[1]+l.box[3]/2} - `);n.stroke(h),n.stroke(f)}if(A.drawGaze&&((i=(a=l.rotation)==null?void 0:a.gaze)==null?void 0:i.strength)&&((d=(x=l.rotation)==null?void 0:x.gaze)==null?void 0:d.bearing)&&l.annotations.leftEyeIris&&l.annotations.rightEyeIris&&l.annotations.leftEyeIris[0]&&l.annotations.rightEyeIris[0]){n.strokeStyle="pink",n.fillStyle="pink";let y=[l.annotations.leftEyeIris[0][0]+Math.sin(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[3],l.annotations.leftEyeIris[0][1]+Math.cos(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[2]];Vn(n,[l.annotations.leftEyeIris[0][0],l.annotations.leftEyeIris[0][1]],[y[0],y[1]],4);let c=[l.annotations.rightEyeIris[0][0]+Math.sin(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[3],l.annotations.rightEyeIris[0][1]+Math.cos(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[2]];Vn(n,[l.annotations.rightEyeIris[0][0],l.annotations.rightEyeIris[0][1]],[c[0],c[1]],4)}}}}}async function eo(e,t,o){var s;let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n){n.lineJoin="round";for(let a=0;a0)for(let a of s.keypoints)n.fillStyle=A.useDepth?`rgba(${127.5+2*(a[2]||0)}, ${127.5-2*(a[2]||0)}, 255, 0.5)`:A.color,Q5(n,a[0],a[1],0,A);if(A.drawLabels&&s.annotations){let a=(i,x)=>{if(!i||i.length===0||!i[0])return;let d=i[i.length-1][2]||0;n.fillStyle=A.useDepth?`rgba(${127.5+2*d}, ${127.5-2*d}, 255, 0.5)`:A.color,n.fillText(x,i[i.length-1][0]+4,i[i.length-1][1]+4)};n.font=A.font,a(s.annotations.index,"index"),a(s.annotations.middle,"middle"),a(s.annotations.ring,"ring"),a(s.annotations.pinky,"pinky"),a(s.annotations.thumb,"thumb"),a(s.annotations.palm,"palm")}if(A.drawPolygons&&s.annotations){let a=i=>{if(!(!i||i.length===0||!i[0]))for(let x=0;x0?x-1:0][0],i[x>0?x-1:0][1]),n.lineTo(i[x][0],i[x][1]),n.stroke()}};n.lineWidth=A.lineWidth,a(s.annotations.index),a(s.annotations.middle),a(s.annotations.ring),a(s.annotations.pinky),a(s.annotations.thumb)}}}}async function oo(e,t,o){let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n){n.lineJoin="round",n.font=A.font;for(let s of t)if(A.drawBoxes){if(n.strokeStyle=A.color,n.fillStyle=A.color,He(n,s.box[0],s.box[1],s.box[2],s.box[3],A),A.drawLabels){let a=`${s.label} ${Math.round(100*s.score)}%`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(a,s.box[0]+3,1+s.box[1]+A.lineHeight,s.box[2])),n.fillStyle=A.labelColor,n.fillText(a,s.box[0]+2,0+s.box[1]+A.lineHeight,s.box[2])}n.stroke()}}}async function Xn(e,t,o){let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n){n.lineJoin="round",n.font=A.font;for(let s=0;st!=o[n].y>t&&e<(o[n].x-o[s].x)*(t-o[s].y)/(o[n].y-o[s].y)+o[s].x&&(A=!A);return A}async function Un(e){if(!e.tensor||!e.mesh||e.mesh.length<100)return e.tensor;let t=e.tensor.shape[2]||0,o=e.tensor.shape[1]||0,A=await e.tensor.buffer(),n=[];for(let a of b0.silhouette)n.push({x:(e.mesh[a][0]-e.box[0])/e.box[2],y:(e.mesh[a][1]-e.box[1])/e.box[3]});ve&&ve>0&&(n=n.map(a=>({x:a.x>.5?a.x+ve:a.x-ve,y:a.y>.5?a.y+ve:a.y-ve})));for(let a=0;a{let t=(y,c)=>Math.atan2(y[1]-c[1],y[0]-c[0]);if(!e.annotations.rightEyeIris||!e.annotations.leftEyeIris)return{bearing:0,strength:0};let o=[0,-.1],A=1,n=(e.mesh[33][2]||0)>(e.mesh[263][2]||0),s=n?e.mesh[473]:e.mesh[468],a=n?[(e.mesh[133][0]+e.mesh[33][0])/2,(e.mesh[133][1]+e.mesh[33][1])/2]:[(e.mesh[263][0]+e.mesh[362][0])/2,(e.mesh[263][1]+e.mesh[362][1])/2],i=n?[e.mesh[133][0]-e.mesh[33][0],e.mesh[23][1]-e.mesh[27][1]]:[e.mesh[263][0]-e.mesh[362][0],e.mesh[253][1]-e.mesh[257][1]],x=[(a[0]-s[0])/i[0]-o[0],A*(s[1]-a[1])/i[1]-o[1]],d=Math.sqrt(x[0]**2+x[1]**2);return d=Math.min(d,e.boxRaw[2]/2,e.boxRaw[3]/2),{bearing:(t([0,0],x)+Math.PI/2)%Math.PI,strength:d}},Jn=(e,t)=>{let o=m=>{let v=Math.sqrt(m[0]*m[0]+m[1]*m[1]+m[2]*m[2]);return m[0]/=v,m[1]/=v,m[2]/=v,m},A=(m,v)=>{let b=m[0]-v[0],P=m[1]-v[1],p=m[2]-v[2];return[b,P,p]},n=(m,v)=>{let b=m[1]*v[2]-m[2]*v[1],P=m[2]*v[0]-m[0]*v[2],p=m[0]*v[1]-m[1]*v[0];return[b,P,p]},s=m=>{let[v,b,P,p,u,E,W,C,S]=m,O,V,B;return p<1?p>-1?(B=Math.asin(p),V=Math.atan2(-W,v),O=Math.atan2(-E,u)):(B=-Math.PI/2,V=-Math.atan2(C,S),O=0):(B=Math.PI/2,V=Math.atan2(C,S),O=0),isNaN(O)&&(O=0),isNaN(V)&&(V=0),isNaN(B)&&(B=0),{pitch:2*-O,yaw:2*-V,roll:2*-B}},a=e.meshRaw;if(!a||a.length<300)return{angle:{pitch:0,yaw:0,roll:0},matrix:[1,0,0,0,1,0,0,0,1],gaze:{bearing:0,strength:0}};let i=Math.max(e.boxRaw[2]*t[0],e.boxRaw[3]*t[1])/1.5,x=[a[10],a[152],a[234],a[454]].map(m=>[m[0]*t[0]/i,m[1]*t[1]/i,m[2]]),d=o(A(x[1],x[0])),l=o(A(x[3],x[2])),y=o(n(l,d));l=n(d,y);let c=[l[0],l[1],l[2],d[0],d[1],d[2],y[0],y[1],y[2]],f=s(c),h=a.length===478?L2(e):{bearing:0,strength:0};return{angle:f,matrix:c,gaze:h}};var no=async(e,t)=>{var f,h,m,v,b,P,p,u,E,W,C,S,O,V,B,H,t0,z,m0,G0,T,Q;let o=M(),A,n,s,a,i,x,d,l,y=[];e.state="run:face";let c=await WA(t,e.config);if(e.performance.face=R.perfadd?(e.performance.face||0)+Math.trunc(M()-o):Math.trunc(M()-o),!t.shape||t.shape.length!==4)return[];if(!c)return[];for(let k=0;k200?Jn(c[k],[t.shape[2],t.shape[1]]):null;e.analyze("Start Emotion:"),e.config.async?a=((h=e.config.face.emotion)==null?void 0:h.enabled)?l5(c[k].tensor||r.tensor([]),e.config,k,c.length):[]:(e.state="run:emotion",o=M(),a=((m=e.config.face.emotion)==null?void 0:m.enabled)?await l5(c[k].tensor||r.tensor([]),e.config,k,c.length):[],e.performance.emotion=R.perfadd?(e.performance.emotion||0)+Math.trunc(M()-o):Math.trunc(M()-o)),e.analyze("End Emotion:"),e.analyze("Start AntiSpoof:"),e.config.async?x=((v=e.config.face.antispoof)==null?void 0:v.enabled)?Vt(c[k].tensor||r.tensor([]),e.config,k,c.length):0:(e.state="run:antispoof",o=M(),x=((b=e.config.face.antispoof)==null?void 0:b.enabled)?await Vt(c[k].tensor||r.tensor([]),e.config,k,c.length):0,e.performance.antispoof=R.perfadd?(e.performance.antispoof||0)+Math.trunc(M()-o):Math.trunc(M()-o)),e.analyze("End AntiSpoof:"),e.analyze("Start Liveness:"),e.config.async?d=((P=e.config.face.liveness)==null?void 0:P.enabled)?S5(c[k].tensor||r.tensor([]),e.config,k,c.length):0:(e.state="run:liveness",o=M(),d=((p=e.config.face.liveness)==null?void 0:p.enabled)?await S5(c[k].tensor||r.tensor([]),e.config,k,c.length):0,e.performance.liveness=R.perfadd?(e.performance.antispoof||0)+Math.trunc(M()-o):Math.trunc(M()-o)),e.analyze("End Liveness:"),e.analyze("Start GEAR:"),e.config.async?n=((u=e.config.face.gear)==null?void 0:u.enabled)?Ot(c[k].tensor||r.tensor([]),e.config,k,c.length):null:(e.state="run:gear",o=M(),n=((E=e.config.face.gear)==null?void 0:E.enabled)?await Ot(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.gear=Math.trunc(M()-o)),e.analyze("End GEAR:"),e.analyze("Start SSRNet:"),e.config.async?(A=((W=e.config.face.ssrnet)==null?void 0:W.enabled)?Lt(c[k].tensor||r.tensor([]),e.config,k,c.length):null,s=((C=e.config.face.ssrnet)==null?void 0:C.enabled)?Ht(c[k].tensor||r.tensor([]),e.config,k,c.length):null):(e.state="run:ssrnet",o=M(),A=((S=e.config.face.ssrnet)==null?void 0:S.enabled)?await Lt(c[k].tensor||r.tensor([]),e.config,k,c.length):null,s=((O=e.config.face.ssrnet)==null?void 0:O.enabled)?await Ht(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.ssrnet=Math.trunc(M()-o)),e.analyze("End SSRNet:"),e.analyze("Start MobileFaceNet:"),e.config.async?i=((V=e.config.face.mobilefacenet)==null?void 0:V.enabled)?x5(c[k].tensor||r.tensor([]),e.config,k,c.length):null:(e.state="run:mobilefacenet",o=M(),i=((B=e.config.face.mobilefacenet)==null?void 0:B.enabled)?await x5(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.mobilefacenet=Math.trunc(M()-o)),e.analyze("End MobileFaceNet:"),e.analyze("Start Description:"),e.config.async?l=((H=e.config.face.description)==null?void 0:H.enabled)?u5(c[k].tensor||r.tensor([]),e.config,k,c.length):null:(e.state="run:description",o=M(),l=((t0=e.config.face.description)==null?void 0:t0.enabled)?await u5(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.description=R.perfadd?(e.performance.description||0)+Math.trunc(M()-o):Math.trunc(M()-o)),e.analyze("End Description:"),e.config.async&&([A,s,a,i,l,n,x,d]=await Promise.all([A,s,a,i,l,n,x,d])),e.analyze("Finish Face:"),((z=e.config.face.ssrnet)==null?void 0:z.enabled)&&A&&s&&(l={...l,age:A.age,gender:s.gender,genderScore:s.genderScore}),((m0=e.config.face.gear)==null?void 0:m0.enabled)&&n&&(l={...l,age:n.age,gender:n.gender,genderScore:n.genderScore,race:n.race}),((G0=e.config.face.mobilefacenet)==null?void 0:G0.enabled)&&i&&(l.descriptor=i),!((T=e.config.face.iris)==null?void 0:T.enabled);let Y=c[k].annotations&&c[k].annotations.leftEyeIris&&c[k].annotations.leftEyeIris[0]&&c[k].annotations.rightEyeIris&&c[k].annotations.rightEyeIris[0]&&c[k].annotations.leftEyeIris.length>0&&c[k].annotations.rightEyeIris.length>0&&c[k].annotations.leftEyeIris[0]!==null&&c[k].annotations.rightEyeIris[0]!==null?Math.max(Math.abs(c[k].annotations.leftEyeIris[3][0]-c[k].annotations.leftEyeIris[1][0]),Math.abs(c[k].annotations.rightEyeIris[4][1]-c[k].annotations.rightEyeIris[2][1]))/t.shape[2]:0,e0=((Q=e.config.face.detector)==null?void 0:Q.return)?r.squeeze(c[k].tensor):null;r.dispose(c[k].tensor),c[k].tensor&&delete c[k].tensor;let I={...c[k],id:k};(l==null?void 0:l.age)&&(I.age=l.age),(l==null?void 0:l.gender)&&(I.gender=l.gender),(l==null?void 0:l.genderScore)&&(I.genderScore=l==null?void 0:l.genderScore),(l==null?void 0:l.descriptor)&&(I.embedding=l==null?void 0:l.descriptor),(l==null?void 0:l.race)&&(I.race=l==null?void 0:l.race),a&&(I.emotion=a),x&&(I.real=x),d&&(I.live=d),Y&&Y!==0&&(I.iris=Math.trunc(500/Y/11.7)/100),X&&(I.rotation=X),e0&&(I.tensor=e0),y.push(I),e.analyze("End Face")}return e.analyze("End FaceMesh:"),e.config.async&&(e.performance.face&&delete e.performance.face,e.performance.age&&delete e.performance.age,e.performance.gender&&delete e.performance.gender,e.performance.emotion&&delete e.performance.emotion),y};var Yn=e=>{if(!e)return[];let t=[];for(let o=0;ox.part==="leftWrist"),n=e[o].keypoints.find(x=>x.part==="rightWrist"),s=e[o].keypoints.find(x=>x.part==="nose");s&&A&&n&&A.position[1]x.part==="leftShoulder"),i=e[o].keypoints.find(x=>x.part==="rightShoulder");a&&i&&Math.abs(a.positionRaw[1]-i.positionRaw[1])>.1&&t.push({body:o,gesture:`leaning ${a.position[1]>i.position[1]?"left":"right"}`})}return t},Kn=e=>{if(!e)return[];let t=[];for(let o=0;o450){let A=(e[o].mesh[33][2]||0)-(e[o].mesh[263][2]||0),n=e[o].mesh[33][0]-e[o].mesh[263][0];Math.abs(A/n)<=.15?t.push({face:o,gesture:"facing center"}):t.push({face:o,gesture:`facing ${A<0?"left":"right"}`}),Math.abs(e[o].mesh[374][1]-e[o].mesh[386][1])/Math.abs(e[o].mesh[443][1]-e[o].mesh[450][1])<.2&&t.push({face:o,gesture:"blink left eye"}),Math.abs(e[o].mesh[145][1]-e[o].mesh[159][1])/Math.abs(e[o].mesh[223][1]-e[o].mesh[230][1])<.2&&t.push({face:o,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[o].mesh[13][1]-e[o].mesh[14][1])/Math.abs(e[o].mesh[10][1]-e[o].mesh[152][1]));i>10&&t.push({face:o,gesture:`mouth ${Math.trunc(i)}% open`});let x=e[o].mesh[152][2]||0;Math.abs(x)>10&&t.push({face:o,gesture:`head ${x<0?"up":"down"}`})}return t},Qn=e=>{if(!e)return[];let t=[];for(let o=0;o.06||c>.06)&&(d=!1),y>c?y>.05&&t.push({iris:o,gesture:"looking right"}):c>.05&&t.push({iris:o,gesture:"looking left"});let f=Math.abs(e[o].mesh[145][1]-e[o].annotations.rightEyeIris[0][1])/e[o].box[3],h=Math.abs(e[o].mesh[374][1]-e[o].annotations.leftEyeIris[0][1])/e[o].box[3];(h<.01||f<.01||h>.022||f>.022)&&(d=!1),(h<.01||f<.01)&&t.push({iris:o,gesture:"looking down"}),(h>.022||f>.022)&&t.push({iris:o,gesture:"looking up"}),d&&t.push({iris:o,gesture:"looking center"})}return t},_n=e=>{if(!e)return[];let t=[];for(let o=0;o0){let n=A.reduce((a,i)=>(a.position[2]||0)<(i.position[2]||0)?a:i);t.push({hand:o,gesture:`${n.name} forward`});let s=A.reduce((a,i)=>a.position[1]((n-1)*j.body[T].box[F]+I)/n),k=e.body[T].boxRaw.map((I,F)=>((n-1)*j.body[T].boxRaw[F]+I)/n),X=e.body[T].keypoints.map((I,F)=>{var k0,E0,Re,we,re,so,ao,io,lo;return{score:I.score,part:I.part,position:[j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].position[0]||0)+(I.position[0]||0))/n:I.position[0],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].position[1]||0)+(I.position[1]||0))/n:I.position[1],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].position[2]||0)+(I.position[2]||0))/n:I.position[2]],positionRaw:[j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].positionRaw[0]||0)+(I.positionRaw[0]||0))/n:I.positionRaw[0],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].positionRaw[1]||0)+(I.positionRaw[1]||0))/n:I.positionRaw[1],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].positionRaw[2]||0)+(I.positionRaw[2]||0))/n:I.positionRaw[2]],distance:[j.body[T].keypoints[F]?((n-1)*(((k0=j.body[T].keypoints[F].distance)==null?void 0:k0[0])||0)+(((E0=I.distance)==null?void 0:E0[0])||0))/n:(Re=I.distance)==null?void 0:Re[0],j.body[T].keypoints[F]?((n-1)*(((we=j.body[T].keypoints[F].distance)==null?void 0:we[1])||0)+(((re=I.distance)==null?void 0:re[1])||0))/n:(so=I.distance)==null?void 0:so[1],j.body[T].keypoints[F]?((n-1)*(((ao=j.body[T].keypoints[F].distance)==null?void 0:ao[2])||0)+(((io=I.distance)==null?void 0:io[2])||0))/n:(lo=I.distance)==null?void 0:lo[2]]}}),Y={},e0={connected:{}};((i=(a=t.body)==null?void 0:a.modelPath)==null?void 0:i.includes("efficientpose"))?e0=nt:((d=(x=t.body)==null?void 0:x.modelPath)==null?void 0:d.includes("blazepose"))?e0=$e:((y=(l=t.body)==null?void 0:l.modelPath)==null?void 0:y.includes("movenet"))&&(e0=Le);for(let[I,F]of Object.entries(e0.connected)){let k0=[];for(let E0=0;E0re.part===F[E0]),we=X.find(re=>re.part===F[E0+1]);Re&&we&&k0.push([Re.position,we.position])}Y[I]=k0}j.body[T]={...e.body[T],box:Q,boxRaw:k,keypoints:X,annotations:Y}}if(!j.hand||e.hand.length!==j.hand.length)j.hand=JSON.parse(JSON.stringify(e.hand));else for(let T=0;T((n-1)*j.hand[T].box[I]+e0)/n),k=e.hand[T].boxRaw.map((e0,I)=>((n-1)*j.hand[T].boxRaw[I]+e0)/n);j.hand[T].keypoints.length!==e.hand[T].keypoints.length&&(j.hand[T].keypoints=e.hand[T].keypoints);let X=e.hand[T].keypoints&&e.hand[T].keypoints.length>0?e.hand[T].keypoints.map((e0,I)=>e0.map((F,k0)=>((n-1)*(j.hand[T].keypoints[I][k0]||1)+(F||0))/n)):[],Y={};if(Object.keys(j.hand[T].annotations).length!==Object.keys(e.hand[T].annotations).length)j.hand[T].annotations=e.hand[T].annotations,Y=j.hand[T].annotations;else if(e.hand[T].annotations)for(let e0 of Object.keys(e.hand[T].annotations))Y[e0]=e.hand[T].annotations[e0]&&e.hand[T].annotations[e0][0]?e.hand[T].annotations[e0].map((I,F)=>I.map((k0,E0)=>((n-1)*j.hand[T].annotations[e0][F][E0]+k0)/n)):null;j.hand[T]={...e.hand[T],box:Q,boxRaw:k,keypoints:X,annotations:Y}}if(!j.face||e.face.length!==j.face.length)j.face=JSON.parse(JSON.stringify(e.face));else for(let T=0;T((n-1)*j.face[T].box[Y]+X)/n),k=e.face[T].boxRaw.map((X,Y)=>((n-1)*j.face[T].boxRaw[Y]+X)/n);if(e.face[T].rotation){let X={matrix:[0,0,0,0,0,0,0,0,0],angle:{roll:0,yaw:0,pitch:0},gaze:{bearing:0,strength:0}};X.matrix=(c=e.face[T].rotation)==null?void 0:c.matrix,X.angle={roll:((n-1)*(((h=(f=j.face[T].rotation)==null?void 0:f.angle)==null?void 0:h.roll)||0)+(((v=(m=e.face[T].rotation)==null?void 0:m.angle)==null?void 0:v.roll)||0))/n,yaw:((n-1)*(((P=(b=j.face[T].rotation)==null?void 0:b.angle)==null?void 0:P.yaw)||0)+(((u=(p=e.face[T].rotation)==null?void 0:p.angle)==null?void 0:u.yaw)||0))/n,pitch:((n-1)*(((W=(E=j.face[T].rotation)==null?void 0:E.angle)==null?void 0:W.pitch)||0)+(((S=(C=e.face[T].rotation)==null?void 0:C.angle)==null?void 0:S.pitch)||0))/n},X.gaze={bearing:((n-1)*(((V=(O=j.face[T].rotation)==null?void 0:O.gaze)==null?void 0:V.bearing)||0)+(((H=(B=e.face[T].rotation)==null?void 0:B.gaze)==null?void 0:H.bearing)||0))/n,strength:((n-1)*(((z=(t0=j.face[T].rotation)==null?void 0:t0.gaze)==null?void 0:z.strength)||0)+(((G0=(m0=e.face[T].rotation)==null?void 0:m0.gaze)==null?void 0:G0.strength)||0))/n},j.face[T]={...e.face[T],rotation:X,box:Q,boxRaw:k}}j.face[T]={...e.face[T],box:Q,boxRaw:k}}if(!j.object||e.object.length!==j.object.length)j.object=JSON.parse(JSON.stringify(e.object));else for(let T=0;T((n-1)*j.object[T].box[Y]+X)/n),k=e.object[T].boxRaw.map((X,Y)=>((n-1)*j.object[T].boxRaw[Y]+X)/n);j.object[T]={...e.object[T],box:Q,boxRaw:k}}if(e.persons){let T=e.persons;if(!j.persons||T.length!==j.persons.length)j.persons=JSON.parse(JSON.stringify(T));else for(let Q=0;Q((n-1)*j.persons[Q].box[X]+k)/n)}e.gesture&&(j.gesture=e.gesture);let s=M();return ro=R.perfadd?ro+Math.round(s-o):Math.round(s-o),e.performance&&(j.performance={...e.performance,interpolate:ro}),j}function vt(e,t,o={order:2,multiplier:25}){let A=0;for(let n=0;n{if(e===0)return 1;let n=t===2?Math.sqrt(e):e**(1/t),s=(1-n/100-o)/(A-o);return Math.max(Math.min(s,1),0)};function tr(e,t,o={order:2,multiplier:25,min:.2,max:.8}){let A=vt(e,t,o);return er(A,o.order||2,o.min||0,o.max||1)}function or(e,t,o={order:2,multiplier:25,threshold:0,min:.2,max:.8}){if(!Array.isArray(e)||!Array.isArray(t)||e.length<64||t.length===0||e.length!==t[0].length)return{index:-1,distance:Number.POSITIVE_INFINITY,similarity:0};let A=Number.MAX_SAFE_INTEGER,n=-1;for(let a=0;az.box[0]&&C.box[0]z.box[1]&&C.box[1]+C.box[3]S.body.box[0]&&z.box[0]+z.box[2]S.body.box[1]&&z.box[1]+z.box[3]S.body.box[0]&&z.box[1]+z.box[3]>S.body.box[1]&&z.box[1]+z.box[3]{z&&z.length===4&&(O.push(z[0],z[0]+z[2]),V.push(z[1],z[1]+z[3]))};B((b=S.face)==null?void 0:b.box),B((P=S.body)==null?void 0:P.box),B((u=(p=S.hands)==null?void 0:p.left)==null?void 0:u.box),B((W=(E=S.hands)==null?void 0:E.right)==null?void 0:W.box);let H=Math.min(...O),t0=Math.min(...V);S.box=[H,t0,Math.max(...O)-H,Math.max(...V)-t0],n&&n[1]&&n[2]&&(S.boxRaw=[S.box[0]/n[2],S.box[1]/n[1],S.box[2]/n[2],S.box[3]/n[1]]),a.push(S)}return a}var Tt=` + `);n.stroke(h),n.stroke(f)}if(A.drawGaze&&((i=(a=l.rotation)==null?void 0:a.gaze)==null?void 0:i.strength)&&((d=(x=l.rotation)==null?void 0:x.gaze)==null?void 0:d.bearing)&&l.annotations.leftEyeIris&&l.annotations.rightEyeIris&&l.annotations.leftEyeIris[0]&&l.annotations.rightEyeIris[0]){n.strokeStyle="pink",n.fillStyle="pink";let y=[l.annotations.leftEyeIris[0][0]+Math.sin(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[3],l.annotations.leftEyeIris[0][1]+Math.cos(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[2]];Vn(n,[l.annotations.leftEyeIris[0][0],l.annotations.leftEyeIris[0][1]],[y[0],y[1]],4);let c=[l.annotations.rightEyeIris[0][0]+Math.sin(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[3],l.annotations.rightEyeIris[0][1]+Math.cos(l.rotation.gaze.bearing)*l.rotation.gaze.strength*l.box[2]];Vn(n,[l.annotations.rightEyeIris[0][0],l.annotations.rightEyeIris[0][1]],[c[0],c[1]],4)}}}}}async function eo(e,t,o){var s;let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n){n.lineJoin="round";for(let a=0;a0)for(let a of s.keypoints)n.fillStyle=A.useDepth?`rgba(${127.5+2*(a[2]||0)}, ${127.5-2*(a[2]||0)}, 255, 0.5)`:A.color,Q5(n,a[0],a[1],0,A);if(A.drawLabels&&s.annotations){let a=(i,x)=>{if(!i||i.length===0||!i[0])return;let d=i[i.length-1][2]||0;n.fillStyle=A.useDepth?`rgba(${127.5+2*d}, ${127.5-2*d}, 255, 0.5)`:A.color,n.fillText(x,i[i.length-1][0]+4,i[i.length-1][1]+4)};n.font=A.font,a(s.annotations.index,"index"),a(s.annotations.middle,"middle"),a(s.annotations.ring,"ring"),a(s.annotations.pinky,"pinky"),a(s.annotations.thumb,"thumb"),a(s.annotations.palm,"palm")}if(A.drawPolygons&&s.annotations){let a=i=>{if(!(!i||i.length===0||!i[0]))for(let x=0;x0?x-1:0][0],i[x>0?x-1:0][1]),n.lineTo(i[x][0],i[x][1]),n.stroke()}};n.lineWidth=A.lineWidth,a(s.annotations.index),a(s.annotations.middle),a(s.annotations.ring),a(s.annotations.pinky),a(s.annotations.thumb)}}}}async function oo(e,t,o){let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n){n.lineJoin="round",n.font=A.font;for(let s of t)if(A.drawBoxes){if(n.strokeStyle=A.color,n.fillStyle=A.color,He(n,s.box[0],s.box[1],s.box[2],s.box[3],A),A.drawLabels){let a=`${s.label} ${Math.round(100*s.score)}%`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(a,s.box[0]+3,1+s.box[1]+A.lineHeight,s.box[2])),n.fillStyle=A.labelColor,n.fillText(a,s.box[0]+2,0+s.box[1]+A.lineHeight,s.box[2])}n.stroke()}}}async function Xn(e,t,o){let A=o0(B0,o);if(!t||!e)return;let n=ne(e);if(!!n){n.lineJoin="round",n.font=A.font;for(let s=0;st!=o[n].y>t&&e<(o[n].x-o[s].x)*(t-o[s].y)/(o[n].y-o[s].y)+o[s].x&&(A=!A);return A}async function Un(e){if(!e.tensor||!e.mesh||e.mesh.length<100)return e.tensor;let t=e.tensor.shape[2]||0,o=e.tensor.shape[1]||0,A=await e.tensor.buffer(),n=[];for(let a of b0.silhouette)n.push({x:(e.mesh[a][0]-e.box[0])/e.box[2],y:(e.mesh[a][1]-e.box[1])/e.box[3]});ve&&ve>0&&(n=n.map(a=>({x:a.x>.5?a.x+ve:a.x-ve,y:a.y>.5?a.y+ve:a.y-ve})));for(let a=0;a{let t=(y,c)=>Math.atan2(y[1]-c[1],y[0]-c[0]);if(!e.annotations.rightEyeIris||!e.annotations.leftEyeIris)return{bearing:0,strength:0};let o=[0,-.1],A=1,n=(e.mesh[33][2]||0)>(e.mesh[263][2]||0),s=n?e.mesh[473]:e.mesh[468],a=n?[(e.mesh[133][0]+e.mesh[33][0])/2,(e.mesh[133][1]+e.mesh[33][1])/2]:[(e.mesh[263][0]+e.mesh[362][0])/2,(e.mesh[263][1]+e.mesh[362][1])/2],i=n?[e.mesh[133][0]-e.mesh[33][0],e.mesh[23][1]-e.mesh[27][1]]:[e.mesh[263][0]-e.mesh[362][0],e.mesh[253][1]-e.mesh[257][1]],x=[(a[0]-s[0])/i[0]-o[0],A*(s[1]-a[1])/i[1]-o[1]],d=Math.sqrt(x[0]**2+x[1]**2);return d=Math.min(d,e.boxRaw[2]/2,e.boxRaw[3]/2),{bearing:(t([0,0],x)+Math.PI/2)%Math.PI,strength:d}},Jn=(e,t)=>{let o=m=>{let v=Math.sqrt(m[0]*m[0]+m[1]*m[1]+m[2]*m[2]);return m[0]/=v,m[1]/=v,m[2]/=v,m},A=(m,v)=>{let b=m[0]-v[0],M=m[1]-v[1],p=m[2]-v[2];return[b,M,p]},n=(m,v)=>{let b=m[1]*v[2]-m[2]*v[1],M=m[2]*v[0]-m[0]*v[2],p=m[0]*v[1]-m[1]*v[0];return[b,M,p]},s=m=>{let[v,b,M,p,u,E,W,C,S]=m,O,V,B;return p<1?p>-1?(B=Math.asin(p),V=Math.atan2(-W,v),O=Math.atan2(-E,u)):(B=-Math.PI/2,V=-Math.atan2(C,S),O=0):(B=Math.PI/2,V=Math.atan2(C,S),O=0),isNaN(O)&&(O=0),isNaN(V)&&(V=0),isNaN(B)&&(B=0),{pitch:2*-O,yaw:2*-V,roll:2*-B}},a=e.meshRaw;if(!a||a.length<300)return{angle:{pitch:0,yaw:0,roll:0},matrix:[1,0,0,0,1,0,0,0,1],gaze:{bearing:0,strength:0}};let i=Math.max(e.boxRaw[2]*t[0],e.boxRaw[3]*t[1])/1.5,x=[a[10],a[152],a[234],a[454]].map(m=>[m[0]*t[0]/i,m[1]*t[1]/i,m[2]]),d=o(A(x[1],x[0])),l=o(A(x[3],x[2])),y=o(n(l,d));l=n(d,y);let c=[l[0],l[1],l[2],d[0],d[1],d[2],y[0],y[1],y[2]],f=s(c),h=a.length===478?L2(e):{bearing:0,strength:0};return{angle:f,matrix:c,gaze:h}};var no=async(e,t)=>{var f,h,m,v,b,M,p,u,E,W,C,S,O,V,B,H,t0,z,m0,G0,T,Q;let o=P(),A,n,s,a,i,x,d,l,y=[];e.state="run:face";let c=await WA(t,e.config);if(e.performance.face=R.perfadd?(e.performance.face||0)+Math.trunc(P()-o):Math.trunc(P()-o),!t.shape||t.shape.length!==4)return[];if(!c)return[];for(let k=0;k200?Jn(c[k],[t.shape[2],t.shape[1]]):null;e.analyze("Start Emotion:"),e.config.async?a=((h=e.config.face.emotion)==null?void 0:h.enabled)?l5(c[k].tensor||r.tensor([]),e.config,k,c.length):[]:(e.state="run:emotion",o=P(),a=((m=e.config.face.emotion)==null?void 0:m.enabled)?await l5(c[k].tensor||r.tensor([]),e.config,k,c.length):[],e.performance.emotion=R.perfadd?(e.performance.emotion||0)+Math.trunc(P()-o):Math.trunc(P()-o)),e.analyze("End Emotion:"),e.analyze("Start AntiSpoof:"),e.config.async?x=((v=e.config.face.antispoof)==null?void 0:v.enabled)?Vt(c[k].tensor||r.tensor([]),e.config,k,c.length):0:(e.state="run:antispoof",o=P(),x=((b=e.config.face.antispoof)==null?void 0:b.enabled)?await Vt(c[k].tensor||r.tensor([]),e.config,k,c.length):0,e.performance.antispoof=R.perfadd?(e.performance.antispoof||0)+Math.trunc(P()-o):Math.trunc(P()-o)),e.analyze("End AntiSpoof:"),e.analyze("Start Liveness:"),e.config.async?d=((M=e.config.face.liveness)==null?void 0:M.enabled)?S5(c[k].tensor||r.tensor([]),e.config,k,c.length):0:(e.state="run:liveness",o=P(),d=((p=e.config.face.liveness)==null?void 0:p.enabled)?await S5(c[k].tensor||r.tensor([]),e.config,k,c.length):0,e.performance.liveness=R.perfadd?(e.performance.antispoof||0)+Math.trunc(P()-o):Math.trunc(P()-o)),e.analyze("End Liveness:"),e.analyze("Start GEAR:"),e.config.async?n=((u=e.config.face.gear)==null?void 0:u.enabled)?Ot(c[k].tensor||r.tensor([]),e.config,k,c.length):null:(e.state="run:gear",o=P(),n=((E=e.config.face.gear)==null?void 0:E.enabled)?await Ot(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.gear=Math.trunc(P()-o)),e.analyze("End GEAR:"),e.analyze("Start SSRNet:"),e.config.async?(A=((W=e.config.face.ssrnet)==null?void 0:W.enabled)?Lt(c[k].tensor||r.tensor([]),e.config,k,c.length):null,s=((C=e.config.face.ssrnet)==null?void 0:C.enabled)?Ht(c[k].tensor||r.tensor([]),e.config,k,c.length):null):(e.state="run:ssrnet",o=P(),A=((S=e.config.face.ssrnet)==null?void 0:S.enabled)?await Lt(c[k].tensor||r.tensor([]),e.config,k,c.length):null,s=((O=e.config.face.ssrnet)==null?void 0:O.enabled)?await Ht(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.ssrnet=Math.trunc(P()-o)),e.analyze("End SSRNet:"),e.analyze("Start MobileFaceNet:"),e.config.async?i=((V=e.config.face.mobilefacenet)==null?void 0:V.enabled)?x5(c[k].tensor||r.tensor([]),e.config,k,c.length):null:(e.state="run:mobilefacenet",o=P(),i=((B=e.config.face.mobilefacenet)==null?void 0:B.enabled)?await x5(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.mobilefacenet=Math.trunc(P()-o)),e.analyze("End MobileFaceNet:"),e.analyze("Start Description:"),e.config.async?l=((H=e.config.face.description)==null?void 0:H.enabled)?u5(c[k].tensor||r.tensor([]),e.config,k,c.length):null:(e.state="run:description",o=P(),l=((t0=e.config.face.description)==null?void 0:t0.enabled)?await u5(c[k].tensor||r.tensor([]),e.config,k,c.length):null,e.performance.description=R.perfadd?(e.performance.description||0)+Math.trunc(P()-o):Math.trunc(P()-o)),e.analyze("End Description:"),e.config.async&&([A,s,a,i,l,n,x,d]=await Promise.all([A,s,a,i,l,n,x,d])),e.analyze("Finish Face:"),((z=e.config.face.ssrnet)==null?void 0:z.enabled)&&A&&s&&(l={...l,age:A.age,gender:s.gender,genderScore:s.genderScore}),((m0=e.config.face.gear)==null?void 0:m0.enabled)&&n&&(l={...l,age:n.age,gender:n.gender,genderScore:n.genderScore,race:n.race}),((G0=e.config.face.mobilefacenet)==null?void 0:G0.enabled)&&i&&(l.descriptor=i),!((T=e.config.face.iris)==null?void 0:T.enabled);let Y=c[k].annotations&&c[k].annotations.leftEyeIris&&c[k].annotations.leftEyeIris[0]&&c[k].annotations.rightEyeIris&&c[k].annotations.rightEyeIris[0]&&c[k].annotations.leftEyeIris.length>0&&c[k].annotations.rightEyeIris.length>0&&c[k].annotations.leftEyeIris[0]!==null&&c[k].annotations.rightEyeIris[0]!==null?Math.max(Math.abs(c[k].annotations.leftEyeIris[3][0]-c[k].annotations.leftEyeIris[1][0]),Math.abs(c[k].annotations.rightEyeIris[4][1]-c[k].annotations.rightEyeIris[2][1]))/t.shape[2]:0,e0=((Q=e.config.face.detector)==null?void 0:Q.return)?r.squeeze(c[k].tensor):null;r.dispose(c[k].tensor),c[k].tensor&&delete c[k].tensor;let I={...c[k],id:k};(l==null?void 0:l.age)&&(I.age=l.age),(l==null?void 0:l.gender)&&(I.gender=l.gender),(l==null?void 0:l.genderScore)&&(I.genderScore=l==null?void 0:l.genderScore),(l==null?void 0:l.descriptor)&&(I.embedding=l==null?void 0:l.descriptor),(l==null?void 0:l.race)&&(I.race=l==null?void 0:l.race),a&&(I.emotion=a),x&&(I.real=x),d&&(I.live=d),Y&&Y!==0&&(I.iris=Math.trunc(500/Y/11.7)/100),X&&(I.rotation=X),e0&&(I.tensor=e0),y.push(I),e.analyze("End Face")}return e.analyze("End FaceMesh:"),e.config.async&&(e.performance.face&&delete e.performance.face,e.performance.age&&delete e.performance.age,e.performance.gender&&delete e.performance.gender,e.performance.emotion&&delete e.performance.emotion),y};var Yn=e=>{if(!e)return[];let t=[];for(let o=0;ox.part==="leftWrist"),n=e[o].keypoints.find(x=>x.part==="rightWrist"),s=e[o].keypoints.find(x=>x.part==="nose");s&&A&&n&&A.position[1]x.part==="leftShoulder"),i=e[o].keypoints.find(x=>x.part==="rightShoulder");a&&i&&Math.abs(a.positionRaw[1]-i.positionRaw[1])>.1&&t.push({body:o,gesture:`leaning ${a.position[1]>i.position[1]?"left":"right"}`})}return t},Kn=e=>{if(!e)return[];let t=[];for(let o=0;o450){let A=(e[o].mesh[33][2]||0)-(e[o].mesh[263][2]||0),n=e[o].mesh[33][0]-e[o].mesh[263][0];Math.abs(A/n)<=.15?t.push({face:o,gesture:"facing center"}):t.push({face:o,gesture:`facing ${A<0?"left":"right"}`}),Math.abs(e[o].mesh[374][1]-e[o].mesh[386][1])/Math.abs(e[o].mesh[443][1]-e[o].mesh[450][1])<.2&&t.push({face:o,gesture:"blink left eye"}),Math.abs(e[o].mesh[145][1]-e[o].mesh[159][1])/Math.abs(e[o].mesh[223][1]-e[o].mesh[230][1])<.2&&t.push({face:o,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[o].mesh[13][1]-e[o].mesh[14][1])/Math.abs(e[o].mesh[10][1]-e[o].mesh[152][1]));i>10&&t.push({face:o,gesture:`mouth ${Math.trunc(i)}% open`});let x=e[o].mesh[152][2]||0;Math.abs(x)>10&&t.push({face:o,gesture:`head ${x<0?"up":"down"}`})}return t},Qn=e=>{if(!e)return[];let t=[];for(let o=0;o.06||c>.06)&&(d=!1),y>c?y>.05&&t.push({iris:o,gesture:"looking right"}):c>.05&&t.push({iris:o,gesture:"looking left"});let f=Math.abs(e[o].mesh[145][1]-e[o].annotations.rightEyeIris[0][1])/e[o].box[3],h=Math.abs(e[o].mesh[374][1]-e[o].annotations.leftEyeIris[0][1])/e[o].box[3];(h<.01||f<.01||h>.022||f>.022)&&(d=!1),(h<.01||f<.01)&&t.push({iris:o,gesture:"looking down"}),(h>.022||f>.022)&&t.push({iris:o,gesture:"looking up"}),d&&t.push({iris:o,gesture:"looking center"})}return t},_n=e=>{if(!e)return[];let t=[];for(let o=0;o0){let n=A.reduce((a,i)=>(a.position[2]||0)<(i.position[2]||0)?a:i);t.push({hand:o,gesture:`${n.name} forward`});let s=A.reduce((a,i)=>a.position[1]((n-1)*j.body[T].box[F]+I)/n),k=e.body[T].boxRaw.map((I,F)=>((n-1)*j.body[T].boxRaw[F]+I)/n),X=e.body[T].keypoints.map((I,F)=>{var k0,E0,Re,we,re,so,ao,io,lo;return{score:I.score,part:I.part,position:[j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].position[0]||0)+(I.position[0]||0))/n:I.position[0],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].position[1]||0)+(I.position[1]||0))/n:I.position[1],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].position[2]||0)+(I.position[2]||0))/n:I.position[2]],positionRaw:[j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].positionRaw[0]||0)+(I.positionRaw[0]||0))/n:I.positionRaw[0],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].positionRaw[1]||0)+(I.positionRaw[1]||0))/n:I.positionRaw[1],j.body[T].keypoints[F]?((n-1)*(j.body[T].keypoints[F].positionRaw[2]||0)+(I.positionRaw[2]||0))/n:I.positionRaw[2]],distance:[j.body[T].keypoints[F]?((n-1)*(((k0=j.body[T].keypoints[F].distance)==null?void 0:k0[0])||0)+(((E0=I.distance)==null?void 0:E0[0])||0))/n:(Re=I.distance)==null?void 0:Re[0],j.body[T].keypoints[F]?((n-1)*(((we=j.body[T].keypoints[F].distance)==null?void 0:we[1])||0)+(((re=I.distance)==null?void 0:re[1])||0))/n:(so=I.distance)==null?void 0:so[1],j.body[T].keypoints[F]?((n-1)*(((ao=j.body[T].keypoints[F].distance)==null?void 0:ao[2])||0)+(((io=I.distance)==null?void 0:io[2])||0))/n:(lo=I.distance)==null?void 0:lo[2]]}}),Y={},e0={connected:{}};((i=(a=t.body)==null?void 0:a.modelPath)==null?void 0:i.includes("efficientpose"))?e0=nt:((d=(x=t.body)==null?void 0:x.modelPath)==null?void 0:d.includes("blazepose"))?e0=$e:((y=(l=t.body)==null?void 0:l.modelPath)==null?void 0:y.includes("movenet"))&&(e0=Le);for(let[I,F]of Object.entries(e0.connected)){let k0=[];for(let E0=0;E0re.part===F[E0]),we=X.find(re=>re.part===F[E0+1]);Re&&we&&k0.push([Re.position,we.position])}Y[I]=k0}j.body[T]={...e.body[T],box:Q,boxRaw:k,keypoints:X,annotations:Y}}if(!j.hand||e.hand.length!==j.hand.length)j.hand=JSON.parse(JSON.stringify(e.hand));else for(let T=0;T((n-1)*j.hand[T].box[I]+e0)/n),k=e.hand[T].boxRaw.map((e0,I)=>((n-1)*j.hand[T].boxRaw[I]+e0)/n);j.hand[T].keypoints.length!==e.hand[T].keypoints.length&&(j.hand[T].keypoints=e.hand[T].keypoints);let X=e.hand[T].keypoints&&e.hand[T].keypoints.length>0?e.hand[T].keypoints.map((e0,I)=>e0.map((F,k0)=>((n-1)*(j.hand[T].keypoints[I][k0]||1)+(F||0))/n)):[],Y={};if(Object.keys(j.hand[T].annotations).length!==Object.keys(e.hand[T].annotations).length)j.hand[T].annotations=e.hand[T].annotations,Y=j.hand[T].annotations;else if(e.hand[T].annotations)for(let e0 of Object.keys(e.hand[T].annotations))Y[e0]=e.hand[T].annotations[e0]&&e.hand[T].annotations[e0][0]?e.hand[T].annotations[e0].map((I,F)=>I.map((k0,E0)=>((n-1)*j.hand[T].annotations[e0][F][E0]+k0)/n)):null;j.hand[T]={...e.hand[T],box:Q,boxRaw:k,keypoints:X,annotations:Y}}if(!j.face||e.face.length!==j.face.length)j.face=JSON.parse(JSON.stringify(e.face));else for(let T=0;T((n-1)*j.face[T].box[Y]+X)/n),k=e.face[T].boxRaw.map((X,Y)=>((n-1)*j.face[T].boxRaw[Y]+X)/n);if(e.face[T].rotation){let X={matrix:[0,0,0,0,0,0,0,0,0],angle:{roll:0,yaw:0,pitch:0},gaze:{bearing:0,strength:0}};X.matrix=(c=e.face[T].rotation)==null?void 0:c.matrix,X.angle={roll:((n-1)*(((h=(f=j.face[T].rotation)==null?void 0:f.angle)==null?void 0:h.roll)||0)+(((v=(m=e.face[T].rotation)==null?void 0:m.angle)==null?void 0:v.roll)||0))/n,yaw:((n-1)*(((M=(b=j.face[T].rotation)==null?void 0:b.angle)==null?void 0:M.yaw)||0)+(((u=(p=e.face[T].rotation)==null?void 0:p.angle)==null?void 0:u.yaw)||0))/n,pitch:((n-1)*(((W=(E=j.face[T].rotation)==null?void 0:E.angle)==null?void 0:W.pitch)||0)+(((S=(C=e.face[T].rotation)==null?void 0:C.angle)==null?void 0:S.pitch)||0))/n},X.gaze={bearing:((n-1)*(((V=(O=j.face[T].rotation)==null?void 0:O.gaze)==null?void 0:V.bearing)||0)+(((H=(B=e.face[T].rotation)==null?void 0:B.gaze)==null?void 0:H.bearing)||0))/n,strength:((n-1)*(((z=(t0=j.face[T].rotation)==null?void 0:t0.gaze)==null?void 0:z.strength)||0)+(((G0=(m0=e.face[T].rotation)==null?void 0:m0.gaze)==null?void 0:G0.strength)||0))/n},j.face[T]={...e.face[T],rotation:X,box:Q,boxRaw:k}}j.face[T]={...e.face[T],box:Q,boxRaw:k}}if(!j.object||e.object.length!==j.object.length)j.object=JSON.parse(JSON.stringify(e.object));else for(let T=0;T((n-1)*j.object[T].box[Y]+X)/n),k=e.object[T].boxRaw.map((X,Y)=>((n-1)*j.object[T].boxRaw[Y]+X)/n);j.object[T]={...e.object[T],box:Q,boxRaw:k}}if(e.persons){let T=e.persons;if(!j.persons||T.length!==j.persons.length)j.persons=JSON.parse(JSON.stringify(T));else for(let Q=0;Q((n-1)*j.persons[Q].box[X]+k)/n)}e.gesture&&(j.gesture=e.gesture);let s=P();return ro=R.perfadd?ro+Math.round(s-o):Math.round(s-o),e.performance&&(j.performance={...e.performance,interpolate:ro}),j}function vt(e,t,o={order:2,multiplier:25}){let A=0;for(let n=0;n{if(e===0)return 1;let n=t===2?Math.sqrt(e):e**(1/t),s=(1-n/100-o)/(A-o);return Math.max(Math.min(s,1),0)};function tr(e,t,o={order:2,multiplier:25,min:.2,max:.8}){let A=vt(e,t,o);return er(A,o.order||2,o.min||0,o.max||1)}function or(e,t,o={order:2,multiplier:25,threshold:0,min:.2,max:.8}){if(!Array.isArray(e)||!Array.isArray(t)||e.length<64||t.length===0||e.length!==t[0].length)return{index:-1,distance:Number.POSITIVE_INFINITY,similarity:0};let A=Number.MAX_SAFE_INTEGER,n=-1;for(let a=0;az.box[0]&&C.box[0]z.box[1]&&C.box[1]+C.box[3]S.body.box[0]&&z.box[0]+z.box[2]S.body.box[1]&&z.box[1]+z.box[3]S.body.box[0]&&z.box[1]+z.box[3]>S.body.box[1]&&z.box[1]+z.box[3]{z&&z.length===4&&(O.push(z[0],z[0]+z[2]),V.push(z[1],z[1]+z[3]))};B((b=S.face)==null?void 0:b.box),B((M=S.body)==null?void 0:M.box),B((u=(p=S.hands)==null?void 0:p.left)==null?void 0:u.box),B((W=(E=S.hands)==null?void 0:E.right)==null?void 0:W.box);let H=Math.min(...O),t0=Math.min(...V);S.box=[H,t0,Math.max(...O)-H,Math.max(...V)-t0],n&&n[1]&&n[2]&&(S.boxRaw=[S.box[0]/n[2],S.box[1]/n[1],S.box[2]/n[2],S.box[3]/n[1]]),a.push(S)}return a}var Tt=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -827,7 +827,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;async function X2(e){let t=(n,s="application/octet-stream")=>fetch(`data:${s};base64,${n}`).then(a=>a.blob()),o,A;switch(e.config.warmup){case"face":o=await t(Tt);break;case"body":case"full":o=await t(Rt);break;default:o=null}if(o){let n=await createImageBitmap(o);A=await e.detect(n,e.config),n.close()}return A}async function D2(e){return new Promise(t=>{let o;switch(e.config.warmup){case"face":o="data:image/jpeg;base64,"+Tt;break;case"full":case"body":o="data:image/jpeg;base64,"+Rt;break;default:o=null}let A;if(typeof Image!="undefined")A=new Image;else if(R.Image)A=new R.Image;else return;A.onload=async()=>{let n=s0(A.naturalWidth,A.naturalHeight);if(!n)g("Warmup: Canvas not found"),t(void 0);else{let s=n.getContext("2d");s&&s.drawImage(A,0,0);let a=await e.image(n),i=await e.detect(a.tensor,e.config);t(i)}},o?A.src=o:t(void 0)})}async function q2(e){let t=n=>Buffer.from(n,"base64"),o;e.config.warmup==="face"?o=t(Tt):o=t(Rt);let A;if("node"in r){let n=r.node.decodeJpeg(o),s=n.expandDims(0);e.tf.dispose(n),A=await e.detect(s,e.config),e.tf.dispose(s)}else e.config.debug&&g("Warmup tfjs-node not loaded");return A}async function nr(e,t){let o=M();if(e.state="warmup",t&&(e.config=o0(e.config,t)),!e.config.warmup||e.config.warmup.length===0||e.config.warmup==="none")return{face:[],body:[],hand:[],gesture:[],object:[],performance:e.performance,timestamp:M(),persons:[],error:null};let A;return new Promise(async n=>{typeof createImageBitmap=="function"?A=await X2(e):typeof Image!="undefined"||R.Canvas!==void 0?A=await D2(e):A=await q2(e);let s=M();e.config.debug&&g("Warmup",e.config.warmup,Math.round(s-o),"ms"),e.emit("warmup"),n(A)})}var Te,Fe,Ve,wt,J2=class{constructor(t){w(this,"version");w(this,"config");w(this,"result");w(this,"state");w(this,"process");w(this,"tf");w(this,"env");w(this,"draw");w(this,"models");w(this,"events");w(this,"faceTriangulation");w(this,"faceUVMap");w(this,"performance");Ee(this,Te,void 0);Ee(this,Fe,void 0);Ee(this,Ve,void 0);w(this,"gl");w(this,"analyze",(...t)=>{if(!ke(this,Fe))return;let o=this.tf.engine().state.numTensors,A=ke(this,Te);ze(this,Te,o);let n=o-A;n!==0&&g(...t,n)});Ee(this,wt,t=>{if(!ke(this,Ve))return null;if(!t)return"input is not defined";if(this.env.node&&!(t instanceof se))return"input must be a tensor";try{this.tf.getBackend()}catch(o){return"backend not loaded"}return null});w(this,"similarity",tr);w(this,"distance",vt);w(this,"match",or);w(this,"emit",t=>{var o;this.events&&this.events.dispatchEvent&&((o=this.events)==null||o.dispatchEvent(new Event(t)))});this.env=R,Y0.wasmPath=je["tfjs-core"].includes("-")?"https://vladmandic.github.io/tfjs/dist/":`https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${r.version_core}/dist/`,Y0.modelBasePath=R.browser?"../models/":"file://models/",Y0.backend=R.browser?"humangl":"tensorflow",this.version=Wt,Object.defineProperty(this,"version",{value:Wt}),this.config=JSON.parse(JSON.stringify(Y0)),Object.seal(this.config),t&&(this.config=o0(this.config,t)),this.config.cacheModels=typeof indexedDB!="undefined",To(this.config),this.tf=r,this.state="idle",ze(this,Te,0),ze(this,Fe,!1),ze(this,Ve,!1),this.performance={},this.events=typeof EventTarget!="undefined"?new EventTarget:void 0,this.models=new J5,this.draw={options:B0,canvas:(o,A)=>Dn(o,A),face:(o,A,n)=>$5(o,A,n),body:(o,A,n)=>eo(o,A,n),hand:(o,A,n)=>to(o,A,n),gesture:(o,A,n)=>_5(o,A,n),object:(o,A,n)=>oo(o,A,n),person:(o,A,n)=>Xn(o,A,n),all:(o,A,n)=>qn(o,A,n)},this.result={face:[],body:[],hand:[],gesture:[],object:[],performance:{},timestamp:0,persons:[],error:null},this.process={tensor:null,canvas:null},this.faceTriangulation=IA,this.faceUVMap=OA,this.gl=q,this.emit("create")}reset(){let t=this.config.backend;this.config=JSON.parse(JSON.stringify(Y0)),this.config.backend=t}validate(t){return Et(Y0,t||this.config)}now(){return M()}image(t,o=!0){return ie(t,this.config,o)}async segmentation(t,o){return On(t,o,this.config)}enhance(t){return p5(t)}compare(t,o){return Po(this.config,t,o)}async init(){await Pt(this,!0),await this.tf.ready()}async load(t){this.state="load";let o=M(),A=Object.values(this.models).filter(a=>a).length;t&&(this.config=o0(this.config,t)),this.env.initial&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version["tfjs-core"]}`),await Pt(this)||g("error: backend check failed"),await r.ready(),this.env.browser&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("environment:",this.env),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),await Ln(this),this.env.initial&&this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),this.env.initial=!1,Object.values(this.models).filter(a=>a).length!==A&&(await Bn(this),this.emit("load"));let s=Math.trunc(M()-o);s>(this.performance.loadModels||0)&&(this.performance.loadModels=this.env.perfadd?(this.performance.loadModels||0)+s:s)}next(t=this.result){return $n(t,this.config)}async warmup(t){let o=M(),A=await nr(this,t),n=M();return this.performance.warmup=Math.trunc(n-o),A}async profile(t,o){let A=await this.tf.profile(()=>this.detect(t,o)),n={};for(let i of A.kernels)n[i.name]?n[i.name]+=i.kernelTimeMs:n[i.name]=i.kernelTimeMs;let s=[];Object.entries(n).forEach(i=>s.push({name:i[0],ms:i[1]})),s.sort((i,x)=>x.ms-i.ms),s.length=20;let a={};for(let i of s)a[i.name]=i.ms;return a}async detect(t,o){return this.state="detect",new Promise(async A=>{var v,b,P,p,u,E,W,C,S,O,V,B,H,t0,z,m0,G0,T,Q,k,X,Y;this.state="config";let n;this.config=o0(this.config,o),this.state="check";let s=ke(this,wt).call(this,t);s&&(g(s,t),this.emit("error"),A({face:[],body:[],hand:[],gesture:[],object:[],performance:this.performance,timestamp:M(),persons:[],error:s}));let a=M();await Pt(this),await this.load(),n=M(),this.state="image";let i=await ie(t,this.config);if(this.process=i,this.performance.inputProcess=this.env.perfadd?(this.performance.inputProcess||0)+Math.trunc(M()-n):Math.trunc(M()-n),this.analyze("Get Image:"),!i.tensor){this.config.debug&&g("could not convert input to tensor"),this.emit("error"),A({face:[],body:[],hand:[],gesture:[],object:[],performance:this.performance,timestamp:M(),persons:[],error:"could not convert input to tensor"});return}this.emit("image"),n=M(),this.config.skipAllowed=await Mo(this.config,i.tensor),this.performance.totalFrames||(this.performance.totalFrames=0),this.performance.cachedFrames||(this.performance.cachedFrames=0),this.performance.totalFrames++,this.config.skipAllowed&&this.performance.cachedFrames++,this.performance.cacheCheck=this.env.perfadd?(this.performance.cacheCheck||0)+Math.trunc(M()-n):Math.trunc(M()-n),this.analyze("Check Changed:");let x=[],d=[],l=[],y=[];this.state="detect:face",this.config.async?(x=this.config.face.enabled?no(this,i.tensor):[],this.performance.face&&delete this.performance.face):(n=M(),x=this.config.face.enabled?await no(this,i.tensor):[],this.performance.face=this.env.perfadd?(this.performance.face||0)+Math.trunc(M()-n):Math.trunc(M()-n)),this.config.async&&(this.config.body.maxDetected===-1||this.config.hand.maxDetected===-1)&&(x=await x),this.analyze("Start Body:"),this.state="detect:body";let c=this.config.body.maxDetected===-1?o0(this.config,{body:{maxDetected:this.config.face.enabled?1*x.length:1}}):this.config;this.config.async?(((v=this.config.body.modelPath)==null?void 0:v.includes("posenet"))?d=this.config.body.enabled?D5(i.tensor,c):[]:((b=this.config.body.modelPath)==null?void 0:b.includes("blazepose"))?d=this.config.body.enabled?e5(i.tensor,c):[]:((P=this.config.body.modelPath)==null?void 0:P.includes("efficientpose"))?d=this.config.body.enabled?a5(i.tensor,c):[]:((p=this.config.body.modelPath)==null?void 0:p.includes("movenet"))&&(d=this.config.body.enabled?L5(i.tensor,c):[]),this.performance.body&&delete this.performance.body):(n=M(),((u=this.config.body.modelPath)==null?void 0:u.includes("posenet"))?d=this.config.body.enabled?await D5(i.tensor,c):[]:((E=this.config.body.modelPath)==null?void 0:E.includes("blazepose"))?d=this.config.body.enabled?await e5(i.tensor,c):[]:((W=this.config.body.modelPath)==null?void 0:W.includes("efficientpose"))?d=this.config.body.enabled?await a5(i.tensor,c):[]:((C=this.config.body.modelPath)==null?void 0:C.includes("movenet"))&&(d=this.config.body.enabled?await L5(i.tensor,c):[]),this.performance.body=this.env.perfadd?(this.performance.body||0)+Math.trunc(M()-n):Math.trunc(M()-n)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.state="detect:hand";let f=this.config.hand.maxDetected===-1?o0(this.config,{hand:{maxDetected:this.config.face.enabled?2*x.length:1}}):this.config;this.config.async?(((O=(S=this.config.hand.detector)==null?void 0:S.modelPath)==null?void 0:O.includes("handdetect"))?l=this.config.hand.enabled?R5(i.tensor,f):[]:((B=(V=this.config.hand.detector)==null?void 0:V.modelPath)==null?void 0:B.includes("handtrack"))&&(l=this.config.hand.enabled?z5(i.tensor,f):[]),this.performance.hand&&delete this.performance.hand):(n=M(),((t0=(H=this.config.hand.detector)==null?void 0:H.modelPath)==null?void 0:t0.includes("handdetect"))?l=this.config.hand.enabled?await R5(i.tensor,f):[]:((m0=(z=this.config.hand.detector)==null?void 0:z.modelPath)==null?void 0:m0.includes("handtrack"))&&(l=this.config.hand.enabled?await z5(i.tensor,f):[]),this.performance.hand=this.env.perfadd?(this.performance.hand||0)+Math.trunc(M()-n):Math.trunc(M()-n)),this.analyze("End Hand:"),this.analyze("Start Object:"),this.state="detect:object",this.config.async?(((G0=this.config.object.modelPath)==null?void 0:G0.includes("nanodet"))?y=this.config.object.enabled?G5(i.tensor,this.config):[]:((T=this.config.object.modelPath)==null?void 0:T.includes("centernet"))&&(y=this.config.object.enabled?A5(i.tensor,this.config):[]),this.performance.object&&delete this.performance.object):(n=M(),((Q=this.config.object.modelPath)==null?void 0:Q.includes("nanodet"))?y=this.config.object.enabled?await G5(i.tensor,this.config):[]:((k=this.config.object.modelPath)==null?void 0:k.includes("centernet"))&&(y=this.config.object.enabled?await A5(i.tensor,this.config):[]),this.performance.object=this.env.perfadd?(this.performance.object||0)+Math.trunc(M()-n):Math.trunc(M()-n)),this.analyze("End Object:"),this.state="detect:await",this.config.async&&([x,d,l,y]=await Promise.all([x,d,l,y])),this.state="detect:gesture";let h=[];this.config.gesture.enabled&&(n=M(),h=[...Kn(x),...Yn(d),..._n(l),...Qn(x)],this.config.async?this.performance.gesture&&delete this.performance.gesture:this.performance.gesture=this.env.perfadd?(this.performance.gesture||0)+Math.trunc(M()-n):Math.trunc(M()-n)),this.performance.total=this.env.perfadd?(this.performance.total||0)+Math.trunc(M()-a):Math.trunc(M()-a);let m=((Y=(X=this.process)==null?void 0:X.tensor)==null?void 0:Y.shape)||[];this.result={face:x,body:d,hand:l,gesture:h,object:y,performance:this.performance,canvas:this.process.canvas,timestamp:Date.now(),error:null,get persons(){return Ar(x,d,l,h,m)}},r.dispose(i.tensor),this.emit("detect"),this.state="idle",A(this.result)})}};Te=new WeakMap,Fe=new WeakMap,Ve=new WeakMap,wt=new WeakMap;export{J2 as Human,J2 as default,Y0 as defaults,R as env}; +2Q==`;async function X2(e){let t=(n,s="application/octet-stream")=>fetch(`data:${s};base64,${n}`).then(a=>a.blob()),o,A;switch(e.config.warmup){case"face":o=await t(Tt);break;case"body":case"full":o=await t(Rt);break;default:o=null}if(o){let n=await createImageBitmap(o);A=await e.detect(n,e.config),n.close()}return A}async function D2(e){return new Promise(t=>{let o;switch(e.config.warmup){case"face":o="data:image/jpeg;base64,"+Tt;break;case"full":case"body":o="data:image/jpeg;base64,"+Rt;break;default:o=null}let A;if(typeof Image!="undefined")A=new Image;else if(R.Image)A=new R.Image;else return;A.onload=async()=>{let n=s0(A.naturalWidth,A.naturalHeight);if(!n)g("Warmup: Canvas not found"),t(void 0);else{let s=n.getContext("2d");s&&s.drawImage(A,0,0);let a=await e.image(n),i=await e.detect(a.tensor,e.config);t(i)}},o?A.src=o:t(void 0)})}async function q2(e){let t=n=>Buffer.from(n,"base64"),o;e.config.warmup==="face"?o=t(Tt):o=t(Rt);let A;if("node"in r){let n=r.node.decodeJpeg(o),s=n.expandDims(0);e.tf.dispose(n),A=await e.detect(s,e.config),e.tf.dispose(s)}else e.config.debug&&g("Warmup tfjs-node not loaded");return A}async function nr(e,t){let o=P();if(e.state="warmup",t&&(e.config=o0(e.config,t)),!e.config.warmup||e.config.warmup.length===0||e.config.warmup==="none")return{face:[],body:[],hand:[],gesture:[],object:[],performance:e.performance,timestamp:P(),persons:[],error:null};let A;return new Promise(async n=>{typeof createImageBitmap=="function"?A=await X2(e):typeof Image!="undefined"||R.Canvas!==void 0?A=await D2(e):A=await q2(e);let s=P();e.config.debug&&g("Warmup",e.config.warmup,Math.round(s-o),"ms"),e.emit("warmup"),n(A)})}var Te,Fe,Ve,wt,J2=class{constructor(t){w(this,"version");w(this,"config");w(this,"result");w(this,"state");w(this,"process");w(this,"tf");w(this,"env");w(this,"draw");w(this,"models");w(this,"events");w(this,"faceTriangulation");w(this,"faceUVMap");w(this,"performance");Ee(this,Te,void 0);Ee(this,Fe,void 0);Ee(this,Ve,void 0);w(this,"gl");w(this,"analyze",(...t)=>{if(!ke(this,Fe))return;let o=this.tf.engine().state.numTensors,A=ke(this,Te);ze(this,Te,o);let n=o-A;n!==0&&g(...t,n)});Ee(this,wt,t=>{if(!ke(this,Ve))return null;if(!t)return"input is not defined";if(this.env.node&&!(t instanceof se))return"input must be a tensor";try{this.tf.getBackend()}catch(o){return"backend not loaded"}return null});w(this,"similarity",tr);w(this,"distance",vt);w(this,"match",or);w(this,"emit",t=>{var o;this.events&&this.events.dispatchEvent&&((o=this.events)==null||o.dispatchEvent(new Event(t)))});this.env=R,Y0.wasmPath=je["tfjs-core"].includes("-")?"https://vladmandic.github.io/tfjs/dist/":`https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${r.version_core}/dist/`,Y0.modelBasePath=R.browser?"../models/":"file://models/",Y0.backend=R.browser?"humangl":"tensorflow",this.version=Wt,Object.defineProperty(this,"version",{value:Wt}),this.config=JSON.parse(JSON.stringify(Y0)),Object.seal(this.config),t&&(this.config=o0(this.config,t)),this.config.cacheModels=typeof indexedDB!="undefined",To(this.config),this.tf=r,this.state="idle",ze(this,Te,0),ze(this,Fe,!1),ze(this,Ve,!1),this.performance={},this.events=typeof EventTarget!="undefined"?new EventTarget:void 0,this.models=new J5,this.draw={options:B0,canvas:(o,A)=>Dn(o,A),face:(o,A,n)=>$5(o,A,n),body:(o,A,n)=>eo(o,A,n),hand:(o,A,n)=>to(o,A,n),gesture:(o,A,n)=>_5(o,A,n),object:(o,A,n)=>oo(o,A,n),person:(o,A,n)=>Xn(o,A,n),all:(o,A,n)=>qn(o,A,n)},this.result={face:[],body:[],hand:[],gesture:[],object:[],performance:{},timestamp:0,persons:[],error:null},this.process={tensor:null,canvas:null},this.faceTriangulation=IA,this.faceUVMap=OA,this.gl=q,this.emit("create")}reset(){let t=this.config.backend;this.config=JSON.parse(JSON.stringify(Y0)),this.config.backend=t}validate(t){return Et(Y0,t||this.config)}now(){return P()}image(t,o=!0){return ie(t,this.config,o)}async segmentation(t,o){return On(t,o,this.config)}enhance(t){return p5(t)}compare(t,o){return Mo(this.config,t,o)}async init(){await Mt(this,!0),await this.tf.ready()}async load(t){this.state="load";let o=P(),A=Object.values(this.models).filter(a=>a).length;t&&(this.config=o0(this.config,t)),this.env.initial&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version["tfjs-core"]}`),await Mt(this)||g("error: backend check failed"),await r.ready(),this.env.browser&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("environment:",this.env),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),await Ln(this),this.env.initial&&this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),this.env.initial=!1,Object.values(this.models).filter(a=>a).length!==A&&(await Bn(this),this.emit("load"));let s=Math.trunc(P()-o);s>(this.performance.loadModels||0)&&(this.performance.loadModels=this.env.perfadd?(this.performance.loadModels||0)+s:s)}next(t=this.result){return $n(t,this.config)}async warmup(t){let o=P(),A=await nr(this,t),n=P();return this.performance.warmup=Math.trunc(n-o),A}async profile(t,o){let A=await this.tf.profile(()=>this.detect(t,o)),n={};for(let i of A.kernels)n[i.name]?n[i.name]+=i.kernelTimeMs:n[i.name]=i.kernelTimeMs;let s=[];Object.entries(n).forEach(i=>s.push({name:i[0],ms:i[1]})),s.sort((i,x)=>x.ms-i.ms),s.length=20;let a={};for(let i of s)a[i.name]=i.ms;return a}async detect(t,o){return this.state="detect",new Promise(async A=>{var v,b,M,p,u,E,W,C,S,O,V,B,H,t0,z,m0,G0,T,Q,k,X,Y;this.state="config";let n;this.config=o0(this.config,o),this.state="check";let s=ke(this,wt).call(this,t);s&&(g(s,t),this.emit("error"),A({face:[],body:[],hand:[],gesture:[],object:[],performance:this.performance,timestamp:P(),persons:[],error:s}));let a=P();await Mt(this),await this.load(),n=P(),this.state="image";let i=await ie(t,this.config);if(this.process=i,this.performance.inputProcess=this.env.perfadd?(this.performance.inputProcess||0)+Math.trunc(P()-n):Math.trunc(P()-n),this.analyze("Get Image:"),!i.tensor){this.config.debug&&g("could not convert input to tensor"),this.emit("error"),A({face:[],body:[],hand:[],gesture:[],object:[],performance:this.performance,timestamp:P(),persons:[],error:"could not convert input to tensor"});return}this.emit("image"),n=P(),this.config.skipAllowed=await Po(this.config,i.tensor),this.performance.totalFrames||(this.performance.totalFrames=0),this.performance.cachedFrames||(this.performance.cachedFrames=0),this.performance.totalFrames++,this.config.skipAllowed&&this.performance.cachedFrames++,this.performance.cacheCheck=this.env.perfadd?(this.performance.cacheCheck||0)+Math.trunc(P()-n):Math.trunc(P()-n),this.analyze("Check Changed:");let x=[],d=[],l=[],y=[];this.state="detect:face",this.config.async?(x=this.config.face.enabled?no(this,i.tensor):[],this.performance.face&&delete this.performance.face):(n=P(),x=this.config.face.enabled?await no(this,i.tensor):[],this.performance.face=this.env.perfadd?(this.performance.face||0)+Math.trunc(P()-n):Math.trunc(P()-n)),this.config.async&&(this.config.body.maxDetected===-1||this.config.hand.maxDetected===-1)&&(x=await x),this.analyze("Start Body:"),this.state="detect:body";let c=this.config.body.maxDetected===-1?o0(this.config,{body:{maxDetected:this.config.face.enabled?1*x.length:1}}):this.config;this.config.async?(((v=this.config.body.modelPath)==null?void 0:v.includes("posenet"))?d=this.config.body.enabled?D5(i.tensor,c):[]:((b=this.config.body.modelPath)==null?void 0:b.includes("blazepose"))?d=this.config.body.enabled?e5(i.tensor,c):[]:((M=this.config.body.modelPath)==null?void 0:M.includes("efficientpose"))?d=this.config.body.enabled?a5(i.tensor,c):[]:((p=this.config.body.modelPath)==null?void 0:p.includes("movenet"))&&(d=this.config.body.enabled?L5(i.tensor,c):[]),this.performance.body&&delete this.performance.body):(n=P(),((u=this.config.body.modelPath)==null?void 0:u.includes("posenet"))?d=this.config.body.enabled?await D5(i.tensor,c):[]:((E=this.config.body.modelPath)==null?void 0:E.includes("blazepose"))?d=this.config.body.enabled?await e5(i.tensor,c):[]:((W=this.config.body.modelPath)==null?void 0:W.includes("efficientpose"))?d=this.config.body.enabled?await a5(i.tensor,c):[]:((C=this.config.body.modelPath)==null?void 0:C.includes("movenet"))&&(d=this.config.body.enabled?await L5(i.tensor,c):[]),this.performance.body=this.env.perfadd?(this.performance.body||0)+Math.trunc(P()-n):Math.trunc(P()-n)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.state="detect:hand";let f=this.config.hand.maxDetected===-1?o0(this.config,{hand:{maxDetected:this.config.face.enabled?2*x.length:1}}):this.config;this.config.async?(((O=(S=this.config.hand.detector)==null?void 0:S.modelPath)==null?void 0:O.includes("handdetect"))?l=this.config.hand.enabled?R5(i.tensor,f):[]:((B=(V=this.config.hand.detector)==null?void 0:V.modelPath)==null?void 0:B.includes("handtrack"))&&(l=this.config.hand.enabled?z5(i.tensor,f):[]),this.performance.hand&&delete this.performance.hand):(n=P(),((t0=(H=this.config.hand.detector)==null?void 0:H.modelPath)==null?void 0:t0.includes("handdetect"))?l=this.config.hand.enabled?await R5(i.tensor,f):[]:((m0=(z=this.config.hand.detector)==null?void 0:z.modelPath)==null?void 0:m0.includes("handtrack"))&&(l=this.config.hand.enabled?await z5(i.tensor,f):[]),this.performance.hand=this.env.perfadd?(this.performance.hand||0)+Math.trunc(P()-n):Math.trunc(P()-n)),this.analyze("End Hand:"),this.analyze("Start Object:"),this.state="detect:object",this.config.async?(((G0=this.config.object.modelPath)==null?void 0:G0.includes("nanodet"))?y=this.config.object.enabled?G5(i.tensor,this.config):[]:((T=this.config.object.modelPath)==null?void 0:T.includes("centernet"))&&(y=this.config.object.enabled?A5(i.tensor,this.config):[]),this.performance.object&&delete this.performance.object):(n=P(),((Q=this.config.object.modelPath)==null?void 0:Q.includes("nanodet"))?y=this.config.object.enabled?await G5(i.tensor,this.config):[]:((k=this.config.object.modelPath)==null?void 0:k.includes("centernet"))&&(y=this.config.object.enabled?await A5(i.tensor,this.config):[]),this.performance.object=this.env.perfadd?(this.performance.object||0)+Math.trunc(P()-n):Math.trunc(P()-n)),this.analyze("End Object:"),this.state="detect:await",this.config.async&&([x,d,l,y]=await Promise.all([x,d,l,y])),this.state="detect:gesture";let h=[];this.config.gesture.enabled&&(n=P(),h=[...Kn(x),...Yn(d),..._n(l),...Qn(x)],this.config.async?this.performance.gesture&&delete this.performance.gesture:this.performance.gesture=this.env.perfadd?(this.performance.gesture||0)+Math.trunc(P()-n):Math.trunc(P()-n)),this.performance.total=this.env.perfadd?(this.performance.total||0)+Math.trunc(P()-a):Math.trunc(P()-a);let m=((Y=(X=this.process)==null?void 0:X.tensor)==null?void 0:Y.shape)||[];this.result={face:x,body:d,hand:l,gesture:h,object:y,performance:this.performance,canvas:this.process.canvas,timestamp:Date.now(),error:null,get persons(){return Ar(x,d,l,h,m)}},r.dispose(i.tensor),this.emit("detect"),this.state="idle",A(this.result)})}};Te=new WeakMap,Fe=new WeakMap,Ve=new WeakMap,wt=new WeakMap;export{J2 as Human,J2 as default,Y0 as defaults,R as env}; /** * Human main module * @default Human Library diff --git a/dist/human.esm.d.ts b/dist/human.esm.d.ts index fca0ad10..121f5b21 100644 --- a/dist/human.esm.d.ts +++ b/dist/human.esm.d.ts @@ -167,6 +167,11 @@ export declare interface Config { * default: auto-detects to link to CDN `jsdelivr` when running in browser */ wasmPath: string; + /** Force WASM loader to use platform fetch + * + * default: auto-detects to link to CDN `jsdelivr` when running in browser + */ + wasmPlatformFetch: false; /** Print debug statements to console * * default: `true` diff --git a/dist/human.esm.js b/dist/human.esm.js index b4ce3cc5..923be42c 100644 --- a/dist/human.esm.js +++ b/dist/human.esm.js @@ -93,6 +93,7 @@ var config = { modelBasePath: "", cacheModels: true, wasmPath: "", + wasmPlatformFetch: false, debug: true, async: true, warmup: "full", @@ -39002,7 +39003,7 @@ async function loadModel(modelPath) { } // package.json -var version = "2.6.2"; +var version = "2.6.3"; // src/gear/gear.ts var model; @@ -48856,7 +48857,7 @@ async function check(instance, force = false) { if (instance.config.debug) log("wasm path:", instance.config.wasmPath); if (typeof (tfjs_esm_exports == null ? void 0 : tfjs_esm_exports.setWasmPaths) !== "undefined") - await rpe(instance.config.wasmPath); + await rpe(instance.config.wasmPath, instance.config.wasmPlatformFetch); else throw new Error("backend error: attempting to use wasm backend but wasm path is not set"); const simd = await X().getAsync("WASM_HAS_SIMD_SUPPORT"); diff --git a/dist/human.js b/dist/human.js index b3493f88..2213804b 100644 --- a/dist/human.js +++ b/dist/human.js @@ -4,7 +4,7 @@ author: ' */ -var Human=(()=>{var kc=Object.defineProperty;var J9=Object.getOwnPropertyDescriptor;var Q9=Object.getOwnPropertyNames;var eE=Object.prototype.hasOwnProperty;var tE=(e,t,r)=>t in e?kc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var rE=e=>kc(e,"__esModule",{value:!0});var ep=(e,t)=>{for(var r in t)kc(e,r,{get:t[r],enumerable:!0})},aE=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q9(t))!eE.call(e,n)&&(r||n!=="default")&&kc(e,n,{get:()=>t[n],enumerable:!(a=J9(t,n))||a.enumerable});return e};var nE=(e=>(t,r)=>e&&e.get(t)||(r=aE(rE({}),t,1),e&&e.set(t,r),r))(typeof WeakMap!="undefined"?new WeakMap:0);var fe=(e,t,r)=>(tE(e,typeof t!="symbol"?t+"":t,r),r),L5=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var tp=(e,t,r)=>(L5(e,t,"read from private field"),r?r.call(e):t.get(e)),rp=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},ap=(e,t,r,a)=>(L5(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);var Z2e={};ep(Z2e,{Human:()=>r9,default:()=>r9,defaults:()=>xs,env:()=>ce});function se(...e){let t=new Date,r=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(r,"Human:",...e)}function B5(e,t){let r=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${r}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var oe=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function m1(e,t,r="config",a=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")m1(e[n],t[n],n,a);else{let s=e&&typeof e[n]!="undefined";s||a.push({reason:"unknown property",where:`${r}.${n} = ${t[n]}`});let i=e&&typeof e[n]==typeof t[n];s&&!i&&a.push({reason:"property type mismatch",where:`${r}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&r==="config"&&a.length>0&&se("invalid configuration",a),a}function vr(...e){let t=r=>r&&typeof r=="object";return e.reduce((r,a)=>(Object.keys(a||{}).forEach(n=>{let s=r[n],i=a[n];Array.isArray(s)&&Array.isArray(i)?r[n]=s.concat(...i):t(s)&&t(i)?r[n]=vr(s,i):r[n]=i}),r),{})}var xs={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var We={};ep(We,{Abs:()=>Fo,Acos:()=>Tu,Acosh:()=>Cu,AdadeltaOptimizer:()=>xm,AdagradOptimizer:()=>bm,AdamOptimizer:()=>vm,AdamaxOptimizer:()=>wm,Add:()=>qn,AddN:()=>js,All:()=>Nu,Any:()=>Eu,ArgMax:()=>Hs,ArgMin:()=>Ru,Asin:()=>Fu,Asinh:()=>Mu,Atan:()=>$u,Atan2:()=>Ou,Atanh:()=>Pu,AvgPool:()=>qs,AvgPool3D:()=>Lp,AvgPool3DGrad:()=>Cf,AvgPoolGrad:()=>Tf,BackendWasm:()=>uT,BatchMatMul:()=>Ks,BatchToSpaceND:()=>Mo,Bincount:()=>Nf,BroadcastArgs:()=>Ef,BroadcastTo:()=>Ov,Callback:()=>u4,CallbackList:()=>u7,Cast:()=>Xs,Ceil:()=>Zs,ClipByValue:()=>Kn,Complex:()=>Bp,ComplexAbs:()=>Wp,Concat:()=>$o,Conv2D:()=>Ys,Conv2DBackpropFilter:()=>Rf,Conv2DBackpropInput:()=>Js,Conv3D:()=>Vp,Conv3DBackpropFilterV2:()=>Ff,Conv3DBackpropInputV2:()=>Mf,Cos:()=>Qs,Cosh:()=>ei,CropAndResize:()=>Oo,Cumsum:()=>Po,CustomCallback:()=>p7,DataStorage:()=>_p,DenseBincount:()=>$f,DepthToSpace:()=>zo,DepthwiseConv2dNative:()=>ti,DepthwiseConv2dNativeBackpropFilter:()=>Pf,DepthwiseConv2dNativeBackpropInput:()=>Of,Diag:()=>zf,Dilation2D:()=>Up,Dilation2DBackpropFilter:()=>Zc,Dilation2DBackpropInput:()=>Xc,ENV:()=>hn,EarlyStopping:()=>d4,Einsum:()=>Gp,Elu:()=>ai,EluGrad:()=>Df,Environment:()=>$v,Equal:()=>Do,Erf:()=>zu,Exp:()=>ni,ExpandDims:()=>_o,Expm1:()=>Lo,FFT:()=>_f,Fill:()=>Du,FlipLeftRight:()=>Bo,Floor:()=>si,FloorDiv:()=>ii,FromPixels:()=>Sp,FusedBatchNorm:()=>oi,FusedConv2D:()=>Fs,FusedDepthwiseConv2D:()=>Ms,GPGPUContext:()=>uu,GatherNd:()=>Vo,GatherV2:()=>Wo,GraphModel:()=>qm,Greater:()=>Uo,GreaterEqual:()=>li,History:()=>d7,IFFT:()=>Lf,Identity:()=>ui,Imag:()=>jp,InputSpec:()=>qt,IsFinite:()=>_u,IsInf:()=>Lu,IsNan:()=>Bu,KernelBackend:()=>Iu,LRN:()=>qp,LRNGrad:()=>Wf,LayerVariable:()=>s7,LayersModel:()=>jn,LeakyRelu:()=>di,Less:()=>Go,LessEqual:()=>jo,LinSpace:()=>Bf,Log:()=>pi,Log1p:()=>Wu,LogSoftmax:()=>zv,LogicalAnd:()=>Ho,LogicalNot:()=>Vu,LogicalOr:()=>Hp,MathBackendCPU:()=>fx,MathBackendWebGL:()=>Nh,Max:()=>hi,MaxPool:()=>fi,MaxPool3D:()=>Kp,MaxPool3DGrad:()=>Uf,MaxPoolGrad:()=>Vf,MaxPoolWithArgmax:()=>Gf,Maximum:()=>ci,Mean:()=>mi,Min:()=>gi,Minimum:()=>yi,MirrorPad:()=>Ai,Mod:()=>Uu,MomentumOptimizer:()=>km,Multinomial:()=>jf,Multiply:()=>xi,Neg:()=>qo,NonMaxSuppressionV3:()=>Xo,NonMaxSuppressionV4:()=>Gu,NonMaxSuppressionV5:()=>Zo,NotEqual:()=>Ko,OP_SCOPE_SUFFIX:()=>Yv,OneHot:()=>Jo,OnesLike:()=>Yo,Optimizer:()=>Jn,OptimizerConstructors:()=>vs,Pack:()=>Qo,PadV2:()=>bi,Pool:()=>XE,Pow:()=>vi,Prelu:()=>wi,Prod:()=>el,RMSPropOptimizer:()=>Im,RNN:()=>Qn,Range:()=>ju,Rank:()=>Wv,Real:()=>Xp,RealDiv:()=>ri,Reciprocal:()=>Hu,Reduction:()=>_k,Relu:()=>ki,Relu6:()=>Si,Reshape:()=>tl,ResizeBilinear:()=>Ii,ResizeBilinearGrad:()=>qf,ResizeNearestNeighbor:()=>qu,ResizeNearestNeighborGrad:()=>Hf,Reverse:()=>rl,RotateWithOffset:()=>gl,Round:()=>al,Rsqrt:()=>Ti,SGDOptimizer:()=>ch,ScatterNd:()=>nl,Select:()=>sl,Selu:()=>Ku,Sequential:()=>_m,Sigmoid:()=>Ni,Sign:()=>Xu,Sin:()=>Ci,Sinh:()=>ol,Slice:()=>il,Softmax:()=>Fi,Softplus:()=>Zu,SpaceToBatchND:()=>ll,SparseFillEmptyRows:()=>Zp,SparseReshape:()=>Yu,SparseSegmentMean:()=>Yp,SparseSegmentSum:()=>Jp,SparseToDense:()=>Qp,SplitV:()=>ul,Sqrt:()=>Ei,Square:()=>Ju,SquaredDifference:()=>Mi,Step:()=>zi,StridedSlice:()=>dl,StringNGrams:()=>eh,StringSplit:()=>Kf,StringToHashBucketFast:()=>Xf,Sub:()=>$i,Sum:()=>Ri,SymbolicTensor:()=>tn,Tan:()=>pl,Tanh:()=>Pi,Tensor:()=>et,TensorBuffer:()=>tr,Tile:()=>Xn,TopK:()=>hl,Transform:()=>cl,Transpose:()=>Oi,Unique:()=>Zf,Unpack:()=>fl,UnsortedSegmentSum:()=>th,Variable:()=>Np,ZerosLike:()=>ml,_FusedMatMul:()=>Rs,abs:()=>Qt,acos:()=>Rw,acosh:()=>Fw,add:()=>ue,addN:()=>Jf,all:()=>t2,any:()=>rf,argMax:()=>Ta,argMin:()=>Mw,asin:()=>$w,asinh:()=>Pw,atan:()=>Ow,atan2:()=>zw,atanh:()=>Dw,avgPool:()=>Qf,avgPool3d:()=>a2,backend:()=>cn,backend_util:()=>N,basicLSTMCell:()=>zM,batchNorm:()=>cu,batchNorm2d:()=>Ww,batchNorm3d:()=>Vw,batchNorm4d:()=>Uw,batchToSpaceND:()=>em,bincount:()=>n2,booleanMaskAsync:()=>KO,broadcastArgs:()=>Gw,broadcastTo:()=>bp,broadcast_util:()=>yl,browser:()=>$a,buffer:()=>Le,callbacks:()=>vG,cast:()=>me,ceil:()=>jw,clipByValue:()=>pa,clone:()=>Pr,complex:()=>$s,concat:()=>kt,concat1d:()=>Hw,concat2d:()=>td,concat3d:()=>qw,concat4d:()=>Kw,constraints:()=>Hk,conv1d:()=>s2,conv2d:()=>Os,conv2dTranspose:()=>o2,conv3d:()=>l2,conv3dTranspose:()=>Zw,copyRegisteredKernels:()=>QE,cos:()=>tm,cosh:()=>u2,cosineWindow:()=>$2,cumsum:()=>d2,customGrad:()=>Nn,data:()=>O4,denseBincount:()=>Yw,deprecationWarn:()=>Jy,depthToSpace:()=>Jw,depthwiseConv2d:()=>lh,deregisterOp:()=>IG,device_util:()=>Qu,diag:()=>h$,dilation2d:()=>Qw,disableDeprecationWarnings:()=>JF,dispose:()=>re,disposeVariables:()=>QF,div:()=>pe,divNoNan:()=>ek,dot:()=>x$,dropout:()=>Ek,einsum:()=>tk,elu:()=>uh,enableDebugMode:()=>YF,enableProdMode:()=>Yy,enclosingPowerOfTwo:()=>Rk,engine:()=>kr,env:()=>Y,equal:()=>Ca,erf:()=>rk,exp:()=>Na,expandDims:()=>Ht,expm1:()=>ak,eye:()=>p2,fft:()=>hm,fill:()=>rd,findBackend:()=>e2,findBackendFactory:()=>aM,floor:()=>dh,floorDiv:()=>ih,forceHalfFloat:()=>r8,fused:()=>_s,gather:()=>fu,gatherND:()=>Nk,gather_util:()=>Gy,getBackend:()=>ca,getGradient:()=>M1,getKernel:()=>Yc,getKernelsForBackend:()=>Tn,getThreadsCount:()=>gye,gpgpu_util:()=>$I,grad:()=>G$,grads:()=>j$,greater:()=>fa,greaterEqual:()=>xl,ifft:()=>Mp,imag:()=>rm,image:()=>Ie,inTopKAsync:()=>sz,initializers:()=>Zk,input:()=>S7,io:()=>Ir,irfft:()=>N2,isFinite:()=>P$,isInf:()=>z$,isNaN:()=>nk,keep:()=>dr,kernel_impls:()=>Ha,layers:()=>a7,leakyRelu:()=>am,less:()=>h2,lessEqual:()=>bl,linalg:()=>Lk,linspace:()=>sk,loadGraphModel:()=>Cj,loadLayersModel:()=>MV,localResponseNormalization:()=>ik,log:()=>Ea,log1p:()=>nm,logSigmoid:()=>Y$,logSoftmax:()=>c2,logSumExp:()=>pk,logicalAnd:()=>ln,logicalNot:()=>im,logicalOr:()=>g2,logicalXor:()=>uP,losses:()=>UD,matMul:()=>Ke,math:()=>pw,max:()=>hr,maxPool:()=>om,maxPool3d:()=>y2,maxPoolWithArgmax:()=>hk,maximum:()=>Zn,mean:()=>Wt,memory:()=>tf,meshgrid:()=>mP,metrics:()=>i4,min:()=>zs,minimum:()=>ph,mirrorPad:()=>ck,mod:()=>nd,model:()=>RV,models:()=>o4,moments:()=>lm,movingAverage:()=>YO,mul:()=>L,multiRNNCell:()=>kP,multinomial:()=>fk,neg:()=>zt,nextFrame:()=>Bk,norm:()=>F2,notEqual:()=>mu,oneHot:()=>Rp,ones:()=>da,onesLike:()=>Ra,op:()=>V,outerProduct:()=>NP,pad:()=>ja,pad1d:()=>FP,pad2d:()=>$P,pad3d:()=>OP,pad4d:()=>DP,pool:()=>VP,pow:()=>Ds,prelu:()=>dm,print:()=>ow,prod:()=>A2,profile:()=>eM,rand:()=>qP,randomGamma:()=>YP,randomNormal:()=>mk,randomUniform:()=>sd,range:()=>gu,ready:()=>ed,real:()=>Fp,reciprocal:()=>gk,registerBackend:()=>Al,registerCallbackConstructor:()=>$V,registerGradient:()=>Dv,registerKernel:()=>Ga,registerOp:()=>kG,regularizers:()=>l4,relu:()=>Fn,relu6:()=>v2,removeBackend:()=>rM,reshape:()=>U,reverse:()=>Fa,reverse1d:()=>iO,reverse2d:()=>lO,reverse3d:()=>dO,reverse4d:()=>hO,rfft:()=>cm,round:()=>w2,rsqrt:()=>k2,scalar:()=>Se,scatterND:()=>Ck,scatter_util:()=>jy,selu:()=>I2,separableConv2d:()=>yk,sequential:()=>FV,serialization:()=>de,setBackend:()=>Qy,setPlatform:()=>nM,setThreadsCount:()=>mye,setWasmPath:()=>fye,setWasmPaths:()=>Xx,setWebGLContext:()=>Zm,setdiff1dAsync:()=>Ak,shared:()=>Km,sigmoid:()=>Sr,sign:()=>xk,signal:()=>VD,sin:()=>S2,sinh:()=>T2,slice:()=>Oe,slice1d:()=>pm,slice2d:()=>C2,slice3d:()=>vl,slice4d:()=>wo,slice_util:()=>Ot,softmax:()=>id,softplus:()=>ad,spaceToBatchND:()=>um,sparse:()=>dp,sparseToDense:()=>M2,spectral:()=>WD,split:()=>Kt,sqrt:()=>Tr,square:()=>At,squaredDifference:()=>E2,squeeze:()=>Ye,stack:()=>nr,step:()=>hh,stridedSlice:()=>bk,string:()=>Dc,sub:()=>he,sum:()=>ke,sumOutType:()=>nh,tan:()=>vk,tanh:()=>hu,tensor:()=>pt,tensor1d:()=>St,tensor2d:()=>an,tensor3d:()=>cw,tensor4d:()=>_O,tensor5d:()=>LO,tensor6d:()=>BO,tensor_util:()=>rn,test_util:()=>Cw,tidy:()=>q,tile:()=>Wa,time:()=>tM,topk:()=>wk,train:()=>so,transpose:()=>rt,truncatedNormal:()=>fm,unique:()=>j1,unregisterGradient:()=>JE,unregisterKernel:()=>YE,unsortedSegmentSum:()=>kk,unstack:()=>ra,upcastType:()=>Or,util:()=>w,valueAndGrad:()=>H$,valueAndGrads:()=>q$,variable:()=>Ik,variableGrads:()=>ok,version:()=>Dh,version_converter:()=>Nj,version_core:()=>Zy,version_cpu:()=>fq,version_layers:()=>nA,version_wasm:()=>yye,version_webgl:()=>Dee,webgl:()=>_ee,webgl_util:()=>nI,webgpu:()=>sS,where:()=>zr,whereAsync:()=>R2,zeros:()=>Vt,zerosLike:()=>at});var sE=Object.create,wf=Object.defineProperty,iE=Object.getOwnPropertyDescriptor,vv=Object.getOwnPropertyNames,oE=Object.getPrototypeOf,lE=Object.prototype.hasOwnProperty,uE=e=>wf(e,"__esModule",{value:!0}),sr=(e,t)=>function(){return t||(0,e[vv(e)[0]])((t={exports:{}}).exports,t),t.exports},De=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enumerable:!0})},dE=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of vv(t))!lE.call(e,n)&&(r||n!=="default")&&wf(e,n,{get:()=>t[n],enumerable:!(a=iE(t,n))||a.enumerable});return e},Eo=(e,t)=>dE(uE(wf(e!=null?sE(oE(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),pE=sr({"src/node_modules/long/src/long.js"(e,t){t.exports=a;var r=null;try{r=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(I){}function a(I,D,O){this.low=I|0,this.high=D|0,this.unsigned=!!O}a.prototype.__isLong__,Object.defineProperty(a.prototype,"__isLong__",{value:!0});function n(I){return(I&&I.__isLong__)===!0}a.isLong=n;var s={},i={};function o(I,D){var O,j,X;return D?(I>>>=0,(X=0<=I&&I<256)&&(j=i[I],j)?j:(O=d(I,(I|0)<0?-1:0,!0),X&&(i[I]=O),O)):(I|=0,(X=-128<=I&&I<128)&&(j=s[I],j)?j:(O=d(I,I<0?-1:0,!1),X&&(s[I]=O),O))}a.fromInt=o;function l(I,D){if(isNaN(I))return D?b:x;if(D){if(I<0)return b;if(I>=g)return R}else{if(I<=-y)return z;if(I+1>=y)return E}return I<0?l(-I,D).neg():d(I%m|0,I/m|0,D)}a.fromNumber=l;function d(I,D,O){return new a(I,D,O)}a.fromBits=d;var u=Math.pow;function p(I,D,O){if(I.length===0)throw Error("empty string");if(I==="NaN"||I==="Infinity"||I==="+Infinity"||I==="-Infinity")return x;if(typeof D=="number"?(O=D,D=!1):D=!!D,O=O||10,O<2||360)throw Error("interior hyphen");if(j===0)return p(I.substring(1),D,O).neg();for(var X=l(u(O,8)),_=x,K=0;K>>0:this.low},M.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},M.toString=function(I){if(I=I||10,I<2||36>>0,Q=ee.toString(I);if(_=W,_.isZero())return Q+K;for(;Q.length<6;)Q="0"+Q;K=""+Q+K}},M.getHighBits=function(){return this.high},M.getHighBitsUnsigned=function(){return this.high>>>0},M.getLowBits=function(){return this.low},M.getLowBitsUnsigned=function(){return this.low>>>0},M.getNumBitsAbs=function(){if(this.isNegative())return this.eq(z)?64:this.neg().getNumBitsAbs();for(var I=this.high!=0?this.high:this.low,D=31;D>0&&(I&1<=0},M.isOdd=function(){return(this.low&1)===1},M.isEven=function(){return(this.low&1)===0},M.equals=function(I){return n(I)||(I=h(I)),this.unsigned!==I.unsigned&&this.high>>>31===1&&I.high>>>31===1?!1:this.high===I.high&&this.low===I.low},M.eq=M.equals,M.notEquals=function(I){return!this.eq(I)},M.neq=M.notEquals,M.ne=M.notEquals,M.lessThan=function(I){return this.comp(I)<0},M.lt=M.lessThan,M.lessThanOrEqual=function(I){return this.comp(I)<=0},M.lte=M.lessThanOrEqual,M.le=M.lessThanOrEqual,M.greaterThan=function(I){return this.comp(I)>0},M.gt=M.greaterThan,M.greaterThanOrEqual=function(I){return this.comp(I)>=0},M.gte=M.greaterThanOrEqual,M.ge=M.greaterThanOrEqual,M.compare=function(I){if(n(I)||(I=h(I)),this.eq(I))return 0;var D=this.isNegative(),O=I.isNegative();return D&&!O?-1:!D&&O?1:this.unsigned?I.high>>>0>this.high>>>0||I.high===this.high&&I.low>>>0>this.low>>>0?-1:1:this.sub(I).isNegative()?-1:1},M.comp=M.compare,M.negate=function(){return!this.unsigned&&this.eq(z)?z:this.not().add(v)},M.neg=M.negate,M.add=function(I){n(I)||(I=h(I));var D=this.high>>>16,O=this.high&65535,j=this.low>>>16,X=this.low&65535,_=I.high>>>16,K=I.high&65535,W=I.low>>>16,ee=I.low&65535,Q=0,ne=0,Z=0,ae=0;return ae+=X+ee,Z+=ae>>>16,ae&=65535,Z+=j+W,ne+=Z>>>16,Z&=65535,ne+=O+K,Q+=ne>>>16,ne&=65535,Q+=D+_,Q&=65535,d(Z<<16|ae,Q<<16|ne,this.unsigned)},M.subtract=function(I){return n(I)||(I=h(I)),this.add(I.neg())},M.sub=M.subtract,M.multiply=function(I){if(this.isZero())return x;if(n(I)||(I=h(I)),r){var D=r.mul(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}if(I.isZero())return x;if(this.eq(z))return I.isOdd()?z:x;if(I.eq(z))return this.isOdd()?z:x;if(this.isNegative())return I.isNegative()?this.neg().mul(I.neg()):this.neg().mul(I).neg();if(I.isNegative())return this.mul(I.neg()).neg();if(this.lt(A)&&I.lt(A))return l(this.toNumber()*I.toNumber(),this.unsigned);var O=this.high>>>16,j=this.high&65535,X=this.low>>>16,_=this.low&65535,K=I.high>>>16,W=I.high&65535,ee=I.low>>>16,Q=I.low&65535,ne=0,Z=0,ae=0,ie=0;return ie+=_*Q,ae+=ie>>>16,ie&=65535,ae+=X*Q,Z+=ae>>>16,ae&=65535,ae+=_*ee,Z+=ae>>>16,ae&=65535,Z+=j*Q,ne+=Z>>>16,Z&=65535,Z+=X*ee,ne+=Z>>>16,Z&=65535,Z+=_*W,ne+=Z>>>16,Z&=65535,ne+=O*Q+j*ee+X*W+_*K,ne&=65535,d(ae<<16|ie,ne<<16|Z,this.unsigned)},M.mul=M.multiply,M.divide=function(I){if(n(I)||(I=h(I)),I.isZero())throw Error("division by zero");if(r){if(!this.unsigned&&this.high===-2147483648&&I.low===-1&&I.high===-1)return this;var D=(this.unsigned?r.div_u:r.div_s)(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:x;var O,j,X;if(this.unsigned){if(I.unsigned||(I=I.toUnsigned()),I.gt(this))return b;if(I.gt(this.shru(1)))return C;X=b}else{if(this.eq(z)){if(I.eq(v)||I.eq(T))return z;if(I.eq(z))return v;var _=this.shr(1);return O=_.div(I).shl(1),O.eq(x)?I.isNegative()?v:T:(j=this.sub(I.mul(O)),X=O.add(j.div(I)),X)}else if(I.eq(z))return this.unsigned?b:x;if(this.isNegative())return I.isNegative()?this.neg().div(I.neg()):this.neg().div(I).neg();if(I.isNegative())return this.div(I.neg()).neg();X=x}for(j=this;j.gte(I);){O=Math.max(1,Math.floor(j.toNumber()/I.toNumber()));for(var K=Math.ceil(Math.log(O)/Math.LN2),W=K<=48?1:u(2,K-48),ee=l(O),Q=ee.mul(I);Q.isNegative()||Q.gt(j);)O-=W,ee=l(O,this.unsigned),Q=ee.mul(I);ee.isZero()&&(ee=v),X=X.add(ee),j=j.sub(Q)}return X},M.div=M.divide,M.modulo=function(I){if(n(I)||(I=h(I)),r){var D=(this.unsigned?r.rem_u:r.rem_s)(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}return this.sub(this.div(I).mul(I))},M.mod=M.modulo,M.rem=M.modulo,M.not=function(){return d(~this.low,~this.high,this.unsigned)},M.and=function(I){return n(I)||(I=h(I)),d(this.low&I.low,this.high&I.high,this.unsigned)},M.or=function(I){return n(I)||(I=h(I)),d(this.low|I.low,this.high|I.high,this.unsigned)},M.xor=function(I){return n(I)||(I=h(I)),d(this.low^I.low,this.high^I.high,this.unsigned)},M.shiftLeft=function(I){return n(I)&&(I=I.toInt()),(I&=63)===0?this:I<32?d(this.low<>>32-I,this.unsigned):d(0,this.low<>>I|this.high<<32-I,this.high>>I,this.unsigned):d(this.high>>I-32,this.high>=0?0:-1,this.unsigned)},M.shr=M.shiftRight,M.shiftRightUnsigned=function(I){if(n(I)&&(I=I.toInt()),I&=63,I===0)return this;var D=this.high;if(I<32){var O=this.low;return d(O>>>I|D<<32-I,D>>>I,this.unsigned)}else return I===32?d(D,0,this.unsigned):d(D>>>I-32,0,this.unsigned)},M.shru=M.shiftRightUnsigned,M.shr_u=M.shiftRightUnsigned,M.toSigned=function(){return this.unsigned?d(this.low,this.high,!1):this},M.toUnsigned=function(){return this.unsigned?this:d(this.low,this.high,!0)},M.toBytes=function(I){return I?this.toBytesLE():this.toBytesBE()},M.toBytesLE=function(){var I=this.high,D=this.low;return[D&255,D>>>8&255,D>>>16&255,D>>>24,I&255,I>>>8&255,I>>>16&255,I>>>24]},M.toBytesBE=function(){var I=this.high,D=this.low;return[I>>>24,I>>>16&255,I>>>8&255,I&255,D>>>24,D>>>16&255,D>>>8&255,D&255]},a.fromBytes=function(I,D,O){return O?a.fromBytesLE(I,D):a.fromBytesBE(I,D)},a.fromBytesLE=function(I,D){return new a(I[0]|I[1]<<8|I[2]<<16|I[3]<<24,I[4]|I[5]<<8|I[6]<<16|I[7]<<24,D)},a.fromBytesBE=function(I,D){return new a(I[4]<<24|I[5]<<16|I[6]<<8|I[7],I[0]<<24|I[1]<<16|I[2]<<8|I[3],D)}}}),hE=sr({"(disabled):src/node_modules/node-fetch/browser.js"(){}}),cE=sr({"(disabled):util"(){}}),fE=sr({"src/node_modules/seedrandom/lib/alea.js"(e,t){(function(r,a,n){function s(d){var u=this,p=l();u.next=function(){var h=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=h-(u.c=h|0)},u.c=1,u.s0=p(" "),u.s1=p(" "),u.s2=p(" "),u.s0-=p(d),u.s0<0&&(u.s0+=1),u.s1-=p(d),u.s1<0&&(u.s1+=1),u.s2-=p(d),u.s2<0&&(u.s2+=1),p=null}function i(d,u){return u.c=d.c,u.s0=d.s0,u.s1=d.s1,u.s2=d.s2,u}function o(d,u){var p=new s(d),h=u&&u.state,c=p.next;return c.int32=function(){return p.next()*4294967296|0},c.double=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.quick=c,h&&(typeof h=="object"&&i(h,p),c.state=function(){return i(p,{})}),c}function l(){var d=4022871197,u=function(p){p=String(p);for(var h=0;h>>0,c-=d,c*=d,d=c>>>0,c-=d,d+=c*4294967296}return(d>>>0)*23283064365386963e-26};return u}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),mE=sr({"src/node_modules/seedrandom/lib/xor128.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.x=0,d.y=0,d.z=0,d.w=0,d.next=function(){var h=d.x^d.x<<11;return d.x=d.y,d.y=d.z,d.z=d.w,d.w^=d.w>>>19^h^h>>>8},l===(l|0)?d.x=l:u+=l;for(var p=0;p>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),gE=sr({"src/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.next=function(){var h=d.x^d.x>>>2;return d.x=d.y,d.y=d.z,d.z=d.w,d.w=d.v,(d.d=d.d+362437|0)+(d.v=d.v^d.v<<4^(h^h<<1))|0},d.x=0,d.y=0,d.z=0,d.w=0,d.v=0,l===(l|0)?d.x=l:u+=l;for(var p=0;p>>4),d.next()}function i(l,d){return d.x=l.x,d.y=l.y,d.z=l.z,d.w=l.w,d.v=l.v,d.d=l.d,d}function o(l,d){var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),yE=sr({"src/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(r,a,n){function s(l){var d=this;d.next=function(){var p=d.x,h=d.i,c,f,m;return c=p[h],c^=c>>>7,f=c^c<<24,c=p[h+1&7],f^=c^c>>>10,c=p[h+3&7],f^=c^c>>>3,c=p[h+4&7],f^=c^c<<7,c=p[h+7&7],c=c^c<<13,f^=c^c<<9,p[h]=f,d.i=h+1&7,f};function u(p,h){var c,f,m=[];if(h===(h|0))f=m[0]=h;else for(h=""+h,c=0;c0;--c)p.next()}u(d,l)}function i(l,d){return d.x=l.x.slice(),d.i=l.i,d}function o(l,d){l==null&&(l=+new Date);var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(p.x&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),AE=sr({"src/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(r,a,n){function s(l){var d=this;d.next=function(){var p=d.w,h=d.X,c=d.i,f,m;return d.w=p=p+1640531527|0,m=h[c+34&127],f=h[c=c+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=h[c]=m^f,d.i=c,m+(p^p>>>16)|0};function u(p,h){var c,f,m,g,y,A=[],x=128;for(h===(h|0)?(f=h,h=null):(h=h+"\0",f=0,x=Math.max(x,h.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(y=y+1640531527|0,c=A[g&127]^=f+y,m=c==0?m+1:0);for(m>=128&&(A[(h&&h.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=A[m+34&127],c=A[m=m+1&127],f^=f<<13,c^=c<<17,f^=f>>>15,c^=c>>>12,A[m]=f^c;p.w=y,p.X=A,p.i=m}u(d,l)}function i(l,d){return d.i=l.i,d.w=l.w,d.X=l.X.slice(),d}function o(l,d){l==null&&(l=+new Date);var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(p.X&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),xE=sr({"src/node_modules/seedrandom/lib/tychei.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.next=function(){var h=d.b,c=d.c,f=d.d,m=d.a;return h=h<<25^h>>>7^c,c=c-f|0,f=f<<24^f>>>8^m,m=m-h|0,d.b=h=h<<20^h>>>12^c,d.c=c=c-f|0,d.d=f<<16^c>>>16^m,d.a=m-h|0},d.a=0,d.b=0,d.c=-1640531527,d.d=1367130551,l===Math.floor(l)?(d.a=l/4294967296|0,d.b=l|0):u+=l;for(var p=0;p>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),bE=sr({"(disabled):crypto"(){}}),vE=sr({"src/node_modules/seedrandom/seedrandom.js"(e,t){(function(r,a,n){var s=256,i=6,o=52,l="random",d=n.pow(s,i),u=n.pow(2,o),p=u*2,h=s-1,c;function f(v,C,T){var E=[];C=C==!0?{entropy:!0}:C||{};var R=A(y(C.entropy?[v,b(a)]:v==null?x():v,3),E),z=new m(E),M=function(){for(var I=z.g(i),D=d,O=0;I=p;)I/=2,D/=2,O>>>=1;return(I+O)/D};return M.int32=function(){return z.g(4)|0},M.quick=function(){return z.g(4)/4294967296},M.double=M,A(b(z.S),a),(C.pass||T||function(I,D,O,j){return j&&(j.S&&g(j,z),I.state=function(){return g(z,{})}),O?(n[l]=I,D):I})(M,R,"global"in C?C.global:this==n,C.state)}function m(v){var C,T=v.length,E=this,R=0,z=E.i=E.j=0,M=E.S=[];for(T||(v=[T++]);R1&&(y=process.argv[1].replace(/\\/g,"/")),g=process.argv.slice(2),process.on("uncaughtException",function(S){if(!(S instanceof Qd))throw S}),process.on("unhandledRejection",Dn),A=function(S){process.exit(S)},u.inspect=function(){return"[Emscripten Module object]"};var X;try{X=wE()}catch(S){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),S}global.Worker=X.Worker}else C?(typeof read!="undefined"&&(z=function(S){return read(S)}),I=function(S){var F;return typeof readbuffer=="function"?new Uint8Array(readbuffer(S)):(F=read(S,"binary"),Re(typeof F=="object"),F)},typeof scriptArgs!="undefined"?g=scriptArgs:typeof arguments!="undefined"&&(g=arguments),typeof quit=="function"&&(A=function(S){quit(S)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(x||b)&&(b?E=self.location.href:typeof document!="undefined"&&document.currentScript&&(E=document.currentScript.src),typeof a!="undefined"&&a&&(E=a),E.indexOf("blob:")!==0?E=E.substr(0,E.lastIndexOf("/")+1):E="",v?(z=function(S,F){return O||(O=Hc()),j||(j=Ap()),S=j.normalize(S),O.readFileSync(S,F?null:"utf8")},I=function(S){var F=z(S,!0);return F.buffer||(F=new Uint8Array(F)),Re(F.buffer),F}):(z=function(S){var F=new XMLHttpRequest;return F.open("GET",S,!1),F.send(null),F.responseText},b&&(I=function(S){var F=new XMLHttpRequest;return F.open("GET",S,!1),F.responseType="arraybuffer",F.send(null),new Uint8Array(F.response)}),M=function(S,F,G){var J=new XMLHttpRequest;J.open("GET",S,!0),J.responseType="arraybuffer",J.onload=function(){if(J.status==200||J.status==0&&J.response){F(J.response);return}G()},J.onerror=G,J.send(null)}),D=function(S){document.title=S});v&&typeof performance=="undefined"&&(global.performance=kE().performance);var _=u.print||console.log.bind(console),K=u.printErr||console.warn.bind(console);for(m in f)f.hasOwnProperty(m)&&(u[m]=f[m]);f=null,u.arguments&&(g=u.arguments),u.thisProgram&&(y=u.thisProgram),u.quit&&(A=u.quit);function W(S){W.shown||(W.shown={}),W.shown[S]||(W.shown[S]=1,K(S))}var ee=Atomics.load,Q=Atomics.store,ne=Atomics.compareExchange,Z;u.wasmBinary&&(Z=u.wasmBinary);var ae=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Dn("no native wasm support detected");var ie,xe,be=!1,Te;function Re(S,F){S||Dn("Assertion failed: "+F)}function $e(S){var F=u["_"+S];return Re(F,"Cannot call unknown function "+S+", make sure it is exported"),F}function _e(S,F,G,J,Ae){var ge={string:function(Qr){var Kl=0;if(Qr!=null&&Qr!==0){var _5=(Qr.length<<2)+1;Kl=jl(_5),ct(Qr,Kl,_5)}return Kl},array:function(Qr){var Kl=jl(Qr.length);return Et(Qr,Kl),Kl}};function ye(Qr){return F==="string"?st(Qr):F==="boolean"?Boolean(Qr):Qr}var Ce=$e(S),ft=[],lr=0;if(J)for(var Jt=0;Jt=J);){var ge=S[F++];if(!ge)return Ae;if(!(ge&128)){Ae+=String.fromCharCode(ge);continue}var ye=S[F++]&63;if((ge&224)==192){Ae+=String.fromCharCode((ge&31)<<6|ye);continue}var Ce=S[F++]&63;if((ge&240)==224?ge=(ge&15)<<12|ye<<6|Ce:ge=(ge&7)<<18|ye<<12|Ce<<6|S[F++]&63,ge<65536)Ae+=String.fromCharCode(ge);else{var ft=ge-65536;Ae+=String.fromCharCode(55296|ft>>10,56320|ft&1023)}}return Ae}function st(S,F){return S?Ze(i(),S,F):""}function ht(S,F,G,J){if(!(J>0))return 0;for(var Ae=G,ge=G+J-1,ye=0;ye=55296&&Ce<=57343){var ft=S.charCodeAt(++ye);Ce=65536+((Ce&1023)<<10)|ft&1023}if(Ce<=127){if(G>=ge)break;F[G++]=Ce}else if(Ce<=2047){if(G+1>=ge)break;F[G++]=192|Ce>>6,F[G++]=128|Ce&63}else if(Ce<=65535){if(G+2>=ge)break;F[G++]=224|Ce>>12,F[G++]=128|Ce>>6&63,F[G++]=128|Ce&63}else{if(G+3>=ge)break;F[G++]=240|Ce>>18,F[G++]=128|Ce>>12&63,F[G++]=128|Ce>>6&63,F[G++]=128|Ce&63}}return F[G]=0,G-Ae}function ct(S,F,G){return ht(S,i(),F,G)}function yt(S){for(var F=0,G=0;G=55296&&J<=57343&&(J=65536+((J&1023)<<10)|S.charCodeAt(++G)&1023),J<=127?++F:J<=2047?F+=2:J<=65535?F+=3:F+=4}return F}function Et(S,F){s().set(S,F)}function Hr(S,F){return S%F>0&&(S+=F-S%F),S}var ut,qr,gr,Kr,za,Xr,Rr,Da,xn;function ia(S){ut=S,u.HEAP8=qr=new Int8Array(S),u.HEAP16=Kr=new Int16Array(S),u.HEAP32=Xr=new Int32Array(S),u.HEAPU8=gr=new Uint8Array(S),u.HEAPU16=za=new Uint16Array(S),u.HEAPU32=Rr=new Uint32Array(S),u.HEAPF32=Da=new Float32Array(S),u.HEAPF64=xn=new Float64Array(S)}var _l=u.INITIAL_MEMORY||16777216;if(T)ie=u.wasmMemory,ut=u.buffer;else if(u.wasmMemory)ie=u.wasmMemory;else if(ie=new WebAssembly.Memory({initial:_l/65536,maximum:32768,shared:!0}),!(ie.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"),v&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");ie&&(ut=ie.buffer),_l=ut.byteLength,ia(ut);var Zr,hs=[],va=[],Wd=[],Vd=[],zn=[],Zh=!1,U0=!1;T||va.push({func:function(){fc()}});function Yh(){if(!T){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)G0(u.preRun.shift());Ll(hs)}}function Jh(){Zh=!0,!T&&Ll(va)}function Qh(){T||Ll(Wd)}function Yr(){T||(U0=!0)}function ec(){if(!T){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)j0(u.postRun.shift());Ll(zn)}}function G0(S){hs.unshift(S)}function j0(S){zn.unshift(S)}var _a=0,Ud=null,Ji=null;function H0(S){Re(!T,"addRunDependency cannot be used in a pthread worker"),_a++,u.monitorRunDependencies&&u.monitorRunDependencies(_a)}function q0(S){if(_a--,u.monitorRunDependencies&&u.monitorRunDependencies(_a),_a==0&&(Ud!==null&&(clearInterval(Ud),Ud=null),Ji)){var F=Ji;Ji=null,F()}}u.preloadedImages={},u.preloadedAudios={};function Dn(S){u.onAbort&&u.onAbort(S),T&&console.error("Pthread aborting at "+new Error().stack),S+="",K(S),be=!0,Te=1,S="abort("+S+"). Build with -s ASSERTIONS=1 for more info.";var F=new WebAssembly.RuntimeError(S);throw h(F),F}function Qi(S,F){return String.prototype.startsWith?S.startsWith(F):S.indexOf(F)===0}var K0="data:application/octet-stream;base64,";function tc(S){return Qi(S,K0)}var X0="file://";function rc(S){return Qi(S,X0)}var Jr="tfjs-backend-wasm-threaded-simd.wasm";tc(Jr)||(Jr=R(Jr));function Z0(S){try{if(S==Jr&&Z)return new Uint8Array(Z);if(I)return I(S);throw"both async and sync fetching of the wasm failed"}catch(F){Dn(F)}}function ac(){if(!Z&&(x||b)){if(typeof fetch=="function"&&!rc(Jr))return fetch(Jr,{credentials:"same-origin"}).then(function(S){if(!S.ok)throw"failed to load wasm binary file at '"+Jr+"'";return S.arrayBuffer()}).catch(function(){return Z0(Jr)});if(M)return new Promise(function(S,F){M(Jr,function(G){S(new Uint8Array(G))},F)})}return Promise.resolve().then(function(){return Z0(Jr)})}function Y0(){var S={a:Ug};function F(ye,Ce){var ft=ye.exports;if(u.asm=ft,Zr=u.asm.nb,xe=Ce,!T){var lr=Fe.unusedWorkers.length;Fe.unusedWorkers.forEach(function(Jt){Fe.loadWasmModuleToWorker(Jt,function(){--lr||q0("wasm-instantiate")})})}}T||H0("wasm-instantiate");function G(ye){F(ye.instance,ye.module)}function J(ye){return ac().then(function(Ce){return WebAssembly.instantiate(Ce,S)}).then(ye,function(Ce){K("failed to asynchronously prepare wasm: "+Ce),Dn(Ce)})}function Ae(){return!Z&&typeof WebAssembly.instantiateStreaming=="function"&&!tc(Jr)&&!rc(Jr)&&typeof fetch=="function"?fetch(Jr,{credentials:"same-origin"}).then(function(ye){var Ce=WebAssembly.instantiateStreaming(ye,S);return Ce.then(G,function(ft){return K("wasm streaming compile failed: "+ft),K("falling back to ArrayBuffer instantiation"),J(G)})}):J(G)}if(u.instantiateWasm)try{var ge=u.instantiateWasm(S,F);return ge}catch(ye){return K("Module.instantiateWasm callback failed with error: "+ye),!1}return Ae().catch(h),{}}var nc={10216:function(){throw"Canceled!"},10234:function(S,F){setTimeout(function(){M5(S,F)},0)}};function J0(){Fe.initRuntime()}function Ll(S){for(;S.length>0;){var F=S.shift();if(typeof F=="function"){F(u);continue}var G=F.func;typeof G=="number"?F.arg===void 0?Zr.get(G)():Zr.get(G)(F.arg):G(F.arg===void 0?null:F.arg)}}var cs={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};function Gd(S,F){if(S<=0||S>s().length||S&!0||F<0)return-28;if(F==0)return 0;F>=2147483647&&(F=1/0);var G=Atomics.load(o(),Hl>>2),J=0;if(G==S){var Ae=Atomics.compareExchange(o(),Hl>>2,G,0);if(Ae==G&&(--F,J=1,F<=0))return 1}var ge=Atomics.notify(o(),S>>2,F);if(ge>=0)return ge+J;throw"Atomics.notify returned an unexpected value "+ge}u._emscripten_futex_wake=Gd;function Q0(S){if(T)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in killThread!";o()[S+12>>2]=0;var F=Fe.pthreads[S];F.worker.terminate(),Fe.freeThreadData(F),Fe.runningWorkers.splice(Fe.runningWorkers.indexOf(F.worker),1),F.worker.pthread=void 0}function eg(S){if(T)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cancelThread!";var F=Fe.pthreads[S];F.worker.postMessage({cmd:"cancel"})}function sc(S){if(T)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cleanupThread!";var F=Fe.pthreads[S];if(F){o()[S+12>>2]=0;var G=F.worker;Fe.returnWorkerToPool(G)}}var Fe={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var S=8,F=0;F>2]=S;var G=S+152;o()[G>>2]=G;for(var J=to(512),F=0;F<128;++F)l()[J/4+F]=0;Atomics.store(l(),S+100>>2,J),Atomics.store(l(),S+40>>2,S),c1(S,!b,1),R5(S)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Fe.threadExitHandlers.length>0;)Fe.threadExitHandlers.pop()();T&&ys()&&E5()},runExitHandlersAndDeinitThread:function(S,F){Atomics.store(l(),S+56>>2,1),Atomics.store(l(),S+60>>2,0),Fe.runExitHandlers(),Atomics.store(l(),S+4>>2,F),Atomics.store(l(),S+0>>2,1),Gd(S+0,2147483647),c1(0,0,0)},threadExit:function(S){var F=ys();F&&(Fe.runExitHandlersAndDeinitThread(F,S),T&&postMessage({cmd:"exit"}))},threadCancel:function(){Fe.runExitHandlersAndDeinitThread(ys(),-1),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var S in Fe.pthreads){var F=Fe.pthreads[S];F&&F.worker&&Fe.returnWorkerToPool(F.worker)}Fe.pthreads={};for(var G=0;G>2];o()[S.threadInfoStruct+100>>2]=0,Yd(F),Yd(S.threadInfoStruct)}S.threadInfoStruct=0,S.allocatedOwnStack&&S.stackBase&&Yd(S.stackBase),S.stackBase=0,S.worker&&(S.worker.pthread=null)}},returnWorkerToPool:function(S){Fe.runWithoutMainThreadQueuedCalls(function(){delete Fe.pthreads[S.pthread.threadInfoStruct],Fe.unusedWorkers.push(S),Fe.runningWorkers.splice(Fe.runningWorkers.indexOf(S),1),Fe.freeThreadData(S.pthread),S.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(S){o()[D5>>2]=0;try{S()}finally{o()[D5>>2]=1}},receiveObjectTransfer:function(S){},loadWasmModuleToWorker:function(S,F){S.onmessage=function(G){var J=G.data,Ae=J.cmd;if(S.pthread&&(Fe.currentProxiedOperationCallerThread=S.pthread.threadInfoStruct),J.targetThread&&J.targetThread!=ys()){var ge=Fe.pthreads[J.targetThread];ge?ge.worker.postMessage(G.data,J.transferList):console.error('Internal error! Worker sent a message "'+Ae+'" to target pthread '+J.targetThread+", but that thread no longer exists!"),Fe.currentProxiedOperationCallerThread=void 0;return}if(Ae==="processQueuedMainThreadWork")xc();else if(Ae==="spawnThread")hc(G.data);else if(Ae==="cleanupThread")sc(J.thread);else if(Ae==="killThread")Q0(J.thread);else if(Ae==="cancelThread")eg(J.thread);else if(Ae==="loaded")S.loaded=!0,F&&F(S),S.runPthread&&(S.runPthread(),delete S.runPthread);else if(Ae==="print")_("Thread "+J.threadId+": "+J.text);else if(Ae==="printErr")K("Thread "+J.threadId+": "+J.text);else if(Ae==="alert")alert("Thread "+J.threadId+": "+J.text);else if(Ae==="exit"){var ye=S.pthread&&Atomics.load(l(),S.pthread.threadInfoStruct+64>>2);ye&&Fe.returnWorkerToPool(S)}else if(Ae==="exitProcess")try{Z9(J.returnCode)}catch(Ce){if(Ce instanceof Qd)return;throw Ce}else Ae==="cancelDone"?Fe.returnWorkerToPool(S):Ae==="objectTransfer"?Fe.receiveObjectTransfer(G.data):G.data.target==="setimmediate"?S.postMessage(G.data):K("worker sent an unknown command "+Ae);Fe.currentProxiedOperationCallerThread=void 0},S.onerror=function(G){K("pthread sent an error! "+G.filename+":"+G.lineno+": "+G.message)},v&&(S.on("message",function(G){S.onmessage({data:G})}),S.on("error",function(G){S.onerror(G)}),S.on("exit",function(G){})),S.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||a,wasmMemory:ie,wasmModule:xe})},allocateUnusedWorker:function(){var S=R("tfjs-backend-wasm-threaded-simd.worker.js");Fe.unusedWorkers.push(new Worker(S))},getNewWorker:function(){return Fe.unusedWorkers.length==0&&(Fe.allocateUnusedWorker(),Fe.loadWasmModuleToWorker(Fe.unusedWorkers[0])),Fe.unusedWorkers.length>0?Fe.unusedWorkers.pop():null},busySpinWait:function(S){for(var F=performance.now()+S;performance.now()>2]=S,S}function og(S,F){if(T)return fs(1,1,S,F)}function lg(S,F){if(S==F)postMessage({cmd:"processQueuedMainThreadWork"});else if(T)postMessage({targetThread:S,cmd:"processThreadQueue"});else{var G=Fe.pthreads[S],J=G&&G.worker;if(!J)return;J.postMessage({cmd:"processThreadQueue"})}return 1}function ug(){Dn()}function dg(S,F,G){var J=fg(F,G);return nc[S].apply(null,J)}function pg(S,F){}function ic(S,F,G){if(S<=0||S>s().length||S&!0)return-28;if(x){if(Atomics.load(o(),S>>2)!=F)return-6;for(var J=performance.now(),Ae=J+G,ge=Atomics.exchange(o(),Hl>>2,S);;){if(J=performance.now(),J>Ae)return ge=Atomics.exchange(o(),Hl>>2,0),-73;if(ge=Atomics.exchange(o(),Hl>>2,0),ge==0)break;if(xc(),Atomics.load(o(),S>>2)!=F)return-6;ge=Atomics.exchange(o(),Hl>>2,S)}return 0}else{var ye=Atomics.wait(o(),S>>2,F,G);if(ye==="timed-out")return-73;if(ye==="not-equal")return-6;if(ye==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ye}}function hg(S,F,G){i().copyWithin(S,F,F+G)}function cg(){return v?IE().cpus().length:navigator.hardwareConcurrency}function fs(S,F){for(var G=arguments.length-2,J=Jd(),Ae=G,ge=jl(Ae*8),ye=ge>>3,Ce=0;Ce>=2;G=i()[S++];){var J=G<105;J&&F&1&&F++,Hd.push(J?d()[F++>>1]:o()[F]),++F}return Hd}function mg(S,F,G){jd.length=F;for(var J=G>>3,Ae=0;Ae>>16),ia(ie.buffer),1}catch(F){}}function Ag(S){var F=gg();if(S<=F)return!1;var G=2147483648;if(S>G)return!1;for(var J=1;J<=4;J*=2){var Ae=F*(1+.2/J);Ae=Math.min(Ae,S+100663296);var ge=Math.min(G,Hr(Math.max(S,Ae),65536)),ye=yg(ge);if(ye)return!0}return!1}var je={inEventHandler:0,removeAllEventListeners:function(){for(var S=je.eventHandlers.length-1;S>=0;--S)je._removeHandler(S);je.eventHandlers=[],je.deferredCalls=[]},registerRemoveEventListeners:function(){je.removeEventListenersRegistered||(Vd.push(je.removeAllEventListeners),je.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(S,F,G){function J(ye,Ce){if(ye.length!=Ce.length)return!1;for(var ft in ye)if(ye[ft]!=Ce[ft])return!1;return!0}for(var Ae in je.deferredCalls){var ge=je.deferredCalls[Ae];if(ge.targetFunction==S&&J(ge.argsList,G))return}je.deferredCalls.push({targetFunction:S,precedence:F,argsList:G}),je.deferredCalls.sort(function(ye,Ce){return ye.precedence>2]=G,o()[ye+4>>2]=J,o()[ye+8>>2]=Ae,h1(0,S,637534208,F,J,ye),Gl(ge)},getTargetThreadForEventCallback:function(S){switch(S){case 1:return 0;case 2:return Fe.currentProxiedOperationCallerThread;default:return S}},getNodeNameForTarget:function(S){return S?S==window?"#window":S==screen?"#screen":S&&S.nodeName?S.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function xg(S){var F=yt(S)+1,G=to(F);return ct(S,G,F),G}function bg(S,F,G,J){var Ae=Jd(),ge=jl(12),ye=0;F&&(ye=xg(F)),o()[ge>>2]=ye,o()[ge+4>>2]=G,o()[ge+8>>2]=J,h1(0,S,657457152,0,ye,ge),Gl(Ae)}function vg(S,F,G,J){F=F?st(F):"",bg(S,F,G,J)}function wg(S){return S>2?st(S):S}var kg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Ig(S){S=wg(S);var F=kg[S]||(typeof document!="undefined"?document.querySelector(S):void 0);return F}function qd(S){return Ig(S)}function oc(S,F,G){var J=qd(S);if(!J)return-4;if(J.canvasSharedPtr&&(o()[J.canvasSharedPtr>>2]=F,o()[J.canvasSharedPtr+4>>2]=G),J.offscreenCanvas||!J.controlTransferredOffscreen){J.offscreenCanvas&&(J=J.offscreenCanvas);var Ae=!1;if(J.GLctxObject&&J.GLctxObject.GLctx){var ge=J.GLctxObject.GLctx.getParameter(2978);Ae=ge[0]===0&&ge[1]===0&&ge[2]===J.width&&ge[3]===J.height}J.width=F,J.height=G,Ae&&J.GLctxObject.GLctx.viewport(0,0,F,G)}else if(J.canvasSharedPtr){var ye=o()[J.canvasSharedPtr+8>>2];return vg(ye,S,F,G),1}else return-4;return 0}function lc(S,F,G){return T?fs(2,1,S,F,G):oc(S,F,G)}function Sg(S,F,G){var J=qd(S);return J?oc(S,F,G):lc(S,F,G)}function Tg(S){}function Cg(S,F){}function Ng(S){var F=S.getExtension("ANGLE_instanced_arrays");if(F)return S.vertexAttribDivisor=function(G,J){F.vertexAttribDivisorANGLE(G,J)},S.drawArraysInstanced=function(G,J,Ae,ge){F.drawArraysInstancedANGLE(G,J,Ae,ge)},S.drawElementsInstanced=function(G,J,Ae,ge,ye){F.drawElementsInstancedANGLE(G,J,Ae,ge,ye)},1}function Eg(S){var F=S.getExtension("OES_vertex_array_object");if(F)return S.createVertexArray=function(){return F.createVertexArrayOES()},S.deleteVertexArray=function(G){F.deleteVertexArrayOES(G)},S.bindVertexArray=function(G){F.bindVertexArrayOES(G)},S.isVertexArray=function(G){return F.isVertexArrayOES(G)},1}function Rg(S){var F=S.getExtension("WEBGL_draw_buffers");if(F)return S.drawBuffers=function(G,J){F.drawBuffersWEBGL(G,J)},1}function Fg(S){return!!(S.multiDrawWebgl=S.getExtension("WEBGL_multi_draw"))}var dt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(S){dt.lastError||(dt.lastError=S)},getNewId:function(S){for(var F=dt.counter++,G=S.length;G>2]:-1;Ae+=st(o()[G+ge*4>>2],ye<0?void 0:ye)}return Ae},createContext:function(S,F){var G=S.getContext("webgl",F);if(!G)return 0;var J=dt.registerContext(G,F);return J},registerContext:function(S,F){var G=to(8);o()[G+4>>2]=ys();var J={handle:G,attributes:F,version:F.majorVersion,GLctx:S};return S.canvas&&(S.canvas.GLctxObject=J),dt.contexts[G]=J,(typeof F.enableExtensionsByDefault=="undefined"||F.enableExtensionsByDefault)&&dt.initExtensions(J),G},makeContextCurrent:function(S){return dt.currentContext=dt.contexts[S],u.ctx=ms=dt.currentContext&&dt.currentContext.GLctx,!(S&&!ms)},getContext:function(S){return dt.contexts[S]},deleteContext:function(S){dt.currentContext===dt.contexts[S]&&(dt.currentContext=null),typeof je=="object"&&je.removeAllHandlersOnTarget(dt.contexts[S].GLctx.canvas),dt.contexts[S]&&dt.contexts[S].GLctx.canvas&&(dt.contexts[S].GLctx.canvas.GLctxObject=void 0),Yd(dt.contexts[S].handle),dt.contexts[S]=null},initExtensions:function(S){if(S||(S=dt.currentContext),!S.initExtensionsDone){S.initExtensionsDone=!0;var F=S.GLctx;Ng(F),Eg(F),Rg(F),F.disjointTimerQueryExt=F.getExtension("EXT_disjoint_timer_query"),Fg(F);var G=F.getSupportedExtensions()||[];G.forEach(function(J){J.indexOf("lose_context")<0&&J.indexOf("debug")<0&&F.getExtension(J)})}},populateUniformTable:function(S){for(var F=dt.programs[S],G=dt.programInfos[S]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},J=G.uniforms,Ae=ms.getProgramParameter(F,35718),ge=0;ge>2,J=o()[G+6],Ae={alpha:!!o()[G+0],depth:!!o()[G+1],stencil:!!o()[G+2],antialias:!!o()[G+3],premultipliedAlpha:!!o()[G+4],preserveDrawingBuffer:!!o()[G+5],powerPreference:Mg[J],failIfMajorPerformanceCaveat:!!o()[G+7],majorVersion:o()[G+8],minorVersion:o()[G+9],enableExtensionsByDefault:o()[G+10],explicitSwapControl:o()[G+11],proxyContextToMainThread:o()[G+12],renderViaOffscreenBackBuffer:o()[G+13]},ge=qd(S);if(!ge||Ae.explicitSwapControl)return 0;var ye=dt.createContext(ge,Ae);return ye}function Pg(S,F){return $g(S,F)}var Bl={mappings:{},buffers:[null,[],[]],printChar:function(S,F){var G=Bl.buffers[S];F===0||F===10?((S===1?_:K)(Ze(G,0)),G.length=0):G.push(F)},varargs:void 0,get:function(){Bl.varargs+=4;var S=o()[Bl.varargs-4>>2];return S},getStr:function(S){var F=st(S);return F},get64:function(S,F){return S}};function uc(S){return T?fs(3,1,S):0}function dc(S,F,G,J,Ae){if(T)return fs(4,1,S,F,G,J,Ae)}function pc(S,F,G,J){if(T)return fs(5,1,S,F,G,J);for(var Ae=0,ge=0;ge>2],Ce=o()[F+(ge*8+4)>>2],ft=0;ft>2]=Ae,0}function Og(S){var F=Fe.threadExitHandlers.pop();S&&F()}function zg(S,F){Fe.threadExitHandlers.push(function(){Zr.get(S)(F)})}function hc(S){if(T)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var F=Fe.getNewWorker();if(F.pthread!==void 0)throw"Internal error!";if(!S.pthread_ptr)throw"Internal error, no pthread ptr!";Fe.runningWorkers.push(F);for(var G=to(512),J=0;J<128;++J)o()[G+J*4>>2]=0;var Ae=S.stackBase+S.stackSize,ge=Fe.pthreads[S.pthread_ptr]={worker:F,stackBase:S.stackBase,stackSize:S.stackSize,allocatedOwnStack:S.allocatedOwnStack,threadInfoStruct:S.pthread_ptr},ye=ge.threadInfoStruct>>2;Atomics.store(l(),ye+16,S.detached),Atomics.store(l(),ye+25,G),Atomics.store(l(),ye+10,ge.threadInfoStruct),Atomics.store(l(),ye+20,S.stackSize),Atomics.store(l(),ye+19,Ae),Atomics.store(l(),ye+26,S.stackSize),Atomics.store(l(),ye+28,Ae),Atomics.store(l(),ye+29,S.detached);var Ce=N5(),ft=Ce+40;Atomics.store(l(),ye+43,ft),F.pthread=ge;var lr={cmd:"run",start_routine:S.startRoutine,arg:S.arg,threadInfoStruct:S.pthread_ptr,stackBase:S.stackBase,stackSize:S.stackSize};F.runPthread=function(){lr.time=performance.now(),F.postMessage(lr,S.transferList)},F.loaded&&(F.runPthread(),delete F.runPthread)}function Dg(S,F,G,J){if(typeof SharedArrayBuffer=="undefined")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!S)return K("pthread_create called with a null thread pointer!"),28;var Ae=[],ge=0;if(T&&(Ae.length===0||ge))return $5(687865856,S,F,G,J);if(ge)return ge;var ye=0,Ce=0,ft=0;F&&F!=-1?(ye=o()[F>>2],ye+=81920,Ce=o()[F+8>>2],ft=o()[F+12>>2]!==0):ye=2097152;var lr=Ce==0;lr?Ce=z5(16,ye):(Ce-=ye,Re(Ce>0));for(var Jt=to(228),As=0;As<57;++As)l()[(Jt>>2)+As]=0;o()[S>>2]=Jt,o()[Jt+12>>2]=Jt;var ql=Jt+152;o()[ql>>2]=ql;var Qr={stackBase:Ce,stackSize:ye,allocatedOwnStack:lr,detached:ft,startRoutine:G,pthread_ptr:Jt,arg:J,transferList:Ae};return T?(Qr.cmd="spawnThread",postMessage(Qr,Ae)):hc(Qr),0}function _g(){if(T){var S=ys();if(S){var F=Atomics.load(l(),S+56>>2);if(!F){var G=Atomics.load(l(),S+0>>2);if(G==2)throw"Canceled!"}}}}function Lg(){v||b||W("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function Bg(S,F,G){if(!S)return K("pthread_join attempted on a null thread pointer!"),cs.ESRCH;if(T&&ys()==S)return K("PThread "+S+" is attempting to join to itself!"),cs.EDEADLK;if(!T&&F5()==S)return K("Main thread "+S+" is attempting to join to itself!"),cs.EDEADLK;var J=o()[S+12>>2];if(J!==S)return K("pthread_join attempted on thread "+S+", which does not point to a valid thread, or does not exist anymore!"),cs.ESRCH;var Ae=Atomics.load(l(),S+64>>2);if(Ae)return K("Attempted to join thread "+S+", which was already detached!"),cs.EINVAL;for(G&&Lg();;){var ge=Atomics.load(l(),S+0>>2);if(ge==1){var ye=Atomics.load(l(),S+4>>2);return F&&(o()[F>>2]=ye),Atomics.store(l(),S+64>>2,1),T?postMessage({cmd:"cleanupThread",thread:S}):sc(S),0}if(!G)return cs.EBUSY;_g(),T||xc(),ic(S+0,ge,T?100:1)}}function Wg(S,F){return Bg(S,F,!0)}function cc(S){if(T)return fs(6,1,S);switch(S){case 30:return 16384;case 85:var F=2147483648;return F/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 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46: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:case 80:case 81:case 79: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 ig(28),-1}T||Fe.initMainThreadBlock();var ms,Vg=[null,og,lc,uc,dc,pc,cc],Ug={e:ng,r:sg,x:lg,b:ug,y:dg,j:pg,d:ic,c:Gd,f:eo,p:hg,A:cg,u:mg,q:Ag,v:Sg,i:Tg,s:Cg,w:Pg,l:uc,n:dc,g:pc,o:J0,a:ie||u.wasmMemory,z:Og,k:zg,h:Dg,m:Wg,t:cc},T5=Y0(),fc=u.___wasm_call_ctors=function(){return(fc=u.___wasm_call_ctors=u.asm.B).apply(null,arguments)},Gg=u._init=function(){return(Gg=u._init=u.asm.C).apply(null,arguments)},jg=u._init_with_threads_count=function(){return(jg=u._init_with_threads_count=u.asm.D).apply(null,arguments)},Hg=u._get_threads_count=function(){return(Hg=u._get_threads_count=u.asm.E).apply(null,arguments)},qg=u._register_tensor=function(){return(qg=u._register_tensor=u.asm.F).apply(null,arguments)},Kg=u._dispose_data=function(){return(Kg=u._dispose_data=u.asm.G).apply(null,arguments)},Xg=u._dispose=function(){return(Xg=u._dispose=u.asm.H).apply(null,arguments)},Zg=u._Abs=function(){return(Zg=u._Abs=u.asm.I).apply(null,arguments)},Yg=u._Add=function(){return(Yg=u._Add=u.asm.J).apply(null,arguments)},Jg=u._AddN=function(){return(Jg=u._AddN=u.asm.K).apply(null,arguments)},Qg=u._All=function(){return(Qg=u._All=u.asm.L).apply(null,arguments)},e1=u._Any=function(){return(e1=u._Any=u.asm.M).apply(null,arguments)},t1=u._ArgMax=function(){return(t1=u._ArgMax=u.asm.N).apply(null,arguments)},r1=u._AvgPool=function(){return(r1=u._AvgPool=u.asm.O).apply(null,arguments)},a1=u._BatchMatMul=function(){return(a1=u._BatchMatMul=u.asm.P).apply(null,arguments)},n1=u._Ceil=function(){return(n1=u._Ceil=u.asm.Q).apply(null,arguments)},s1=u._ClipByValue=function(){return(s1=u._ClipByValue=u.asm.R).apply(null,arguments)},i1=u._Conv2D=function(){return(i1=u._Conv2D=u.asm.S).apply(null,arguments)},o1=u._Conv2DBackpropInput=function(){return(o1=u._Conv2DBackpropInput=u.asm.T).apply(null,arguments)},l1=u._Cos=function(){return(l1=u._Cos=u.asm.U).apply(null,arguments)},u1=u._Cosh=function(){return(u1=u._Cosh=u.asm.V).apply(null,arguments)},mc=u._CropAndResize=function(){return(mc=u._CropAndResize=u.asm.W).apply(null,arguments)},gc=u._Cumsum=function(){return(gc=u._Cumsum=u.asm.X).apply(null,arguments)},Kd=u._DepthToSpace=function(){return(Kd=u._DepthToSpace=u.asm.Y).apply(null,arguments)},Wl=u._DepthwiseConv2dNative=function(){return(Wl=u._DepthwiseConv2dNative=u.asm.Z).apply(null,arguments)},d1=u._Elu=function(){return(d1=u._Elu=u.asm._).apply(null,arguments)},Xd=u._Equal=function(){return(Xd=u._Equal=u.asm.$).apply(null,arguments)},Vl=u._Exp=function(){return(Vl=u._Exp=u.asm.aa).apply(null,arguments)},Ul=u._FlipLeftRight=function(){return(Ul=u._FlipLeftRight=u.asm.ba).apply(null,arguments)},p1=u._Floor=function(){return(p1=u._Floor=u.asm.ca).apply(null,arguments)},te=u._FloorDiv=function(){return(te=u._FloorDiv=u.asm.da).apply(null,arguments)},le=u._FusedBatchNorm=function(){return(le=u._FusedBatchNorm=u.asm.ea).apply(null,arguments)},Me=u._FusedConv2D=function(){return(Me=u._FusedConv2D=u.asm.fa).apply(null,arguments)},ot=u._FusedDepthwiseConv2D=function(){return(ot=u._FusedDepthwiseConv2D=u.asm.ga).apply(null,arguments)},Lt=u._Gather=function(){return(Lt=u._Gather=u.asm.ha).apply(null,arguments)},Rt=u._GatherNd=function(){return(Rt=u._GatherNd=u.asm.ia).apply(null,arguments)},Qe=u._Greater=function(){return(Qe=u._Greater=u.asm.ja).apply(null,arguments)},tt=u._GreaterEqual=function(){return(tt=u._GreaterEqual=u.asm.ka).apply(null,arguments)},yr=u._LeakyRelu=function(){return(yr=u._LeakyRelu=u.asm.la).apply(null,arguments)},_n=u._Less=function(){return(_n=u._Less=u.asm.ma).apply(null,arguments)},Ln=u._LessEqual=function(){return(Ln=u._LessEqual=u.asm.na).apply(null,arguments)},yc=u._Log=function(){return(yc=u._Log=u.asm.oa).apply(null,arguments)},Zd=u._LogicalAnd=function(){return(Zd=u._LogicalAnd=u.asm.pa).apply(null,arguments)},wa=u._Max=function(){return(wa=u._Max=u.asm.qa).apply(null,arguments)},gs=u._MaxPool=function(){return(gs=u._MaxPool=u.asm.ra).apply(null,arguments)},Ac=u._Maximum=function(){return(Ac=u._Maximum=u.asm.sa).apply(null,arguments)},a9=u._Mean=function(){return(a9=u._Mean=u.asm.ta).apply(null,arguments)},n9=u._Min=function(){return(n9=u._Min=u.asm.ua).apply(null,arguments)},s9=u._Minimum=function(){return(s9=u._Minimum=u.asm.va).apply(null,arguments)},i9=u._MirrorPad=function(){return(i9=u._MirrorPad=u.asm.wa).apply(null,arguments)},o9=u._Multiply=function(){return(o9=u._Multiply=u.asm.xa).apply(null,arguments)},l9=u._Neg=function(){return(l9=u._Neg=u.asm.ya).apply(null,arguments)},u9=u._NonMaxSuppressionV3=function(){return(u9=u._NonMaxSuppressionV3=u.asm.za).apply(null,arguments)},d9=u._NonMaxSuppressionV4=function(){return(d9=u._NonMaxSuppressionV4=u.asm.Aa).apply(null,arguments)},p9=u._NonMaxSuppressionV5=function(){return(p9=u._NonMaxSuppressionV5=u.asm.Ba).apply(null,arguments)},h9=u._NotEqual=function(){return(h9=u._NotEqual=u.asm.Ca).apply(null,arguments)},c9=u._OneHot=function(){return(c9=u._OneHot=u.asm.Da).apply(null,arguments)},f9=u._PadV2=function(){return(f9=u._PadV2=u.asm.Ea).apply(null,arguments)},m9=u._Pow=function(){return(m9=u._Pow=u.asm.Fa).apply(null,arguments)},g9=u._Prelu=function(){return(g9=u._Prelu=u.asm.Ga).apply(null,arguments)},y9=u._Prod=function(){return(y9=u._Prod=u.asm.Ha).apply(null,arguments)},A9=u._RealDiv=function(){return(A9=u._RealDiv=u.asm.Ia).apply(null,arguments)},x9=u._Relu=function(){return(x9=u._Relu=u.asm.Ja).apply(null,arguments)},b9=u._Relu6=function(){return(b9=u._Relu6=u.asm.Ka).apply(null,arguments)},v9=u._ResizeBilinear=function(){return(v9=u._ResizeBilinear=u.asm.La).apply(null,arguments)},w9=u._Reverse=function(){return(w9=u._Reverse=u.asm.Ma).apply(null,arguments)},k9=u._RotateWithOffset=function(){return(k9=u._RotateWithOffset=u.asm.Na).apply(null,arguments)},I9=u._Round=function(){return(I9=u._Round=u.asm.Oa).apply(null,arguments)},S9=u._Rsqrt=function(){return(S9=u._Rsqrt=u.asm.Pa).apply(null,arguments)},T9=u._ScatterNd=function(){return(T9=u._ScatterNd=u.asm.Qa).apply(null,arguments)},C9=u._SelectV2=function(){return(C9=u._SelectV2=u.asm.Ra).apply(null,arguments)},N9=u._Sigmoid=function(){return(N9=u._Sigmoid=u.asm.Sa).apply(null,arguments)},E9=u._Sin=function(){return(E9=u._Sin=u.asm.Ta).apply(null,arguments)},R9=u._Softmax=function(){return(R9=u._Softmax=u.asm.Ua).apply(null,arguments)},F9=u._SparseFillEmptyRows=function(){return(F9=u._SparseFillEmptyRows=u.asm.Va).apply(null,arguments)},M9=u._SparseReshape=function(){return(M9=u._SparseReshape=u.asm.Wa).apply(null,arguments)},$9=u._SparseSegmentReduction=function(){return($9=u._SparseSegmentReduction=u.asm.Xa).apply(null,arguments)},P9=u._Sqrt=function(){return(P9=u._Sqrt=u.asm.Ya).apply(null,arguments)},O9=u._Square=function(){return(O9=u._Square=u.asm.Za).apply(null,arguments)},z9=u._SquaredDifference=function(){return(z9=u._SquaredDifference=u.asm._a).apply(null,arguments)},D9=u._Step=function(){return(D9=u._Step=u.asm.$a).apply(null,arguments)},_9=u._StridedSlice=function(){return(_9=u._StridedSlice=u.asm.ab).apply(null,arguments)},L9=u._Sub=function(){return(L9=u._Sub=u.asm.bb).apply(null,arguments)},B9=u._Sum=function(){return(B9=u._Sum=u.asm.cb).apply(null,arguments)},W9=u._Tan=function(){return(W9=u._Tan=u.asm.db).apply(null,arguments)},V9=u._Tanh=function(){return(V9=u._Tanh=u.asm.eb).apply(null,arguments)},U9=u._Tile=function(){return(U9=u._Tile=u.asm.fb).apply(null,arguments)},G9=u._TopK=function(){return(G9=u._TopK=u.asm.gb).apply(null,arguments)},j9=u._Transform=function(){return(j9=u._Transform=u.asm.hb).apply(null,arguments)},H9=u._Transpose=function(){return(H9=u._Transpose=u.asm.ib).apply(null,arguments)},q9=u.__FusedMatMul=function(){return(q9=u.__FusedMatMul=u.asm.jb).apply(null,arguments)},to=u._malloc=function(){return(to=u._malloc=u.asm.kb).apply(null,arguments)},Yd=u._free=function(){return(Yd=u._free=u.asm.lb).apply(null,arguments)},C5=u.___errno_location=function(){return(C5=u.___errno_location=u.asm.mb).apply(null,arguments)},N5=u._emscripten_get_global_libc=function(){return(N5=u._emscripten_get_global_libc=u.asm.ob).apply(null,arguments)},ys=u._pthread_self=function(){return(ys=u._pthread_self=u.asm.pb).apply(null,arguments)},E5=u.___pthread_tsd_run_dtors=function(){return(E5=u.___pthread_tsd_run_dtors=u.asm.qb).apply(null,arguments)},xc=u._emscripten_main_thread_process_queued_calls=function(){return(xc=u._emscripten_main_thread_process_queued_calls=u.asm.rb).apply(null,arguments)},K9=u._emscripten_current_thread_process_queued_calls=function(){return(K9=u._emscripten_current_thread_process_queued_calls=u.asm.sb).apply(null,arguments)},R5=u._emscripten_register_main_browser_thread_id=function(){return(R5=u._emscripten_register_main_browser_thread_id=u.asm.tb).apply(null,arguments)},F5=u._emscripten_main_browser_thread_id=function(){return(F5=u._emscripten_main_browser_thread_id=u.asm.ub).apply(null,arguments)},M5=u.__emscripten_do_dispatch_to_thread=function(){return(M5=u.__emscripten_do_dispatch_to_thread=u.asm.vb).apply(null,arguments)},$5=u._emscripten_sync_run_in_main_thread_4=function(){return($5=u._emscripten_sync_run_in_main_thread_4=u.asm.wb).apply(null,arguments)},P5=u._emscripten_run_in_main_runtime_thread_js=function(){return(P5=u._emscripten_run_in_main_runtime_thread_js=u.asm.xb).apply(null,arguments)},h1=u.__emscripten_call_on_thread=function(){return(h1=u.__emscripten_call_on_thread=u.asm.yb).apply(null,arguments)},X9=u._emscripten_tls_init=function(){return(X9=u._emscripten_tls_init=u.asm.zb).apply(null,arguments)},c1=u.__emscripten_thread_init=function(){return(c1=u.__emscripten_thread_init=u.asm.Ab).apply(null,arguments)},Jd=u.stackSave=function(){return(Jd=u.stackSave=u.asm.Bb).apply(null,arguments)},Gl=u.stackRestore=function(){return(Gl=u.stackRestore=u.asm.Cb).apply(null,arguments)},jl=u.stackAlloc=function(){return(jl=u.stackAlloc=u.asm.Db).apply(null,arguments)},O5=u._emscripten_stack_set_limits=function(){return(O5=u._emscripten_stack_set_limits=u.asm.Eb).apply(null,arguments)},z5=u._memalign=function(){return(z5=u._memalign=u.asm.Fb).apply(null,arguments)},D5=u.__emscripten_allow_main_runtime_queued_calls=10208,Hl=u.__emscripten_main_thread_futex=10412;u.cwrap=qe,u.PThread=Fe,u.PThread=Fe,u.wasmMemory=ie,u.ExitStatus=Qd;var bc;function Qd(S){this.name="ExitStatus",this.message="Program terminated with exit("+S+")",this.status=S}Ji=function S(){bc||f1(),bc||(Ji=S)};function f1(S){if(S=S||g,_a>0)return;if(T){p(u),Jh(),postMessage({cmd:"loaded"});return}if(Yh(),_a>0)return;function F(){bc||(bc=!0,u.calledRun=!0,!be&&(Jh(),Qh(),p(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),ec()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),F()},1)):F()}u.run=f1;function Z9(S,F){if(!(F&&ae&&S===0)){if(!F&&T)throw postMessage({cmd:"exitProcess",returnCode:S}),new Qd(S);ae||(Fe.terminateAllThreads(),Te=S,Yr(),u.onExit&&u.onExit(S),be=!0),A(S,new Qd(S))}}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();T&&(ae=!1,Fe.initWorker()),f1();var vc;c&&(vc={uncaughtException:process.listeners("uncaughtException").filter(function(S){return!c.uncaughtException.indexOf(S)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(S){return!c.unhandledRejection.indexOf(S)>-1})});var wc;if(typeof WasmBackendModule!="undefined")wc=WasmBackendModule;else if(typeof n!="undefined")wc=n;else throw new Error("Could not find wasm module in post.js");if(vc){var Y9=wc._dispose;wc._dispose=function(){Y9(),vc.uncaughtException.forEach(function(S){process.removeListener("uncaughtException",S)}),vc.unhandledRejection.forEach(function(S){process.removeListener("unhandledRejection",S)})}}return n.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=r)}}),TE=sr({"src/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var r=function(){var a=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(a=a||__filename),function(n){n=n||{};var s=typeof n!="undefined"?n:{},i,o;s.ready=new Promise(function(te,le){i=te,o=le});var l;typeof process!="undefined"&&process.listeners&&(l={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var d={},u;for(u in s)s.hasOwnProperty(u)&&(d[u]=s[u]);var p=[],h="./this.program",c=function(te,le){throw le},f=!1,m=!1,g=!1,y=!1;f=typeof window=="object",m=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!f&&!g&&!m;var A="";function x(te){return s.locateFile?s.locateFile(te,A):A+te}var b,v,C,T,E,R;g?(m?A=Ap().dirname(A)+"/":A=__dirname+"/",b=function(te,le){return E||(E=Hc()),R||(R=Ap()),te=R.normalize(te),E.readFileSync(te,le?null:"utf8")},C=function(te){var le=b(te,!0);return le.buffer||(le=new Uint8Array(le)),_(le.buffer),le},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),p=process.argv.slice(2),process.on("uncaughtException",function(te){if(!(te instanceof d1))throw te}),process.on("unhandledRejection",zn),c=function(te){process.exit(te)},s.inspect=function(){return"[Emscripten Module object]"}):y?(typeof read!="undefined"&&(b=function(te){return read(te)}),C=function(te){var le;return typeof readbuffer=="function"?new Uint8Array(readbuffer(te)):(le=read(te,"binary"),_(typeof le=="object"),le)},typeof scriptArgs!="undefined"?p=scriptArgs:typeof arguments!="undefined"&&(p=arguments),typeof quit=="function"&&(c=function(te){quit(te)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(f||m)&&(m?A=self.location.href:typeof document!="undefined"&&document.currentScript&&(A=document.currentScript.src),a&&(A=a),A.indexOf("blob:")!==0?A=A.substr(0,A.lastIndexOf("/")+1):A="",b=function(te){var le=new XMLHttpRequest;return le.open("GET",te,!1),le.send(null),le.responseText},m&&(C=function(te){var le=new XMLHttpRequest;return le.open("GET",te,!1),le.responseType="arraybuffer",le.send(null),new Uint8Array(le.response)}),v=function(te,le,Me){var ot=new XMLHttpRequest;ot.open("GET",te,!0),ot.responseType="arraybuffer",ot.onload=function(){if(ot.status==200||ot.status==0&&ot.response){le(ot.response);return}Me()},ot.onerror=Me,ot.send(null)},T=function(te){document.title=te});var z=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in d)d.hasOwnProperty(u)&&(s[u]=d[u]);d=null,s.arguments&&(p=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(c=s.quit);var I;s.wasmBinary&&(I=s.wasmBinary);var D=s.noExitRuntime||!0;typeof WebAssembly!="object"&&zn("no native wasm support detected");var O,j=!1,X;function _(te,le){te||zn("Assertion failed: "+le)}function K(te){var le=s["_"+te];return _(le,"Cannot call unknown function "+te+", make sure it is exported"),le}function W(te,le,Me,ot,Lt){var Rt={string:function(wa){var gs=0;if(wa!=null&&wa!==0){var Ac=(wa.length<<2)+1;gs=Kd(Ac),ie(wa,gs,Ac)}return gs},array:function(wa){var gs=Kd(wa.length);return xe(wa,gs),gs}};function Qe(wa){return le==="string"?Z(wa):le==="boolean"?Boolean(wa):wa}var tt=K(te),yr=[],_n=0;if(ot)for(var Ln=0;Ln=ot);)++Lt;if(Lt-le>16&&te.subarray&&Q)return Q.decode(te.subarray(le,Lt));for(var Rt="";le>10,56320|_n&1023)}}return Rt}function Z(te,le){return te?ne($e,te,le):""}function ae(te,le,Me,ot){if(!(ot>0))return 0;for(var Lt=Me,Rt=Me+ot-1,Qe=0;Qe=55296&&tt<=57343){var yr=te.charCodeAt(++Qe);tt=65536+((tt&1023)<<10)|yr&1023}if(tt<=127){if(Me>=Rt)break;le[Me++]=tt}else if(tt<=2047){if(Me+1>=Rt)break;le[Me++]=192|tt>>6,le[Me++]=128|tt&63}else if(tt<=65535){if(Me+2>=Rt)break;le[Me++]=224|tt>>12,le[Me++]=128|tt>>6&63,le[Me++]=128|tt&63}else{if(Me+3>=Rt)break;le[Me++]=240|tt>>18,le[Me++]=128|tt>>12&63,le[Me++]=128|tt>>6&63,le[Me++]=128|tt&63}}return le[Me]=0,Me-Lt}function ie(te,le,Me){return ae(te,$e,le,Me)}function xe(te,le){Re.set(te,le)}function be(te,le){return te%le>0&&(te+=le-te%le),te}var Te,Re,$e,_e,qe,Ze,st,ht,ct;function yt(te){Te=te,s.HEAP8=Re=new Int8Array(te),s.HEAP16=_e=new Int16Array(te),s.HEAP32=Ze=new Int32Array(te),s.HEAPU8=$e=new Uint8Array(te),s.HEAPU16=qe=new Uint16Array(te),s.HEAPU32=st=new Uint32Array(te),s.HEAPF32=ht=new Float32Array(te),s.HEAPF64=ct=new Float64Array(te)}var Et=s.INITIAL_MEMORY||16777216,Hr,ut=[],qr=[],gr=[],Kr=[],za=!1;qr.push({func:function(){ac()}});function Xr(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)ia(s.preRun.shift());_a(ut)}function Rr(){za=!0,_a(qr)}function Da(){_a(gr)}function xn(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)_l(s.postRun.shift());_a(Kr)}function ia(te){ut.unshift(te)}function _l(te){Kr.unshift(te)}var Zr=0,hs=null,va=null;function Wd(te){Zr++,s.monitorRunDependencies&&s.monitorRunDependencies(Zr)}function Vd(te){if(Zr--,s.monitorRunDependencies&&s.monitorRunDependencies(Zr),Zr==0&&(hs!==null&&(clearInterval(hs),hs=null),va)){var le=va;va=null,le()}}s.preloadedImages={},s.preloadedAudios={};function zn(te){s.onAbort&&s.onAbort(te),te+="",M(te),j=!0,X=1,te="abort("+te+"). Build with -s ASSERTIONS=1 for more info.";var le=new WebAssembly.RuntimeError(te);throw o(le),le}function Zh(te,le){return String.prototype.startsWith?te.startsWith(le):te.indexOf(le)===0}var U0="data:application/octet-stream;base64,";function Yh(te){return Zh(te,U0)}var Jh="file://";function Qh(te){return Zh(te,Jh)}var Yr="tfjs-backend-wasm.wasm";Yh(Yr)||(Yr=x(Yr));function ec(te){try{if(te==Yr&&I)return new Uint8Array(I);if(C)return C(te);throw"both async and sync fetching of the wasm failed"}catch(le){zn(le)}}function G0(){if(!I&&(f||m)){if(typeof fetch=="function"&&!Qh(Yr))return fetch(Yr,{credentials:"same-origin"}).then(function(te){if(!te.ok)throw"failed to load wasm binary file at '"+Yr+"'";return te.arrayBuffer()}).catch(function(){return ec(Yr)});if(v)return new Promise(function(te,le){v(Yr,function(Me){te(new Uint8Array(Me))},le)})}return Promise.resolve().then(function(){return ec(Yr)})}function j0(){var te={a:Jr};function le(Qe,tt){var yr=Qe.exports;s.asm=yr,O=s.asm.h,yt(O.buffer),Hr=s.asm.Va,Vd("wasm-instantiate")}Wd("wasm-instantiate");function Me(Qe){le(Qe.instance)}function ot(Qe){return G0().then(function(tt){return WebAssembly.instantiate(tt,te)}).then(Qe,function(tt){M("failed to asynchronously prepare wasm: "+tt),zn(tt)})}function Lt(){return!I&&typeof WebAssembly.instantiateStreaming=="function"&&!Yh(Yr)&&!Qh(Yr)&&typeof fetch=="function"?fetch(Yr,{credentials:"same-origin"}).then(function(Qe){var tt=WebAssembly.instantiateStreaming(Qe,te);return tt.then(Me,function(yr){return M("wasm streaming compile failed: "+yr),M("falling back to ArrayBuffer instantiation"),ot(Me)})}):ot(Me)}if(s.instantiateWasm)try{var Rt=s.instantiateWasm(te,le);return Rt}catch(Qe){return M("Module.instantiateWasm callback failed with error: "+Qe),!1}return Lt().catch(o),{}}function _a(te){for(;te.length>0;){var le=te.shift();if(typeof le=="function"){le(s);continue}var Me=le.func;typeof Me=="number"?le.arg===void 0?Hr.get(Me)():Hr.get(Me)(le.arg):Me(le.arg===void 0?null:le.arg)}}function Ud(){zn()}function Ji(te,le,Me){$e.copyWithin(te,le,le+Me)}function H0(){return $e.length}function q0(te){try{return O.grow(te-Te.byteLength+65535>>>16),yt(O.buffer),1}catch(le){}}function Dn(te){var le=H0(),Me=2147483648;if(te>Me)return!1;for(var ot=1;ot<=4;ot*=2){var Lt=le*(1+.2/ot);Lt=Math.min(Lt,te+100663296);var Rt=Math.min(Me,be(Math.max(te,Lt),65536)),Qe=q0(Rt);if(Qe)return!0}return!1}var Qi={mappings:{},buffers:[null,[],[]],printChar:function(te,le){var Me=Qi.buffers[te];le===0||le===10?((te===1?z:M)(ne(Me,0)),Me.length=0):Me.push(le)},varargs:void 0,get:function(){Qi.varargs+=4;var te=Ze[Qi.varargs-4>>2];return te},getStr:function(te){var le=Z(te);return le},get64:function(te,le){return te}};function K0(te){return 0}function tc(te,le,Me,ot,Lt){}function X0(te,le,Me,ot){for(var Lt=0,Rt=0;Rt>2],tt=Ze[le+(Rt*8+4)>>2],yr=0;yr>2]=Lt,0}function rc(){return 28}var Jr={a:Ud,d:Ji,e:Dn,f:K0,c:tc,b:X0,g:rc},Z0=j0(),ac=s.___wasm_call_ctors=function(){return(ac=s.___wasm_call_ctors=s.asm.i).apply(null,arguments)},Y0=s._init=function(){return(Y0=s._init=s.asm.j).apply(null,arguments)},nc=s._init_with_threads_count=function(){return(nc=s._init_with_threads_count=s.asm.k).apply(null,arguments)},J0=s._get_threads_count=function(){return(J0=s._get_threads_count=s.asm.l).apply(null,arguments)},Ll=s._register_tensor=function(){return(Ll=s._register_tensor=s.asm.m).apply(null,arguments)},cs=s._dispose_data=function(){return(cs=s._dispose_data=s.asm.n).apply(null,arguments)},Gd=s._dispose=function(){return(Gd=s._dispose=s.asm.o).apply(null,arguments)},Q0=s._Abs=function(){return(Q0=s._Abs=s.asm.p).apply(null,arguments)},eg=s._Add=function(){return(eg=s._Add=s.asm.q).apply(null,arguments)},sc=s._AddN=function(){return(sc=s._AddN=s.asm.r).apply(null,arguments)},Fe=s._All=function(){return(Fe=s._All=s.asm.s).apply(null,arguments)},tg=s._Any=function(){return(tg=s._Any=s.asm.t).apply(null,arguments)},rg=s._ArgMax=function(){return(rg=s._ArgMax=s.asm.u).apply(null,arguments)},ag=s._AvgPool=function(){return(ag=s._AvgPool=s.asm.v).apply(null,arguments)},ng=s._BatchMatMul=function(){return(ng=s._BatchMatMul=s.asm.w).apply(null,arguments)},sg=s._Ceil=function(){return(sg=s._Ceil=s.asm.x).apply(null,arguments)},eo=s._ClipByValue=function(){return(eo=s._ClipByValue=s.asm.y).apply(null,arguments)},ig=s._Conv2D=function(){return(ig=s._Conv2D=s.asm.z).apply(null,arguments)},og=s._Conv2DBackpropInput=function(){return(og=s._Conv2DBackpropInput=s.asm.A).apply(null,arguments)},lg=s._Cos=function(){return(lg=s._Cos=s.asm.B).apply(null,arguments)},ug=s._Cosh=function(){return(ug=s._Cosh=s.asm.C).apply(null,arguments)},dg=s._CropAndResize=function(){return(dg=s._CropAndResize=s.asm.D).apply(null,arguments)},pg=s._Cumsum=function(){return(pg=s._Cumsum=s.asm.E).apply(null,arguments)},ic=s._DepthToSpace=function(){return(ic=s._DepthToSpace=s.asm.F).apply(null,arguments)},hg=s._DepthwiseConv2dNative=function(){return(hg=s._DepthwiseConv2dNative=s.asm.G).apply(null,arguments)},cg=s._Elu=function(){return(cg=s._Elu=s.asm.H).apply(null,arguments)},fs=s._Equal=function(){return(fs=s._Equal=s.asm.I).apply(null,arguments)},jd=s._Exp=function(){return(jd=s._Exp=s.asm.J).apply(null,arguments)},Hd=s._FlipLeftRight=function(){return(Hd=s._FlipLeftRight=s.asm.K).apply(null,arguments)},fg=s._Floor=function(){return(fg=s._Floor=s.asm.L).apply(null,arguments)},mg=s._FloorDiv=function(){return(mg=s._FloorDiv=s.asm.M).apply(null,arguments)},gg=s._FusedBatchNorm=function(){return(gg=s._FusedBatchNorm=s.asm.N).apply(null,arguments)},yg=s._FusedConv2D=function(){return(yg=s._FusedConv2D=s.asm.O).apply(null,arguments)},Ag=s._FusedDepthwiseConv2D=function(){return(Ag=s._FusedDepthwiseConv2D=s.asm.P).apply(null,arguments)},je=s._Gather=function(){return(je=s._Gather=s.asm.Q).apply(null,arguments)},xg=s._GatherNd=function(){return(xg=s._GatherNd=s.asm.R).apply(null,arguments)},bg=s._Greater=function(){return(bg=s._Greater=s.asm.S).apply(null,arguments)},vg=s._GreaterEqual=function(){return(vg=s._GreaterEqual=s.asm.T).apply(null,arguments)},wg=s._LeakyRelu=function(){return(wg=s._LeakyRelu=s.asm.U).apply(null,arguments)},kg=s._Less=function(){return(kg=s._Less=s.asm.V).apply(null,arguments)},Ig=s._LessEqual=function(){return(Ig=s._LessEqual=s.asm.W).apply(null,arguments)},qd=s._Log=function(){return(qd=s._Log=s.asm.X).apply(null,arguments)},oc=s._LogicalAnd=function(){return(oc=s._LogicalAnd=s.asm.Y).apply(null,arguments)},lc=s._Max=function(){return(lc=s._Max=s.asm.Z).apply(null,arguments)},Sg=s._MaxPool=function(){return(Sg=s._MaxPool=s.asm._).apply(null,arguments)},Tg=s._Maximum=function(){return(Tg=s._Maximum=s.asm.$).apply(null,arguments)},Cg=s._Mean=function(){return(Cg=s._Mean=s.asm.aa).apply(null,arguments)},Ng=s._Min=function(){return(Ng=s._Min=s.asm.ba).apply(null,arguments)},Eg=s._Minimum=function(){return(Eg=s._Minimum=s.asm.ca).apply(null,arguments)},Rg=s._MirrorPad=function(){return(Rg=s._MirrorPad=s.asm.da).apply(null,arguments)},Fg=s._Multiply=function(){return(Fg=s._Multiply=s.asm.ea).apply(null,arguments)},dt=s._Neg=function(){return(dt=s._Neg=s.asm.fa).apply(null,arguments)},Mg=s._NonMaxSuppressionV3=function(){return(Mg=s._NonMaxSuppressionV3=s.asm.ga).apply(null,arguments)},$g=s._NonMaxSuppressionV4=function(){return($g=s._NonMaxSuppressionV4=s.asm.ha).apply(null,arguments)},Pg=s._NonMaxSuppressionV5=function(){return(Pg=s._NonMaxSuppressionV5=s.asm.ia).apply(null,arguments)},Bl=s._NotEqual=function(){return(Bl=s._NotEqual=s.asm.ja).apply(null,arguments)},uc=s._OneHot=function(){return(uc=s._OneHot=s.asm.ka).apply(null,arguments)},dc=s._PadV2=function(){return(dc=s._PadV2=s.asm.la).apply(null,arguments)},pc=s._Pow=function(){return(pc=s._Pow=s.asm.ma).apply(null,arguments)},Og=s._Prelu=function(){return(Og=s._Prelu=s.asm.na).apply(null,arguments)},zg=s._Prod=function(){return(zg=s._Prod=s.asm.oa).apply(null,arguments)},hc=s._RealDiv=function(){return(hc=s._RealDiv=s.asm.pa).apply(null,arguments)},Dg=s._Relu=function(){return(Dg=s._Relu=s.asm.qa).apply(null,arguments)},_g=s._Relu6=function(){return(_g=s._Relu6=s.asm.ra).apply(null,arguments)},Lg=s._ResizeBilinear=function(){return(Lg=s._ResizeBilinear=s.asm.sa).apply(null,arguments)},Bg=s._Reverse=function(){return(Bg=s._Reverse=s.asm.ta).apply(null,arguments)},Wg=s._RotateWithOffset=function(){return(Wg=s._RotateWithOffset=s.asm.ua).apply(null,arguments)},cc=s._Round=function(){return(cc=s._Round=s.asm.va).apply(null,arguments)},ms=s._Rsqrt=function(){return(ms=s._Rsqrt=s.asm.wa).apply(null,arguments)},Vg=s._ScatterNd=function(){return(Vg=s._ScatterNd=s.asm.xa).apply(null,arguments)},Ug=s._SelectV2=function(){return(Ug=s._SelectV2=s.asm.ya).apply(null,arguments)},T5=s._Sigmoid=function(){return(T5=s._Sigmoid=s.asm.za).apply(null,arguments)},fc=s._Sin=function(){return(fc=s._Sin=s.asm.Aa).apply(null,arguments)},Gg=s._Softmax=function(){return(Gg=s._Softmax=s.asm.Ba).apply(null,arguments)},jg=s._SparseFillEmptyRows=function(){return(jg=s._SparseFillEmptyRows=s.asm.Ca).apply(null,arguments)},Hg=s._SparseReshape=function(){return(Hg=s._SparseReshape=s.asm.Da).apply(null,arguments)},qg=s._SparseSegmentReduction=function(){return(qg=s._SparseSegmentReduction=s.asm.Ea).apply(null,arguments)},Kg=s._Sqrt=function(){return(Kg=s._Sqrt=s.asm.Fa).apply(null,arguments)},Xg=s._Square=function(){return(Xg=s._Square=s.asm.Ga).apply(null,arguments)},Zg=s._SquaredDifference=function(){return(Zg=s._SquaredDifference=s.asm.Ha).apply(null,arguments)},Yg=s._Step=function(){return(Yg=s._Step=s.asm.Ia).apply(null,arguments)},Jg=s._StridedSlice=function(){return(Jg=s._StridedSlice=s.asm.Ja).apply(null,arguments)},Qg=s._Sub=function(){return(Qg=s._Sub=s.asm.Ka).apply(null,arguments)},e1=s._Sum=function(){return(e1=s._Sum=s.asm.La).apply(null,arguments)},t1=s._Tan=function(){return(t1=s._Tan=s.asm.Ma).apply(null,arguments)},r1=s._Tanh=function(){return(r1=s._Tanh=s.asm.Na).apply(null,arguments)},a1=s._Tile=function(){return(a1=s._Tile=s.asm.Oa).apply(null,arguments)},n1=s._TopK=function(){return(n1=s._TopK=s.asm.Pa).apply(null,arguments)},s1=s._Transform=function(){return(s1=s._Transform=s.asm.Qa).apply(null,arguments)},i1=s._Transpose=function(){return(i1=s._Transpose=s.asm.Ra).apply(null,arguments)},o1=s.__FusedMatMul=function(){return(o1=s.__FusedMatMul=s.asm.Sa).apply(null,arguments)},l1=s._malloc=function(){return(l1=s._malloc=s.asm.Ta).apply(null,arguments)},u1=s._free=function(){return(u1=s._free=s.asm.Ua).apply(null,arguments)},mc=s.stackSave=function(){return(mc=s.stackSave=s.asm.Wa).apply(null,arguments)},gc=s.stackRestore=function(){return(gc=s.stackRestore=s.asm.Xa).apply(null,arguments)},Kd=s.stackAlloc=function(){return(Kd=s.stackAlloc=s.asm.Ya).apply(null,arguments)};s.cwrap=ee;var Wl;function d1(te){this.name="ExitStatus",this.message="Program terminated with exit("+te+")",this.status=te}va=function te(){Wl||Xd(),Wl||(va=te)};function Xd(te){if(te=te||p,Zr>0||(Xr(),Zr>0))return;function le(){Wl||(Wl=!0,s.calledRun=!0,!j&&(Rr(),Da(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),xn()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),le()},1)):le()}if(s.run=Xd,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();Xd();var Vl;l&&(Vl={uncaughtException:process.listeners("uncaughtException").filter(function(te){return!l.uncaughtException.indexOf(te)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(te){return!l.unhandledRejection.indexOf(te)>-1})});var Ul;if(typeof n!="undefined")Ul=n;else if(typeof WasmBackendModuleThreadedSimd!="undefined")Ul=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(Vl){var p1=Ul._dispose;Ul._dispose=function(){p1(),Vl.uncaughtException.forEach(function(te){process.removeListener("uncaughtException",te)}),Vl.unhandledRejection.forEach(function(te){process.removeListener("unhandledRejection",te)})}}return n.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):typeof e=="object"&&(e.WasmBackendModule=r)}}),CE=1e-7,NE=1e-4,_p=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}},Iu=class{refCount(e){return ka("refCount")}incRef(e){return ka("incRef")}timerAvailable(){return!0}time(e){return ka("time")}read(e){return ka("read")}readSync(e){return ka("readSync")}readToGPU(e,t){return ka("readToGPU")}numDataIds(){return ka("numDataIds")}disposeData(e,t){return ka("disposeData")}write(e,t,r){return ka("write")}move(e,t,r,a,n){return ka("move")}memory(){return ka("memory")}floatPrecision(){return ka("floatPrecision")}epsilon(){return this.floatPrecision()===32?CE:NE}dispose(){return ka("dispose")}};function ka(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 kv(e){let t=e.length,r=0;for(;t>0;)r=Math.random()*t|0,t--,qc(e,t,r)}function EE(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let r=e.length,a=0;for(;r>0;)a=Math.random()*r|0,r--,qc(e,r,a),qc(t,r,a)}function Ip(e,t,r){return Math.max(e,Math.min(t,r))}function RE(e){return e%2===0?e:e+1}function qc(e,t,r){let a=e[t];e[t]=e[r],e[r]=a}function FE(e){let t=0;for(let r=0;rr+` Shapes ${e} and ${t} must match`)}function Ro(e){P(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function Ao(e,t=[],r=!1){if(t==null&&(t=[]),Array.isArray(e)||wr(e)&&!r)for(let a=0;a0,r){return new Promise((a,n)=>{let s=0,i=()=>{if(e()){a();return}s++;let o=t(s);if(r!=null&&s>=r){n();return}setTimeout(i,o)};i()})}function LE(e,t){let r=1,a=-1;for(let s=0;s=0)r*=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!==r)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(r===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%r!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${r}`);let n=e.slice();return n[a]=t/r,n}function Ua(e,t){let r=t.length;return e=e==null?t.map((a,n)=>n):[].concat(e),P(e.every(a=>a>=-r&&a`All values in axis param must be in range [-${r}, ${r}) but got axis ${e}`),P(e.every(a=>du(a)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(a=>a<0?r+a:a)}function Iv(e,t){let r=[],a=[],n=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||n?null:Ua(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(r.push(e[o]),a.push(o)),s[i]<=o&&i++}e[o]!==1&&(r.push(e[o]),a.push(o))}return{newShape:r,keptDims:a}}function Sv(e,t){let r=null;if(e==null||e==="float32")r=new Float32Array(t);else if(e==="int32")r=new Int32Array(t);else if(e==="bool")r=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return r}function Tv(e,t){let r=null;if(e==null||e==="float32")r=new Float32Array(t);else if(e==="int32")r=new Int32Array(t);else if(e==="bool")r=new Uint8Array(t);else if(e==="string")r=new Array(t);else throw new Error(`Unknown data type ${e}`);return r}function Cv(e,t){for(let r=0;rt+=r.length),t}function Is(e){return typeof e=="string"||e instanceof String}function Rv(e){return typeof e=="boolean"}function Fv(e){return typeof e=="number"}function If(e){return Array.isArray(e)?If(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":Fv(e)?"float32":Is(e)?"string":Rv(e)?"bool":"float32"}function Es(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Kc(e,t){for(let r=t;r=0;--a)r[a]=r[a+1]*e[a+1];return r}function Mv(e,t,r,a=!1){let n=new Array;if(t.length===1){let s=t[0]*(a?2:1);for(let i=0;il*d)*(a?2:1);for(let l=0;ln*s)*(r?2:1);if(a===0)return[];if(a!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${r?" for a complex tensor":""}.`);return Mv(0,e,t,r)}function My(e,t){let r=Sf(e,t);for(let a=0;aa*n,1);if(t==null||t==="float32")return su(e,new Float32Array(r));if(t==="int32")return su(e,new Int32Array(r));if(t==="bool")return su(e,new Uint8Array(r));throw new Error(`Unknown data type ${t}`)}function $y(e){e.forEach(t=>{P(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function VE(e,t,r){if(t===0)return 0;if(t===1)return e[0];let a=e[e.length-1];for(let n=0;n{let[r,a]=t.split(":");this.urlFlags[r]=HE(r,a)})}};function GE(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(r,...a)=>(jE(t,a[0],a[1]),a.join("="))),t}function jE(e,t,r){e[decodeURIComponent(t)]=decodeURIComponent(r||"")}function HE(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 Y(){return hn}var hn=null;function qE(e){hn=e}var g1;function Pv(){if(g1==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");g1=e}return g1}function KE(){let e=Pv();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function Oy(e,t){let r=KE();if(r.has(e))return r.get(e);{let a=t();return r.set(e,a),r.get(e)}}var Fo="Abs",Tu="Acos",Cu="Acosh",qn="Add",js="AddN",Nu="All",Eu="Any",Hs="ArgMax",Ru="ArgMin",Fu="Asin",Mu="Asinh",$u="Atan",Pu="Atanh",Ou="Atan2",qs="AvgPool",Tf="AvgPoolGrad",Lp="AvgPool3D",Cf="AvgPool3DGrad",Ks="BatchMatMul",Mo="BatchToSpaceND",Nf="Bincount",Ov="BroadcastTo",Ef="BroadcastArgs",Xs="Cast",Zs="Ceil",Kn="ClipByValue",Bp="Complex",Wp="ComplexAbs",$o="Concat",Ys="Conv2D",Rf="Conv2DBackpropFilter",Js="Conv2DBackpropInput",Vp="Conv3D",Ff="Conv3DBackpropFilterV2",Mf="Conv3DBackpropInputV2",Qs="Cos",ei="Cosh",Po="Cumsum",Oo="CropAndResize",$f="DenseBincount",zo="DepthToSpace",ti="DepthwiseConv2dNative",Pf="DepthwiseConv2dNativeBackpropFilter",Of="DepthwiseConv2dNativeBackpropInput",zf="Diag",Up="Dilation2D",Xc="Dilation2DBackpropInput",Zc="Dilation2DBackpropFilter",ri="RealDiv",Gp="Einsum",ai="Elu",Df="EluGrad",zu="Erf",Do="Equal",ni="Exp",_o="ExpandDims",Lo="Expm1",_f="FFT",Du="Fill",Bo="FlipLeftRight",si="Floor",ii="FloorDiv",oi="FusedBatchNorm",Wo="GatherV2",Vo="GatherNd",Uo="Greater",li="GreaterEqual",ui="Identity",Lf="IFFT",jp="Imag",_u="IsFinite",Lu="IsInf",Bu="IsNan",di="LeakyRelu",Go="Less",jo="LessEqual",Bf="LinSpace",pi="Log",Wu="Log1p",Ho="LogicalAnd",Vu="LogicalNot",Hp="LogicalOr",zv="LogSoftmax",qp="LRN",Wf="LRNGrad",hi="Max",ci="Maximum",fi="MaxPool",Vf="MaxPoolGrad",Kp="MaxPool3D",Uf="MaxPool3DGrad",Gf="MaxPoolWithArgmax",mi="Mean",gi="Min",yi="Minimum",Ai="MirrorPad",Uu="Mod",jf="Multinomial",xi="Multiply",qo="Neg",Ko="NotEqual",Xo="NonMaxSuppressionV3",Gu="NonMaxSuppressionV4",Zo="NonMaxSuppressionV5",Yo="OnesLike",Jo="OneHot",Qo="Pack",bi="PadV2",XE="Pool",vi="Pow",wi="Prelu",el="Prod",ju="Range",Xp="Real",Hu="Reciprocal",ki="Relu",tl="Reshape",qu="ResizeNearestNeighbor",Hf="ResizeNearestNeighborGrad",Ii="ResizeBilinear",qf="ResizeBilinearGrad",Si="Relu6",rl="Reverse",al="Round",Ti="Rsqrt",nl="ScatterNd",sl="Select",Ku="Selu",il="Slice",Ci="Sin",ol="Sinh",Xu="Sign",Ni="Sigmoid",Zu="Softplus",Ei="Sqrt",Ri="Sum",ll="SpaceToBatchND",ul="SplitV",Fi="Softmax",Zp="SparseFillEmptyRows",Yu="SparseReshape",Yp="SparseSegmentMean",Jp="SparseSegmentSum",Qp="SparseToDense",Mi="SquaredDifference",Ju="Square",dl="StridedSlice",eh="StringNGrams",Kf="StringSplit",Xf="StringToHashBucketFast",$i="Sub",pl="Tan",Pi="Tanh",Xn="Tile",hl="TopK",cl="Transform",Oi="Transpose",Zf="Unique",fl="Unpack",th="UnsortedSegmentSum",ml="ZerosLike",zi="Step",Sp="FromPixels",gl="RotateWithOffset",Rs="_FusedMatMul",Fs="FusedConv2D",Ms="FusedDepthwiseConv2D";function ks(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.warn(...e)}function ZE(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.log(...e)}var pu=Oy("kernelRegistry",()=>new Map),Tp=Oy("gradRegistry",()=>new Map);function Yc(e,t){let r=zy(e,t);return pu.get(r)}function M1(e){return Tp.get(e)}function Tn(e){let t=pu.entries(),r=[];for(;;){let{done:a,value:n}=t.next();if(a)break;let[s,i]=n,[o]=s.split("_");o===e&&r.push(i)}return r}function Ga(e){let{kernelName:t,backendName:r}=e,a=zy(t,r);pu.has(a)&&ks(`The kernel '${t}' for backend '${r}' is already registered`),pu.set(a,e)}function Dv(e){let{kernelName:t}=e;Tp.has(t)&&Y().getBool("DEBUG")&&ks(`Overriding the gradient for '${t}'`),Tp.set(t,e)}function YE(e,t){let r=zy(e,t);if(!pu.has(r))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);pu.delete(r)}function JE(e){if(!Tp.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Tp.delete(e)}function QE(e,t){Tn(e).forEach(r=>{let a=Object.assign({},r,{backendName:t});Ga(a)})}function zy(e,t){return`${t}_${e}`}var w={};De(w,{arraysEqual:()=>Gs,assert:()=>P,assertNonNegativeIntegerDimensions:()=>$y,assertNonNull:()=>Ro,assertShapesMatch:()=>_r,bytesFromStringArray:()=>Ev,bytesPerElement:()=>F1,checkConversionForErrors:()=>Cv,clamp:()=>Ip,computeStrides:()=>Su,createScalarValue:()=>sR,createShuffledIndices:()=>DE,decodeString:()=>Jc,distSquared:()=>$E,encodeString:()=>ah,fetch:()=>oR,fingerPrint64:()=>nR,flatten:()=>Ao,getArrayFromDType:()=>Tv,getTypedArrayFromDType:()=>Sv,hasEncodingLoss:()=>BE,hexToLong:()=>rh,indexToLoc:()=>UE,inferDtype:()=>If,inferFromImplicitShape:()=>LE,isBoolean:()=>Rv,isFunction:()=>Es,isInt:()=>du,isNumber:()=>Fv,isPromise:()=>Py,isScalarShape:()=>PE,isString:()=>Is,isTypedArray:()=>wr,isValidDtype:()=>Nv,locToIndex:()=>VE,makeOnesTypedArray:()=>My,makeZerosNestedTypedArray:()=>WE,makeZerosTypedArray:()=>Sf,nearestDivisor:()=>Kc,nearestLargerEven:()=>RE,now:()=>Cp,parseAxisParam:()=>Ua,randUniform:()=>ME,repeatedTry:()=>_E,rightPad:()=>xp,shuffle:()=>kv,shuffleCombo:()=>EE,sizeFromShape:()=>Tt,sizeToSquarishShape:()=>zE,squeezeShape:()=>Iv,sum:()=>FE,swap:()=>qc,tanh:()=>OE,toNestedArray:()=>su,toTypedArray:()=>Yf});var V5=Eo(pE()),io=V5.default||V5;function rh(e){return io.fromString(e,!0,16)}var _v=rh("c3a5c85c97cb3127"),no=rh("b492b66fbe98f273"),Fr=rh("9ae16a3b2f90404f");function $1(e){return e.xor(e.shru(47))}function Lv(e,t,r){let a=e.slice(t,t+r);return io.fromBytes(Array.from(a),!0,!0)}function wt(e,t){return Lv(e,t,8)}function U5(e,t){return Lv(e,t,4)}function ur(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function Ts(e,t,r=rh("9ddfea08eb382d69")){let a=e.xor(t).mul(r);a=a.xor(a.shru(47));let n=t.xor(a).mul(r);return n=n.xor(n.shru(47)),n=n.mul(r),n}function eR(e,t,r,a,n,s){n=n.add(e),s=ur(s.add(n).add(a),21);let i=n;return n=n.add(t),n=n.add(r),s=s.add(ur(n,44)),[n.add(a),s.add(i)]}function Ic(e,t,r,a){return eR(wt(e,t),wt(e,t+8),wt(e,t+16),wt(e,t+24),r,a)}function tR(e,t=e.length){if(t>=8){let r=Fr.add(t*2),a=wt(e,0).add(Fr),n=wt(e,t-8),s=ur(n,37).mul(r).add(a),i=ur(a,25).add(n).mul(r);return Ts(s,i,r)}if(t>=4){let r=Fr.add(t*2),a=U5(e,0);return Ts(a.shl(3).add(t),U5(e,t-4),r)}if(t>0){let r=e[0],a=e[t>>1],n=e[t-1],s=r+(a<<8),i=t+(n<<2);return $1(Fr.mul(s).xor(_v.mul(i))).mul(Fr)}return Fr}function rR(e,t=e.length){let r=Fr.add(t*2),a=wt(e,0).mul(no),n=wt(e,8),s=wt(e,t-8).mul(r),i=wt(e,t-16).mul(Fr);return Ts(ur(a.add(n),43).add(ur(s,30)).add(i),a.add(ur(n.add(Fr),18)).add(s),r)}function aR(e,t=e.length){let r=Fr.add(t*2),a=wt(e,0).mul(Fr),n=wt(e,8),s=wt(e,t-8).mul(r),i=wt(e,t-16).mul(Fr),o=ur(a.add(n),43).add(ur(s,30)).add(i),l=Ts(o,a.add(ur(n.add(Fr),18)).add(s),r),d=wt(e,16).mul(r),u=wt(e,24),p=o.add(wt(e,t-32)).mul(r),h=l.add(wt(e,t-24)).mul(r);return Ts(ur(d.add(u),43).add(ur(p,30)).add(h),d.add(ur(u.add(a),18)).add(p),r)}function nR(e,t=e.length){let r=io.fromNumber(81,!0);if(t<=32)return t<=16?tR(e,t):rR(e,t);if(t<=64)return aR(e,t);let a=r,n=r.mul(no).add(113),s=$1(n.mul(Fr).add(113)).mul(Fr),i=[io.UZERO,io.UZERO],o=[io.UZERO,io.UZERO];a=a.mul(Fr).add(wt(e,0));let l=0,d=(t-1>>6)*64,u=d+(t-1&63)-63;do a=ur(a.add(n).add(i[0]).add(wt(e,l+8)),37).mul(no),n=ur(n.add(i[1]).add(wt(e,l+48)),42).mul(no),a=a.xor(o[1]),n=n.add(i[0]).add(wt(e,l+40)),s=ur(s.add(o[0]),33).mul(no),i=Ic(e,l,i[1].mul(no),a.add(o[0])),o=Ic(e,l+32,s.add(o[1]),n.add(wt(e,l+16))),[s,a]=[a,s],l+=64;while(l!==d);let p=no.add(s.and(255).shl(1));return l=u,o[0]=o[0].add(t-1&63),i[0]=i[0].add(o[0]),o[0]=o[0].add(i[0]),a=ur(a.add(n).add(i[0]).add(wt(e,l+8)),37).mul(p),n=ur(n.add(i[1]).add(wt(e,l+48)),42).mul(p),a=a.xor(o[1].mul(9)),n=n.add(i[0].mul(9).add(wt(e,l+40))),s=ur(s.add(o[0]),33).mul(p),i=Ic(e,l,i[1].mul(p),a.add(o[0])),o=Ic(e,l+32,s.add(o[1]),n.add(wt(e,l+16))),[s,a]=[a,s],Ts(Ts(i[0],o[0],p).add($1(n).mul(_v)).add(s),Ts(i[1],o[1],p).add(a),p)}function sR(e,t){return t==="string"?ah(e):Yf([e],t)}function iR(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function Yf(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Ao(e)),Y().getBool("DEBUG")&&Cv(e,t),iR(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 r=new Uint8Array(e.length);for(let a=0;a{a=r()},s,i=Cp();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(n);else{n();for(let o of a)o.dataSync();s=Promise.resolve({kernelMs:Cp()-i})}if(Y().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{uR(d,l.dtype,e)})}return{kernelName:e,outputs:a,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:r,timeMs:a,inputs:n,extraInfo:s}=e;r.forEach(i=>{Promise.all([i.data(),a,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],n,o[2])})})}};function uR(e,t,r){if(t!=="float32")return!1;for(let a=0;a0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${u} %c${d} %c${p} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function pR(e,t,r){let a={},n={};for(let l=0;la[m.id]=!0),c=!0,n[d.id]=!0;break}if(c)break}}let s={};s[r.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let d=e[l],u=d.inputs;for(let p=0;p=0;n--){let s=t[n],i=[];if(s.outputs.forEach(l=>{let d=e[l.id];d!=null?i.push(d):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 d=r(()=>o[l]());if(d.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${d.dtype}'`);let u=s.inputs[l];if(!Gs(d.shape,u.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${d.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=d;else{let p=e[u.id];e[u.id]=a(p,d),p.dispose()}}}}var G5=20,np=3,y1=7;function cR(e,t,r,a){let n=Su(t),s=fR(e,t,r,n),i=t.length,o=Oc(e,t,r,n,s),l=["Tensor"];return a&&(l.push(` dtype: ${r}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(d=>" "+d).join(` +var Human=(()=>{var kc=Object.defineProperty;var J9=Object.getOwnPropertyDescriptor;var Q9=Object.getOwnPropertyNames;var eE=Object.prototype.hasOwnProperty;var tE=(e,t,r)=>t in e?kc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var rE=e=>kc(e,"__esModule",{value:!0});var ep=(e,t)=>{for(var r in t)kc(e,r,{get:t[r],enumerable:!0})},aE=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Q9(t))!eE.call(e,n)&&(r||n!=="default")&&kc(e,n,{get:()=>t[n],enumerable:!(a=J9(t,n))||a.enumerable});return e};var nE=(e=>(t,r)=>e&&e.get(t)||(r=aE(rE({}),t,1),e&&e.set(t,r),r))(typeof WeakMap!="undefined"?new WeakMap:0);var fe=(e,t,r)=>(tE(e,typeof t!="symbol"?t+"":t,r),r),L5=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var tp=(e,t,r)=>(L5(e,t,"read from private field"),r?r.call(e):t.get(e)),rp=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},ap=(e,t,r,a)=>(L5(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);var Z2e={};ep(Z2e,{Human:()=>r9,default:()=>r9,defaults:()=>xs,env:()=>ce});function se(...e){let t=new Date,r=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(r,"Human:",...e)}function B5(e,t){let r=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${r}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var oe=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function m1(e,t,r="config",a=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")m1(e[n],t[n],n,a);else{let s=e&&typeof e[n]!="undefined";s||a.push({reason:"unknown property",where:`${r}.${n} = ${t[n]}`});let i=e&&typeof e[n]==typeof t[n];s&&!i&&a.push({reason:"property type mismatch",where:`${r}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&r==="config"&&a.length>0&&se("invalid configuration",a),a}function vr(...e){let t=r=>r&&typeof r=="object";return e.reduce((r,a)=>(Object.keys(a||{}).forEach(n=>{let s=r[n],i=a[n];Array.isArray(s)&&Array.isArray(i)?r[n]=s.concat(...i):t(s)&&t(i)?r[n]=vr(s,i):r[n]=i}),r),{})}var xs={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var We={};ep(We,{Abs:()=>Fo,Acos:()=>Tu,Acosh:()=>Cu,AdadeltaOptimizer:()=>xm,AdagradOptimizer:()=>bm,AdamOptimizer:()=>vm,AdamaxOptimizer:()=>wm,Add:()=>qn,AddN:()=>js,All:()=>Nu,Any:()=>Eu,ArgMax:()=>Hs,ArgMin:()=>Ru,Asin:()=>Fu,Asinh:()=>Mu,Atan:()=>$u,Atan2:()=>Ou,Atanh:()=>Pu,AvgPool:()=>qs,AvgPool3D:()=>Lp,AvgPool3DGrad:()=>Cf,AvgPoolGrad:()=>Tf,BackendWasm:()=>uT,BatchMatMul:()=>Ks,BatchToSpaceND:()=>Mo,Bincount:()=>Nf,BroadcastArgs:()=>Ef,BroadcastTo:()=>Ov,Callback:()=>u4,CallbackList:()=>u7,Cast:()=>Xs,Ceil:()=>Zs,ClipByValue:()=>Kn,Complex:()=>Bp,ComplexAbs:()=>Wp,Concat:()=>$o,Conv2D:()=>Ys,Conv2DBackpropFilter:()=>Rf,Conv2DBackpropInput:()=>Js,Conv3D:()=>Vp,Conv3DBackpropFilterV2:()=>Ff,Conv3DBackpropInputV2:()=>Mf,Cos:()=>Qs,Cosh:()=>ei,CropAndResize:()=>Oo,Cumsum:()=>Po,CustomCallback:()=>p7,DataStorage:()=>_p,DenseBincount:()=>$f,DepthToSpace:()=>zo,DepthwiseConv2dNative:()=>ti,DepthwiseConv2dNativeBackpropFilter:()=>Pf,DepthwiseConv2dNativeBackpropInput:()=>Of,Diag:()=>zf,Dilation2D:()=>Up,Dilation2DBackpropFilter:()=>Zc,Dilation2DBackpropInput:()=>Xc,ENV:()=>hn,EarlyStopping:()=>d4,Einsum:()=>Gp,Elu:()=>ai,EluGrad:()=>Df,Environment:()=>$v,Equal:()=>Do,Erf:()=>zu,Exp:()=>ni,ExpandDims:()=>_o,Expm1:()=>Lo,FFT:()=>_f,Fill:()=>Du,FlipLeftRight:()=>Bo,Floor:()=>si,FloorDiv:()=>ii,FromPixels:()=>Sp,FusedBatchNorm:()=>oi,FusedConv2D:()=>Fs,FusedDepthwiseConv2D:()=>Ms,GPGPUContext:()=>uu,GatherNd:()=>Vo,GatherV2:()=>Wo,GraphModel:()=>qm,Greater:()=>Uo,GreaterEqual:()=>li,History:()=>d7,IFFT:()=>Lf,Identity:()=>ui,Imag:()=>jp,InputSpec:()=>qt,IsFinite:()=>_u,IsInf:()=>Lu,IsNan:()=>Bu,KernelBackend:()=>Iu,LRN:()=>qp,LRNGrad:()=>Wf,LayerVariable:()=>s7,LayersModel:()=>jn,LeakyRelu:()=>di,Less:()=>Go,LessEqual:()=>jo,LinSpace:()=>Bf,Log:()=>pi,Log1p:()=>Wu,LogSoftmax:()=>zv,LogicalAnd:()=>Ho,LogicalNot:()=>Vu,LogicalOr:()=>Hp,MathBackendCPU:()=>fx,MathBackendWebGL:()=>Nh,Max:()=>hi,MaxPool:()=>fi,MaxPool3D:()=>Kp,MaxPool3DGrad:()=>Uf,MaxPoolGrad:()=>Vf,MaxPoolWithArgmax:()=>Gf,Maximum:()=>ci,Mean:()=>mi,Min:()=>gi,Minimum:()=>yi,MirrorPad:()=>Ai,Mod:()=>Uu,MomentumOptimizer:()=>km,Multinomial:()=>jf,Multiply:()=>xi,Neg:()=>qo,NonMaxSuppressionV3:()=>Xo,NonMaxSuppressionV4:()=>Gu,NonMaxSuppressionV5:()=>Zo,NotEqual:()=>Ko,OP_SCOPE_SUFFIX:()=>Yv,OneHot:()=>Jo,OnesLike:()=>Yo,Optimizer:()=>Jn,OptimizerConstructors:()=>vs,Pack:()=>Qo,PadV2:()=>bi,Pool:()=>XE,Pow:()=>vi,Prelu:()=>wi,Prod:()=>el,RMSPropOptimizer:()=>Im,RNN:()=>Qn,Range:()=>ju,Rank:()=>Wv,Real:()=>Xp,RealDiv:()=>ri,Reciprocal:()=>Hu,Reduction:()=>_k,Relu:()=>ki,Relu6:()=>Si,Reshape:()=>tl,ResizeBilinear:()=>Ii,ResizeBilinearGrad:()=>qf,ResizeNearestNeighbor:()=>qu,ResizeNearestNeighborGrad:()=>Hf,Reverse:()=>rl,RotateWithOffset:()=>gl,Round:()=>al,Rsqrt:()=>Ti,SGDOptimizer:()=>ch,ScatterNd:()=>nl,Select:()=>sl,Selu:()=>Ku,Sequential:()=>_m,Sigmoid:()=>Ni,Sign:()=>Xu,Sin:()=>Ci,Sinh:()=>ol,Slice:()=>il,Softmax:()=>Fi,Softplus:()=>Zu,SpaceToBatchND:()=>ll,SparseFillEmptyRows:()=>Zp,SparseReshape:()=>Yu,SparseSegmentMean:()=>Yp,SparseSegmentSum:()=>Jp,SparseToDense:()=>Qp,SplitV:()=>ul,Sqrt:()=>Ei,Square:()=>Ju,SquaredDifference:()=>Mi,Step:()=>zi,StridedSlice:()=>dl,StringNGrams:()=>eh,StringSplit:()=>Kf,StringToHashBucketFast:()=>Xf,Sub:()=>$i,Sum:()=>Ri,SymbolicTensor:()=>tn,Tan:()=>pl,Tanh:()=>Pi,Tensor:()=>et,TensorBuffer:()=>tr,Tile:()=>Xn,TopK:()=>hl,Transform:()=>cl,Transpose:()=>Oi,Unique:()=>Zf,Unpack:()=>fl,UnsortedSegmentSum:()=>th,Variable:()=>Np,ZerosLike:()=>ml,_FusedMatMul:()=>Rs,abs:()=>Qt,acos:()=>Rw,acosh:()=>Fw,add:()=>ue,addN:()=>Jf,all:()=>t2,any:()=>rf,argMax:()=>Ta,argMin:()=>Mw,asin:()=>$w,asinh:()=>Pw,atan:()=>Ow,atan2:()=>zw,atanh:()=>Dw,avgPool:()=>Qf,avgPool3d:()=>a2,backend:()=>cn,backend_util:()=>N,basicLSTMCell:()=>zM,batchNorm:()=>cu,batchNorm2d:()=>Ww,batchNorm3d:()=>Vw,batchNorm4d:()=>Uw,batchToSpaceND:()=>em,bincount:()=>n2,booleanMaskAsync:()=>KO,broadcastArgs:()=>Gw,broadcastTo:()=>bp,broadcast_util:()=>yl,browser:()=>$a,buffer:()=>Le,callbacks:()=>vG,cast:()=>me,ceil:()=>jw,clipByValue:()=>pa,clone:()=>Pr,complex:()=>$s,concat:()=>kt,concat1d:()=>Hw,concat2d:()=>td,concat3d:()=>qw,concat4d:()=>Kw,constraints:()=>Hk,conv1d:()=>s2,conv2d:()=>Os,conv2dTranspose:()=>o2,conv3d:()=>l2,conv3dTranspose:()=>Zw,copyRegisteredKernels:()=>QE,cos:()=>tm,cosh:()=>u2,cosineWindow:()=>$2,cumsum:()=>d2,customGrad:()=>Nn,data:()=>O4,denseBincount:()=>Yw,deprecationWarn:()=>Jy,depthToSpace:()=>Jw,depthwiseConv2d:()=>lh,deregisterOp:()=>IG,device_util:()=>Qu,diag:()=>h$,dilation2d:()=>Qw,disableDeprecationWarnings:()=>JF,dispose:()=>re,disposeVariables:()=>QF,div:()=>pe,divNoNan:()=>ek,dot:()=>x$,dropout:()=>Ek,einsum:()=>tk,elu:()=>uh,enableDebugMode:()=>YF,enableProdMode:()=>Yy,enclosingPowerOfTwo:()=>Rk,engine:()=>kr,env:()=>Y,equal:()=>Ca,erf:()=>rk,exp:()=>Na,expandDims:()=>Ht,expm1:()=>ak,eye:()=>p2,fft:()=>hm,fill:()=>rd,findBackend:()=>e2,findBackendFactory:()=>aM,floor:()=>dh,floorDiv:()=>ih,forceHalfFloat:()=>r8,fused:()=>_s,gather:()=>fu,gatherND:()=>Nk,gather_util:()=>Gy,getBackend:()=>ca,getGradient:()=>M1,getKernel:()=>Yc,getKernelsForBackend:()=>Tn,getThreadsCount:()=>gye,gpgpu_util:()=>$I,grad:()=>G$,grads:()=>j$,greater:()=>fa,greaterEqual:()=>xl,ifft:()=>Mp,imag:()=>rm,image:()=>Ie,inTopKAsync:()=>sz,initializers:()=>Zk,input:()=>S7,io:()=>Ir,irfft:()=>N2,isFinite:()=>P$,isInf:()=>z$,isNaN:()=>nk,keep:()=>dr,kernel_impls:()=>Ha,layers:()=>a7,leakyRelu:()=>am,less:()=>h2,lessEqual:()=>bl,linalg:()=>Lk,linspace:()=>sk,loadGraphModel:()=>Cj,loadLayersModel:()=>MV,localResponseNormalization:()=>ik,log:()=>Ea,log1p:()=>nm,logSigmoid:()=>Y$,logSoftmax:()=>c2,logSumExp:()=>pk,logicalAnd:()=>ln,logicalNot:()=>im,logicalOr:()=>g2,logicalXor:()=>uP,losses:()=>UD,matMul:()=>Ke,math:()=>pw,max:()=>hr,maxPool:()=>om,maxPool3d:()=>y2,maxPoolWithArgmax:()=>hk,maximum:()=>Zn,mean:()=>Wt,memory:()=>tf,meshgrid:()=>mP,metrics:()=>i4,min:()=>zs,minimum:()=>ph,mirrorPad:()=>ck,mod:()=>nd,model:()=>RV,models:()=>o4,moments:()=>lm,movingAverage:()=>YO,mul:()=>L,multiRNNCell:()=>kP,multinomial:()=>fk,neg:()=>zt,nextFrame:()=>Bk,norm:()=>F2,notEqual:()=>mu,oneHot:()=>Rp,ones:()=>da,onesLike:()=>Ra,op:()=>V,outerProduct:()=>NP,pad:()=>ja,pad1d:()=>FP,pad2d:()=>$P,pad3d:()=>OP,pad4d:()=>DP,pool:()=>VP,pow:()=>Ds,prelu:()=>dm,print:()=>ow,prod:()=>A2,profile:()=>eM,rand:()=>qP,randomGamma:()=>YP,randomNormal:()=>mk,randomUniform:()=>sd,range:()=>gu,ready:()=>ed,real:()=>Fp,reciprocal:()=>gk,registerBackend:()=>Al,registerCallbackConstructor:()=>$V,registerGradient:()=>Dv,registerKernel:()=>Ga,registerOp:()=>kG,regularizers:()=>l4,relu:()=>Fn,relu6:()=>v2,removeBackend:()=>rM,reshape:()=>U,reverse:()=>Fa,reverse1d:()=>iO,reverse2d:()=>lO,reverse3d:()=>dO,reverse4d:()=>hO,rfft:()=>cm,round:()=>w2,rsqrt:()=>k2,scalar:()=>Se,scatterND:()=>Ck,scatter_util:()=>jy,selu:()=>I2,separableConv2d:()=>yk,sequential:()=>FV,serialization:()=>de,setBackend:()=>Qy,setPlatform:()=>nM,setThreadsCount:()=>mye,setWasmPath:()=>fye,setWasmPaths:()=>Xx,setWebGLContext:()=>Zm,setdiff1dAsync:()=>Ak,shared:()=>Km,sigmoid:()=>Sr,sign:()=>xk,signal:()=>VD,sin:()=>S2,sinh:()=>T2,slice:()=>Oe,slice1d:()=>pm,slice2d:()=>C2,slice3d:()=>vl,slice4d:()=>wo,slice_util:()=>Ot,softmax:()=>id,softplus:()=>ad,spaceToBatchND:()=>um,sparse:()=>dp,sparseToDense:()=>M2,spectral:()=>WD,split:()=>Kt,sqrt:()=>Tr,square:()=>At,squaredDifference:()=>E2,squeeze:()=>Ye,stack:()=>nr,step:()=>hh,stridedSlice:()=>bk,string:()=>Dc,sub:()=>he,sum:()=>ke,sumOutType:()=>nh,tan:()=>vk,tanh:()=>hu,tensor:()=>pt,tensor1d:()=>St,tensor2d:()=>an,tensor3d:()=>cw,tensor4d:()=>_O,tensor5d:()=>LO,tensor6d:()=>BO,tensor_util:()=>rn,test_util:()=>Cw,tidy:()=>q,tile:()=>Wa,time:()=>tM,topk:()=>wk,train:()=>so,transpose:()=>rt,truncatedNormal:()=>fm,unique:()=>j1,unregisterGradient:()=>JE,unregisterKernel:()=>YE,unsortedSegmentSum:()=>kk,unstack:()=>ra,upcastType:()=>Or,util:()=>w,valueAndGrad:()=>H$,valueAndGrads:()=>q$,variable:()=>Ik,variableGrads:()=>ok,version:()=>Dh,version_converter:()=>Nj,version_core:()=>Zy,version_cpu:()=>fq,version_layers:()=>nA,version_wasm:()=>yye,version_webgl:()=>Dee,webgl:()=>_ee,webgl_util:()=>nI,webgpu:()=>sS,where:()=>zr,whereAsync:()=>R2,zeros:()=>Vt,zerosLike:()=>at});var sE=Object.create,wf=Object.defineProperty,iE=Object.getOwnPropertyDescriptor,vv=Object.getOwnPropertyNames,oE=Object.getPrototypeOf,lE=Object.prototype.hasOwnProperty,uE=e=>wf(e,"__esModule",{value:!0}),sr=(e,t)=>function(){return t||(0,e[vv(e)[0]])((t={exports:{}}).exports,t),t.exports},De=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enumerable:!0})},dE=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of vv(t))!lE.call(e,n)&&(r||n!=="default")&&wf(e,n,{get:()=>t[n],enumerable:!(a=iE(t,n))||a.enumerable});return e},Eo=(e,t)=>dE(uE(wf(e!=null?sE(oE(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),pE=sr({"src/node_modules/long/src/long.js"(e,t){t.exports=a;var r=null;try{r=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(I){}function a(I,D,O){this.low=I|0,this.high=D|0,this.unsigned=!!O}a.prototype.__isLong__,Object.defineProperty(a.prototype,"__isLong__",{value:!0});function n(I){return(I&&I.__isLong__)===!0}a.isLong=n;var s={},i={};function o(I,D){var O,j,X;return D?(I>>>=0,(X=0<=I&&I<256)&&(j=i[I],j)?j:(O=d(I,(I|0)<0?-1:0,!0),X&&(i[I]=O),O)):(I|=0,(X=-128<=I&&I<128)&&(j=s[I],j)?j:(O=d(I,I<0?-1:0,!1),X&&(s[I]=O),O))}a.fromInt=o;function l(I,D){if(isNaN(I))return D?b:x;if(D){if(I<0)return b;if(I>=g)return R}else{if(I<=-y)return z;if(I+1>=y)return E}return I<0?l(-I,D).neg():d(I%m|0,I/m|0,D)}a.fromNumber=l;function d(I,D,O){return new a(I,D,O)}a.fromBits=d;var u=Math.pow;function p(I,D,O){if(I.length===0)throw Error("empty string");if(I==="NaN"||I==="Infinity"||I==="+Infinity"||I==="-Infinity")return x;if(typeof D=="number"?(O=D,D=!1):D=!!D,O=O||10,O<2||360)throw Error("interior hyphen");if(j===0)return p(I.substring(1),D,O).neg();for(var X=l(u(O,8)),_=x,K=0;K>>0:this.low},M.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},M.toString=function(I){if(I=I||10,I<2||36>>0,Q=ee.toString(I);if(_=W,_.isZero())return Q+K;for(;Q.length<6;)Q="0"+Q;K=""+Q+K}},M.getHighBits=function(){return this.high},M.getHighBitsUnsigned=function(){return this.high>>>0},M.getLowBits=function(){return this.low},M.getLowBitsUnsigned=function(){return this.low>>>0},M.getNumBitsAbs=function(){if(this.isNegative())return this.eq(z)?64:this.neg().getNumBitsAbs();for(var I=this.high!=0?this.high:this.low,D=31;D>0&&(I&1<=0},M.isOdd=function(){return(this.low&1)===1},M.isEven=function(){return(this.low&1)===0},M.equals=function(I){return n(I)||(I=h(I)),this.unsigned!==I.unsigned&&this.high>>>31===1&&I.high>>>31===1?!1:this.high===I.high&&this.low===I.low},M.eq=M.equals,M.notEquals=function(I){return!this.eq(I)},M.neq=M.notEquals,M.ne=M.notEquals,M.lessThan=function(I){return this.comp(I)<0},M.lt=M.lessThan,M.lessThanOrEqual=function(I){return this.comp(I)<=0},M.lte=M.lessThanOrEqual,M.le=M.lessThanOrEqual,M.greaterThan=function(I){return this.comp(I)>0},M.gt=M.greaterThan,M.greaterThanOrEqual=function(I){return this.comp(I)>=0},M.gte=M.greaterThanOrEqual,M.ge=M.greaterThanOrEqual,M.compare=function(I){if(n(I)||(I=h(I)),this.eq(I))return 0;var D=this.isNegative(),O=I.isNegative();return D&&!O?-1:!D&&O?1:this.unsigned?I.high>>>0>this.high>>>0||I.high===this.high&&I.low>>>0>this.low>>>0?-1:1:this.sub(I).isNegative()?-1:1},M.comp=M.compare,M.negate=function(){return!this.unsigned&&this.eq(z)?z:this.not().add(v)},M.neg=M.negate,M.add=function(I){n(I)||(I=h(I));var D=this.high>>>16,O=this.high&65535,j=this.low>>>16,X=this.low&65535,_=I.high>>>16,K=I.high&65535,W=I.low>>>16,ee=I.low&65535,Q=0,ne=0,Z=0,ae=0;return ae+=X+ee,Z+=ae>>>16,ae&=65535,Z+=j+W,ne+=Z>>>16,Z&=65535,ne+=O+K,Q+=ne>>>16,ne&=65535,Q+=D+_,Q&=65535,d(Z<<16|ae,Q<<16|ne,this.unsigned)},M.subtract=function(I){return n(I)||(I=h(I)),this.add(I.neg())},M.sub=M.subtract,M.multiply=function(I){if(this.isZero())return x;if(n(I)||(I=h(I)),r){var D=r.mul(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}if(I.isZero())return x;if(this.eq(z))return I.isOdd()?z:x;if(I.eq(z))return this.isOdd()?z:x;if(this.isNegative())return I.isNegative()?this.neg().mul(I.neg()):this.neg().mul(I).neg();if(I.isNegative())return this.mul(I.neg()).neg();if(this.lt(A)&&I.lt(A))return l(this.toNumber()*I.toNumber(),this.unsigned);var O=this.high>>>16,j=this.high&65535,X=this.low>>>16,_=this.low&65535,K=I.high>>>16,W=I.high&65535,ee=I.low>>>16,Q=I.low&65535,ne=0,Z=0,ae=0,ie=0;return ie+=_*Q,ae+=ie>>>16,ie&=65535,ae+=X*Q,Z+=ae>>>16,ae&=65535,ae+=_*ee,Z+=ae>>>16,ae&=65535,Z+=j*Q,ne+=Z>>>16,Z&=65535,Z+=X*ee,ne+=Z>>>16,Z&=65535,Z+=_*W,ne+=Z>>>16,Z&=65535,ne+=O*Q+j*ee+X*W+_*K,ne&=65535,d(ae<<16|ie,ne<<16|Z,this.unsigned)},M.mul=M.multiply,M.divide=function(I){if(n(I)||(I=h(I)),I.isZero())throw Error("division by zero");if(r){if(!this.unsigned&&this.high===-2147483648&&I.low===-1&&I.high===-1)return this;var D=(this.unsigned?r.div_u:r.div_s)(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:x;var O,j,X;if(this.unsigned){if(I.unsigned||(I=I.toUnsigned()),I.gt(this))return b;if(I.gt(this.shru(1)))return C;X=b}else{if(this.eq(z)){if(I.eq(v)||I.eq(T))return z;if(I.eq(z))return v;var _=this.shr(1);return O=_.div(I).shl(1),O.eq(x)?I.isNegative()?v:T:(j=this.sub(I.mul(O)),X=O.add(j.div(I)),X)}else if(I.eq(z))return this.unsigned?b:x;if(this.isNegative())return I.isNegative()?this.neg().div(I.neg()):this.neg().div(I).neg();if(I.isNegative())return this.div(I.neg()).neg();X=x}for(j=this;j.gte(I);){O=Math.max(1,Math.floor(j.toNumber()/I.toNumber()));for(var K=Math.ceil(Math.log(O)/Math.LN2),W=K<=48?1:u(2,K-48),ee=l(O),Q=ee.mul(I);Q.isNegative()||Q.gt(j);)O-=W,ee=l(O,this.unsigned),Q=ee.mul(I);ee.isZero()&&(ee=v),X=X.add(ee),j=j.sub(Q)}return X},M.div=M.divide,M.modulo=function(I){if(n(I)||(I=h(I)),r){var D=(this.unsigned?r.rem_u:r.rem_s)(this.low,this.high,I.low,I.high);return d(D,r.get_high(),this.unsigned)}return this.sub(this.div(I).mul(I))},M.mod=M.modulo,M.rem=M.modulo,M.not=function(){return d(~this.low,~this.high,this.unsigned)},M.and=function(I){return n(I)||(I=h(I)),d(this.low&I.low,this.high&I.high,this.unsigned)},M.or=function(I){return n(I)||(I=h(I)),d(this.low|I.low,this.high|I.high,this.unsigned)},M.xor=function(I){return n(I)||(I=h(I)),d(this.low^I.low,this.high^I.high,this.unsigned)},M.shiftLeft=function(I){return n(I)&&(I=I.toInt()),(I&=63)===0?this:I<32?d(this.low<>>32-I,this.unsigned):d(0,this.low<>>I|this.high<<32-I,this.high>>I,this.unsigned):d(this.high>>I-32,this.high>=0?0:-1,this.unsigned)},M.shr=M.shiftRight,M.shiftRightUnsigned=function(I){if(n(I)&&(I=I.toInt()),I&=63,I===0)return this;var D=this.high;if(I<32){var O=this.low;return d(O>>>I|D<<32-I,D>>>I,this.unsigned)}else return I===32?d(D,0,this.unsigned):d(D>>>I-32,0,this.unsigned)},M.shru=M.shiftRightUnsigned,M.shr_u=M.shiftRightUnsigned,M.toSigned=function(){return this.unsigned?d(this.low,this.high,!1):this},M.toUnsigned=function(){return this.unsigned?this:d(this.low,this.high,!0)},M.toBytes=function(I){return I?this.toBytesLE():this.toBytesBE()},M.toBytesLE=function(){var I=this.high,D=this.low;return[D&255,D>>>8&255,D>>>16&255,D>>>24,I&255,I>>>8&255,I>>>16&255,I>>>24]},M.toBytesBE=function(){var I=this.high,D=this.low;return[I>>>24,I>>>16&255,I>>>8&255,I&255,D>>>24,D>>>16&255,D>>>8&255,D&255]},a.fromBytes=function(I,D,O){return O?a.fromBytesLE(I,D):a.fromBytesBE(I,D)},a.fromBytesLE=function(I,D){return new a(I[0]|I[1]<<8|I[2]<<16|I[3]<<24,I[4]|I[5]<<8|I[6]<<16|I[7]<<24,D)},a.fromBytesBE=function(I,D){return new a(I[4]<<24|I[5]<<16|I[6]<<8|I[7],I[0]<<24|I[1]<<16|I[2]<<8|I[3],D)}}}),hE=sr({"(disabled):src/node_modules/node-fetch/browser.js"(){}}),cE=sr({"(disabled):util"(){}}),fE=sr({"src/node_modules/seedrandom/lib/alea.js"(e,t){(function(r,a,n){function s(d){var u=this,p=l();u.next=function(){var h=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=h-(u.c=h|0)},u.c=1,u.s0=p(" "),u.s1=p(" "),u.s2=p(" "),u.s0-=p(d),u.s0<0&&(u.s0+=1),u.s1-=p(d),u.s1<0&&(u.s1+=1),u.s2-=p(d),u.s2<0&&(u.s2+=1),p=null}function i(d,u){return u.c=d.c,u.s0=d.s0,u.s1=d.s1,u.s2=d.s2,u}function o(d,u){var p=new s(d),h=u&&u.state,c=p.next;return c.int32=function(){return p.next()*4294967296|0},c.double=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.quick=c,h&&(typeof h=="object"&&i(h,p),c.state=function(){return i(p,{})}),c}function l(){var d=4022871197,u=function(p){p=String(p);for(var h=0;h>>0,c-=d,c*=d,d=c>>>0,c-=d,d+=c*4294967296}return(d>>>0)*23283064365386963e-26};return u}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),mE=sr({"src/node_modules/seedrandom/lib/xor128.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.x=0,d.y=0,d.z=0,d.w=0,d.next=function(){var h=d.x^d.x<<11;return d.x=d.y,d.y=d.z,d.z=d.w,d.w^=d.w>>>19^h^h>>>8},l===(l|0)?d.x=l:u+=l;for(var p=0;p>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),gE=sr({"src/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.next=function(){var h=d.x^d.x>>>2;return d.x=d.y,d.y=d.z,d.z=d.w,d.w=d.v,(d.d=d.d+362437|0)+(d.v=d.v^d.v<<4^(h^h<<1))|0},d.x=0,d.y=0,d.z=0,d.w=0,d.v=0,l===(l|0)?d.x=l:u+=l;for(var p=0;p>>4),d.next()}function i(l,d){return d.x=l.x,d.y=l.y,d.z=l.z,d.w=l.w,d.v=l.v,d.d=l.d,d}function o(l,d){var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),yE=sr({"src/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(r,a,n){function s(l){var d=this;d.next=function(){var p=d.x,h=d.i,c,f,m;return c=p[h],c^=c>>>7,f=c^c<<24,c=p[h+1&7],f^=c^c>>>10,c=p[h+3&7],f^=c^c>>>3,c=p[h+4&7],f^=c^c<<7,c=p[h+7&7],c=c^c<<13,f^=c^c<<9,p[h]=f,d.i=h+1&7,f};function u(p,h){var c,f,m=[];if(h===(h|0))f=m[0]=h;else for(h=""+h,c=0;c0;--c)p.next()}u(d,l)}function i(l,d){return d.x=l.x.slice(),d.i=l.i,d}function o(l,d){l==null&&(l=+new Date);var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(p.x&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),AE=sr({"src/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(r,a,n){function s(l){var d=this;d.next=function(){var p=d.w,h=d.X,c=d.i,f,m;return d.w=p=p+1640531527|0,m=h[c+34&127],f=h[c=c+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=h[c]=m^f,d.i=c,m+(p^p>>>16)|0};function u(p,h){var c,f,m,g,y,A=[],x=128;for(h===(h|0)?(f=h,h=null):(h=h+"\0",f=0,x=Math.max(x,h.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(y=y+1640531527|0,c=A[g&127]^=f+y,m=c==0?m+1:0);for(m>=128&&(A[(h&&h.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=A[m+34&127],c=A[m=m+1&127],f^=f<<13,c^=c<<17,f^=f>>>15,c^=c>>>12,A[m]=f^c;p.w=y,p.X=A,p.i=m}u(d,l)}function i(l,d){return d.i=l.i,d.w=l.w,d.X=l.X.slice(),d}function o(l,d){l==null&&(l=+new Date);var u=new s(l),p=d&&d.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(p.X&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),xE=sr({"src/node_modules/seedrandom/lib/tychei.js"(e,t){(function(r,a,n){function s(l){var d=this,u="";d.next=function(){var h=d.b,c=d.c,f=d.d,m=d.a;return h=h<<25^h>>>7^c,c=c-f|0,f=f<<24^f>>>8^m,m=m-h|0,d.b=h=h<<20^h>>>12^c,d.c=c=c-f|0,d.d=f<<16^c>>>16^m,d.a=m-h|0},d.a=0,d.b=0,d.c=-1640531527,d.d=1367130551,l===Math.floor(l)?(d.a=l/4294967296|0,d.b=l|0):u+=l;for(var p=0;p>>0)/4294967296};return h.double=function(){do var c=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(c+f)/(1<<21);while(m===0);return m},h.int32=u.next,h.quick=h,p&&(typeof p=="object"&&i(p,u),h.state=function(){return i(u,{})}),h}a&&a.exports?a.exports=o:n&&n.amd?n(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),bE=sr({"(disabled):crypto"(){}}),vE=sr({"src/node_modules/seedrandom/seedrandom.js"(e,t){(function(r,a,n){var s=256,i=6,o=52,l="random",d=n.pow(s,i),u=n.pow(2,o),p=u*2,h=s-1,c;function f(v,C,T){var E=[];C=C==!0?{entropy:!0}:C||{};var R=A(y(C.entropy?[v,b(a)]:v==null?x():v,3),E),z=new m(E),M=function(){for(var I=z.g(i),D=d,O=0;I=p;)I/=2,D/=2,O>>>=1;return(I+O)/D};return M.int32=function(){return z.g(4)|0},M.quick=function(){return z.g(4)/4294967296},M.double=M,A(b(z.S),a),(C.pass||T||function(I,D,O,j){return j&&(j.S&&g(j,z),I.state=function(){return g(z,{})}),O?(n[l]=I,D):I})(M,R,"global"in C?C.global:this==n,C.state)}function m(v){var C,T=v.length,E=this,R=0,z=E.i=E.j=0,M=E.S=[];for(T||(v=[T++]);R1&&(y=process.argv[1].replace(/\\/g,"/")),g=process.argv.slice(2),process.on("uncaughtException",function(S){if(!(S instanceof Qd))throw S}),process.on("unhandledRejection",Dn),A=function(S){process.exit(S)},u.inspect=function(){return"[Emscripten Module object]"};var X;try{X=wE()}catch(S){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),S}global.Worker=X.Worker}else C?(typeof read!="undefined"&&(z=function(S){return read(S)}),I=function(S){var F;return typeof readbuffer=="function"?new Uint8Array(readbuffer(S)):(F=read(S,"binary"),Re(typeof F=="object"),F)},typeof scriptArgs!="undefined"?g=scriptArgs:typeof arguments!="undefined"&&(g=arguments),typeof quit=="function"&&(A=function(S){quit(S)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(x||b)&&(b?E=self.location.href:typeof document!="undefined"&&document.currentScript&&(E=document.currentScript.src),typeof a!="undefined"&&a&&(E=a),E.indexOf("blob:")!==0?E=E.substr(0,E.lastIndexOf("/")+1):E="",v?(z=function(S,F){return O||(O=Hc()),j||(j=Ap()),S=j.normalize(S),O.readFileSync(S,F?null:"utf8")},I=function(S){var F=z(S,!0);return F.buffer||(F=new Uint8Array(F)),Re(F.buffer),F}):(z=function(S){var F=new XMLHttpRequest;return F.open("GET",S,!1),F.send(null),F.responseText},b&&(I=function(S){var F=new XMLHttpRequest;return F.open("GET",S,!1),F.responseType="arraybuffer",F.send(null),new Uint8Array(F.response)}),M=function(S,F,G){var J=new XMLHttpRequest;J.open("GET",S,!0),J.responseType="arraybuffer",J.onload=function(){if(J.status==200||J.status==0&&J.response){F(J.response);return}G()},J.onerror=G,J.send(null)}),D=function(S){document.title=S});v&&typeof performance=="undefined"&&(global.performance=kE().performance);var _=u.print||console.log.bind(console),K=u.printErr||console.warn.bind(console);for(m in f)f.hasOwnProperty(m)&&(u[m]=f[m]);f=null,u.arguments&&(g=u.arguments),u.thisProgram&&(y=u.thisProgram),u.quit&&(A=u.quit);function W(S){W.shown||(W.shown={}),W.shown[S]||(W.shown[S]=1,K(S))}var ee=Atomics.load,Q=Atomics.store,ne=Atomics.compareExchange,Z;u.wasmBinary&&(Z=u.wasmBinary);var ae=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Dn("no native wasm support detected");var ie,xe,be=!1,Te;function Re(S,F){S||Dn("Assertion failed: "+F)}function $e(S){var F=u["_"+S];return Re(F,"Cannot call unknown function "+S+", make sure it is exported"),F}function _e(S,F,G,J,Ae){var ge={string:function(Qr){var Kl=0;if(Qr!=null&&Qr!==0){var _5=(Qr.length<<2)+1;Kl=jl(_5),ct(Qr,Kl,_5)}return Kl},array:function(Qr){var Kl=jl(Qr.length);return Et(Qr,Kl),Kl}};function ye(Qr){return F==="string"?st(Qr):F==="boolean"?Boolean(Qr):Qr}var Ce=$e(S),ft=[],lr=0;if(J)for(var Jt=0;Jt=J);){var ge=S[F++];if(!ge)return Ae;if(!(ge&128)){Ae+=String.fromCharCode(ge);continue}var ye=S[F++]&63;if((ge&224)==192){Ae+=String.fromCharCode((ge&31)<<6|ye);continue}var Ce=S[F++]&63;if((ge&240)==224?ge=(ge&15)<<12|ye<<6|Ce:ge=(ge&7)<<18|ye<<12|Ce<<6|S[F++]&63,ge<65536)Ae+=String.fromCharCode(ge);else{var ft=ge-65536;Ae+=String.fromCharCode(55296|ft>>10,56320|ft&1023)}}return Ae}function st(S,F){return S?Ze(i(),S,F):""}function ht(S,F,G,J){if(!(J>0))return 0;for(var Ae=G,ge=G+J-1,ye=0;ye=55296&&Ce<=57343){var ft=S.charCodeAt(++ye);Ce=65536+((Ce&1023)<<10)|ft&1023}if(Ce<=127){if(G>=ge)break;F[G++]=Ce}else if(Ce<=2047){if(G+1>=ge)break;F[G++]=192|Ce>>6,F[G++]=128|Ce&63}else if(Ce<=65535){if(G+2>=ge)break;F[G++]=224|Ce>>12,F[G++]=128|Ce>>6&63,F[G++]=128|Ce&63}else{if(G+3>=ge)break;F[G++]=240|Ce>>18,F[G++]=128|Ce>>12&63,F[G++]=128|Ce>>6&63,F[G++]=128|Ce&63}}return F[G]=0,G-Ae}function ct(S,F,G){return ht(S,i(),F,G)}function yt(S){for(var F=0,G=0;G=55296&&J<=57343&&(J=65536+((J&1023)<<10)|S.charCodeAt(++G)&1023),J<=127?++F:J<=2047?F+=2:J<=65535?F+=3:F+=4}return F}function Et(S,F){s().set(S,F)}function Hr(S,F){return S%F>0&&(S+=F-S%F),S}var ut,qr,gr,Kr,za,Xr,Rr,Da,xn;function ia(S){ut=S,u.HEAP8=qr=new Int8Array(S),u.HEAP16=Kr=new Int16Array(S),u.HEAP32=Xr=new Int32Array(S),u.HEAPU8=gr=new Uint8Array(S),u.HEAPU16=za=new Uint16Array(S),u.HEAPU32=Rr=new Uint32Array(S),u.HEAPF32=Da=new Float32Array(S),u.HEAPF64=xn=new Float64Array(S)}var _l=u.INITIAL_MEMORY||16777216;if(T)ie=u.wasmMemory,ut=u.buffer;else if(u.wasmMemory)ie=u.wasmMemory;else if(ie=new WebAssembly.Memory({initial:_l/65536,maximum:32768,shared:!0}),!(ie.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"),v&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");ie&&(ut=ie.buffer),_l=ut.byteLength,ia(ut);var Zr,hs=[],va=[],Wd=[],Vd=[],zn=[],Zh=!1,U0=!1;T||va.push({func:function(){fc()}});function Yh(){if(!T){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)G0(u.preRun.shift());Ll(hs)}}function Jh(){Zh=!0,!T&&Ll(va)}function Qh(){T||Ll(Wd)}function Yr(){T||(U0=!0)}function ec(){if(!T){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)j0(u.postRun.shift());Ll(zn)}}function G0(S){hs.unshift(S)}function j0(S){zn.unshift(S)}var _a=0,Ud=null,Ji=null;function H0(S){Re(!T,"addRunDependency cannot be used in a pthread worker"),_a++,u.monitorRunDependencies&&u.monitorRunDependencies(_a)}function q0(S){if(_a--,u.monitorRunDependencies&&u.monitorRunDependencies(_a),_a==0&&(Ud!==null&&(clearInterval(Ud),Ud=null),Ji)){var F=Ji;Ji=null,F()}}u.preloadedImages={},u.preloadedAudios={};function Dn(S){u.onAbort&&u.onAbort(S),T&&console.error("Pthread aborting at "+new Error().stack),S+="",K(S),be=!0,Te=1,S="abort("+S+"). Build with -s ASSERTIONS=1 for more info.";var F=new WebAssembly.RuntimeError(S);throw h(F),F}function Qi(S,F){return String.prototype.startsWith?S.startsWith(F):S.indexOf(F)===0}var K0="data:application/octet-stream;base64,";function tc(S){return Qi(S,K0)}var X0="file://";function rc(S){return Qi(S,X0)}var Jr="tfjs-backend-wasm-threaded-simd.wasm";tc(Jr)||(Jr=R(Jr));function Z0(S){try{if(S==Jr&&Z)return new Uint8Array(Z);if(I)return I(S);throw"both async and sync fetching of the wasm failed"}catch(F){Dn(F)}}function ac(){if(!Z&&(x||b)){if(typeof fetch=="function"&&!rc(Jr))return fetch(Jr,{credentials:"same-origin"}).then(function(S){if(!S.ok)throw"failed to load wasm binary file at '"+Jr+"'";return S.arrayBuffer()}).catch(function(){return Z0(Jr)});if(M)return new Promise(function(S,F){M(Jr,function(G){S(new Uint8Array(G))},F)})}return Promise.resolve().then(function(){return Z0(Jr)})}function Y0(){var S={a:Ug};function F(ye,Ce){var ft=ye.exports;if(u.asm=ft,Zr=u.asm.nb,xe=Ce,!T){var lr=Fe.unusedWorkers.length;Fe.unusedWorkers.forEach(function(Jt){Fe.loadWasmModuleToWorker(Jt,function(){--lr||q0("wasm-instantiate")})})}}T||H0("wasm-instantiate");function G(ye){F(ye.instance,ye.module)}function J(ye){return ac().then(function(Ce){return WebAssembly.instantiate(Ce,S)}).then(ye,function(Ce){K("failed to asynchronously prepare wasm: "+Ce),Dn(Ce)})}function Ae(){return!Z&&typeof WebAssembly.instantiateStreaming=="function"&&!tc(Jr)&&!rc(Jr)&&typeof fetch=="function"?fetch(Jr,{credentials:"same-origin"}).then(function(ye){var Ce=WebAssembly.instantiateStreaming(ye,S);return Ce.then(G,function(ft){return K("wasm streaming compile failed: "+ft),K("falling back to ArrayBuffer instantiation"),J(G)})}):J(G)}if(u.instantiateWasm)try{var ge=u.instantiateWasm(S,F);return ge}catch(ye){return K("Module.instantiateWasm callback failed with error: "+ye),!1}return Ae().catch(h),{}}var nc={10216:function(){throw"Canceled!"},10234:function(S,F){setTimeout(function(){M5(S,F)},0)}};function J0(){Fe.initRuntime()}function Ll(S){for(;S.length>0;){var F=S.shift();if(typeof F=="function"){F(u);continue}var G=F.func;typeof G=="number"?F.arg===void 0?Zr.get(G)():Zr.get(G)(F.arg):G(F.arg===void 0?null:F.arg)}}var cs={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};function Gd(S,F){if(S<=0||S>s().length||S&!0||F<0)return-28;if(F==0)return 0;F>=2147483647&&(F=1/0);var G=Atomics.load(o(),Hl>>2),J=0;if(G==S){var Ae=Atomics.compareExchange(o(),Hl>>2,G,0);if(Ae==G&&(--F,J=1,F<=0))return 1}var ge=Atomics.notify(o(),S>>2,F);if(ge>=0)return ge+J;throw"Atomics.notify returned an unexpected value "+ge}u._emscripten_futex_wake=Gd;function Q0(S){if(T)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in killThread!";o()[S+12>>2]=0;var F=Fe.pthreads[S];F.worker.terminate(),Fe.freeThreadData(F),Fe.runningWorkers.splice(Fe.runningWorkers.indexOf(F.worker),1),F.worker.pthread=void 0}function eg(S){if(T)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cancelThread!";var F=Fe.pthreads[S];F.worker.postMessage({cmd:"cancel"})}function sc(S){if(T)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cleanupThread!";var F=Fe.pthreads[S];if(F){o()[S+12>>2]=0;var G=F.worker;Fe.returnWorkerToPool(G)}}var Fe={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var S=8,F=0;F>2]=S;var G=S+152;o()[G>>2]=G;for(var J=to(512),F=0;F<128;++F)l()[J/4+F]=0;Atomics.store(l(),S+100>>2,J),Atomics.store(l(),S+40>>2,S),c1(S,!b,1),R5(S)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Fe.threadExitHandlers.length>0;)Fe.threadExitHandlers.pop()();T&&ys()&&E5()},runExitHandlersAndDeinitThread:function(S,F){Atomics.store(l(),S+56>>2,1),Atomics.store(l(),S+60>>2,0),Fe.runExitHandlers(),Atomics.store(l(),S+4>>2,F),Atomics.store(l(),S+0>>2,1),Gd(S+0,2147483647),c1(0,0,0)},threadExit:function(S){var F=ys();F&&(Fe.runExitHandlersAndDeinitThread(F,S),T&&postMessage({cmd:"exit"}))},threadCancel:function(){Fe.runExitHandlersAndDeinitThread(ys(),-1),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var S in Fe.pthreads){var F=Fe.pthreads[S];F&&F.worker&&Fe.returnWorkerToPool(F.worker)}Fe.pthreads={};for(var G=0;G>2];o()[S.threadInfoStruct+100>>2]=0,Yd(F),Yd(S.threadInfoStruct)}S.threadInfoStruct=0,S.allocatedOwnStack&&S.stackBase&&Yd(S.stackBase),S.stackBase=0,S.worker&&(S.worker.pthread=null)}},returnWorkerToPool:function(S){Fe.runWithoutMainThreadQueuedCalls(function(){delete Fe.pthreads[S.pthread.threadInfoStruct],Fe.unusedWorkers.push(S),Fe.runningWorkers.splice(Fe.runningWorkers.indexOf(S),1),Fe.freeThreadData(S.pthread),S.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(S){o()[D5>>2]=0;try{S()}finally{o()[D5>>2]=1}},receiveObjectTransfer:function(S){},loadWasmModuleToWorker:function(S,F){S.onmessage=function(G){var J=G.data,Ae=J.cmd;if(S.pthread&&(Fe.currentProxiedOperationCallerThread=S.pthread.threadInfoStruct),J.targetThread&&J.targetThread!=ys()){var ge=Fe.pthreads[J.targetThread];ge?ge.worker.postMessage(G.data,J.transferList):console.error('Internal error! Worker sent a message "'+Ae+'" to target pthread '+J.targetThread+", but that thread no longer exists!"),Fe.currentProxiedOperationCallerThread=void 0;return}if(Ae==="processQueuedMainThreadWork")xc();else if(Ae==="spawnThread")hc(G.data);else if(Ae==="cleanupThread")sc(J.thread);else if(Ae==="killThread")Q0(J.thread);else if(Ae==="cancelThread")eg(J.thread);else if(Ae==="loaded")S.loaded=!0,F&&F(S),S.runPthread&&(S.runPthread(),delete S.runPthread);else if(Ae==="print")_("Thread "+J.threadId+": "+J.text);else if(Ae==="printErr")K("Thread "+J.threadId+": "+J.text);else if(Ae==="alert")alert("Thread "+J.threadId+": "+J.text);else if(Ae==="exit"){var ye=S.pthread&&Atomics.load(l(),S.pthread.threadInfoStruct+64>>2);ye&&Fe.returnWorkerToPool(S)}else if(Ae==="exitProcess")try{Z9(J.returnCode)}catch(Ce){if(Ce instanceof Qd)return;throw Ce}else Ae==="cancelDone"?Fe.returnWorkerToPool(S):Ae==="objectTransfer"?Fe.receiveObjectTransfer(G.data):G.data.target==="setimmediate"?S.postMessage(G.data):K("worker sent an unknown command "+Ae);Fe.currentProxiedOperationCallerThread=void 0},S.onerror=function(G){K("pthread sent an error! "+G.filename+":"+G.lineno+": "+G.message)},v&&(S.on("message",function(G){S.onmessage({data:G})}),S.on("error",function(G){S.onerror(G)}),S.on("exit",function(G){})),S.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||a,wasmMemory:ie,wasmModule:xe})},allocateUnusedWorker:function(){var S=R("tfjs-backend-wasm-threaded-simd.worker.js");Fe.unusedWorkers.push(new Worker(S))},getNewWorker:function(){return Fe.unusedWorkers.length==0&&(Fe.allocateUnusedWorker(),Fe.loadWasmModuleToWorker(Fe.unusedWorkers[0])),Fe.unusedWorkers.length>0?Fe.unusedWorkers.pop():null},busySpinWait:function(S){for(var F=performance.now()+S;performance.now()>2]=S,S}function og(S,F){if(T)return fs(1,1,S,F)}function lg(S,F){if(S==F)postMessage({cmd:"processQueuedMainThreadWork"});else if(T)postMessage({targetThread:S,cmd:"processThreadQueue"});else{var G=Fe.pthreads[S],J=G&&G.worker;if(!J)return;J.postMessage({cmd:"processThreadQueue"})}return 1}function ug(){Dn()}function dg(S,F,G){var J=fg(F,G);return nc[S].apply(null,J)}function pg(S,F){}function ic(S,F,G){if(S<=0||S>s().length||S&!0)return-28;if(x){if(Atomics.load(o(),S>>2)!=F)return-6;for(var J=performance.now(),Ae=J+G,ge=Atomics.exchange(o(),Hl>>2,S);;){if(J=performance.now(),J>Ae)return ge=Atomics.exchange(o(),Hl>>2,0),-73;if(ge=Atomics.exchange(o(),Hl>>2,0),ge==0)break;if(xc(),Atomics.load(o(),S>>2)!=F)return-6;ge=Atomics.exchange(o(),Hl>>2,S)}return 0}else{var ye=Atomics.wait(o(),S>>2,F,G);if(ye==="timed-out")return-73;if(ye==="not-equal")return-6;if(ye==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ye}}function hg(S,F,G){i().copyWithin(S,F,F+G)}function cg(){return v?IE().cpus().length:navigator.hardwareConcurrency}function fs(S,F){for(var G=arguments.length-2,J=Jd(),Ae=G,ge=jl(Ae*8),ye=ge>>3,Ce=0;Ce>=2;G=i()[S++];){var J=G<105;J&&F&1&&F++,Hd.push(J?d()[F++>>1]:o()[F]),++F}return Hd}function mg(S,F,G){jd.length=F;for(var J=G>>3,Ae=0;Ae>>16),ia(ie.buffer),1}catch(F){}}function Ag(S){var F=gg();if(S<=F)return!1;var G=2147483648;if(S>G)return!1;for(var J=1;J<=4;J*=2){var Ae=F*(1+.2/J);Ae=Math.min(Ae,S+100663296);var ge=Math.min(G,Hr(Math.max(S,Ae),65536)),ye=yg(ge);if(ye)return!0}return!1}var je={inEventHandler:0,removeAllEventListeners:function(){for(var S=je.eventHandlers.length-1;S>=0;--S)je._removeHandler(S);je.eventHandlers=[],je.deferredCalls=[]},registerRemoveEventListeners:function(){je.removeEventListenersRegistered||(Vd.push(je.removeAllEventListeners),je.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(S,F,G){function J(ye,Ce){if(ye.length!=Ce.length)return!1;for(var ft in ye)if(ye[ft]!=Ce[ft])return!1;return!0}for(var Ae in je.deferredCalls){var ge=je.deferredCalls[Ae];if(ge.targetFunction==S&&J(ge.argsList,G))return}je.deferredCalls.push({targetFunction:S,precedence:F,argsList:G}),je.deferredCalls.sort(function(ye,Ce){return ye.precedence>2]=G,o()[ye+4>>2]=J,o()[ye+8>>2]=Ae,h1(0,S,637534208,F,J,ye),Gl(ge)},getTargetThreadForEventCallback:function(S){switch(S){case 1:return 0;case 2:return Fe.currentProxiedOperationCallerThread;default:return S}},getNodeNameForTarget:function(S){return S?S==window?"#window":S==screen?"#screen":S&&S.nodeName?S.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function xg(S){var F=yt(S)+1,G=to(F);return ct(S,G,F),G}function bg(S,F,G,J){var Ae=Jd(),ge=jl(12),ye=0;F&&(ye=xg(F)),o()[ge>>2]=ye,o()[ge+4>>2]=G,o()[ge+8>>2]=J,h1(0,S,657457152,0,ye,ge),Gl(Ae)}function vg(S,F,G,J){F=F?st(F):"",bg(S,F,G,J)}function wg(S){return S>2?st(S):S}var kg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Ig(S){S=wg(S);var F=kg[S]||(typeof document!="undefined"?document.querySelector(S):void 0);return F}function qd(S){return Ig(S)}function oc(S,F,G){var J=qd(S);if(!J)return-4;if(J.canvasSharedPtr&&(o()[J.canvasSharedPtr>>2]=F,o()[J.canvasSharedPtr+4>>2]=G),J.offscreenCanvas||!J.controlTransferredOffscreen){J.offscreenCanvas&&(J=J.offscreenCanvas);var Ae=!1;if(J.GLctxObject&&J.GLctxObject.GLctx){var ge=J.GLctxObject.GLctx.getParameter(2978);Ae=ge[0]===0&&ge[1]===0&&ge[2]===J.width&&ge[3]===J.height}J.width=F,J.height=G,Ae&&J.GLctxObject.GLctx.viewport(0,0,F,G)}else if(J.canvasSharedPtr){var ye=o()[J.canvasSharedPtr+8>>2];return vg(ye,S,F,G),1}else return-4;return 0}function lc(S,F,G){return T?fs(2,1,S,F,G):oc(S,F,G)}function Sg(S,F,G){var J=qd(S);return J?oc(S,F,G):lc(S,F,G)}function Tg(S){}function Cg(S,F){}function Ng(S){var F=S.getExtension("ANGLE_instanced_arrays");if(F)return S.vertexAttribDivisor=function(G,J){F.vertexAttribDivisorANGLE(G,J)},S.drawArraysInstanced=function(G,J,Ae,ge){F.drawArraysInstancedANGLE(G,J,Ae,ge)},S.drawElementsInstanced=function(G,J,Ae,ge,ye){F.drawElementsInstancedANGLE(G,J,Ae,ge,ye)},1}function Eg(S){var F=S.getExtension("OES_vertex_array_object");if(F)return S.createVertexArray=function(){return F.createVertexArrayOES()},S.deleteVertexArray=function(G){F.deleteVertexArrayOES(G)},S.bindVertexArray=function(G){F.bindVertexArrayOES(G)},S.isVertexArray=function(G){return F.isVertexArrayOES(G)},1}function Rg(S){var F=S.getExtension("WEBGL_draw_buffers");if(F)return S.drawBuffers=function(G,J){F.drawBuffersWEBGL(G,J)},1}function Fg(S){return!!(S.multiDrawWebgl=S.getExtension("WEBGL_multi_draw"))}var dt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(S){dt.lastError||(dt.lastError=S)},getNewId:function(S){for(var F=dt.counter++,G=S.length;G>2]:-1;Ae+=st(o()[G+ge*4>>2],ye<0?void 0:ye)}return Ae},createContext:function(S,F){var G=S.getContext("webgl",F);if(!G)return 0;var J=dt.registerContext(G,F);return J},registerContext:function(S,F){var G=to(8);o()[G+4>>2]=ys();var J={handle:G,attributes:F,version:F.majorVersion,GLctx:S};return S.canvas&&(S.canvas.GLctxObject=J),dt.contexts[G]=J,(typeof F.enableExtensionsByDefault=="undefined"||F.enableExtensionsByDefault)&&dt.initExtensions(J),G},makeContextCurrent:function(S){return dt.currentContext=dt.contexts[S],u.ctx=ms=dt.currentContext&&dt.currentContext.GLctx,!(S&&!ms)},getContext:function(S){return dt.contexts[S]},deleteContext:function(S){dt.currentContext===dt.contexts[S]&&(dt.currentContext=null),typeof je=="object"&&je.removeAllHandlersOnTarget(dt.contexts[S].GLctx.canvas),dt.contexts[S]&&dt.contexts[S].GLctx.canvas&&(dt.contexts[S].GLctx.canvas.GLctxObject=void 0),Yd(dt.contexts[S].handle),dt.contexts[S]=null},initExtensions:function(S){if(S||(S=dt.currentContext),!S.initExtensionsDone){S.initExtensionsDone=!0;var F=S.GLctx;Ng(F),Eg(F),Rg(F),F.disjointTimerQueryExt=F.getExtension("EXT_disjoint_timer_query"),Fg(F);var G=F.getSupportedExtensions()||[];G.forEach(function(J){J.indexOf("lose_context")<0&&J.indexOf("debug")<0&&F.getExtension(J)})}},populateUniformTable:function(S){for(var F=dt.programs[S],G=dt.programInfos[S]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},J=G.uniforms,Ae=ms.getProgramParameter(F,35718),ge=0;ge>2,J=o()[G+6],Ae={alpha:!!o()[G+0],depth:!!o()[G+1],stencil:!!o()[G+2],antialias:!!o()[G+3],premultipliedAlpha:!!o()[G+4],preserveDrawingBuffer:!!o()[G+5],powerPreference:Mg[J],failIfMajorPerformanceCaveat:!!o()[G+7],majorVersion:o()[G+8],minorVersion:o()[G+9],enableExtensionsByDefault:o()[G+10],explicitSwapControl:o()[G+11],proxyContextToMainThread:o()[G+12],renderViaOffscreenBackBuffer:o()[G+13]},ge=qd(S);if(!ge||Ae.explicitSwapControl)return 0;var ye=dt.createContext(ge,Ae);return ye}function Pg(S,F){return $g(S,F)}var Bl={mappings:{},buffers:[null,[],[]],printChar:function(S,F){var G=Bl.buffers[S];F===0||F===10?((S===1?_:K)(Ze(G,0)),G.length=0):G.push(F)},varargs:void 0,get:function(){Bl.varargs+=4;var S=o()[Bl.varargs-4>>2];return S},getStr:function(S){var F=st(S);return F},get64:function(S,F){return S}};function uc(S){return T?fs(3,1,S):0}function dc(S,F,G,J,Ae){if(T)return fs(4,1,S,F,G,J,Ae)}function pc(S,F,G,J){if(T)return fs(5,1,S,F,G,J);for(var Ae=0,ge=0;ge>2],Ce=o()[F+(ge*8+4)>>2],ft=0;ft>2]=Ae,0}function Og(S){var F=Fe.threadExitHandlers.pop();S&&F()}function zg(S,F){Fe.threadExitHandlers.push(function(){Zr.get(S)(F)})}function hc(S){if(T)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var F=Fe.getNewWorker();if(F.pthread!==void 0)throw"Internal error!";if(!S.pthread_ptr)throw"Internal error, no pthread ptr!";Fe.runningWorkers.push(F);for(var G=to(512),J=0;J<128;++J)o()[G+J*4>>2]=0;var Ae=S.stackBase+S.stackSize,ge=Fe.pthreads[S.pthread_ptr]={worker:F,stackBase:S.stackBase,stackSize:S.stackSize,allocatedOwnStack:S.allocatedOwnStack,threadInfoStruct:S.pthread_ptr},ye=ge.threadInfoStruct>>2;Atomics.store(l(),ye+16,S.detached),Atomics.store(l(),ye+25,G),Atomics.store(l(),ye+10,ge.threadInfoStruct),Atomics.store(l(),ye+20,S.stackSize),Atomics.store(l(),ye+19,Ae),Atomics.store(l(),ye+26,S.stackSize),Atomics.store(l(),ye+28,Ae),Atomics.store(l(),ye+29,S.detached);var Ce=N5(),ft=Ce+40;Atomics.store(l(),ye+43,ft),F.pthread=ge;var lr={cmd:"run",start_routine:S.startRoutine,arg:S.arg,threadInfoStruct:S.pthread_ptr,stackBase:S.stackBase,stackSize:S.stackSize};F.runPthread=function(){lr.time=performance.now(),F.postMessage(lr,S.transferList)},F.loaded&&(F.runPthread(),delete F.runPthread)}function Dg(S,F,G,J){if(typeof SharedArrayBuffer=="undefined")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!S)return K("pthread_create called with a null thread pointer!"),28;var Ae=[],ge=0;if(T&&(Ae.length===0||ge))return $5(687865856,S,F,G,J);if(ge)return ge;var ye=0,Ce=0,ft=0;F&&F!=-1?(ye=o()[F>>2],ye+=81920,Ce=o()[F+8>>2],ft=o()[F+12>>2]!==0):ye=2097152;var lr=Ce==0;lr?Ce=z5(16,ye):(Ce-=ye,Re(Ce>0));for(var Jt=to(228),As=0;As<57;++As)l()[(Jt>>2)+As]=0;o()[S>>2]=Jt,o()[Jt+12>>2]=Jt;var ql=Jt+152;o()[ql>>2]=ql;var Qr={stackBase:Ce,stackSize:ye,allocatedOwnStack:lr,detached:ft,startRoutine:G,pthread_ptr:Jt,arg:J,transferList:Ae};return T?(Qr.cmd="spawnThread",postMessage(Qr,Ae)):hc(Qr),0}function _g(){if(T){var S=ys();if(S){var F=Atomics.load(l(),S+56>>2);if(!F){var G=Atomics.load(l(),S+0>>2);if(G==2)throw"Canceled!"}}}}function Lg(){v||b||W("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function Bg(S,F,G){if(!S)return K("pthread_join attempted on a null thread pointer!"),cs.ESRCH;if(T&&ys()==S)return K("PThread "+S+" is attempting to join to itself!"),cs.EDEADLK;if(!T&&F5()==S)return K("Main thread "+S+" is attempting to join to itself!"),cs.EDEADLK;var J=o()[S+12>>2];if(J!==S)return K("pthread_join attempted on thread "+S+", which does not point to a valid thread, or does not exist anymore!"),cs.ESRCH;var Ae=Atomics.load(l(),S+64>>2);if(Ae)return K("Attempted to join thread "+S+", which was already detached!"),cs.EINVAL;for(G&&Lg();;){var ge=Atomics.load(l(),S+0>>2);if(ge==1){var ye=Atomics.load(l(),S+4>>2);return F&&(o()[F>>2]=ye),Atomics.store(l(),S+64>>2,1),T?postMessage({cmd:"cleanupThread",thread:S}):sc(S),0}if(!G)return cs.EBUSY;_g(),T||xc(),ic(S+0,ge,T?100:1)}}function Wg(S,F){return Bg(S,F,!0)}function cc(S){if(T)return fs(6,1,S);switch(S){case 30:return 16384;case 85:var F=2147483648;return F/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 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46: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:case 80:case 81:case 79: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 ig(28),-1}T||Fe.initMainThreadBlock();var ms,Vg=[null,og,lc,uc,dc,pc,cc],Ug={e:ng,r:sg,x:lg,b:ug,y:dg,j:pg,d:ic,c:Gd,f:eo,p:hg,A:cg,u:mg,q:Ag,v:Sg,i:Tg,s:Cg,w:Pg,l:uc,n:dc,g:pc,o:J0,a:ie||u.wasmMemory,z:Og,k:zg,h:Dg,m:Wg,t:cc},T5=Y0(),fc=u.___wasm_call_ctors=function(){return(fc=u.___wasm_call_ctors=u.asm.B).apply(null,arguments)},Gg=u._init=function(){return(Gg=u._init=u.asm.C).apply(null,arguments)},jg=u._init_with_threads_count=function(){return(jg=u._init_with_threads_count=u.asm.D).apply(null,arguments)},Hg=u._get_threads_count=function(){return(Hg=u._get_threads_count=u.asm.E).apply(null,arguments)},qg=u._register_tensor=function(){return(qg=u._register_tensor=u.asm.F).apply(null,arguments)},Kg=u._dispose_data=function(){return(Kg=u._dispose_data=u.asm.G).apply(null,arguments)},Xg=u._dispose=function(){return(Xg=u._dispose=u.asm.H).apply(null,arguments)},Zg=u._Abs=function(){return(Zg=u._Abs=u.asm.I).apply(null,arguments)},Yg=u._Add=function(){return(Yg=u._Add=u.asm.J).apply(null,arguments)},Jg=u._AddN=function(){return(Jg=u._AddN=u.asm.K).apply(null,arguments)},Qg=u._All=function(){return(Qg=u._All=u.asm.L).apply(null,arguments)},e1=u._Any=function(){return(e1=u._Any=u.asm.M).apply(null,arguments)},t1=u._ArgMax=function(){return(t1=u._ArgMax=u.asm.N).apply(null,arguments)},r1=u._AvgPool=function(){return(r1=u._AvgPool=u.asm.O).apply(null,arguments)},a1=u._BatchMatMul=function(){return(a1=u._BatchMatMul=u.asm.P).apply(null,arguments)},n1=u._Ceil=function(){return(n1=u._Ceil=u.asm.Q).apply(null,arguments)},s1=u._ClipByValue=function(){return(s1=u._ClipByValue=u.asm.R).apply(null,arguments)},i1=u._Conv2D=function(){return(i1=u._Conv2D=u.asm.S).apply(null,arguments)},o1=u._Conv2DBackpropInput=function(){return(o1=u._Conv2DBackpropInput=u.asm.T).apply(null,arguments)},l1=u._Cos=function(){return(l1=u._Cos=u.asm.U).apply(null,arguments)},u1=u._Cosh=function(){return(u1=u._Cosh=u.asm.V).apply(null,arguments)},mc=u._CropAndResize=function(){return(mc=u._CropAndResize=u.asm.W).apply(null,arguments)},gc=u._Cumsum=function(){return(gc=u._Cumsum=u.asm.X).apply(null,arguments)},Kd=u._DepthToSpace=function(){return(Kd=u._DepthToSpace=u.asm.Y).apply(null,arguments)},Wl=u._DepthwiseConv2dNative=function(){return(Wl=u._DepthwiseConv2dNative=u.asm.Z).apply(null,arguments)},d1=u._Elu=function(){return(d1=u._Elu=u.asm._).apply(null,arguments)},Xd=u._Equal=function(){return(Xd=u._Equal=u.asm.$).apply(null,arguments)},Vl=u._Exp=function(){return(Vl=u._Exp=u.asm.aa).apply(null,arguments)},Ul=u._FlipLeftRight=function(){return(Ul=u._FlipLeftRight=u.asm.ba).apply(null,arguments)},p1=u._Floor=function(){return(p1=u._Floor=u.asm.ca).apply(null,arguments)},te=u._FloorDiv=function(){return(te=u._FloorDiv=u.asm.da).apply(null,arguments)},le=u._FusedBatchNorm=function(){return(le=u._FusedBatchNorm=u.asm.ea).apply(null,arguments)},Me=u._FusedConv2D=function(){return(Me=u._FusedConv2D=u.asm.fa).apply(null,arguments)},ot=u._FusedDepthwiseConv2D=function(){return(ot=u._FusedDepthwiseConv2D=u.asm.ga).apply(null,arguments)},Lt=u._Gather=function(){return(Lt=u._Gather=u.asm.ha).apply(null,arguments)},Rt=u._GatherNd=function(){return(Rt=u._GatherNd=u.asm.ia).apply(null,arguments)},Qe=u._Greater=function(){return(Qe=u._Greater=u.asm.ja).apply(null,arguments)},tt=u._GreaterEqual=function(){return(tt=u._GreaterEqual=u.asm.ka).apply(null,arguments)},yr=u._LeakyRelu=function(){return(yr=u._LeakyRelu=u.asm.la).apply(null,arguments)},_n=u._Less=function(){return(_n=u._Less=u.asm.ma).apply(null,arguments)},Ln=u._LessEqual=function(){return(Ln=u._LessEqual=u.asm.na).apply(null,arguments)},yc=u._Log=function(){return(yc=u._Log=u.asm.oa).apply(null,arguments)},Zd=u._LogicalAnd=function(){return(Zd=u._LogicalAnd=u.asm.pa).apply(null,arguments)},wa=u._Max=function(){return(wa=u._Max=u.asm.qa).apply(null,arguments)},gs=u._MaxPool=function(){return(gs=u._MaxPool=u.asm.ra).apply(null,arguments)},Ac=u._Maximum=function(){return(Ac=u._Maximum=u.asm.sa).apply(null,arguments)},a9=u._Mean=function(){return(a9=u._Mean=u.asm.ta).apply(null,arguments)},n9=u._Min=function(){return(n9=u._Min=u.asm.ua).apply(null,arguments)},s9=u._Minimum=function(){return(s9=u._Minimum=u.asm.va).apply(null,arguments)},i9=u._MirrorPad=function(){return(i9=u._MirrorPad=u.asm.wa).apply(null,arguments)},o9=u._Multiply=function(){return(o9=u._Multiply=u.asm.xa).apply(null,arguments)},l9=u._Neg=function(){return(l9=u._Neg=u.asm.ya).apply(null,arguments)},u9=u._NonMaxSuppressionV3=function(){return(u9=u._NonMaxSuppressionV3=u.asm.za).apply(null,arguments)},d9=u._NonMaxSuppressionV4=function(){return(d9=u._NonMaxSuppressionV4=u.asm.Aa).apply(null,arguments)},p9=u._NonMaxSuppressionV5=function(){return(p9=u._NonMaxSuppressionV5=u.asm.Ba).apply(null,arguments)},h9=u._NotEqual=function(){return(h9=u._NotEqual=u.asm.Ca).apply(null,arguments)},c9=u._OneHot=function(){return(c9=u._OneHot=u.asm.Da).apply(null,arguments)},f9=u._PadV2=function(){return(f9=u._PadV2=u.asm.Ea).apply(null,arguments)},m9=u._Pow=function(){return(m9=u._Pow=u.asm.Fa).apply(null,arguments)},g9=u._Prelu=function(){return(g9=u._Prelu=u.asm.Ga).apply(null,arguments)},y9=u._Prod=function(){return(y9=u._Prod=u.asm.Ha).apply(null,arguments)},A9=u._RealDiv=function(){return(A9=u._RealDiv=u.asm.Ia).apply(null,arguments)},x9=u._Relu=function(){return(x9=u._Relu=u.asm.Ja).apply(null,arguments)},b9=u._Relu6=function(){return(b9=u._Relu6=u.asm.Ka).apply(null,arguments)},v9=u._ResizeBilinear=function(){return(v9=u._ResizeBilinear=u.asm.La).apply(null,arguments)},w9=u._Reverse=function(){return(w9=u._Reverse=u.asm.Ma).apply(null,arguments)},k9=u._RotateWithOffset=function(){return(k9=u._RotateWithOffset=u.asm.Na).apply(null,arguments)},I9=u._Round=function(){return(I9=u._Round=u.asm.Oa).apply(null,arguments)},S9=u._Rsqrt=function(){return(S9=u._Rsqrt=u.asm.Pa).apply(null,arguments)},T9=u._ScatterNd=function(){return(T9=u._ScatterNd=u.asm.Qa).apply(null,arguments)},C9=u._SelectV2=function(){return(C9=u._SelectV2=u.asm.Ra).apply(null,arguments)},N9=u._Sigmoid=function(){return(N9=u._Sigmoid=u.asm.Sa).apply(null,arguments)},E9=u._Sin=function(){return(E9=u._Sin=u.asm.Ta).apply(null,arguments)},R9=u._Softmax=function(){return(R9=u._Softmax=u.asm.Ua).apply(null,arguments)},F9=u._SparseFillEmptyRows=function(){return(F9=u._SparseFillEmptyRows=u.asm.Va).apply(null,arguments)},M9=u._SparseReshape=function(){return(M9=u._SparseReshape=u.asm.Wa).apply(null,arguments)},$9=u._SparseSegmentReduction=function(){return($9=u._SparseSegmentReduction=u.asm.Xa).apply(null,arguments)},P9=u._Sqrt=function(){return(P9=u._Sqrt=u.asm.Ya).apply(null,arguments)},O9=u._Square=function(){return(O9=u._Square=u.asm.Za).apply(null,arguments)},z9=u._SquaredDifference=function(){return(z9=u._SquaredDifference=u.asm._a).apply(null,arguments)},D9=u._Step=function(){return(D9=u._Step=u.asm.$a).apply(null,arguments)},_9=u._StridedSlice=function(){return(_9=u._StridedSlice=u.asm.ab).apply(null,arguments)},L9=u._Sub=function(){return(L9=u._Sub=u.asm.bb).apply(null,arguments)},B9=u._Sum=function(){return(B9=u._Sum=u.asm.cb).apply(null,arguments)},W9=u._Tan=function(){return(W9=u._Tan=u.asm.db).apply(null,arguments)},V9=u._Tanh=function(){return(V9=u._Tanh=u.asm.eb).apply(null,arguments)},U9=u._Tile=function(){return(U9=u._Tile=u.asm.fb).apply(null,arguments)},G9=u._TopK=function(){return(G9=u._TopK=u.asm.gb).apply(null,arguments)},j9=u._Transform=function(){return(j9=u._Transform=u.asm.hb).apply(null,arguments)},H9=u._Transpose=function(){return(H9=u._Transpose=u.asm.ib).apply(null,arguments)},q9=u.__FusedMatMul=function(){return(q9=u.__FusedMatMul=u.asm.jb).apply(null,arguments)},to=u._malloc=function(){return(to=u._malloc=u.asm.kb).apply(null,arguments)},Yd=u._free=function(){return(Yd=u._free=u.asm.lb).apply(null,arguments)},C5=u.___errno_location=function(){return(C5=u.___errno_location=u.asm.mb).apply(null,arguments)},N5=u._emscripten_get_global_libc=function(){return(N5=u._emscripten_get_global_libc=u.asm.ob).apply(null,arguments)},ys=u._pthread_self=function(){return(ys=u._pthread_self=u.asm.pb).apply(null,arguments)},E5=u.___pthread_tsd_run_dtors=function(){return(E5=u.___pthread_tsd_run_dtors=u.asm.qb).apply(null,arguments)},xc=u._emscripten_main_thread_process_queued_calls=function(){return(xc=u._emscripten_main_thread_process_queued_calls=u.asm.rb).apply(null,arguments)},K9=u._emscripten_current_thread_process_queued_calls=function(){return(K9=u._emscripten_current_thread_process_queued_calls=u.asm.sb).apply(null,arguments)},R5=u._emscripten_register_main_browser_thread_id=function(){return(R5=u._emscripten_register_main_browser_thread_id=u.asm.tb).apply(null,arguments)},F5=u._emscripten_main_browser_thread_id=function(){return(F5=u._emscripten_main_browser_thread_id=u.asm.ub).apply(null,arguments)},M5=u.__emscripten_do_dispatch_to_thread=function(){return(M5=u.__emscripten_do_dispatch_to_thread=u.asm.vb).apply(null,arguments)},$5=u._emscripten_sync_run_in_main_thread_4=function(){return($5=u._emscripten_sync_run_in_main_thread_4=u.asm.wb).apply(null,arguments)},P5=u._emscripten_run_in_main_runtime_thread_js=function(){return(P5=u._emscripten_run_in_main_runtime_thread_js=u.asm.xb).apply(null,arguments)},h1=u.__emscripten_call_on_thread=function(){return(h1=u.__emscripten_call_on_thread=u.asm.yb).apply(null,arguments)},X9=u._emscripten_tls_init=function(){return(X9=u._emscripten_tls_init=u.asm.zb).apply(null,arguments)},c1=u.__emscripten_thread_init=function(){return(c1=u.__emscripten_thread_init=u.asm.Ab).apply(null,arguments)},Jd=u.stackSave=function(){return(Jd=u.stackSave=u.asm.Bb).apply(null,arguments)},Gl=u.stackRestore=function(){return(Gl=u.stackRestore=u.asm.Cb).apply(null,arguments)},jl=u.stackAlloc=function(){return(jl=u.stackAlloc=u.asm.Db).apply(null,arguments)},O5=u._emscripten_stack_set_limits=function(){return(O5=u._emscripten_stack_set_limits=u.asm.Eb).apply(null,arguments)},z5=u._memalign=function(){return(z5=u._memalign=u.asm.Fb).apply(null,arguments)},D5=u.__emscripten_allow_main_runtime_queued_calls=10208,Hl=u.__emscripten_main_thread_futex=10412;u.cwrap=qe,u.PThread=Fe,u.PThread=Fe,u.wasmMemory=ie,u.ExitStatus=Qd;var bc;function Qd(S){this.name="ExitStatus",this.message="Program terminated with exit("+S+")",this.status=S}Ji=function S(){bc||f1(),bc||(Ji=S)};function f1(S){if(S=S||g,_a>0)return;if(T){p(u),Jh(),postMessage({cmd:"loaded"});return}if(Yh(),_a>0)return;function F(){bc||(bc=!0,u.calledRun=!0,!be&&(Jh(),Qh(),p(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),ec()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),F()},1)):F()}u.run=f1;function Z9(S,F){if(!(F&&ae&&S===0)){if(!F&&T)throw postMessage({cmd:"exitProcess",returnCode:S}),new Qd(S);ae||(Fe.terminateAllThreads(),Te=S,Yr(),u.onExit&&u.onExit(S),be=!0),A(S,new Qd(S))}}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();T&&(ae=!1,Fe.initWorker()),f1();var vc;c&&(vc={uncaughtException:process.listeners("uncaughtException").filter(function(S){return!c.uncaughtException.indexOf(S)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(S){return!c.unhandledRejection.indexOf(S)>-1})});var wc;if(typeof WasmBackendModule!="undefined")wc=WasmBackendModule;else if(typeof n!="undefined")wc=n;else throw new Error("Could not find wasm module in post.js");if(vc){var Y9=wc._dispose;wc._dispose=function(){Y9(),vc.uncaughtException.forEach(function(S){process.removeListener("uncaughtException",S)}),vc.unhandledRejection.forEach(function(S){process.removeListener("unhandledRejection",S)})}}return n.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=r)}}),TE=sr({"src/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var r=function(){var a=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(a=a||__filename),function(n){n=n||{};var s=typeof n!="undefined"?n:{},i,o;s.ready=new Promise(function(te,le){i=te,o=le});var l;typeof process!="undefined"&&process.listeners&&(l={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var d={},u;for(u in s)s.hasOwnProperty(u)&&(d[u]=s[u]);var p=[],h="./this.program",c=function(te,le){throw le},f=!1,m=!1,g=!1,y=!1;f=typeof window=="object",m=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!f&&!g&&!m;var A="";function x(te){return s.locateFile?s.locateFile(te,A):A+te}var b,v,C,T,E,R;g?(m?A=Ap().dirname(A)+"/":A=__dirname+"/",b=function(te,le){return E||(E=Hc()),R||(R=Ap()),te=R.normalize(te),E.readFileSync(te,le?null:"utf8")},C=function(te){var le=b(te,!0);return le.buffer||(le=new Uint8Array(le)),_(le.buffer),le},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),p=process.argv.slice(2),process.on("uncaughtException",function(te){if(!(te instanceof d1))throw te}),process.on("unhandledRejection",zn),c=function(te){process.exit(te)},s.inspect=function(){return"[Emscripten Module object]"}):y?(typeof read!="undefined"&&(b=function(te){return read(te)}),C=function(te){var le;return typeof readbuffer=="function"?new Uint8Array(readbuffer(te)):(le=read(te,"binary"),_(typeof le=="object"),le)},typeof scriptArgs!="undefined"?p=scriptArgs:typeof arguments!="undefined"&&(p=arguments),typeof quit=="function"&&(c=function(te){quit(te)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(f||m)&&(m?A=self.location.href:typeof document!="undefined"&&document.currentScript&&(A=document.currentScript.src),a&&(A=a),A.indexOf("blob:")!==0?A=A.substr(0,A.lastIndexOf("/")+1):A="",b=function(te){var le=new XMLHttpRequest;return le.open("GET",te,!1),le.send(null),le.responseText},m&&(C=function(te){var le=new XMLHttpRequest;return le.open("GET",te,!1),le.responseType="arraybuffer",le.send(null),new Uint8Array(le.response)}),v=function(te,le,Me){var ot=new XMLHttpRequest;ot.open("GET",te,!0),ot.responseType="arraybuffer",ot.onload=function(){if(ot.status==200||ot.status==0&&ot.response){le(ot.response);return}Me()},ot.onerror=Me,ot.send(null)},T=function(te){document.title=te});var z=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in d)d.hasOwnProperty(u)&&(s[u]=d[u]);d=null,s.arguments&&(p=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(c=s.quit);var I;s.wasmBinary&&(I=s.wasmBinary);var D=s.noExitRuntime||!0;typeof WebAssembly!="object"&&zn("no native wasm support detected");var O,j=!1,X;function _(te,le){te||zn("Assertion failed: "+le)}function K(te){var le=s["_"+te];return _(le,"Cannot call unknown function "+te+", make sure it is exported"),le}function W(te,le,Me,ot,Lt){var Rt={string:function(wa){var gs=0;if(wa!=null&&wa!==0){var Ac=(wa.length<<2)+1;gs=Kd(Ac),ie(wa,gs,Ac)}return gs},array:function(wa){var gs=Kd(wa.length);return xe(wa,gs),gs}};function Qe(wa){return le==="string"?Z(wa):le==="boolean"?Boolean(wa):wa}var tt=K(te),yr=[],_n=0;if(ot)for(var Ln=0;Ln=ot);)++Lt;if(Lt-le>16&&te.subarray&&Q)return Q.decode(te.subarray(le,Lt));for(var Rt="";le>10,56320|_n&1023)}}return Rt}function Z(te,le){return te?ne($e,te,le):""}function ae(te,le,Me,ot){if(!(ot>0))return 0;for(var Lt=Me,Rt=Me+ot-1,Qe=0;Qe=55296&&tt<=57343){var yr=te.charCodeAt(++Qe);tt=65536+((tt&1023)<<10)|yr&1023}if(tt<=127){if(Me>=Rt)break;le[Me++]=tt}else if(tt<=2047){if(Me+1>=Rt)break;le[Me++]=192|tt>>6,le[Me++]=128|tt&63}else if(tt<=65535){if(Me+2>=Rt)break;le[Me++]=224|tt>>12,le[Me++]=128|tt>>6&63,le[Me++]=128|tt&63}else{if(Me+3>=Rt)break;le[Me++]=240|tt>>18,le[Me++]=128|tt>>12&63,le[Me++]=128|tt>>6&63,le[Me++]=128|tt&63}}return le[Me]=0,Me-Lt}function ie(te,le,Me){return ae(te,$e,le,Me)}function xe(te,le){Re.set(te,le)}function be(te,le){return te%le>0&&(te+=le-te%le),te}var Te,Re,$e,_e,qe,Ze,st,ht,ct;function yt(te){Te=te,s.HEAP8=Re=new Int8Array(te),s.HEAP16=_e=new Int16Array(te),s.HEAP32=Ze=new Int32Array(te),s.HEAPU8=$e=new Uint8Array(te),s.HEAPU16=qe=new Uint16Array(te),s.HEAPU32=st=new Uint32Array(te),s.HEAPF32=ht=new Float32Array(te),s.HEAPF64=ct=new Float64Array(te)}var Et=s.INITIAL_MEMORY||16777216,Hr,ut=[],qr=[],gr=[],Kr=[],za=!1;qr.push({func:function(){ac()}});function Xr(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)ia(s.preRun.shift());_a(ut)}function Rr(){za=!0,_a(qr)}function Da(){_a(gr)}function xn(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)_l(s.postRun.shift());_a(Kr)}function ia(te){ut.unshift(te)}function _l(te){Kr.unshift(te)}var Zr=0,hs=null,va=null;function Wd(te){Zr++,s.monitorRunDependencies&&s.monitorRunDependencies(Zr)}function Vd(te){if(Zr--,s.monitorRunDependencies&&s.monitorRunDependencies(Zr),Zr==0&&(hs!==null&&(clearInterval(hs),hs=null),va)){var le=va;va=null,le()}}s.preloadedImages={},s.preloadedAudios={};function zn(te){s.onAbort&&s.onAbort(te),te+="",M(te),j=!0,X=1,te="abort("+te+"). Build with -s ASSERTIONS=1 for more info.";var le=new WebAssembly.RuntimeError(te);throw o(le),le}function Zh(te,le){return String.prototype.startsWith?te.startsWith(le):te.indexOf(le)===0}var U0="data:application/octet-stream;base64,";function Yh(te){return Zh(te,U0)}var Jh="file://";function Qh(te){return Zh(te,Jh)}var Yr="tfjs-backend-wasm.wasm";Yh(Yr)||(Yr=x(Yr));function ec(te){try{if(te==Yr&&I)return new Uint8Array(I);if(C)return C(te);throw"both async and sync fetching of the wasm failed"}catch(le){zn(le)}}function G0(){if(!I&&(f||m)){if(typeof fetch=="function"&&!Qh(Yr))return fetch(Yr,{credentials:"same-origin"}).then(function(te){if(!te.ok)throw"failed to load wasm binary file at '"+Yr+"'";return te.arrayBuffer()}).catch(function(){return ec(Yr)});if(v)return new Promise(function(te,le){v(Yr,function(Me){te(new Uint8Array(Me))},le)})}return Promise.resolve().then(function(){return ec(Yr)})}function j0(){var te={a:Jr};function le(Qe,tt){var yr=Qe.exports;s.asm=yr,O=s.asm.h,yt(O.buffer),Hr=s.asm.Va,Vd("wasm-instantiate")}Wd("wasm-instantiate");function Me(Qe){le(Qe.instance)}function ot(Qe){return G0().then(function(tt){return WebAssembly.instantiate(tt,te)}).then(Qe,function(tt){M("failed to asynchronously prepare wasm: "+tt),zn(tt)})}function Lt(){return!I&&typeof WebAssembly.instantiateStreaming=="function"&&!Yh(Yr)&&!Qh(Yr)&&typeof fetch=="function"?fetch(Yr,{credentials:"same-origin"}).then(function(Qe){var tt=WebAssembly.instantiateStreaming(Qe,te);return tt.then(Me,function(yr){return M("wasm streaming compile failed: "+yr),M("falling back to ArrayBuffer instantiation"),ot(Me)})}):ot(Me)}if(s.instantiateWasm)try{var Rt=s.instantiateWasm(te,le);return Rt}catch(Qe){return M("Module.instantiateWasm callback failed with error: "+Qe),!1}return Lt().catch(o),{}}function _a(te){for(;te.length>0;){var le=te.shift();if(typeof le=="function"){le(s);continue}var Me=le.func;typeof Me=="number"?le.arg===void 0?Hr.get(Me)():Hr.get(Me)(le.arg):Me(le.arg===void 0?null:le.arg)}}function Ud(){zn()}function Ji(te,le,Me){$e.copyWithin(te,le,le+Me)}function H0(){return $e.length}function q0(te){try{return O.grow(te-Te.byteLength+65535>>>16),yt(O.buffer),1}catch(le){}}function Dn(te){var le=H0(),Me=2147483648;if(te>Me)return!1;for(var ot=1;ot<=4;ot*=2){var Lt=le*(1+.2/ot);Lt=Math.min(Lt,te+100663296);var Rt=Math.min(Me,be(Math.max(te,Lt),65536)),Qe=q0(Rt);if(Qe)return!0}return!1}var Qi={mappings:{},buffers:[null,[],[]],printChar:function(te,le){var Me=Qi.buffers[te];le===0||le===10?((te===1?z:M)(ne(Me,0)),Me.length=0):Me.push(le)},varargs:void 0,get:function(){Qi.varargs+=4;var te=Ze[Qi.varargs-4>>2];return te},getStr:function(te){var le=Z(te);return le},get64:function(te,le){return te}};function K0(te){return 0}function tc(te,le,Me,ot,Lt){}function X0(te,le,Me,ot){for(var Lt=0,Rt=0;Rt>2],tt=Ze[le+(Rt*8+4)>>2],yr=0;yr>2]=Lt,0}function rc(){return 28}var Jr={a:Ud,d:Ji,e:Dn,f:K0,c:tc,b:X0,g:rc},Z0=j0(),ac=s.___wasm_call_ctors=function(){return(ac=s.___wasm_call_ctors=s.asm.i).apply(null,arguments)},Y0=s._init=function(){return(Y0=s._init=s.asm.j).apply(null,arguments)},nc=s._init_with_threads_count=function(){return(nc=s._init_with_threads_count=s.asm.k).apply(null,arguments)},J0=s._get_threads_count=function(){return(J0=s._get_threads_count=s.asm.l).apply(null,arguments)},Ll=s._register_tensor=function(){return(Ll=s._register_tensor=s.asm.m).apply(null,arguments)},cs=s._dispose_data=function(){return(cs=s._dispose_data=s.asm.n).apply(null,arguments)},Gd=s._dispose=function(){return(Gd=s._dispose=s.asm.o).apply(null,arguments)},Q0=s._Abs=function(){return(Q0=s._Abs=s.asm.p).apply(null,arguments)},eg=s._Add=function(){return(eg=s._Add=s.asm.q).apply(null,arguments)},sc=s._AddN=function(){return(sc=s._AddN=s.asm.r).apply(null,arguments)},Fe=s._All=function(){return(Fe=s._All=s.asm.s).apply(null,arguments)},tg=s._Any=function(){return(tg=s._Any=s.asm.t).apply(null,arguments)},rg=s._ArgMax=function(){return(rg=s._ArgMax=s.asm.u).apply(null,arguments)},ag=s._AvgPool=function(){return(ag=s._AvgPool=s.asm.v).apply(null,arguments)},ng=s._BatchMatMul=function(){return(ng=s._BatchMatMul=s.asm.w).apply(null,arguments)},sg=s._Ceil=function(){return(sg=s._Ceil=s.asm.x).apply(null,arguments)},eo=s._ClipByValue=function(){return(eo=s._ClipByValue=s.asm.y).apply(null,arguments)},ig=s._Conv2D=function(){return(ig=s._Conv2D=s.asm.z).apply(null,arguments)},og=s._Conv2DBackpropInput=function(){return(og=s._Conv2DBackpropInput=s.asm.A).apply(null,arguments)},lg=s._Cos=function(){return(lg=s._Cos=s.asm.B).apply(null,arguments)},ug=s._Cosh=function(){return(ug=s._Cosh=s.asm.C).apply(null,arguments)},dg=s._CropAndResize=function(){return(dg=s._CropAndResize=s.asm.D).apply(null,arguments)},pg=s._Cumsum=function(){return(pg=s._Cumsum=s.asm.E).apply(null,arguments)},ic=s._DepthToSpace=function(){return(ic=s._DepthToSpace=s.asm.F).apply(null,arguments)},hg=s._DepthwiseConv2dNative=function(){return(hg=s._DepthwiseConv2dNative=s.asm.G).apply(null,arguments)},cg=s._Elu=function(){return(cg=s._Elu=s.asm.H).apply(null,arguments)},fs=s._Equal=function(){return(fs=s._Equal=s.asm.I).apply(null,arguments)},jd=s._Exp=function(){return(jd=s._Exp=s.asm.J).apply(null,arguments)},Hd=s._FlipLeftRight=function(){return(Hd=s._FlipLeftRight=s.asm.K).apply(null,arguments)},fg=s._Floor=function(){return(fg=s._Floor=s.asm.L).apply(null,arguments)},mg=s._FloorDiv=function(){return(mg=s._FloorDiv=s.asm.M).apply(null,arguments)},gg=s._FusedBatchNorm=function(){return(gg=s._FusedBatchNorm=s.asm.N).apply(null,arguments)},yg=s._FusedConv2D=function(){return(yg=s._FusedConv2D=s.asm.O).apply(null,arguments)},Ag=s._FusedDepthwiseConv2D=function(){return(Ag=s._FusedDepthwiseConv2D=s.asm.P).apply(null,arguments)},je=s._Gather=function(){return(je=s._Gather=s.asm.Q).apply(null,arguments)},xg=s._GatherNd=function(){return(xg=s._GatherNd=s.asm.R).apply(null,arguments)},bg=s._Greater=function(){return(bg=s._Greater=s.asm.S).apply(null,arguments)},vg=s._GreaterEqual=function(){return(vg=s._GreaterEqual=s.asm.T).apply(null,arguments)},wg=s._LeakyRelu=function(){return(wg=s._LeakyRelu=s.asm.U).apply(null,arguments)},kg=s._Less=function(){return(kg=s._Less=s.asm.V).apply(null,arguments)},Ig=s._LessEqual=function(){return(Ig=s._LessEqual=s.asm.W).apply(null,arguments)},qd=s._Log=function(){return(qd=s._Log=s.asm.X).apply(null,arguments)},oc=s._LogicalAnd=function(){return(oc=s._LogicalAnd=s.asm.Y).apply(null,arguments)},lc=s._Max=function(){return(lc=s._Max=s.asm.Z).apply(null,arguments)},Sg=s._MaxPool=function(){return(Sg=s._MaxPool=s.asm._).apply(null,arguments)},Tg=s._Maximum=function(){return(Tg=s._Maximum=s.asm.$).apply(null,arguments)},Cg=s._Mean=function(){return(Cg=s._Mean=s.asm.aa).apply(null,arguments)},Ng=s._Min=function(){return(Ng=s._Min=s.asm.ba).apply(null,arguments)},Eg=s._Minimum=function(){return(Eg=s._Minimum=s.asm.ca).apply(null,arguments)},Rg=s._MirrorPad=function(){return(Rg=s._MirrorPad=s.asm.da).apply(null,arguments)},Fg=s._Multiply=function(){return(Fg=s._Multiply=s.asm.ea).apply(null,arguments)},dt=s._Neg=function(){return(dt=s._Neg=s.asm.fa).apply(null,arguments)},Mg=s._NonMaxSuppressionV3=function(){return(Mg=s._NonMaxSuppressionV3=s.asm.ga).apply(null,arguments)},$g=s._NonMaxSuppressionV4=function(){return($g=s._NonMaxSuppressionV4=s.asm.ha).apply(null,arguments)},Pg=s._NonMaxSuppressionV5=function(){return(Pg=s._NonMaxSuppressionV5=s.asm.ia).apply(null,arguments)},Bl=s._NotEqual=function(){return(Bl=s._NotEqual=s.asm.ja).apply(null,arguments)},uc=s._OneHot=function(){return(uc=s._OneHot=s.asm.ka).apply(null,arguments)},dc=s._PadV2=function(){return(dc=s._PadV2=s.asm.la).apply(null,arguments)},pc=s._Pow=function(){return(pc=s._Pow=s.asm.ma).apply(null,arguments)},Og=s._Prelu=function(){return(Og=s._Prelu=s.asm.na).apply(null,arguments)},zg=s._Prod=function(){return(zg=s._Prod=s.asm.oa).apply(null,arguments)},hc=s._RealDiv=function(){return(hc=s._RealDiv=s.asm.pa).apply(null,arguments)},Dg=s._Relu=function(){return(Dg=s._Relu=s.asm.qa).apply(null,arguments)},_g=s._Relu6=function(){return(_g=s._Relu6=s.asm.ra).apply(null,arguments)},Lg=s._ResizeBilinear=function(){return(Lg=s._ResizeBilinear=s.asm.sa).apply(null,arguments)},Bg=s._Reverse=function(){return(Bg=s._Reverse=s.asm.ta).apply(null,arguments)},Wg=s._RotateWithOffset=function(){return(Wg=s._RotateWithOffset=s.asm.ua).apply(null,arguments)},cc=s._Round=function(){return(cc=s._Round=s.asm.va).apply(null,arguments)},ms=s._Rsqrt=function(){return(ms=s._Rsqrt=s.asm.wa).apply(null,arguments)},Vg=s._ScatterNd=function(){return(Vg=s._ScatterNd=s.asm.xa).apply(null,arguments)},Ug=s._SelectV2=function(){return(Ug=s._SelectV2=s.asm.ya).apply(null,arguments)},T5=s._Sigmoid=function(){return(T5=s._Sigmoid=s.asm.za).apply(null,arguments)},fc=s._Sin=function(){return(fc=s._Sin=s.asm.Aa).apply(null,arguments)},Gg=s._Softmax=function(){return(Gg=s._Softmax=s.asm.Ba).apply(null,arguments)},jg=s._SparseFillEmptyRows=function(){return(jg=s._SparseFillEmptyRows=s.asm.Ca).apply(null,arguments)},Hg=s._SparseReshape=function(){return(Hg=s._SparseReshape=s.asm.Da).apply(null,arguments)},qg=s._SparseSegmentReduction=function(){return(qg=s._SparseSegmentReduction=s.asm.Ea).apply(null,arguments)},Kg=s._Sqrt=function(){return(Kg=s._Sqrt=s.asm.Fa).apply(null,arguments)},Xg=s._Square=function(){return(Xg=s._Square=s.asm.Ga).apply(null,arguments)},Zg=s._SquaredDifference=function(){return(Zg=s._SquaredDifference=s.asm.Ha).apply(null,arguments)},Yg=s._Step=function(){return(Yg=s._Step=s.asm.Ia).apply(null,arguments)},Jg=s._StridedSlice=function(){return(Jg=s._StridedSlice=s.asm.Ja).apply(null,arguments)},Qg=s._Sub=function(){return(Qg=s._Sub=s.asm.Ka).apply(null,arguments)},e1=s._Sum=function(){return(e1=s._Sum=s.asm.La).apply(null,arguments)},t1=s._Tan=function(){return(t1=s._Tan=s.asm.Ma).apply(null,arguments)},r1=s._Tanh=function(){return(r1=s._Tanh=s.asm.Na).apply(null,arguments)},a1=s._Tile=function(){return(a1=s._Tile=s.asm.Oa).apply(null,arguments)},n1=s._TopK=function(){return(n1=s._TopK=s.asm.Pa).apply(null,arguments)},s1=s._Transform=function(){return(s1=s._Transform=s.asm.Qa).apply(null,arguments)},i1=s._Transpose=function(){return(i1=s._Transpose=s.asm.Ra).apply(null,arguments)},o1=s.__FusedMatMul=function(){return(o1=s.__FusedMatMul=s.asm.Sa).apply(null,arguments)},l1=s._malloc=function(){return(l1=s._malloc=s.asm.Ta).apply(null,arguments)},u1=s._free=function(){return(u1=s._free=s.asm.Ua).apply(null,arguments)},mc=s.stackSave=function(){return(mc=s.stackSave=s.asm.Wa).apply(null,arguments)},gc=s.stackRestore=function(){return(gc=s.stackRestore=s.asm.Xa).apply(null,arguments)},Kd=s.stackAlloc=function(){return(Kd=s.stackAlloc=s.asm.Ya).apply(null,arguments)};s.cwrap=ee;var Wl;function d1(te){this.name="ExitStatus",this.message="Program terminated with exit("+te+")",this.status=te}va=function te(){Wl||Xd(),Wl||(va=te)};function Xd(te){if(te=te||p,Zr>0||(Xr(),Zr>0))return;function le(){Wl||(Wl=!0,s.calledRun=!0,!j&&(Rr(),Da(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),xn()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),le()},1)):le()}if(s.run=Xd,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();Xd();var Vl;l&&(Vl={uncaughtException:process.listeners("uncaughtException").filter(function(te){return!l.uncaughtException.indexOf(te)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(te){return!l.unhandledRejection.indexOf(te)>-1})});var Ul;if(typeof n!="undefined")Ul=n;else if(typeof WasmBackendModuleThreadedSimd!="undefined")Ul=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(Vl){var p1=Ul._dispose;Ul._dispose=function(){p1(),Vl.uncaughtException.forEach(function(te){process.removeListener("uncaughtException",te)}),Vl.unhandledRejection.forEach(function(te){process.removeListener("unhandledRejection",te)})}}return n.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=r:typeof define=="function"&&define.amd?define([],function(){return r}):typeof e=="object"&&(e.WasmBackendModule=r)}}),CE=1e-7,NE=1e-4,_p=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}},Iu=class{refCount(e){return ka("refCount")}incRef(e){return ka("incRef")}timerAvailable(){return!0}time(e){return ka("time")}read(e){return ka("read")}readSync(e){return ka("readSync")}readToGPU(e,t){return ka("readToGPU")}numDataIds(){return ka("numDataIds")}disposeData(e,t){return ka("disposeData")}write(e,t,r){return ka("write")}move(e,t,r,a,n){return ka("move")}memory(){return ka("memory")}floatPrecision(){return ka("floatPrecision")}epsilon(){return this.floatPrecision()===32?CE:NE}dispose(){return ka("dispose")}};function ka(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 kv(e){let t=e.length,r=0;for(;t>0;)r=Math.random()*t|0,t--,qc(e,t,r)}function EE(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let r=e.length,a=0;for(;r>0;)a=Math.random()*r|0,r--,qc(e,r,a),qc(t,r,a)}function Ip(e,t,r){return Math.max(e,Math.min(t,r))}function RE(e){return e%2===0?e:e+1}function qc(e,t,r){let a=e[t];e[t]=e[r],e[r]=a}function FE(e){let t=0;for(let r=0;rr+` Shapes ${e} and ${t} must match`)}function Ro(e){P(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function Ao(e,t=[],r=!1){if(t==null&&(t=[]),Array.isArray(e)||wr(e)&&!r)for(let a=0;a0,r){return new Promise((a,n)=>{let s=0,i=()=>{if(e()){a();return}s++;let o=t(s);if(r!=null&&s>=r){n();return}setTimeout(i,o)};i()})}function LE(e,t){let r=1,a=-1;for(let s=0;s=0)r*=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!==r)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(r===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%r!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${r}`);let n=e.slice();return n[a]=t/r,n}function Ua(e,t){let r=t.length;return e=e==null?t.map((a,n)=>n):[].concat(e),P(e.every(a=>a>=-r&&a`All values in axis param must be in range [-${r}, ${r}) but got axis ${e}`),P(e.every(a=>du(a)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(a=>a<0?r+a:a)}function Iv(e,t){let r=[],a=[],n=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||n?null:Ua(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(r.push(e[o]),a.push(o)),s[i]<=o&&i++}e[o]!==1&&(r.push(e[o]),a.push(o))}return{newShape:r,keptDims:a}}function Sv(e,t){let r=null;if(e==null||e==="float32")r=new Float32Array(t);else if(e==="int32")r=new Int32Array(t);else if(e==="bool")r=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return r}function Tv(e,t){let r=null;if(e==null||e==="float32")r=new Float32Array(t);else if(e==="int32")r=new Int32Array(t);else if(e==="bool")r=new Uint8Array(t);else if(e==="string")r=new Array(t);else throw new Error(`Unknown data type ${e}`);return r}function Cv(e,t){for(let r=0;rt+=r.length),t}function Is(e){return typeof e=="string"||e instanceof String}function Rv(e){return typeof e=="boolean"}function Fv(e){return typeof e=="number"}function If(e){return Array.isArray(e)?If(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":Fv(e)?"float32":Is(e)?"string":Rv(e)?"bool":"float32"}function Es(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Kc(e,t){for(let r=t;r=0;--a)r[a]=r[a+1]*e[a+1];return r}function Mv(e,t,r,a=!1){let n=new Array;if(t.length===1){let s=t[0]*(a?2:1);for(let i=0;il*d)*(a?2:1);for(let l=0;ln*s)*(r?2:1);if(a===0)return[];if(a!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${r?" for a complex tensor":""}.`);return Mv(0,e,t,r)}function My(e,t){let r=Sf(e,t);for(let a=0;aa*n,1);if(t==null||t==="float32")return su(e,new Float32Array(r));if(t==="int32")return su(e,new Int32Array(r));if(t==="bool")return su(e,new Uint8Array(r));throw new Error(`Unknown data type ${t}`)}function $y(e){e.forEach(t=>{P(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function VE(e,t,r){if(t===0)return 0;if(t===1)return e[0];let a=e[e.length-1];for(let n=0;n{let[r,a]=t.split(":");this.urlFlags[r]=HE(r,a)})}};function GE(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(r,...a)=>(jE(t,a[0],a[1]),a.join("="))),t}function jE(e,t,r){e[decodeURIComponent(t)]=decodeURIComponent(r||"")}function HE(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 Y(){return hn}var hn=null;function qE(e){hn=e}var g1;function Pv(){if(g1==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");g1=e}return g1}function KE(){let e=Pv();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function Oy(e,t){let r=KE();if(r.has(e))return r.get(e);{let a=t();return r.set(e,a),r.get(e)}}var Fo="Abs",Tu="Acos",Cu="Acosh",qn="Add",js="AddN",Nu="All",Eu="Any",Hs="ArgMax",Ru="ArgMin",Fu="Asin",Mu="Asinh",$u="Atan",Pu="Atanh",Ou="Atan2",qs="AvgPool",Tf="AvgPoolGrad",Lp="AvgPool3D",Cf="AvgPool3DGrad",Ks="BatchMatMul",Mo="BatchToSpaceND",Nf="Bincount",Ov="BroadcastTo",Ef="BroadcastArgs",Xs="Cast",Zs="Ceil",Kn="ClipByValue",Bp="Complex",Wp="ComplexAbs",$o="Concat",Ys="Conv2D",Rf="Conv2DBackpropFilter",Js="Conv2DBackpropInput",Vp="Conv3D",Ff="Conv3DBackpropFilterV2",Mf="Conv3DBackpropInputV2",Qs="Cos",ei="Cosh",Po="Cumsum",Oo="CropAndResize",$f="DenseBincount",zo="DepthToSpace",ti="DepthwiseConv2dNative",Pf="DepthwiseConv2dNativeBackpropFilter",Of="DepthwiseConv2dNativeBackpropInput",zf="Diag",Up="Dilation2D",Xc="Dilation2DBackpropInput",Zc="Dilation2DBackpropFilter",ri="RealDiv",Gp="Einsum",ai="Elu",Df="EluGrad",zu="Erf",Do="Equal",ni="Exp",_o="ExpandDims",Lo="Expm1",_f="FFT",Du="Fill",Bo="FlipLeftRight",si="Floor",ii="FloorDiv",oi="FusedBatchNorm",Wo="GatherV2",Vo="GatherNd",Uo="Greater",li="GreaterEqual",ui="Identity",Lf="IFFT",jp="Imag",_u="IsFinite",Lu="IsInf",Bu="IsNan",di="LeakyRelu",Go="Less",jo="LessEqual",Bf="LinSpace",pi="Log",Wu="Log1p",Ho="LogicalAnd",Vu="LogicalNot",Hp="LogicalOr",zv="LogSoftmax",qp="LRN",Wf="LRNGrad",hi="Max",ci="Maximum",fi="MaxPool",Vf="MaxPoolGrad",Kp="MaxPool3D",Uf="MaxPool3DGrad",Gf="MaxPoolWithArgmax",mi="Mean",gi="Min",yi="Minimum",Ai="MirrorPad",Uu="Mod",jf="Multinomial",xi="Multiply",qo="Neg",Ko="NotEqual",Xo="NonMaxSuppressionV3",Gu="NonMaxSuppressionV4",Zo="NonMaxSuppressionV5",Yo="OnesLike",Jo="OneHot",Qo="Pack",bi="PadV2",XE="Pool",vi="Pow",wi="Prelu",el="Prod",ju="Range",Xp="Real",Hu="Reciprocal",ki="Relu",tl="Reshape",qu="ResizeNearestNeighbor",Hf="ResizeNearestNeighborGrad",Ii="ResizeBilinear",qf="ResizeBilinearGrad",Si="Relu6",rl="Reverse",al="Round",Ti="Rsqrt",nl="ScatterNd",sl="Select",Ku="Selu",il="Slice",Ci="Sin",ol="Sinh",Xu="Sign",Ni="Sigmoid",Zu="Softplus",Ei="Sqrt",Ri="Sum",ll="SpaceToBatchND",ul="SplitV",Fi="Softmax",Zp="SparseFillEmptyRows",Yu="SparseReshape",Yp="SparseSegmentMean",Jp="SparseSegmentSum",Qp="SparseToDense",Mi="SquaredDifference",Ju="Square",dl="StridedSlice",eh="StringNGrams",Kf="StringSplit",Xf="StringToHashBucketFast",$i="Sub",pl="Tan",Pi="Tanh",Xn="Tile",hl="TopK",cl="Transform",Oi="Transpose",Zf="Unique",fl="Unpack",th="UnsortedSegmentSum",ml="ZerosLike",zi="Step",Sp="FromPixels",gl="RotateWithOffset",Rs="_FusedMatMul",Fs="FusedConv2D",Ms="FusedDepthwiseConv2D";function ks(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.warn(...e)}function ZE(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.log(...e)}var pu=Oy("kernelRegistry",()=>new Map),Tp=Oy("gradRegistry",()=>new Map);function Yc(e,t){let r=zy(e,t);return pu.get(r)}function M1(e){return Tp.get(e)}function Tn(e){let t=pu.entries(),r=[];for(;;){let{done:a,value:n}=t.next();if(a)break;let[s,i]=n,[o]=s.split("_");o===e&&r.push(i)}return r}function Ga(e){let{kernelName:t,backendName:r}=e,a=zy(t,r);pu.has(a)&&ks(`The kernel '${t}' for backend '${r}' is already registered`),pu.set(a,e)}function Dv(e){let{kernelName:t}=e;Tp.has(t)&&Y().getBool("DEBUG")&&ks(`Overriding the gradient for '${t}'`),Tp.set(t,e)}function YE(e,t){let r=zy(e,t);if(!pu.has(r))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);pu.delete(r)}function JE(e){if(!Tp.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Tp.delete(e)}function QE(e,t){Tn(e).forEach(r=>{let a=Object.assign({},r,{backendName:t});Ga(a)})}function zy(e,t){return`${t}_${e}`}var w={};De(w,{arraysEqual:()=>Gs,assert:()=>P,assertNonNegativeIntegerDimensions:()=>$y,assertNonNull:()=>Ro,assertShapesMatch:()=>_r,bytesFromStringArray:()=>Ev,bytesPerElement:()=>F1,checkConversionForErrors:()=>Cv,clamp:()=>Ip,computeStrides:()=>Su,createScalarValue:()=>sR,createShuffledIndices:()=>DE,decodeString:()=>Jc,distSquared:()=>$E,encodeString:()=>ah,fetch:()=>oR,fingerPrint64:()=>nR,flatten:()=>Ao,getArrayFromDType:()=>Tv,getTypedArrayFromDType:()=>Sv,hasEncodingLoss:()=>BE,hexToLong:()=>rh,indexToLoc:()=>UE,inferDtype:()=>If,inferFromImplicitShape:()=>LE,isBoolean:()=>Rv,isFunction:()=>Es,isInt:()=>du,isNumber:()=>Fv,isPromise:()=>Py,isScalarShape:()=>PE,isString:()=>Is,isTypedArray:()=>wr,isValidDtype:()=>Nv,locToIndex:()=>VE,makeOnesTypedArray:()=>My,makeZerosNestedTypedArray:()=>WE,makeZerosTypedArray:()=>Sf,nearestDivisor:()=>Kc,nearestLargerEven:()=>RE,now:()=>Cp,parseAxisParam:()=>Ua,randUniform:()=>ME,repeatedTry:()=>_E,rightPad:()=>xp,shuffle:()=>kv,shuffleCombo:()=>EE,sizeFromShape:()=>Tt,sizeToSquarishShape:()=>zE,squeezeShape:()=>Iv,sum:()=>FE,swap:()=>qc,tanh:()=>OE,toNestedArray:()=>su,toTypedArray:()=>Yf});var V5=Eo(pE()),io=V5.default||V5;function rh(e){return io.fromString(e,!0,16)}var _v=rh("c3a5c85c97cb3127"),no=rh("b492b66fbe98f273"),Fr=rh("9ae16a3b2f90404f");function $1(e){return e.xor(e.shru(47))}function Lv(e,t,r){let a=e.slice(t,t+r);return io.fromBytes(Array.from(a),!0,!0)}function wt(e,t){return Lv(e,t,8)}function U5(e,t){return Lv(e,t,4)}function ur(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function Ts(e,t,r=rh("9ddfea08eb382d69")){let a=e.xor(t).mul(r);a=a.xor(a.shru(47));let n=t.xor(a).mul(r);return n=n.xor(n.shru(47)),n=n.mul(r),n}function eR(e,t,r,a,n,s){n=n.add(e),s=ur(s.add(n).add(a),21);let i=n;return n=n.add(t),n=n.add(r),s=s.add(ur(n,44)),[n.add(a),s.add(i)]}function Ic(e,t,r,a){return eR(wt(e,t),wt(e,t+8),wt(e,t+16),wt(e,t+24),r,a)}function tR(e,t=e.length){if(t>=8){let r=Fr.add(t*2),a=wt(e,0).add(Fr),n=wt(e,t-8),s=ur(n,37).mul(r).add(a),i=ur(a,25).add(n).mul(r);return Ts(s,i,r)}if(t>=4){let r=Fr.add(t*2),a=U5(e,0);return Ts(a.shl(3).add(t),U5(e,t-4),r)}if(t>0){let r=e[0],a=e[t>>1],n=e[t-1],s=r+(a<<8),i=t+(n<<2);return $1(Fr.mul(s).xor(_v.mul(i))).mul(Fr)}return Fr}function rR(e,t=e.length){let r=Fr.add(t*2),a=wt(e,0).mul(no),n=wt(e,8),s=wt(e,t-8).mul(r),i=wt(e,t-16).mul(Fr);return Ts(ur(a.add(n),43).add(ur(s,30)).add(i),a.add(ur(n.add(Fr),18)).add(s),r)}function aR(e,t=e.length){let r=Fr.add(t*2),a=wt(e,0).mul(Fr),n=wt(e,8),s=wt(e,t-8).mul(r),i=wt(e,t-16).mul(Fr),o=ur(a.add(n),43).add(ur(s,30)).add(i),l=Ts(o,a.add(ur(n.add(Fr),18)).add(s),r),d=wt(e,16).mul(r),u=wt(e,24),p=o.add(wt(e,t-32)).mul(r),h=l.add(wt(e,t-24)).mul(r);return Ts(ur(d.add(u),43).add(ur(p,30)).add(h),d.add(ur(u.add(a),18)).add(p),r)}function nR(e,t=e.length){let r=io.fromNumber(81,!0);if(t<=32)return t<=16?tR(e,t):rR(e,t);if(t<=64)return aR(e,t);let a=r,n=r.mul(no).add(113),s=$1(n.mul(Fr).add(113)).mul(Fr),i=[io.UZERO,io.UZERO],o=[io.UZERO,io.UZERO];a=a.mul(Fr).add(wt(e,0));let l=0,d=(t-1>>6)*64,u=d+(t-1&63)-63;do a=ur(a.add(n).add(i[0]).add(wt(e,l+8)),37).mul(no),n=ur(n.add(i[1]).add(wt(e,l+48)),42).mul(no),a=a.xor(o[1]),n=n.add(i[0]).add(wt(e,l+40)),s=ur(s.add(o[0]),33).mul(no),i=Ic(e,l,i[1].mul(no),a.add(o[0])),o=Ic(e,l+32,s.add(o[1]),n.add(wt(e,l+16))),[s,a]=[a,s],l+=64;while(l!==d);let p=no.add(s.and(255).shl(1));return l=u,o[0]=o[0].add(t-1&63),i[0]=i[0].add(o[0]),o[0]=o[0].add(i[0]),a=ur(a.add(n).add(i[0]).add(wt(e,l+8)),37).mul(p),n=ur(n.add(i[1]).add(wt(e,l+48)),42).mul(p),a=a.xor(o[1].mul(9)),n=n.add(i[0].mul(9).add(wt(e,l+40))),s=ur(s.add(o[0]),33).mul(p),i=Ic(e,l,i[1].mul(p),a.add(o[0])),o=Ic(e,l+32,s.add(o[1]),n.add(wt(e,l+16))),[s,a]=[a,s],Ts(Ts(i[0],o[0],p).add($1(n).mul(_v)).add(s),Ts(i[1],o[1],p).add(a),p)}function sR(e,t){return t==="string"?ah(e):Yf([e],t)}function iR(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function Yf(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Ao(e)),Y().getBool("DEBUG")&&Cv(e,t),iR(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 r=new Uint8Array(e.length);for(let a=0;a{a=r()},s,i=Cp();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(n);else{n();for(let o of a)o.dataSync();s=Promise.resolve({kernelMs:Cp()-i})}if(Y().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{uR(d,l.dtype,e)})}return{kernelName:e,outputs:a,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:r,timeMs:a,inputs:n,extraInfo:s}=e;r.forEach(i=>{Promise.all([i.data(),a,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],n,o[2])})})}};function uR(e,t,r){if(t!=="float32")return!1;for(let a=0;a0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${u} %c${d} %c${p} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function pR(e,t,r){let a={},n={};for(let l=0;la[m.id]=!0),c=!0,n[d.id]=!0;break}if(c)break}}let s={};s[r.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let d=e[l],u=d.inputs;for(let p=0;p=0;n--){let s=t[n],i=[];if(s.outputs.forEach(l=>{let d=e[l.id];d!=null?i.push(d):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 d=r(()=>o[l]());if(d.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${d.dtype}'`);let u=s.inputs[l];if(!Gs(d.shape,u.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${d.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=d;else{let p=e[u.id];e[u.id]=a(p,d),p.dispose()}}}}var G5=20,np=3,y1=7;function cR(e,t,r,a){let n=Su(t),s=fR(e,t,r,n),i=t.length,o=Oc(e,t,r,n,s),l=["Tensor"];return a&&(l.push(` dtype: ${r}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(d=>" "+d).join(` `)),l.join(` `)}function fR(e,t,r,a){let n=Tt(t),s=a[a.length-1],i=new Array(s).fill(0),o=t.length,l=r==="complex64"?up(e):e;if(o>1)for(let d=0;dG5){let g=np*i,y=Array.from(e.slice(0,g)),A=Array.from(e.slice((o-np)*i,o*i));return r==="complex64"&&(y=up(y),A=up(A)),["["+y.map((x,b)=>lp(x,n[b],r)).join(", ")+", ..., "+A.map((x,b)=>lp(x,n[o-np+b],r)).join(", ")+"]"]}let m=r==="complex64"?up(e):Array.from(e);return["["+m.map((g,y)=>lp(g,n[y],r)).join(", ")+"]"]}let d=t.slice(1),u=a.slice(1),p=a[0]*i,h=[];if(o>G5){for(let m=0;m{let a=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(a,(n,s)=>(r[s]=0,n))},yT=class{constructor(t,r,a){fe(this,"uniform",{});fe(this,"attribute",{});fe(this,"gl");fe(this,"id");fe(this,"compile",(t,r)=>{let a=this.gl.createShader(r);return a?(this.gl.shaderSource(a,t),this.gl.compileShader(a),this.gl.getShaderParameter(a,this.gl.COMPILE_STATUS)?a:(se(`filter: gl compile failed: ${this.gl.getShaderInfoLog(a)}`),null)):(se("filter: could not create shader"),null)});this.gl=t;let n=this.compile(r,this.gl.VERTEX_SHADER),s=this.compile(a,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!s)){if(!this.id){se("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,s),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){se(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),Zx(r,"attribute",this.attribute);for(let i in this.attribute)this.attribute[i]=this.gl.getAttribLocation(this.id,i);Zx(r,"uniform",this.uniform),Zx(a,"uniform",this.uniform);for(let i in this.uniform)this.uniform[i]=this.gl.getUniformLocation(this.id,i)}}};function AT(){let e=0,t=null,r=!1,a=-1,n=[null,null],s=[],i=null,o=null,l=Ur(100,100),d={},u={INTERMEDIATE:1},p=l.getContext("webgl");if(this.gl=p,!p){se("filter: cannot get webgl context");return}function h(A,x){if(!(A===l.width&&x===l.height)){if(l.width=A,l.height=x,!i){let b=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=p.createBuffer(),p.bindBuffer(p.ARRAY_BUFFER,i),p.bufferData(p.ARRAY_BUFFER,b,p.STATIC_DRAW),p.pixelStorei(p.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}p.viewport(0,0,l.width,l.height),n=[null,null]}}function c(A,x){let b=p.createFramebuffer();p.bindFramebuffer(p.FRAMEBUFFER,b);let v=p.createRenderbuffer();p.bindRenderbuffer(p.RENDERBUFFER,v);let C=p.createTexture();return p.bindTexture(p.TEXTURE_2D,C),p.texImage2D(p.TEXTURE_2D,0,p.RGBA,A,x,0,p.RGBA,p.UNSIGNED_BYTE,null),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MAG_FILTER,p.LINEAR),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MIN_FILTER,p.LINEAR),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_S,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_T,p.CLAMP_TO_EDGE),p.framebufferTexture2D(p.FRAMEBUFFER,p.COLOR_ATTACHMENT0,p.TEXTURE_2D,C,0),p.bindTexture(p.TEXTURE_2D,null),p.bindFramebuffer(p.FRAMEBUFFER,null),{fbo:b,texture:C}}function f(A){return n[A]=n[A]||c(l.width,l.height),n[A]}function m(A=0){if(!o)return;let x=null,b=null,v=!1;e===0?x=t:x=f(a).texture||null,e++,r&&!(A&u.INTERMEDIATE)?(b=null,v=e%2===0):(a=(a+1)%2,b=f(a).fbo||null),p.bindTexture(p.TEXTURE_2D,x),p.bindFramebuffer(p.FRAMEBUFFER,b),p.uniform1f(o.uniform.flipY,v?-1:1),p.drawArrays(p.TRIANGLES,0,6)}function g(A){if(d[A])return o=d[A],p.useProgram((o?o.id:null)||null),o;if(o=new yT(p,pT,A),!o)return se("filter: could not get webgl program"),null;let x=Float32Array.BYTES_PER_ELEMENT,b=4*x;return p.enableVertexAttribArray(o.attribute.pos),p.vertexAttribPointer(o.attribute.pos,2,p.FLOAT,!1,b,0*x),p.enableVertexAttribArray(o.attribute.uv),p.vertexAttribPointer(o.attribute.uv,2,p.FLOAT,!1,b,2*x),d[A]=o,o}let y={colorMatrix:A=>{let x=new Float32Array(A);x[4]/=255,x[9]/=255,x[14]/=255,x[19]/=255;let b=x[18]===1&&x[3]===0&&x[8]===0&&x[13]===0&&x[15]===0&&x[16]===0&&x[17]===0&&x[19]===0?cT:hT,v=g(b);!v||(p.uniform1fv(v.uniform.m,x),m())},brightness:A=>{let x=(A||0)+1;y.colorMatrix([x,0,0,0,0,0,x,0,0,0,0,0,x,0,0,0,0,0,1,0])},saturation:A=>{let x=(A||0)*2/3+1,b=(x-1)*-.5;y.colorMatrix([x,b,b,0,0,b,x,b,0,0,b,b,x,0,0,0,0,0,1,0])},desaturate:()=>{y.saturation(-1)},contrast:A=>{let x=(A||0)+1,b=-128*(x-1);y.colorMatrix([x,0,0,0,b,0,x,0,0,b,0,0,x,0,b,0,0,0,1,0])},negative:()=>{y.contrast(-2)},hue:A=>{A=(A||0)/180*Math.PI;let x=Math.cos(A),b=Math.sin(A),v=.213,C=.715,T=.072;y.colorMatrix([v+x*(1-v)+b*-v,C+x*-C+b*-C,T+x*-T+b*(1-T),0,0,v+x*-v+b*.143,C+x*(1-C)+b*.14,T+x*-T+b*-.283,0,0,v+x*-v+b*-(1-v),C+x*-C+b*C,T+x*(1-T)+b*T,0,0,0,0,0,1,0])},desaturateLuminance:()=>{y.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{y.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{y.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{y.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{y.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{y.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{y.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{y.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:A=>{let x=new Float32Array(A),b=1/l.width,v=1/l.height,C=g(gT);!C||(p.uniform1fv(C.uniform.m,x),p.uniform2f(C.uniform.px,b,v),m())},detectEdges:()=>{y.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{y.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{y.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:A=>{let x=A||1;y.convolution.call(this,[0,-1*x,0,-1*x,1+4*x,-1*x,0,-1*x,0])},emboss:A=>{let x=A||1;y.convolution.call(this,[-2*x,-1*x,0,-1*x,1,1*x,0,1*x,2*x])},blur:A=>{let x=A/7/l.width,b=A/7/l.height,v=g(mT);!v||(p.uniform2f(v.uniform.px,0,b),m(u.INTERMEDIATE),p.uniform2f(v.uniform.px,x,0),m())},pixelate:A=>{let x=A/l.width,b=A/l.height,v=g(fT);!v||(p.uniform2f(v.uniform.size,x,b),m())}};this.add=function(A){let x=Array.prototype.slice.call(arguments,1),b=y[A];s.push({func:b,args:x})},this.reset=function(){s=[]},this.get=function(){return s},this.apply=function(A){h(A.width,A.height),e=0,t||(t=p.createTexture()),p.bindTexture(p.TEXTURE_2D,t),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_S,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_T,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MIN_FILTER,p.NEAREST),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MAG_FILTER,p.NEAREST),p.texImage2D(p.TEXTURE_2D,0,p.RGBA,p.RGBA,p.UNSIGNED_BYTE,A);for(let x=0;xc.data())),i=.99*Math.max(s[0][0],s[1][0],s[2][0]),o=[he(r[0],a[0]),he(r[1],a[1]),he(r[2],a[2])],l=[he(n[0],a[0]),he(n[1],a[1]),he(n[2],a[2])],d=[pe(i,l[0]),pe(i,l[1]),pe(i,l[2])],u=[L(o[0],d[0]),L(o[1],d[1]),L(o[2],d[2])],p=nr([u[0],u[1],u[2]],2),h=U(p,[1,t.shape[0],t.shape[1],3]);return re([...r,...a,...n,...o,...l,...d,...u,p,t]),h}var o0=2048,lt=null,ir=null,kd=null,Ct,rs={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function Ur(e,t){let r;if(ce.browser)if(ce.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");r=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");r=document.createElement("canvas"),r.width=e,r.height=t}else typeof ce.Canvas!="undefined"?r=new ce.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(r=new globalThis.Canvas(e,t));return r}function Yx(e,t){let r=t||Ur(e.width,e.height);return r.getContext("2d").drawImage(e,0,0),r}async function Id(e,t,r=!0){if(!e)return t.debug&&se("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof et)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof ce.Canvas!="undefined"&&e instanceof ce.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof et){let a=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)a=Ht(e,0);else if(e.shape[2]===4){let n=vl(e,[0,0,0],[-1,-1,3]);a=Ht(n,0),re(n)}}else e.shape.length===4&&(e.shape[3]===3?a=Pr(e):e.shape[3]===4&&(a=wo(e,[0,0,0,0],[-1,-1,-1,3])));if(a==null||a.shape.length!==4||a.shape[0]!==1||a.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(a.dtype==="int32"){let n=me(a,"float32");re(a),a=n}return{tensor:a,canvas:t.filter.return?ir:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&se("input stream is not ready"),{tensor:null,canvas:lt};let a=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!a||!n)return t.debug&&se("cannot determine input dimensions"),{tensor:null,canvas:lt};let s=a,i=n;if(s>o0&&(s=o0,i=Math.trunc(s*n/a)),i>o0&&(i=o0,s=Math.trunc(i*a/n)),(t.filter.width||0)>0?s=t.filter.width:(t.filter.height||0)>0&&(s=a*((t.filter.height||0)/n)),(t.filter.height||0)>0?i=t.filter.height:(t.filter.width||0)>0&&(i=n*((t.filter.width||0)/a)),!s||!i)throw new Error("input error: cannot determine dimension");(!lt||(lt==null?void 0:lt.width)!==s||(lt==null?void 0:lt.height)!==i)&&(lt=Ur(s,i));let o=lt.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?o.putImageData(e,0,0):t.filter.flip&&typeof o.translate!="undefined"?(o.translate(a,0),o.scale(-1,1),o.drawImage(e,0,0,a,n,0,0,lt==null?void 0:lt.width,lt==null?void 0:lt.height),o.setTransform(1,0,0,1,0,0)):o.drawImage(e,0,0,a,n,0,0,lt==null?void 0:lt.width,lt==null?void 0:lt.height),(!ir||lt.width!==ir.width||(lt==null?void 0:lt.height)!==(ir==null?void 0:ir.height))&&(ir=Ur(lt.width,lt.height)),t.filter.enabled&&ce.webgl.supported){if(Ct||(Ct=ce.browser?new AT:null),ce.filter=!!Ct,!Ct||!Ct.add)return t.debug&&se("input process error: cannot initialize filters"),{tensor:null,canvas:lt};Ct.reset(),t.filter.brightness!==0&&Ct.add("brightness",t.filter.brightness),t.filter.contrast!==0&&Ct.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&Ct.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&Ct.add("blur",t.filter.blur),t.filter.saturation!==0&&Ct.add("saturation",t.filter.saturation),t.filter.hue!==0&&Ct.add("hue",t.filter.hue),t.filter.negative&&Ct.add("negative"),t.filter.sepia&&Ct.add("sepia"),t.filter.vintage&&Ct.add("brownie"),t.filter.sepia&&Ct.add("sepia"),t.filter.kodachrome&&Ct.add("kodachrome"),t.filter.technicolor&&Ct.add("technicolor"),t.filter.polaroid&&Ct.add("polaroid"),t.filter.pixelate!==0&&Ct.add("pixelate",t.filter.pixelate),Ct.get()>0?ir=Ct.apply(lt):ir=Ct.draw(lt)}else Yx(lt,ir),Ct&&(Ct=null),ce.filter=!!Ct;if(!r)return{tensor:null,canvas:ir};if(!ir)throw new Error("canvas error: cannot create output");let l,d=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(ce.browser&&$a)l=$a?$a.fromPixels(e):null;else{d=e.data.length/e.height/e.width;let h=new Uint8Array(e.data.buffer);l=pt(h,[e.height,e.width,d],"int32")}else if((!kd||ir.width!==kd.width||ir.height!==kd.height)&&(kd=Ur(ir.width,ir.height)),$a&&ce.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?l=$a.fromPixels(ir):(kd=Yx(ir),l=$a.fromPixels(kd));else{let f=Yx(ir).getContext("2d").getImageData(0,0,s,i);d=f.data.length/s/i;let m=new Uint8Array(f.data.buffer);l=pt(m,[s,i,d])}if(d===4){let h=vl(l,[0,0,0],[-1,-1,3]);re(l),l=h}if(!l)throw new Error("input error: cannot create tensor");let u=me(l,"float32"),p=t.filter.equalization?await i0(u):Ht(u,0);return re([l,u]),{tensor:p,canvas:t.filter.return?ir:null}}}async function xT(e,t){let r=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return r;if(!rs.inputTensor)rs.inputTensor=Pr(t);else if(rs.inputTensor.shape[1]!==t.shape[1]||rs.inputTensor.shape[2]!==t.shape[2])re(rs.inputTensor),rs.inputTensor=Pr(t);else{let a={};a.diff=he(t,rs.inputTensor),a.squared=L(a.diff,a.diff),a.sum=ke(a.squared);let s=(await a.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;re([rs.inputTensor,a.diff,a.squared,a.sum]),rs.inputTensor=Pr(t),r=s<=(e.cacheSensitivity||0)}return r}async function bT(e,t,r){let a={};if(!t||!r||t.shape.length!==4||t.shape.length!==r.shape.length)return e.debug||se("invalid input tensor or tensor shapes do not match:",t.shape,r.shape),0;if(t.shape[0]!==1||r.shape[0]!==1||t.shape[3]!==3||r.shape[3]!==3)return e.debug||se("input tensors must be of shape [1, height, width, 3]:",t.shape,r.shape),0;a.input1=Pr(t),a.input2=t.shape[1]!==r.shape[1]||t.shape[2]!==r.shape[2]?Ie.resizeBilinear(r,[t.shape[1],t.shape[2]]):Pr(r),a.diff=he(a.input1,a.input2),a.squared=L(a.diff,a.diff),a.sum=ke(a.squared);let s=(await a.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return re([a.input1,a.input2,a.diff,a.squared,a.sum]),s}var vT=class{constructor(){fe(this,"browser");fe(this,"node");fe(this,"worker");fe(this,"platform","");fe(this,"agent","");fe(this,"backends",[]);fe(this,"initial");fe(this,"filter");fe(this,"tfjs");fe(this,"offscreen");fe(this,"perfadd",!1);fe(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});fe(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});fe(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});fe(this,"cpu",{model:void 0,flags:[]});fe(this,"kernels",[]);fe(this,"Canvas");fe(this,"Image");fe(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:Dh["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let r=t[0].match(/\(([^()]+)\)/g);this.platform=r&&r[0]?r[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(kr().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&ca()==="wasm"&&(this.wasm.simd=await Y().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await Y().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=Ur(100,100),r=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof r!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(ca()==="webgl"||ca()==="humangl")){let a=cn().gpgpu!=="undefined"?await cn().getGPGPUContext().gl:null;a&&(this.webgl.version=a.getParameter(a.VERSION),this.webgl.renderer=a.getParameter(a.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(a){this.webgpu.supported=!1}try{this.kernels=Tn(ca()).map(a=>a.kernelName.toLowerCase())}catch(a){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},ce=new vT;var as={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function wye(e,t){return as.debug&&se("load model fetch:",e,t),fetch(e,t)}function wT(e){as.cacheModels=e.cacheModels,as.verbose=e.debug,as.modelBasePath=e.modelBasePath}async function Ue(e){let t=B5(as.modelBasePath,e||""),r=t.split("/"),a="indexeddb://"+r[r.length-1].replace(".json",""),n=await Ir.listModels(),s=as.cacheModels&&Object.keys(n).includes(a),i=typeof fetch=="undefined"?{}:{fetchFunc:(l,d)=>wye(l,d)},o=new qm(s?a:t,i);try{o.findIOHandler(),as.debug&&se("model load handler:",o.handler);let l=await o.handler.load();o.loadSync(l),as.verbose&&se("load model:",o.modelUrl)}catch(l){se("error loading model:",t,l)}if(as.cacheModels&&!s)try{let l=await o.save(a);se("model saved:",a,l)}catch(l){se("error saving model:",t,l)}return o}var Jx="2.6.2";var Xa,Qx=[],Sye=["white","black","asian","indian","other"],Tye=[15,23,28,35.5,45.5,55.5,65],kT=0,IT=0,eb=Number.MAX_SAFE_INTEGER;async function ST(e){return ce.initial&&(Xa=null),Xa?e.debug&&se("cached model:",Xa.modelUrl):Xa=await Ue(e.face.gear),Xa}async function tb(e,t,r,a){var i,o;if(!Xa)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=eb<(((i=t.face.gear)==null?void 0:i.skipFrames)||0),s=(((o=t.face.gear)==null?void 0:o.skipTime)||0)>oe()-IT;return t.skipAllowed&&s&&n&&kT===a&&Qx[r]?(eb++,Qx[r]):(eb=0,new Promise(async l=>{var y,A;if(!(Xa==null?void 0:Xa.inputs[0].shape))return;let d={},u=[[0,.1,.9,.9]];d.resize=Ie.cropAndResize(e,u,[0],[Xa.inputs[0].shape[2],Xa.inputs[0].shape[1]]);let p={age:0,gender:"unknown",genderScore:0,race:[]};((y=t.face.gear)==null?void 0:y.enabled)&&([d.age,d.gender,d.race]=Xa.execute(d.resize,["age_output","gender_output","race_output"]));let h=await d.gender.data();p.gender=h[0]>h[1]?"male":"female",p.genderScore=Math.round(100*(h[0]>h[1]?h[0]:h[1]))/100;let c=await d.race.data();for(let x=0;x(((A=t.face.gear)==null?void 0:A.minConfidence)||.2)&&p.race.push({score:Math.round(100*c[x])/100,race:Sye[x]});p.race.sort((x,b)=>b.score-x.score);let m=Array.from(await d.age.data()).map((x,b)=>[Tye[b],x]).sort((x,b)=>b[1]-x[1]),g=m[0][0];for(let x=1;xre(d[x])),Qx[r]=p,kT=a,IT=oe(),l(p)}))}var Xe={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function CT(){Xe.tf255=Se(255,"float32"),Xe.tf1=Se(1,"float32"),Xe.tf2=Se(2,"float32"),Xe.tf05=Se(.5,"float32"),Xe.tf127=Se(127.5,"float32"),Xe.rgb=St([.2989,.587,.114],"float32")}var ma,l0=[],NT=0,ET=0,rb=Number.MAX_SAFE_INTEGER;async function RT(e){return ce.initial&&(ma=null),ma?e.debug&&se("cached model:",ma.modelUrl):ma=await Ue(e.face.ssrnet.modelPathAge),ma}async function ab(e,t,r,a){var i,o,l,d;if(!ma)return{age:0};let n=rb<(((i=t.face.ssrnet)==null?void 0:i.skipFrames)||0),s=(((o=t.face.ssrnet)==null?void 0:o.skipTime)||0)>oe()-ET;return t.skipAllowed&&n&&s&&NT===a&&((l=l0[r])==null?void 0:l.age)&&((d=l0[r])==null?void 0:d.age)>0?(rb++,l0[r]):(rb=0,new Promise(async u=>{if(!(ma==null?void 0:ma.inputs)||!ma.inputs[0]||!ma.inputs[0].shape)return;let p={};p.resize=Ie.resizeBilinear(e,[ma.inputs[0].shape[2],ma.inputs[0].shape[1]],!1),p.enhance=L(p.resize,Xe.tf255);let h={age:0};if(t.face.ssrnet.enabled&&(p.age=ma.execute(p.enhance)),p.age){let c=await p.age.data();h.age=Math.trunc(10*c[0])/10}Object.keys(p).forEach(c=>re(p[c])),l0[r]=h,NT=a,ET=oe(),u(h)}))}var Za,u0=[],MT=0,$T=0,nb=Number.MAX_SAFE_INTEGER,sb=[.2989,.587,.114];async function PT(e){return ce.initial&&(Za=null),Za?e.debug&&se("cached model:",Za.modelUrl):Za=await Ue(e.face.ssrnet.modelPathGender),Za}async function ib(e,t,r,a){var i,o,l,d;if(!Za)return{gender:"unknown",genderScore:0};let n=nb<(((i=t.face.ssrnet)==null?void 0:i.skipFrames)||0),s=(((o=t.face.ssrnet)==null?void 0:o.skipTime)||0)>oe()-$T;return t.skipAllowed&&n&&s&&MT===a&&((l=u0[r])==null?void 0:l.gender)&&((d=u0[r])==null?void 0:d.genderScore)>0?(nb++,u0[r]):(nb=0,new Promise(async u=>{if(!(Za==null?void 0:Za.inputs[0].shape))return;let p={};p.resize=Ie.resizeBilinear(e,[Za.inputs[0].shape[2],Za.inputs[0].shape[1]],!1),p.enhance=q(()=>{let[f,m,g]=Kt(p.resize,3,3),y=L(f,sb[0]),A=L(m,sb[1]),x=L(g,sb[2]),b=Jf([y,A,x]);return L(he(b,Xe.tf05),2)});let h={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(p.gender=Za.execute(p.enhance));let c=await p.gender.data();h.gender=c[0]>c[1]?"female":"male",h.genderScore=c[0]>c[1]?Math.trunc(100*c[0])/100:Math.trunc(100*c[1])/100,Object.keys(p).forEach(f=>re(p[f])),u0[r]=h,MT=a,$T=oe(),u(h)}))}var Cr,d0=[],ob=Number.MAX_SAFE_INTEGER,zT=0,DT=0;async function _T(e){var t;return ce.initial&&(Cr=null),Cr?e.debug&&se("cached model:",Cr.modelUrl):Cr=await Ue((t=e.face.antispoof)==null?void 0:t.modelPath),Cr}async function lb(e,t,r,a){var i,o;if(!Cr)return 0;let n=(((i=t.face.antispoof)==null?void 0:i.skipTime)||0)>oe()-DT,s=ob<(((o=t.face.antispoof)==null?void 0:o.skipFrames)||0);return t.skipAllowed&&n&&s&&zT===a&&d0[r]?(ob++,d0[r]):(ob=0,new Promise(async l=>{let d=Ie.resizeBilinear(e,[(Cr==null?void 0:Cr.inputs[0].shape)?Cr.inputs[0].shape[2]:0,(Cr==null?void 0:Cr.inputs[0].shape)?Cr.inputs[0].shape[1]:0],!1),u=Cr==null?void 0:Cr.execute(d),p=(await u.data())[0];d0[r]=Math.round(100*p)/100,zT=a,DT=oe(),re([d,u]),l(d0[r])}))}var Ya={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},ub={count:468,mouth:13,symmetryLine:[13,Ya.midwayBetweenEyes[0]]},Lh={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},db=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],Bh=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],El=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var Nye=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],Eye=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],Rye=[33,133,362,263,1,78,308],wAe=Nye.map(e=>Bh[e]),kAe=Eye.map(e=>Bh[e]),IAe=Rye.map(e=>Bh[e]);var Sd=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],p0=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],fb=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],mb=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],VT=(e,t)=>{let r=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],a=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:r,endPoint:a,landmarks:e.landmarks,confidence:e.confidence}},hb=(e,t,r)=>{let a=t.shape[1],n=t.shape[2],s=[e.startPoint[1]/a,e.startPoint[0]/n,e.endPoint[1]/a,e.endPoint[0]/n],i=Ie.cropAndResize(t,[s],[0],r),o=pe(i,Xe.tf255);return re(i),o},h0=(e,t)=>{let r=p0(e),a=Sd(e),n=[t*a[0]/2,t*a[1]/2];return{startPoint:[r[0]-n[0],r[1]-n[1]],endPoint:[r[0]+n[0],r[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},c0=e=>{let t=p0(e),r=Sd(e),a=Math.max(...r)/2;return{startPoint:[Math.round(t[0]-a),Math.round(t[1]-a)],endPoint:[Math.round(t[0]+a),Math.round(t[1]+a)],landmarks:e.landmarks,confidence:e.confidence}},UT=e=>{let t=e.map(a=>a[0]),r=e.map(a=>a[1]);return{startPoint:[Math.min(...t),Math.min(...r)],endPoint:[Math.max(...t),Math.max(...r)],landmarks:e}},cb=[[1,0,0],[0,1,0],[0,0,1]],Fye=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),Mye=(e,t)=>Fye(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var BT=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Rl=(e,t)=>{let r=0;for(let a=0;a{let r=[];for(let a=0;a{let r=[],a=e.length;for(let n=0;n{let r=Math.cos(e),a=Math.sin(e),n=[[r,-a,0],[a,r,0],[0,0,1]],s=BT(t[0],t[1]),i=WT(s,n),o=BT(-t[0],-t[1]);return WT(i,o)},Pye=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],r=[e[0][2],e[1][2]],a=[-Rl(t[0],r),-Rl(t[1],r)];return[t[0].concat(a[0]),t[1].concat(a[1]),[0,0,1]]},Oye=(e,t)=>[Rl(e,t[0]),Rl(e,t[1])];function jT(e){let t={strides:[e/16,e/8],anchors:[2,6]},r=[];for(let a=0;a[s[0]/n*(c[0]-n/2),s[1]/n*(c[1]-n/2),c[2]||0]),o=r&&r!==0&&Math.abs(r)>.2,l=o?GT(r,[0,0]):cb,d=o?i.map(c=>[...Oye(c,l),c[2]]):i,u=o?Pye(a):cb,p=p0(t),h=[Rl(p,u[0]),Rl(p,u[1])];return d.map(c=>[Math.trunc(c[0]+h[0]),Math.trunc(c[1]+h[1]),Math.trunc(c[2]||0)])}function qT(e,t,r,a){let n=t.landmarks.length>=ub.count?ub.symmetryLine:Lh.symmetryLine,s=0,i=cb,o;if(e&&ce.kernels.includes("rotatewithoffset"))if(s=Mye(t.landmarks[n[0]],t.landmarks[n[1]]),s&&s!==0&&Math.abs(s)>.2){let d=p0(t),u=[d[0]/r.shape[2],d[1]/r.shape[1]],p=Ie.rotateWithOffset(r,s,0,u);i=GT(-s,d),o=hb(t,p,[a,a]),re(p)}else o=hb(t,r,[a,a]);else o=hb(t,r,[a,a]);return[s,i,o]}var zye=e=>{let t=e.map(a=>a[0]),r=e.map(a=>a[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...r)+(Math.max(...r)-Math.min(...r))/2]},KT=(e,t)=>{let r=zye(e),a=Sd(t);return{startPoint:[r[0]-a[0]/2,r[1]-a[1]/2],endPoint:[r[0]+a[0]/2,r[1]+a[1]/2]}};var XT=6,Dye=1.2,$n,ZT=null,Ui=0,Wh=null,f0=()=>Ui;async function YT(e){var t;return ce.initial&&($n=null),$n?e.debug&&se("cached model:",$n.modelUrl):$n=await Ue((t=e.face.detector)==null?void 0:t.modelPath),Ui=$n.inputs[0].shape?$n.inputs[0].shape[2]:0,Wh=Se(Ui,"int32"),ZT=an(jT(Ui)),$n}function _ye(e){let t={};t.boxStarts=Oe(e,[0,1],[-1,2]),t.centers=ue(t.boxStarts,ZT),t.boxSizes=Oe(e,[0,3],[-1,2]),t.boxSizesNormalized=pe(t.boxSizes,Wh),t.centersNormalized=pe(t.centers,Wh),t.halfBoxSize=pe(t.boxSizesNormalized,Xe.tf2),t.starts=he(t.centersNormalized,t.halfBoxSize),t.ends=ue(t.centersNormalized,t.halfBoxSize),t.startNormalized=L(t.starts,Wh),t.endNormalized=L(t.ends,Wh);let r=td([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(a=>re(t[a])),r}async function JT(e,t){var o,l,d,u;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let r={};r.resized=Ie.resizeBilinear(e,[Ui,Ui]),r.div=pe(r.resized,Xe.tf127),r.normalized=he(r.div,Xe.tf05);let a=$n==null?void 0:$n.execute(r.normalized);if(Array.isArray(a)){let p=a.sort((h,c)=>h.size-c.size);r.concat384=kt([p[0],p[2]],2),r.concat512=kt([p[1],p[3]],2),r.concat=kt([r.concat512,r.concat384],1),r.batch=Ye(r.concat,0)}else r.batch=Ye(a);re(a),r.boxes=_ye(r.batch),r.logits=Oe(r.batch,[0,0],[-1,1]),r.sigmoid=Sr(r.logits),r.scores=Ye(r.sigmoid),r.nms=await Ie.nonMaxSuppressionAsync(r.boxes,r.scores,((o=t.face.detector)==null?void 0:o.maxDetected)||0,((l=t.face.detector)==null?void 0:l.iouThreshold)||0,((d=t.face.detector)==null?void 0:d.minConfidence)||0);let n=await r.nms.array(),s=[],i=await r.scores.data();for(let p=0;p(((u=t.face.detector)==null?void 0:u.minConfidence)||0)){let c={};c.bbox=Oe(r.boxes,[n[p],0],[1,-1]),c.slice=Oe(r.batch,[n[p],XT-1],[1,-1]),c.squeeze=Ye(c.slice),c.landmarks=U(c.squeeze,[XT,-1]);let f=await c.bbox.data(),m={startPoint:[f[0],f[1]],endPoint:[f[2],f[3]],landmarks:await c.landmarks.array(),confidence:h},g=VT(m,[(e.shape[2]||0)/Ui,(e.shape[1]||0)/Ui]),y=h0(g,t.face.scale||Dye),A=c0(y);s.push(A),Object.keys(c).forEach(x=>re(c[x]))}}return Object.keys(r).forEach(p=>re(r[p])),s}var m0={};ep(m0,{connected:()=>Ab,kpt:()=>yb});var yb=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],Ab={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var eC=224,Lye,Bye=5,g0=[8,16,32,32,32];async function tC(){let e=[],t=0;for(;tr.x)),y:St(e.map(r=>r.y))}}function ns(e,t=[1,1]){let r=[e.map(o=>o[0]),e.map(o=>o[1])],a=[Math.min(...r[0]),Math.min(...r[1])],n=[Math.max(...r[0]),Math.max(...r[1])],s=[a[0],a[1],n[0]-a[0],n[1]-a[1]],i=[s[0]/t[0],s[1]/t[1],s[2]/t[0],s[3]/t[1]];return{box:s,boxRaw:i}}function rC(e,t=[1,1]){let r=[e.map(d=>d[0]),e.map(d=>d[1])],a=[Math.min(...r[0]),Math.min(...r[1])],n=[Math.max(...r[0]),Math.max(...r[1])],s=[(a[0]+n[0])/2,(a[1]+n[1])/2],i=Math.max(s[0]-a[0],s[1]-a[1],-s[0]+n[0],-s[1]+n[1]),o=[Math.trunc(s[0]-i),Math.trunc(s[1]-i),Math.trunc(2*i),Math.trunc(2*i)],l=[o[0]/t[0],o[1]/t[1],o[2]/t[0],o[3]/t[1]];return{box:o,boxRaw:l}}function y0(e,t){let r=[e[2]*t,e[3]*t];return[e[0]-(r[0]-e[2])/2,e[1]-(r[1]-e[3])/2,r[0],r[1]]}var sC={initial:!0},ga={detector:null,landmarks:null},Td={detector:[224,224],landmarks:[256,256]},xb=Number.MAX_SAFE_INTEGER,Vye={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},x0=null,Vh,Gi=[[0,0],[0,0],[0,0],[0,0]],aC=0,nC=e=>1-1/(1+Math.exp(e));async function iC(e){if(sC.initial&&(ga.detector=null),!ga.detector&&e.body.detector&&e.body.detector.modelPath){ga.detector=await Ue(e.body.detector.modelPath);let t=Object.values(ga.detector.modelSignature.inputs);Td.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Td.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&ga.detector&&se("cached model:",ga.detector.modelUrl);return await tC(),ga.detector}async function oC(e){if(sC.initial&&(ga.landmarks=null),ga.landmarks)e.debug&&se("cached model:",ga.landmarks.modelUrl);else{ga.landmarks=await Ue(e.body.modelPath);let t=Object.values(ga.landmarks.modelSignature.inputs);Td.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Td.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return ga.landmarks}async function Uye(e,t){let r={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let a;if(Vh&&(r.cropped=Ie.cropAndResize(e,[Vh],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],s=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];Gi=[[0,0],n,s,[0,0]],r.pad=ja(r.cropped||e,Gi),r.resize=Ie.resizeBilinear(r.pad,[t,t]),a=pe(r.resize,Xe.tf255)}else e.shape[1]!==t?(r.resize=Ie.resizeBilinear(r.cropped||e,[t,t]),a=pe(r.resize,Xe.tf255)):a=pe(r.cropped||e,Xe.tf255);return Object.keys(r).forEach(n=>re(r[n])),a}function Gye(e,t){for(let r of e)r.position=[Math.trunc(r.position[0]*(t[0]+Gi[2][0]+Gi[2][1])/t[0]-Gi[2][0]),Math.trunc(r.position[1]*(t[1]+Gi[1][0]+Gi[1][1])/t[1]-Gi[1][0]),r.position[2]],r.positionRaw=[r.position[0]/t[0],r.position[1]/t[1],2*r.position[2]/(t[0]+t[1])];if(Vh)for(let r of e)r.positionRaw=[r.positionRaw[0]+Vh[1],r.positionRaw[1]+Vh[0],r.positionRaw[2]],r.position=[Math.trunc(r.positionRaw[0]*t[0]),Math.trunc(r.positionRaw[1]*t[1]),r.positionRaw[2]];return e}async function jye(e){let t=e.find(o=>o.part==="leftPalm"),r=e.find(o=>o.part==="leftWrist"),a=e.find(o=>o.part==="leftIndex");t.position[2]=((r.position[2]||0)+(a.position[2]||0))/2;let n=e.find(o=>o.part==="rightPalm"),s=e.find(o=>o.part==="rightWrist"),i=e.find(o=>o.part==="rightIndex");n.position[2]=((s.position[2]||0)+(i.position[2]||0))/2}async function Hye(e,t,r){var f;let a={};[a.ld,a.segmentation,a.heatmap,a.world,a.poseflag]=(f=ga.landmarks)==null?void 0:f.execute(e,Vye.landmarks);let n=(await a.poseflag.data())[0],s=await a.ld.data(),i=await a.world.data();Object.keys(a).forEach(m=>re(a[m]));let o=[],l=5;for(let m=0;mm.position),p=ns(u,[r[0],r[1]]),h={};for(let[m,g]of Object.entries(Ab)){let y=[];for(let A=0;Av.part===g[A]),b=d.find(v=>v.part===g[A+1]);x&&b&&y.push([x.position,b.position])}h[m]=y}return{id:0,score:Math.trunc(100*n)/100,box:p.box,boxRaw:p.boxRaw,keypoints:d,annotations:h}}async function bb(e,t){let r=[e.shape[2]||0,e.shape[1]||0],a=(t.body.skipTime||0)>oe()-aC,n=xb<(t.body.skipFrames||0);if(t.skipAllowed&&a&&n&&x0!==null)xb++;else{let s={};s.landmarks=await Uye(e,256),x0=await Hye(s.landmarks,t,r),Object.keys(s).forEach(i=>re(s[i])),aC=oe(),xb=0}return x0?[x0]:[]}var Cd=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var ss,Fl=0,vb=[],uC=0,wb=Number.MAX_SAFE_INTEGER;async function dC(e){if(ce.initial&&(ss=null),ss)e.debug&&se("cached model:",ss.modelUrl);else{ss=await Ue(e.object.modelPath);let t=Object.values(ss.modelSignature.inputs);Fl=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return ss}async function qye(e,t,r){if(!e)return[];let a={},n=[],s=await e.array();a.squeeze=Ye(e);let i=Kt(a.squeeze,6,1);a.stack=nr([i[1],i[0],i[3],i[2]],1),a.boxes=Ye(a.stack),a.scores=Ye(i[4]),a.classes=Ye(i[5]),re([e,...i]),a.nms=await Ie.nonMaxSuppressionAsync(a.boxes,a.scores,r.object.maxDetected,r.object.iouThreshold,r.object.minConfidence||0);let o=await a.nms.data(),l=0;for(let d of Array.from(o)){let u=Math.trunc(100*s[0][d][4])/100,p=s[0][d][5],h=Cd[p].label,[c,f]=[s[0][d][0]/Fl,s[0][d][1]/Fl],m=[c,f,s[0][d][2]/Fl-c,s[0][d][3]/Fl-f],g=[Math.trunc(m[0]*t[0]),Math.trunc(m[1]*t[1]),Math.trunc(m[2]*t[0]),Math.trunc(m[3]*t[1])];n.push({id:l++,score:u,class:p,label:h,box:g,boxRaw:m})}return Object.keys(a).forEach(d=>re(a[d])),n}async function kb(e,t){let r=(t.object.skipTime||0)>oe()-uC,a=wb<(t.object.skipFrames||0);return t.skipAllowed&&r&&a&&vb.length>0?(wb++,vb):(wb=0,new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],i=Ie.resizeBilinear(e,[Fl,Fl]),o=t.object.enabled?ss==null?void 0:ss.execute(i,["tower_0/detections"]):null;uC=oe(),re(i);let l=await qye(o,s,t);vb=l,n(l)}))}var b0={};ep(b0,{connected:()=>Sb,kpt:()=>Ib});var Ib=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],Sb={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var Nr,hC=0,Gr={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},Tb=Number.MAX_SAFE_INTEGER;async function cC(e){return ce.initial&&(Nr=null),Nr?e.debug&&se("cached model:",Nr.modelUrl):Nr=await Ue(e.body.modelPath),Nr}async function Kye(e,t){let[r,a]=e.shape,n=U(e,[a*r]),s=hr(n,0),i=(await s.data())[0];if(re([n,s]),i>t){let o=Ta(n,0),l=nd(o,r),d=(await l.data())[0],u=pe(o,Se(r,"int32")),p=(await u.data())[0];return re([l,u]),[d,p,i]}return[0,0,i]}async function Cb(e,t){let r=(t.body.skipTime||0)>oe()-hC,a=Tb<(t.body.skipFrames||0);return t.skipAllowed&&r&&a&&Object.keys(Gr.keypoints).length>0?(Tb++,[Gr]):(Tb=0,new Promise(async n=>{var p;let s=q(()=>{if(!(Nr==null?void 0:Nr.inputs[0].shape))return null;let h=Ie.resizeBilinear(e,[Nr.inputs[0].shape[2],Nr.inputs[0].shape[1]],!1),c=L(h,Xe.tf2);return he(c,Xe.tf1)}),i;if(t.body.enabled&&(i=Nr==null?void 0:Nr.execute(s)),hC=oe(),re(s),i){Gr.keypoints.length=0;let h=i.squeeze();re(i);let c=h.unstack(2);re(h);for(let f=0;f(((p=t.body)==null?void 0:p.minConfidence)||0)&&Gr.keypoints.push({score:Math.round(100*y)/100,part:Ib[f],positionRaw:[m/Nr.inputs[0].shape[2],g/Nr.inputs[0].shape[1]],position:[Math.round(e.shape[2]*m/Nr.inputs[0].shape[2]),Math.round(e.shape[1]*g/Nr.inputs[0].shape[1])]})}c.forEach(f=>re(f))}Gr.score=Gr.keypoints.reduce((h,c)=>c.score>h?c.score:h,0);let o=Gr.keypoints.map(h=>h.position[0]),l=Gr.keypoints.map(h=>h.position[1]);Gr.box=[Math.min(...o),Math.min(...l),Math.max(...o)-Math.min(...o),Math.max(...l)-Math.min(...l)];let d=Gr.keypoints.map(h=>h.positionRaw[0]),u=Gr.keypoints.map(h=>h.positionRaw[1]);Gr.boxRaw=[Math.min(...d),Math.min(...u),Math.max(...d)-Math.min(...d),Math.max(...u)-Math.min(...u)];for(let[h,c]of Object.entries(Sb)){let f=[];for(let m=0;mA.part===c[m]),y=Gr.keypoints.find(A=>A.part===c[m+1]);g&&y&&g.score>(t.body.minConfidence||0)&&y.score>(t.body.minConfidence||0)&&f.push([g.position,y.position])}Gr.annotations[h]=f}n([Gr])}))}var Xye=["angry","disgust","fear","happy","sad","surprise","neutral"],Oa,v0=[],mC=0,gC=0,Nb=Number.MAX_SAFE_INTEGER;async function yC(e){var t;return ce.initial&&(Oa=null),Oa?e.debug&&se("cached model:",Oa.modelUrl):Oa=await Ue((t=e.face.emotion)==null?void 0:t.modelPath),Oa}async function Eb(e,t,r,a){var i,o;if(!Oa)return[];let n=Nb<(((i=t.face.emotion)==null?void 0:i.skipFrames)||0),s=(((o=t.face.emotion)==null?void 0:o.skipTime)||0)>oe()-gC;return t.skipAllowed&&s&&n&&mC===a&&v0[r]&&v0[r].length>0?(Nb++,v0[r]):(Nb=0,new Promise(async l=>{var u,p;let d=[];if((u=t.face.emotion)==null?void 0:u.enabled){let h={},c=(Oa==null?void 0:Oa.inputs[0].shape)?Oa.inputs[0].shape[2]:0;h.resize=Ie.resizeBilinear(e,[c,c],!1),h.channels=L(h.resize,Xe.rgb),h.grayscale=ke(h.channels,3,!0),h.grayscaleSub=he(h.grayscale,Xe.tf05),h.grayscaleMul=L(h.grayscaleSub,Xe.tf2),h.emotion=Oa==null?void 0:Oa.execute(h.grayscaleMul),gC=oe();let f=await h.emotion.data();for(let m=0;m(((p=t.face.emotion)==null?void 0:p.minConfidence)||0)&&d.push({score:Math.min(.99,Math.trunc(100*f[m])/100),emotion:Xye[m]});d.sort((m,g)=>g.score-m.score),Object.keys(h).forEach(m=>re(h[m]))}v0[r]=d,mC=a,l(d)}))}var ya,Rb=[],xC=0,bC=0,vC=Number.MAX_SAFE_INTEGER;async function wC(e){return ce.initial&&(ya=null),ya?e.debug&&se("cached model:",ya.modelUrl):ya=await Ue(e.face.mobilefacenet.modelPath),ya}async function Fb(e,t,r,a){var i,o;if(!ya)return[];let n=vC<(((i=t.face.embedding)==null?void 0:i.skipFrames)||0),s=(((o=t.face.embedding)==null?void 0:o.skipTime)||0)>oe()-bC;return t.skipAllowed&&s&&n&&xC===a&&Rb[r]?(vC++,Rb[r]):new Promise(async l=>{var u;let d=[];if(((u=t.face.embedding)==null?void 0:u.enabled)&&(ya==null?void 0:ya.inputs[0].shape)){let p={};p.crop=Ie.resizeBilinear(e,[ya.inputs[0].shape[2],ya.inputs[0].shape[1]],!1),p.data=ya==null?void 0:ya.execute(p.crop);let h=await p.data.data();d=Array.from(h)}Rb[r]=d,xC=a,bC=oe(),l(d)})}var is,ji=0,Zye=2.3,Mb=Ya.leftEyeLower0,$b=Ya.rightEyeLower0,Nd={leftBounds:[Mb[0],Mb[Mb.length-1]],rightBounds:[$b[0],$b[$b.length-1]]},Ed={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function CC(e){var t;return ce.initial&&(is=null),is?e.debug&&se("cached model:",is.modelUrl):is=await Ue((t=e.face.iris)==null?void 0:t.modelPath),ji=is.inputs[0].shape?is.inputs[0].shape[2]:0,ji===-1&&(ji=64),is}function w0(e,t,r,a){for(let n=0;n{let t=e[Nd.leftBounds[0]][2],r=e[Nd.rightBounds[0]][2];return t-r},IC=(e,t,r,a,n,s=!1)=>{let i=c0(h0(UT([e[r],e[a]]),Zye)),o=Sd(i),l=Ie.cropAndResize(t,[[i.startPoint[1]/n,i.startPoint[0]/n,i.endPoint[1]/n,i.endPoint[0]/n]],[0],[ji,ji]);if(s&&ce.kernels.includes("flipleftright")){let d=Ie.flipLeftRight(l);re(l),l=d}return{box:i,boxSize:o,crop:l}},SC=(e,t,r,a=!1)=>{let n=[];for(let s=0;s{let a=e[Ya[`${r}EyeUpper0`][Ed.upperCenter]][2],n=e[Ya[`${r}EyeLower0`][Ed.lowerCenter]][2],s=(a+n)/2;return t.map((i,o)=>{let l=s;return o===2?l=a:o===4&&(l=n),[i[0],i[1],l]})};async function NC(e,t,r,a){if(!is)return r.debug&&se("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:s,crop:i}=IC(e,t,Nd.leftBounds[0],Nd.leftBounds[1],a,!0),{box:o,boxSize:l,crop:d}=IC(e,t,Nd.rightBounds[0],Nd.rightBounds[1],a,!0),u=kt([i,d]);re(i),re(d);let p=is.execute(u);re(u);let h=await p.data();re(p);let c=h.slice(0,Ed.numCoordinates*3),{rawCoords:f,iris:m}=SC(c,n,s,!0),g=h.slice(Ed.numCoordinates*3),{rawCoords:y,iris:A}=SC(g,o,l),x=Yye(e);Math.abs(x)<30?(w0(e,f,"left",null),w0(e,y,"right",null)):x<1?w0(e,f,"left",["EyeUpper0","EyeLower0"]):w0(e,y,"right",["EyeUpper0","EyeLower0"]);let b=TC(e,m,"left"),v=TC(e,A,"right");return e.concat(b).concat(v)}var Pn={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},os=null,Rd=0;async function RC(e,t){var o,l,d,u,p,h,c,f,m;let r=(((o=t.face.detector)==null?void 0:o.skipTime)||0)>oe()-Pn.timestamp,a=Pn.skipped<(((l=t.face.detector)==null?void 0:l.skipFrames)||0);!t.skipAllowed||!r||!a||Pn.boxes.length===0?(Pn.boxes=await JT(e,t),Pn.timestamp=oe(),Pn.skipped=0):Pn.skipped++;let n=[],s=[],i=0;for(let g=0;g[I[0]/(e.shape[2]||0),I[1]/(e.shape[1]||0),(I[2]||0)/Rd]);for(let I of Object.keys(Ya))b.annotations[I]=Ya[I].map(D=>b.mesh[D]);b.score=b.faceScore;let M={...KT(b.mesh,y),confidence:y.confidence,landmarks:y.landmarks};b.box=fb(M,e),b.boxRaw=mb(M,e),s.push(M)}}else{b.box=fb(y,e),b.boxRaw=mb(y,e),b.score=b.boxScore,b.mesh=y.landmarks.map(v=>[(y.startPoint[0]+y.endPoint[0])/2+(y.endPoint[0]+y.startPoint[0])*v[0]/f0(),(y.startPoint[1]+y.endPoint[1])/2+(y.endPoint[1]+y.startPoint[1])*v[1]/f0()]),b.meshRaw=b.mesh.map(v=>[v[0]/(e.shape[2]||0),v[1]/(e.shape[1]||0),(v[2]||0)/Rd]);for(let v of Object.keys(Lh))b.annotations[v]=[b.mesh[Lh[v]]]}b.score>(((m=t.face.detector)==null?void 0:m.minConfidence)||1)?n.push(b):re(b.tensor)}return Pn.boxes=s,n}async function FC(e){var t;return ce.initial&&(os=null),os?e.debug&&se("cached model:",os.modelUrl):os=await Ue((t=e.face.mesh)==null?void 0:t.modelPath),Rd=os.inputs[0].shape?os.inputs[0].shape[2]:0,os}var MC=El,$C=Bh;var Aa,k0=[],PC=0,OC=0,Ob=Number.MAX_SAFE_INTEGER;async function zC(e){var t;return ce.initial&&(Aa=null),Aa?e.debug&&se("cached model:",Aa.modelUrl):Aa=await Ue((t=e.face.description)==null?void 0:t.modelPath),Aa}function zb(e){let t=e.image||e.tensor||e;if(!(Aa==null?void 0:Aa.inputs[0].shape))return t;let r=Ie.resizeBilinear(t,[Aa.inputs[0].shape[2],Aa.inputs[0].shape[1]],!1),a=L(r,Xe.tf255);return re(r),a}async function Db(e,t,r,a){var i,o,l,d;if(!Aa)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=Ob<(((i=t.face.description)==null?void 0:i.skipFrames)||0),s=(((o=t.face.description)==null?void 0:o.skipTime)||0)>oe()-PC;return t.skipAllowed&&n&&s&&OC===a&&((l=k0[r])==null?void 0:l.age)&&((d=k0[r])==null?void 0:d.age)>0?(Ob++,k0[r]):(Ob=0,new Promise(async u=>{var h,c;let p={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((h=t.face.description)==null?void 0:h.enabled){let f=zb(e),m=Aa==null?void 0:Aa.execute(f);PC=oe(),re(f);let y=await(await m.find(R=>R.shape[1]===1)).data(),A=Math.trunc(200*Math.abs(y[0]-.5))/100;A>(((c=t.face.description)==null?void 0:c.minConfidence)||0)&&(p.gender=y[0]<=.5?"female":"male",p.genderScore=Math.min(.99,A));let x=Ta(m.find(R=>R.shape[1]===100),1),b=(await x.data())[0];re(x);let C=await m.find(R=>R.shape[1]===100).data();p.age=Math.round(C[b-1]>C[b+1]?10*b-100*C[b-1]:10*b+100*C[b+1])/10;let T=m.find(R=>R.shape[1]===1024),E=T?await T.data():[];p.descriptor=Array.from(E),m.forEach(R=>re(R))}k0[r]=p,OC=a,u(p)}))}function I0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Uh(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function LC(e,t,r){let a=t.shape[1],n=t.shape[2],s=[[e.startPoint[1]/a,e.startPoint[0]/n,e.endPoint[1]/a,e.endPoint[0]/n]];return Ie.cropAndResize(t,s,[0],r)}function BC(e,t){let r=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],a=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:r,endPoint:a,palmLandmarks:n,confidence:e.confidence}}function S0(e,t=1.5){let r=Uh(e),a=I0(e),n=[t*a[0]/2,t*a[1]/2],s=[r[0]-n[0],r[1]-n[1]],i=[r[0]+n[0],r[1]+n[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function T0(e){let t=Uh(e),r=I0(e),n=Math.max(...r)/2,s=[t[0]-n,t[1]-n],i=[t[0]+n,t[1]+n];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function Jye(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function WC(e,t){let r=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Jye(r)}var DC=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function Hi(e,t){let r=0;for(let a=0;a[r.x,r.y]),this.anchorsTensor=an(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=St([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=St([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let r={};r.boxOffsets=Oe(t,[0,0],[-1,2]),r.boxSizes=Oe(t,[0,2],[-1,2]),r.div=pe(r.boxOffsets,this.inputSizeTensor),r.boxCenterPoints=ue(r.div,this.anchorsTensor),r.halfBoxSizes=pe(r.boxSizes,this.doubleInputSizeTensor),r.sub=he(r.boxCenterPoints,r.halfBoxSizes),r.startPoints=L(r.sub,this.inputSizeTensor),r.add=ue(r.boxCenterPoints,r.halfBoxSizes),r.endPoints=L(r.add,this.inputSizeTensor);let a=td([r.startPoints,r.endPoints],1);return Object.keys(r).forEach(n=>re(r[n])),a}normalizeLandmarks(t,r){let a={};a.reshape=U(t,[-1,7,2]),a.div=pe(a.reshape,this.inputSizeTensor),a.landmarks=ue(a.div,this.anchors[r]);let n=L(a.landmarks,this.inputSizeTensor);return Object.keys(a).forEach(s=>re(a[s])),n}async predict(t,r){let a={};a.resize=Ie.resizeBilinear(t,[this.inputSize,this.inputSize]),a.div=pe(a.resize,Xe.tf127),a.image=he(a.div,Xe.tf1),a.batched=this.model.execute(a.image),a.predictions=Ye(a.batched),a.slice=Oe(a.predictions,[0,0],[-1,1]),a.sigmoid=Sr(a.slice),a.scores=Ye(a.sigmoid);let n=await a.scores.data();a.boxes=Oe(a.predictions,[0,1],[-1,4]),a.norm=this.normalizeBoxes(a.boxes),a.nms=await Ie.nonMaxSuppressionAsync(a.norm,a.scores,3*r.hand.maxDetected,r.hand.iouThreshold,r.hand.minConfidence);let s=await a.nms.array(),i=[];for(let o of s){let l={};l.box=Oe(a.norm,[o,0],[1,-1]),l.slice=Oe(a.predictions,[o,5],[1,14]),l.norm=this.normalizeLandmarks(l.slice,o),l.palmLandmarks=U(l.norm,[-1,2]);let d=await l.box.data(),u=d.slice(0,2),p=d.slice(2,4),h=await l.palmLandmarks.array(),c={startPoint:u,endPoint:p,palmLandmarks:h,confidence:n[o]},f=BC(c,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);i.push(f),Object.keys(l).forEach(m=>re(l[m]))}return Object.keys(a).forEach(o=>re(a[o])),i}};var r2e=5,jC=1.65,HC=[0,5,9,13,17,1,2],a2e=0,n2e=2,qC=0,Vb=class{constructor(t,r){fe(this,"handDetector");fe(this,"handPoseModel");fe(this,"inputSize");fe(this,"storedBoxes");fe(this,"skipped");fe(this,"detectedHands");this.handDetector=t,this.handPoseModel=r,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let r=t.map(i=>i[0]),a=t.map(i=>i[1]),n=[Math.min(...r),Math.min(...a)],s=[Math.max(...r),Math.max(...a)];return{startPoint:n,endPoint:s}}getBoxForPalmLandmarks(t,r){let a=t.map(s=>Bb([...s,1],r)),n=this.calculateLandmarksBoundingBox(a);return S0(T0(n),r2e)}getBoxForHandLandmarks(t){let r=this.calculateLandmarksBoundingBox(t),a=S0(T0(r),jC);a.palmLandmarks=[];for(let n=0;n[i[0]*(c[0]-this.inputSize/2),i[1]*(c[1]-this.inputSize/2),i[2]*c[2]]),l=Lb(a,[0,0]),d=o.map(c=>[...Bb(c,l),c[2]]),u=VC(n),p=[...Uh(r),1],h=[Hi(p,u[0]),Hi(p,u[1])];return d.map(c=>[Math.trunc(c[0]+h[0]),Math.trunc(c[1]+h[1]),Math.trunc(c[2])])}async estimateHands(t,r){let a=!1,n,s=(r.hand.skipTime||0)>oe()-qC,i=this.skipped<(r.hand.skipFrames||0);r.skipAllowed&&s&&i&&(n=await this.handDetector.predict(t,r),this.skipped=0),r.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==r.hand.maxDetected||!r.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(a=!0));let o=[];for(let l=0;l=r.hand.minConfidence/4){let v=U(x,[-1,3]),C=await v.array();re(x),re(v);let T=this.transformRawCoords(C,m,u,f),E=this.getBoxForHandLandmarks(T);this.storedBoxes[l]={...E,confidence:b};let R={landmarks:T,confidence:b,boxConfidence:d.confidence,fingerConfidence:b,box:{topLeft:E.startPoint,bottomRight:E.endPoint}};o.push(R)}else this.storedBoxes[l]=null;re(x)}else{let u=S0(T0(d),jC),p={confidence:d.confidence,boxConfidence:d.confidence,fingerConfidence:0,box:{topLeft:u.startPoint,bottomRight:u.endPoint},landmarks:[]};o.push(p)}}return this.storedBoxes=this.storedBoxes.filter(l=>l!==null),this.detectedHands=o.length,o.length>r.hand.maxDetected&&(o.length=r.hand.maxDetected),o}};var jr={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>jr.nameMapping[e],getPoints:e=>jr.pointsMapping[e]},qi={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>qi.nameMapping[e]},_t={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>_t.nameMapping[e]},Ml=class{constructor(t){fe(this,"name");fe(this,"curls");fe(this,"directions");fe(this,"weights");fe(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,r,a){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([r,a])}direction(t,r,a){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([r,a])}weight(t,r){this.weights[t]=r;let a=this.weights.reduce((n,s)=>n+s,0);this.weightsRelative=this.weights.map(n=>n*5/a)}matchAgainst(t,r){let a=0;for(let n in t){let s=t[n],i=this.curls[n];if(typeof i=="undefined"){a+=this.weightsRelative[n];continue}for(let[o,l]of i)if(s===o){a+=l*this.weightsRelative[n];break}}for(let n in r){let s=r[n],i=this.directions[n];if(typeof i=="undefined"){a+=this.weightsRelative[n];continue}for(let[o,l]of i)if(s===o){a+=l*this.weightsRelative[n];break}}return a/10}};var{thumb:mn,index:ls,middle:us,ring:$l,pinky:Pl}=jr,{none:gn,half:i2e,full:yn}=qi,{verticalUp:Fd,verticalDown:cxe,horizontalLeft:Ub,horizontalRight:o2e,diagonalUpRight:l2e,diagonalUpLeft:Md,diagonalDownRight:fxe,diagonalDownLeft:mxe}=_t,Ki=new Ml("thumbs up");Ki.curl(mn,gn,1);Ki.direction(mn,Fd,1);Ki.direction(mn,Md,.25);Ki.direction(mn,l2e,.25);for(let e of[jr.index,jr.middle,jr.ring,jr.pinky])Ki.curl(e,yn,1),Ki.direction(e,Ub,1),Ki.direction(e,o2e,1);var Yt=new Ml("victory");Yt.curl(mn,i2e,.5);Yt.curl(mn,gn,.5);Yt.direction(mn,Fd,1);Yt.direction(mn,Md,1);Yt.curl(ls,gn,1);Yt.direction(ls,Fd,.75);Yt.direction(ls,Md,1);Yt.curl(us,gn,1);Yt.direction(us,Fd,1);Yt.direction(us,Md,.75);Yt.curl($l,yn,1);Yt.direction($l,Fd,.2);Yt.direction($l,Md,1);Yt.direction($l,Ub,.2);Yt.curl(Pl,yn,1);Yt.direction(Pl,Fd,.2);Yt.direction(Pl,Md,1);Yt.direction(Pl,Ub,.2);Yt.weight(ls,2);Yt.weight(us,2);var Xi=new Ml("point");Xi.curl(mn,yn,1);Xi.curl(ls,gn,.5);Xi.curl(us,yn,.5);Xi.curl($l,yn,.5);Xi.curl(Pl,yn,.5);Xi.weight(ls,2);Xi.weight(us,2);var Zi=new Ml("middle finger");Zi.curl(mn,gn,1);Zi.curl(ls,yn,.5);Zi.curl(us,yn,.5);Zi.curl($l,yn,.5);Zi.curl(Pl,yn,.5);Zi.weight(ls,2);Zi.weight(us,2);var $d=new Ml("open palm");$d.curl(mn,gn,.75);$d.curl(ls,gn,.75);$d.curl(us,gn,.75);$d.curl($l,gn,.75);$d.curl(Pl,gn,.75);var KC=[Ki,Yt,Xi,Zi,$d];var u2e=.7,Ol={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function XC(e,t,r,a){let n=(t-a)/(e-r),s=Math.atan(n)*180/Math.PI;return s<=0?s=-s:s>0&&(s=180-s),s}function YC(e,t){if(!e||!t)return[0,0];let r=XC(e[0],e[1],t[0],t[1]);if(e.length===2)return r;let a=XC(e[1],e[2],t[1],t[2]);return[r,a]}function ZC(e,t=1){let r=0,a=0,n=0;return e>=75&&e<=105?r=1*t:e>=25&&e<=155?a=1*t:n=1*t,[r,a,n]}function d2e(e,t,r){let a=e[0]-t[0],n=e[0]-r[0],s=t[0]-r[0],i=e[1]-t[1],o=e[1]-r[1],l=t[1]-r[1],d=e[2]-t[2],u=e[2]-r[2],p=t[2]-r[2],h=Math.sqrt(a*a+i*i+d*d),c=Math.sqrt(n*n+o*o+u*u),f=Math.sqrt(s*s+l*l+p*p),m=(f*f+h*h-c*c)/(2*f*h);m>1?m=1:m<-1&&(m=-1);let g=Math.acos(m);g=57.2958*g%180;let y;return g>Ol.NO_CURL_START_LIMIT?y=qi.none:g>Ol.HALF_CURL_START_LIMIT?y=qi.half:y=qi.full,y}function JC(e,t,r,a){let n;return a===Math.abs(e)?e>0?n=_t.horizontalLeft:n=_t.horizontalRight:a===Math.abs(t)?t>0?n=_t.horizontalLeft:n=_t.horizontalRight:r>0?n=_t.horizontalLeft:n=_t.horizontalRight,n}function QC(e,t,r,a){let n;return a===Math.abs(e)?e<0?n=_t.verticalDown:n=_t.verticalUp:a===Math.abs(t)?t<0?n=_t.verticalDown:n=_t.verticalUp:r<0?n=_t.verticalDown:n=_t.verticalUp,n}function p2e(e,t,r,a,n,s,i,o){let l,d=QC(e,t,r,a),u=JC(n,s,i,o);return d===_t.verticalUp?u===_t.horizontalLeft?l=_t.diagonalUpLeft:l=_t.diagonalUpRight:u===_t.horizontalLeft?l=_t.diagonalDownLeft:l=_t.diagonalDownRight,l}function h2e(e,t,r,a){let n=e[0]-t[0],s=e[0]-r[0],i=t[0]-r[0],o=e[1]-t[1],l=e[1]-r[1],d=t[1]-r[1],u=Math.max(Math.abs(n),Math.abs(s),Math.abs(i)),p=Math.max(Math.abs(o),Math.abs(l),Math.abs(d)),h=0,c=0,f=0,m=p/(u+1e-5);m>1.5?h+=Ol.DISTANCE_VOTE_POWER:m>.66?c+=Ol.DISTANCE_VOTE_POWER:f+=Ol.DISTANCE_VOTE_POWER;let g=Math.sqrt(n*n+o*o),y=Math.sqrt(s*s+l*l),A=Math.sqrt(i*i+d*d),x=Math.max(g,y,A),b=e[0],v=e[1],C=r[0],T=r[1];x===g?(C=r[0],T=r[1]):x===A&&(b=t[0],v=t[1]);let z=YC([b,v],[C,T]),M=ZC(z,Ol.TOTAL_ANGLE_VOTE_POWER);h+=M[0],c+=M[1],f+=M[2];for(let D of a){let O=ZC(D,Ol.SINGLE_ANGLE_VOTE_POWER);h+=O[0],c+=O[1],f+=O[2]}let I;return h===Math.max(h,c,f)?I=QC(l,o,d,p):f===Math.max(c,f)?I=JC(s,n,i,u):I=p2e(l,o,d,p,s,n,i,u),I}function eN(e){let t=[],r=[],a=[],n=[];if(!e)return{curls:a,directions:n};for(let s of jr.all){let i=jr.getPoints(s),o=[],l=[];for(let d of i){let u=e[d[0]],p=e[d[1]],h=YC(u,p),c=h[0],f=h[1];o.push(c),l.push(f)}t.push(o),r.push(l)}for(let s of jr.all){let i=s===jr.thumb?1:0,o=jr.getPoints(s),l=e[o[i][0]],d=e[o[i+1][1]],u=e[o[3][1]],p=d2e(l,d,u),h=h2e(l,d,u,t[s].slice(i));a[s]=p,n[s]=h}return{curls:a,directions:n}}function C0(e){if(!e||e.length===0)return null;let t=eN(e),r={};for(let a of jr.all)r[jr.getName(a)]={curl:qi.getName(t.curls[a]),direction:_t.getName(t.directions[a])};return r}function tN(e){let t=[];if(!e||e.length===0)return t;let r=eN(e);for(let a of KC){let n=a.matchAgainst(r.curls,r.directions);n>=u2e&&t.push({name:a.name,confidence:n})}return t}var rN={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Pd,Od,aN;async function jb(e,t){let r=await aN.estimateHands(e,t);if(!r)return[];let a=[];for(let n=0;nr[n].landmarks[p]);let i=r[n].landmarks,o=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],l=[0,0,0,0];if(i&&i.length>0){for(let u of i)u[0]o[2]&&(o[2]=u[0]),u[1]>o[3]&&(o[3]=u[1]);o[2]-=o[0],o[3]-=o[1],l=[o[0]/(e.shape[2]||0),o[1]/(e.shape[1]||0),o[2]/(e.shape[2]||0),o[3]/(e.shape[1]||0)]}else o=r[n].box?[Math.trunc(Math.max(0,r[n].box.topLeft[0])),Math.trunc(Math.max(0,r[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,r[n].box.bottomRight[0])-Math.max(0,r[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,r[n].box.bottomRight[1])-Math.max(0,r[n].box.topLeft[1]))]:[0,0,0,0],l=[r[n].box.topLeft[0]/(e.shape[2]||0),r[n].box.topLeft[1]/(e.shape[1]||0),(r[n].box.bottomRight[0]-r[n].box.topLeft[0])/(e.shape[2]||0),(r[n].box.bottomRight[1]-r[n].box.topLeft[1])/(e.shape[1]||0)];let d=C0(i);a.push({id:n,score:Math.round(100*r[n].confidence)/100,boxScore:Math.round(100*r[n].boxConfidence)/100,fingerScore:Math.round(100*r[n].fingerConfidence)/100,label:"hand",box:o,boxRaw:l,keypoints:i,annotations:s,landmarks:d})}return a}async function Hb(e){var r,a;ce.initial&&(Pd=null,Od=null),!Pd||!Od?[Pd,Od]=await Promise.all([e.hand.enabled?Ue((r=e.hand.detector)==null?void 0:r.modelPath):null,e.hand.landmarks?Ue((a=e.hand.skeleton)==null?void 0:a.modelPath):null]):(e.debug&&se("cached model:",Pd.modelUrl),e.debug&&se("cached model:",Od.modelUrl));let t=new Wb(Pd);return aN=new Vb(t,Od),[Pd,Od]}var or=[null,null],c2e=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],Yi=[[0,0],[0,0]],f2e=["hand","fist","pinch","point","face","tip","pinchtip"],sN=4,iN=1.6,m2e=512,g2e=1.4,N0=Number.MAX_SAFE_INTEGER,qb=0,ds=[0,0],jt={boxes:[],hands:[]},oN={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function lN(e){var t;if(ce.initial&&(or[0]=null),or[0])e.debug&&se("cached model:",or[0].modelUrl);else{E0(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),or[0]=await Ue((t=e.hand.detector)==null?void 0:t.modelPath);let r=Object.values(or[0].modelSignature.inputs);Yi[0][0]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[1].size):0,Yi[0][1]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[2].size):0}return or[0]}async function uN(e){var t;if(ce.initial&&(or[1]=null),or[1])e.debug&&se("cached model:",or[1].modelUrl);else{or[1]=await Ue((t=e.hand.skeleton)==null?void 0:t.modelPath);let r=Object.values(or[1].modelSignature.inputs);Yi[1][0]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[1].size):0,Yi[1][1]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[2].size):0}return or[1]}async function y2e(e,t){let r=[];if(!e||!or[0])return r;let a={},n=(e.shape[2]||1)/(e.shape[1]||1),s=Math.min(Math.round((e.shape[1]||0)/8)*8,m2e),i=Math.round(s*n/8)*8;a.resize=Ie.resizeBilinear(e,[s,i]),a.cast=me(a.resize,"int32"),[a.rawScores,a.rawBoxes]=await or[0].executeAsync(a.cast,c2e),a.boxes=Ye(a.rawBoxes,[0,2]),a.scores=Ye(a.rawScores,[0]);let o=ra(a.scores,1);re(o[sN]),o.splice(sN,1),a.filtered=nr(o,1),re(o),a.max=hr(a.filtered,1),a.argmax=Ta(a.filtered,1);let l=0;a.nms=await Ie.nonMaxSuppressionAsync(a.boxes,a.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let d=await a.nms.data(),u=await a.max.data(),p=await a.argmax.data();for(let h of Array.from(d)){let c=Oe(a.boxes,h,1),f=await c.data();re(c);let m=[f[1],f[0],f[3]-f[1],f[2]-f[0]],g=y0(m,g2e),y=[Math.trunc(m[0]*ds[0]),Math.trunc(m[1]*ds[1]),Math.trunc(m[2]*ds[0]),Math.trunc(m[3]*ds[1])],A=u[h],x=f2e[p[h]],b={id:l++,score:A,box:y,boxRaw:g,label:x};r.push(b)}return Object.keys(a).forEach(h=>re(a[h])),r.sort((h,c)=>c.score-h.score),r.length>(t.hand.maxDetected||1)&&(r.length=t.hand.maxDetected||1),r}async function Kb(e,t,r){let a={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&or[1]&&r.hand.landmarks&&t.score>(r.hand.minConfidence||0)){let n={},s=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Ie.cropAndResize(e,[s],[0],[Yi[1][0],Yi[1][1]],"bilinear"),n.div=pe(n.crop,Xe.tf255),[n.score,n.keypoints]=or[1].execute(n.div,["Identity_1","Identity"]);let i=(await n.score.data())[0],o=(100-Math.trunc(100/(1+Math.exp(i))))/100;if(o>=(r.hand.minConfidence||0)){a.fingerScore=o,n.reshaped=U(n.keypoints,[-1,3]);let u=(await n.reshaped.array()).map(p=>[p[0]/Yi[1][1],p[1]/Yi[1][0],p[2]||0]).map(p=>[p[0]*t.boxRaw[2],p[1]*t.boxRaw[3],p[2]||0]);a.keypoints=u.map(p=>[ds[0]*(p[0]+t.boxRaw[0]),ds[1]*(p[1]+t.boxRaw[1]),p[2]||0]),a.landmarks=C0(a.keypoints);for(let p of Object.keys(oN))a.annotations[p]=oN[p].map(h=>a.landmarks&&a.keypoints[h]?a.keypoints[h]:null)}Object.keys(n).forEach(l=>re(n[l]))}return a}async function Xb(e,t){var n,s;if(!or[0]||!or[1]||!((n=or[0])==null?void 0:n.inputs[0].shape)||!((s=or[1])==null?void 0:s.inputs[0].shape))return[];ds=[e.shape[2]||0,e.shape[1]||0],N0++;let r=(t.hand.skipTime||0)>oe()-qb,a=N0<(t.hand.skipFrames||0);return t.skipAllowed&&r&&a?jt.hands:new Promise(async i=>{let o=3*(t.hand.skipTime||0)>oe()-qb,l=N0<3*(t.hand.skipFrames||0);t.skipAllowed&&jt.hands.length===t.hand.maxDetected?jt.hands=await Promise.all(jt.boxes.map(u=>Kb(e,u,t))):t.skipAllowed&&o&&l&&jt.hands.length>0?jt.hands=await Promise.all(jt.boxes.map(u=>Kb(e,u,t))):(jt.boxes=await y2e(e,t),qb=oe(),jt.hands=await Promise.all(jt.boxes.map(u=>Kb(e,u,t))),N0=0);let d=[...jt.boxes];if(jt.boxes.length=0,t.cacheSensitivity>0)for(let u=0;u.05&&p.box[3]/(e.shape[1]||1)>.05&&jt.hands[u].fingerScore&&jt.hands[u].fingerScore>(t.hand.minConfidence||0)){let h=y0(p.box,iN),c=y0(p.boxRaw,iN);jt.boxes.push({...d[u],box:h,boxRaw:c})}}for(let u=0;uoe()-hN,s=Zb<(((o=t.face.liveness)==null?void 0:o.skipFrames)||0);return t.skipAllowed&&n&&s&&pN===a&&R0[r]?(Zb++,R0[r]):(Zb=0,new Promise(async l=>{let d=Ie.resizeBilinear(e,[(Er==null?void 0:Er.inputs[0].shape)?Er.inputs[0].shape[2]:0,(Er==null?void 0:Er.inputs[0].shape)?Er.inputs[0].shape[1]:0],!1),u=Er==null?void 0:Er.execute(d),p=(await u.data())[0];R0[r]=Math.round(100*p)/100,pN=a,hN=oe(),re([d,u]),l(R0[r])}))}var Gh={};ep(Gh,{connected:()=>M0,horizontal:()=>Jb,kpt:()=>F0,relative:()=>e5,vertical:()=>Qb});var F0=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],Jb=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],Qb=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],e5=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],M0={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var mN=.005,xa={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function t5(e){for(let t of Jb){let r=e.keypoints.findIndex(n=>n.part===t[0]),a=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[r]&&e.keypoints[a]&&e.keypoints[r].position[0]n&&n.part===t[0]),a=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[r]&&e.keypoints[a]&&e.keypoints[r].position[1]d&&d.part===t[0]),n=e.keypoints.findIndex(d=>d&&d.part===t[1]),s=e.keypoints.findIndex(d=>d&&d.part===r[0]),i=e.keypoints.findIndex(d=>d&&d.part===r[1]);if(!e.keypoints[s]||!e.keypoints[i])continue;let o=e.keypoints[a]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[a].position[0]),Math.abs(e.keypoints[i].position[0]-e.keypoints[a].position[0])]:[0,0],l=e.keypoints[n]?[Math.abs(e.keypoints[i].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0])]:[0,0];if(o[0]>o[1]||l[0]>l[1]){let d=e.keypoints[a];e.keypoints[a]=e.keypoints[n],e.keypoints[n]=d}}}function gN(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],r.pad=ja(e,xa.padding),r.resize=Ie.resizeBilinear(r.pad,[t,t]);let a=me(r.resize,"int32");return Object.keys(r).forEach(n=>re(r[n])),a}function AN(e,t){e.keypoints=e.keypoints.filter(a=>a&&a.position);for(let a of e.keypoints)a.position=[a.position[0]*(t[0]+xa.padding[2][0]+xa.padding[2][1])/t[0]-xa.padding[2][0],a.position[1]*(t[1]+xa.padding[1][0]+xa.padding[1][1])/t[1]-xa.padding[1][0]],a.positionRaw=[a.position[0]/t[0],a.position[1]/t[1]];let r=ns(e.keypoints.map(a=>a.position),t);return e.box=r.box,e.boxRaw=r.boxRaw,e}var ba,$0=0,r5=Number.MAX_SAFE_INTEGER,zl={boxes:[],bodies:[],last:0};async function xN(e){return ce.initial&&(ba=null),ba?e.debug&&se("cached model:",ba.modelUrl):(E0(["size"],e),ba=await Ue(e.body.modelPath)),$0=ba.inputs[0].shape?ba.inputs[0].shape[2]:0,$0<64&&($0=256),ba}async function x2e(e,t,r){let a=e[0][0],n=[],s=0;for(let u=0;ut.body.minConfidence){let p=[a[u][1],a[u][0]];n.push({score:Math.round(100*s)/100,part:F0[u],positionRaw:p,position:[Math.round((r.shape[2]||0)*p[0]),Math.round((r.shape[1]||0)*p[1])]})}s=n.reduce((u,p)=>p.score>u?p.score:u,0);let i=[],o=ns(n.map(u=>u.position),[r.shape[2],r.shape[1]]),l={};for(let[u,p]of Object.entries(M0)){let h=[];for(let c=0;cg.part===p[c]),m=n.find(g=>g.part===p[c+1]);f&&m&&f.score>(t.body.minConfidence||0)&&m.score>(t.body.minConfidence||0)&&h.push([f.position,m.position])}l[u]=h}let d={id:0,score:s,box:o.box,boxRaw:o.boxRaw,keypoints:n,annotations:l};return t5(d),i.push(d),i}async function b2e(e,t,r){let a=[];for(let n=0;nt.body.minConfidence){let o=[];for(let p=0;p<17;p++){let h=s[3*p+2];if(h>t.body.minConfidence){let c=[s[3*p+1],s[3*p+0]];o.push({part:F0[p],score:Math.round(100*h)/100,positionRaw:c,position:[Math.round((r.shape[2]||0)*c[0]),Math.round((r.shape[1]||0)*c[1])]})}}let l=ns(o.map(p=>p.position),[r.shape[2],r.shape[1]]),d={};for(let[p,h]of Object.entries(M0)){let c=[];for(let f=0;fy.part===h[f]),g=o.find(y=>y.part===h[f+1]);m&&g&&m.score>(t.body.minConfidence||0)&&g.score>(t.body.minConfidence||0)&&c.push([m.position,g.position])}d[p]=c}let u={id:n,score:i,box:l.box,boxRaw:l.boxRaw,keypoints:[...o],annotations:d};t5(u),a.push(u)}}return a.sort((n,s)=>s.score-n.score),a.length>t.body.maxDetected&&(a.length=t.body.maxDetected),a}async function a5(e,t){if(!ba||!(ba==null?void 0:ba.inputs[0].shape))return[];t.skipAllowed||(zl.boxes.length=0),r5++;let r=(t.body.skipTime||0)>oe()-zl.last,a=r5<(t.body.skipFrames||0);return t.skipAllowed&&r&&a?zl.bodies:new Promise(async n=>{let s={};r5=0,s.input=yN(e,$0),s.res=ba==null?void 0:ba.execute(s.input),zl.last=oe();let i=await s.res.array();zl.bodies=s.res.shape[2]===17?await x2e(i,t,e):await b2e(i,t,e);for(let o of zl.bodies)AN(o,[e.shape[2]||1,e.shape[1]||1]),gN(o.keypoints);Object.keys(s).forEach(o=>re(s[o])),n(zl.bodies)})}var zd,P0=[],vN=0,n5=Number.MAX_SAFE_INTEGER,z0=0,O0=2.5;async function wN(e){if(!zd||ce.initial){zd=await Ue(e.object.modelPath);let t=Object.values(zd.modelSignature.inputs);z0=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&se("cached model:",zd.modelUrl);return zd}async function v2e(e,t,r){let a=0,n=[];for(let l of[1,2,4])q(async()=>{let d=l*13,u=Ye(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)===Cd.length)),p=Ye(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)(r.object.minConfidence||0)&&g!==61){let A=(.5+Math.trunc(m%d))/d,x=(.5+Math.trunc(m/d))/d,b=c[m].map(I=>I*(d/l/z0)),[v,C]=[A-O0/l*b[0],x-O0/l*b[1]],[T,E]=[A+O0/l*b[2]-v,x+O0/l*b[3]-C],R=[v,C,T,E];R=R.map(I=>Math.max(0,Math.min(I,1)));let z=[R[0]*t[0],R[1]*t[1],R[2]*t[0],R[3]*t[1]],M={id:a++,score:Math.round(100*y)/100,class:g+1,label:Cd[g].label,box:z.map(I=>Math.trunc(I)),boxRaw:R};n.push(M)}}});e.forEach(l=>re(l));let s=n.map(l=>[l.boxRaw[1],l.boxRaw[0],l.boxRaw[3],l.boxRaw[2]]),i=n.map(l=>l.score),o=[];if(s&&s.length>0){let l=await Ie.nonMaxSuppressionAsync(s,i,r.object.maxDetected,r.object.iouThreshold,r.object.minConfidence);o=await l.data(),re(l)}return n=n.filter((l,d)=>o.includes(d)).sort((l,d)=>d.score-l.score),n}async function s5(e,t){let r=(t.object.skipTime||0)>oe()-vN,a=n5<(t.object.skipFrames||0);return t.skipAllowed&&r&&a&&P0.length>0?(n5++,P0):(n5=0,!ce.kernels.includes("mod")||!ce.kernels.includes("sparsetodense")?P0:new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],i=Ie.resizeBilinear(e,[z0,z0],!1),o=pe(i,Xe.tf255),l=o.transpose([0,3,1,2]);re(o),re(i);let d;t.object.enabled&&(d=zd.execute(l)),vN=oe(),re(l);let u=await v2e(d,s,t);P0=u,n(u)}))}var Hh=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],w2e=Hh.length,jh=Hh.reduce((e,t,r)=>(e[t]=r,e),{}),k2e=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Lxe=k2e.map(([e,t])=>[jh[e],jh[t]]),IN=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function SN(e){let t=e.reduce(({maxX:r,maxY:a,minX:n,minY:s},{position:{x:i,y:o}})=>({maxX:Math.max(r,i),maxY:Math.max(a,o),minX:Math.min(n,i),minY:Math.min(s,o)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function TN(e,[t,r],[a,n]){let s=t/a,i=r/n,o=(d,u)=>({id:u,score:d.score,boxRaw:[d.box[0]/n,d.box[1]/a,d.box[2]/n,d.box[3]/a],box:[Math.trunc(d.box[0]*i),Math.trunc(d.box[1]*s),Math.trunc(d.box[2]*i),Math.trunc(d.box[3]*s)],keypoints:d.keypoints.map(({score:p,part:h,position:c})=>({score:p,part:h,position:[Math.trunc(c.x*i),Math.trunc(c.y*s)],positionRaw:[c.x/a,c.y/a]})),annotations:{}});return e.map((d,u)=>o(d,u))}var i5=class{constructor(t,r){fe(this,"priorityQueue");fe(this,"numberOfElements");fe(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=r}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let r=2*t;if(rr?r:e}function CN(e,t,r,a){let n=r-e,s=a-t;return n*n+s*s}function d5(e,t){return{x:e.x+t.x,y:e.y+t.y}}var An,S2e=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],D0=1,Dd=16,T2e=50**2;function NN(e,t,r,a,n,s,i=2){let o=y=>({y:s.get(y.y,y.x,e),x:s.get(y.y,y.x,s.shape[2]/2+e)}),l=(y,A,x)=>({y:u5(Math.round(y.y/Dd),0,A-1),x:u5(Math.round(y.x/Dd),0,x-1)}),[d,u]=a.shape,p=l(t.position,d,u),h=o(p),f=d5(t.position,h);for(let y=0;y[jh[h],jh[c]]),i=s.map(([,h])=>h),o=s.map(([h])=>h),l=t.shape[2],d=i.length,u=new Array(l),p=l5(e.part,Dd,r);u[e.part.id]={score:e.score,part:Hh[e.part.id],position:p};for(let h=d-1;h>=0;--h){let c=i[h],f=o[h];u[c]&&!u[f]&&(u[f]=NN(h,u[c],f,t,r,n))}for(let h=0;ht){o=!1;break}if(!o)break}return o}function E2e(e,t){let[r,a,n]=t.shape,s=new i5(r*a*n,({score:i})=>i);for(let i=0;i{var i;let s=(i=n[a])==null?void 0:i.position;return s?CN(r,t,s.y,s.x)<=T2e:!1})}function R2e(e,t){return t.reduce((a,{position:n,score:s},i)=>(EN(e,n,i)||(a+=s),a),0)/t.length}function F2e(e,t,r,a,n,s){let i=[],o=E2e(s,t);for(;i.lengthc.score>s);let p=R2e(i,u),h=SN(u);p>s&&i.push({keypoints:u,box:h,score:Math.round(100*p)/100})}return i}async function p5(e,t){let r=q(()=>{if(!An.inputs[0].shape)return[];let i=Ie.resizeBilinear(e,[An.inputs[0].shape[2],An.inputs[0].shape[1]]),o=he(pe(me(i,"float32"),127.5),1),d=An.execute(o,S2e).map(u=>Ye(u,[0]));return d[1]=Sr(d[1]),d}),a=await Promise.all(r.map(i=>i.buffer()));for(let i of r)re(i);let n=await F2e(a[0],a[1],a[2],a[3],t.body.maxDetected,t.body.minConfidence);return An.inputs[0].shape?TN(n,[e.shape[1],e.shape[2]],[An.inputs[0].shape[2],An.inputs[0].shape[1]]):[]}async function RN(e){return!An||ce.initial?An=await Ue(e.body.modelPath):e.debug&&se("cached model:",An.modelUrl),An}var On,h5=!1;async function c5(e){return!On||ce.initial?On=await Ue(e.segmentation.modelPath):e.debug&&se("cached model:",On.modelUrl),On}async function MN(e,t,r){var m,g;if(h5)return{data:[],canvas:null,alpha:null};h5=!0,On||await c5(r);let a=await Id(e,r),n=((m=a.tensor)==null?void 0:m.shape[2])||0,s=((g=a.tensor)==null?void 0:g.shape[1])||0;if(!a.tensor)return{data:[],canvas:null,alpha:null};let i={};i.resize=Ie.resizeBilinear(a.tensor,[On.inputs[0].shape?On.inputs[0].shape[1]:0,On.inputs[0].shape?On.inputs[0].shape[2]:0],!1),re(a.tensor),i.norm=pe(i.resize,Xe.tf255),i.res=On.execute(i.norm),i.squeeze=Ye(i.res,0),i.squeeze.shape[2]===2?(i.softmax=id(i.squeeze),[i.bg,i.fg]=ra(i.softmax,2),i.expand=Ht(i.fg,2),i.pad=Ht(i.expand,0),i.crop=Ie.cropAndResize(i.pad,[[0,0,.5,.5]],[0],[n,s]),i.data=Ye(i.crop,0)):i.data=Ie.resizeBilinear(i.squeeze,[s,n]);let o=Array.from(await i.data.data());if(ce.node&&!ce.Canvas&&typeof ImageData=="undefined")return r.debug&&se("canvas support missing"),Object.keys(i).forEach(y=>re(i[y])),{data:o,canvas:null,alpha:null};let l=Ur(n,s);$a&&await $a.toPixels(i.data,l);let d=l.getContext("2d");r.segmentation.blur&&r.segmentation.blur>0&&(d.filter=`blur(${r.segmentation.blur}px)`);let u=d.getImageData(0,0,n,s),p=Ur(n,s),h=p.getContext("2d");a.canvas&&h.drawImage(a.canvas,0,0),h.globalCompositeOperation="darken",r.segmentation.blur&&r.segmentation.blur>0&&(h.filter=`blur(${r.segmentation.blur}px)`),h.drawImage(l,0,0),h.globalCompositeOperation="source-over",h.filter="none";let c=h.getImageData(0,0,n,s);for(let y=0;yre(i[y])),h5=!1,{data:o,canvas:p,alpha:l}}var f5=class{constructor(){fe(this,"ssrnetage",null);fe(this,"gear",null);fe(this,"blazeposedetect",null);fe(this,"blazepose",null);fe(this,"centernet",null);fe(this,"efficientpose",null);fe(this,"mobilefacenet",null);fe(this,"emotion",null);fe(this,"facedetect",null);fe(this,"faceiris",null);fe(this,"facemesh",null);fe(this,"faceres",null);fe(this,"ssrnetgender",null);fe(this,"handpose",null);fe(this,"handskeleton",null);fe(this,"handtrack",null);fe(this,"liveness",null);fe(this,"movenet",null);fe(this,"nanodet",null);fe(this,"posenet",null);fe(this,"segmentation",null);fe(this,"antispoof",null)}};function m5(e){for(let t of Object.keys(e.models))e.models[t]=null}async function PN(e){var t,r,a,n,s,i,o,l,d,u,p,h,c,f,m,g,y,A,x,b,v,C,T,E,R,z,M,I,D,O;ce.initial&&m5(e),e.config.hand.enabled&&(!e.models.handpose&&((r=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:r.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await Hb(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(a=e.config.hand.detector)==null?void 0:a.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await Hb(e.config))),e.config.body.enabled&&!e.models.blazepose&&((i=(s=e.config.body)==null?void 0:s.modelPath)==null?void 0:i.includes("blazepose"))&&(e.models.blazepose=oC(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=iC(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((l=(o=e.config.body)==null?void 0:o.modelPath)==null?void 0:l.includes("efficientpose"))&&(e.models.efficientpose=cC(e.config)),e.config.body.enabled&&!e.models.movenet&&((u=(d=e.config.body)==null?void 0:d.modelPath)==null?void 0:u.includes("movenet"))&&(e.models.movenet=xN(e.config)),e.config.body.enabled&&!e.models.posenet&&((h=(p=e.config.body)==null?void 0:p.modelPath)==null?void 0:h.includes("posenet"))&&(e.models.posenet=RN(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=YT(e.config)),e.config.face.enabled&&((c=e.config.face.antispoof)==null?void 0:c.enabled)&&!e.models.antispoof&&(e.models.antispoof=_T(e.config)),e.config.face.enabled&&((f=e.config.face.liveness)==null?void 0:f.enabled)&&!e.models.liveness&&(e.models.liveness=cN(e.config)),e.config.face.enabled&&((m=e.config.face.description)==null?void 0:m.enabled)&&!e.models.faceres&&(e.models.faceres=zC(e.config)),e.config.face.enabled&&((g=e.config.face.emotion)==null?void 0:g.enabled)&&!e.models.emotion&&(e.models.emotion=yC(e.config)),e.config.face.enabled&&((y=e.config.face.iris)==null?void 0:y.enabled)&&!e.models.faceiris&&(e.models.faceiris=CC(e.config)),e.config.face.enabled&&((A=e.config.face.mesh)==null?void 0:A.enabled)&&!e.models.facemesh&&(e.models.facemesh=FC(e.config)),e.config.face.enabled&&((x=e.config.face.gear)==null?void 0:x.enabled)&&!e.models.gear&&(e.models.gear=ST(e.config)),e.config.face.enabled&&((b=e.config.face.ssrnet)==null?void 0:b.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=RT(e.config)),e.config.face.enabled&&((v=e.config.face.ssrnet)==null?void 0:v.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=PT(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=wC(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((E=(T=e.config.hand.detector)==null?void 0:T.modelPath)==null?void 0:E.includes("handtrack"))&&(e.models.handtrack=lN(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((z=(R=e.config.hand.detector)==null?void 0:R.modelPath)==null?void 0:z.includes("handtrack"))&&(e.models.handskeleton=uN(e.config)),e.config.object.enabled&&!e.models.centernet&&((I=(M=e.config.object)==null?void 0:M.modelPath)==null?void 0:I.includes("centernet"))&&(e.models.centernet=dC(e.config)),e.config.object.enabled&&!e.models.nanodet&&((O=(D=e.config.object)==null?void 0:D.modelPath)==null?void 0:O.includes("nanodet"))&&(e.models.nanodet=wN(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=c5(e.config));for await(let j of Object.keys(e.models))e.models[j]&&typeof e.models[j]!="undefined"&&(e.models[j]=await e.models[j])}async function ON(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let r of Object.keys(e.models)){let a=e.models[r];if(!a)continue;let n=[],s=a==null?void 0:a.executor;if(s&&s.graph.nodes)for(let o of Object.values(s.graph.nodes)){let l=o.op.toLowerCase();n.includes(l)||n.push(l)}else!s&&e.config.debug&&se("model signature not determined:",r);let i=[];for(let o of n)!t.includes(o)&&!e.env.kernels.includes(o)&&!e.env.kernels.includes(o.replace("_",""))&&!e.env.kernels.includes(o.replace("native",""))&&!e.env.kernels.includes(o.replace("v2",""))&&i.push(o);e.config.debug&&i.length>0&&se("model validation failed:",r,i)}}var Nt={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function M2e(){let e=Nt.gl;!e||(Nt.extensions=e.getSupportedExtensions())}async function DN(e){var t;if(e.config.backend==="humangl"&&(Nt.name in kr().registry&&(!Nt.gl||!Nt.gl.getParameter(Nt.gl.VERSION))&&(se("error: humangl backend invalid context"),m5(e)),!e2(Nt.name))){try{Nt.canvas=await Ur(100,100)}catch(a){se("error: cannot create canvas:",a);return}try{if(Nt.gl=(t=Nt.canvas)==null?void 0:t.getContext("webgl2",Nt.webGLattr),!Nt.gl.getParameter(Nt.gl.VERSION).includes("2.0")){se("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}Nt.canvas&&(Nt.canvas.addEventListener("webglcontextlost",async n=>{throw se("error: humangl:",n.type),se("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),Nt.canvas.addEventListener("webglcontextrestored",n=>{se("error: humangl context restored:",n)}),Nt.canvas.addEventListener("webglcontextcreationerror",n=>{se("error: humangl context create:",n)}))}catch(a){se("error: cannot get WebGL context:",a);return}try{Zm(2,Nt.gl)}catch(a){se("error: cannot set WebGL context:",a);return}try{let a=new uu(Nt.gl);Al(Nt.name,()=>new Nh(a),Nt.priority)}catch(a){se("error: cannot register WebGL backend:",a);return}try{Tn("webgl").forEach(n=>{let s={...n,backendName:Nt.name};Ga(s)})}catch(a){se("error: cannot update WebGL backend registration:",a);return}let r=cn().getGPGPUContext?cn().getGPGPUContext().gl:null;if(r)se(`humangl webgl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`);else{se("error: no current gl context:",r,Nt.gl);return}try{hn.set("WEBGL_VERSION",2)}catch(a){se("error: cannot set WebGL backend flags:",a);return}M2e(),se("backend registered:",Nt.name)}}function $2e(){if(!ce.kernels.includes("mod")){let e={kernelName:"Mod",backendName:ca(),kernelFunc:t=>q(()=>he(t.inputs.a,L(pe(t.inputs.a,t.inputs.b),t.inputs.b)))};Ga(e),ce.kernels.push("mod")}if(!ce.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:ca(),kernelFunc:t=>q(()=>ih(t.inputs.a/t.inputs.b)*t.inputs.b+nd(t.inputs.a,t.inputs.b))};Ga(e),ce.kernels.push("floormod")}}async function _0(e,t=!1){if(e.state="backend",t||ce.initial||e.config.backend&&e.config.backend.length>0&&ca()!==e.config.backend){let r=oe();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&se("running inside web worker"),ce.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&se("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),ce.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&se(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),ce.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")se("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&se("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await DN(e);let a=Object.keys(kr().registryFactory);if(e.config.debug&&se("available backends:",a),a.includes(e.config.backend)||(se(`error: backend ${e.config.backend} not found in registry`),e.config.backend=ce.node?"tensorflow":"webgl",e.config.debug&&se(`override: setting backend ${e.config.backend}`)),e.config.debug&&se("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&se("wasm path:",e.config.wasmPath),typeof(We==null?void 0:We.setWasmPaths)!="undefined")await Xx(e.config.wasmPath);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await Y().getAsync("WASM_HAS_SIMD_SUPPORT"),s=await Y().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&se(`wasm execution: ${n?"SIMD":"no SIMD"} ${s?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&se("warning: wasm simd support is not enabled")}try{await Qy(e.config.backend),await ed(),CT()}catch(n){return se("error: cannot set backend:",e.config.backend,n),!1}}if(ca()==="humangl"&&(hn.set("CHECK_COMPUTATION_FOR_ERRORS",!1),hn.set("WEBGL_CPU_FORWARD",!0),hn.set("WEBGL_USE_SHAPES_UNIFORMS",!0),hn.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(se("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),hn.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),cn().getGPGPUContext)){let a=await cn().getGPGPUContext().gl;e.config.debug&&se(`gl version:${a.getParameter(a.VERSION)} renderer:${a.getParameter(a.RENDERER)}`)}ca()==="webgpu",Yy(),await ed(),e.performance.initBackend=Math.trunc(oe()-r),e.config.backend=ca(),await ce.updateBackend(),$2e()}return!0}function E0(e,t){for(let r of e){let a={kernelName:r,backendName:t.backend,kernelFunc:()=>{t.debug&&se("kernelFunc",r,t.backend)}};Ga(a)}ce.kernels=Tn(ca()).map(r=>r.kernelName.toLowerCase())}var ps={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},g5=0,Dl=e=>{if(!e)se("draw error: invalid canvas");else if(!e.getContext)se("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)se("draw error: cannot get canvas context");else return t}return null},_d=e=>Math.round(e*180/Math.PI);function y5(e,t,r,a,n){a=a||0,e.fillStyle=n.useDepth&&a?`rgba(${127.5+2*a}, ${127.5-2*a}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,r,n.pointSize,0,2*Math.PI),e.fill()}function qh(e,t,r,a,n,s){if(e.beginPath(),e.lineWidth=s.lineWidth,s.useCurves){let i=(t+t+a)/2,o=(r+r+n)/2;e.ellipse(i,o,a/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+s.roundRect,r),e.lineTo(t+a-s.roundRect,r),e.quadraticCurveTo(t+a,r,t+a,r+s.roundRect),e.lineTo(t+a,r+n-s.roundRect),e.quadraticCurveTo(t+a,r+n,t+a-s.roundRect,r+n),e.lineTo(t+s.roundRect,r+n),e.quadraticCurveTo(t,r+n,t,r+n-s.roundRect),e.lineTo(t,r+s.roundRect),e.quadraticCurveTo(t,r,t+s.roundRect,r),e.closePath();e.stroke()}function BN(e,t,r){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let a of t){let n=a[2]||0;e.strokeStyle=r.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:r.color,e.fillStyle=r.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:r.color,e.lineTo(a[0],Math.round(a[1]))}e.stroke(),r.fillPolygons&&(e.closePath(),e.fill())}}function O2e(e,t,r){if(!(t.length<2)){if(e.lineWidth=r.lineWidth,!r.useCurves||t.length<=2){BN(e,t,r);return}e.moveTo(t[0][0],t[0][1]);for(let a=0;a1&&l[1].length>0){let d=o[1]>0?`#${o[1]}`:"",u=`${o[0]} ${d}: ${l[1]}`;a.shadowColor&&a.shadowColor!==""&&(n.fillStyle=a.shadowColor,n.fillText(u,8,2+s*a.lineHeight)),n.fillStyle=a.labelColor,n.fillText(u,6,0+s*a.lineHeight),s+=1}}}}async function x5(e,t,r){var s,i,o,l,d;let a=vr(ps,r);if(!t||!e)return;let n=Dl(e);if(!!n)for(let u of t){if(n.font=a.font,n.strokeStyle=a.color,n.fillStyle=a.color,a.drawBoxes&&qh(n,u.box[0],u.box[1],u.box[2],u.box[3],a),a.drawLabels){let p=[];if(p.push(`face: ${Math.trunc(100*u.score)}%`),u.genderScore&&p.push(`${u.gender||""} ${Math.trunc(100*u.genderScore)}%`),u.age&&p.push(`age: ${u.age||""}`),u.iris&&p.push(`distance: ${u.iris}`),u.real&&p.push(`real: ${Math.trunc(100*u.real)}%`),u.live&&p.push(`live: ${Math.trunc(100*u.live)}%`),u.emotion&&u.emotion.length>0){let h=u.emotion.map(c=>`${Math.trunc(100*c.score)}% ${c.emotion}`);h.length>3&&(h.length=3),p.push(h.join(" "))}u.rotation&&u.rotation.angle&&u.rotation.gaze&&(u.rotation.angle.roll&&p.push(`roll: ${_d(u.rotation.angle.roll)}\xB0 yaw:${_d(u.rotation.angle.yaw)}\xB0 pitch:${_d(u.rotation.angle.pitch)}\xB0`),u.rotation.gaze.bearing&&p.push(`gaze: ${_d(u.rotation.gaze.bearing)}\xB0`)),p.length===0&&p.push("face"),n.fillStyle=a.color;for(let h=p.length-1;h>=0;h--){let c=Math.max(u.box[0],0),f=h*a.lineHeight+u.box[1];a.shadowColor&&a.shadowColor!==""&&(n.fillStyle=a.shadowColor,n.fillText(p[h],c+5,f+16)),n.fillStyle=a.labelColor,n.fillText(p[h],c+4,f+15)}}if(n.lineWidth=2,u.mesh&&u.mesh.length>0){if(a.drawPoints)for(let p of u.mesh)y5(n,p[0],p[1],p[2],a);if(a.drawPolygons){if(u.mesh.length>450)for(let p=0;pu.mesh[c]);BN(n,h,a)}if(u.annotations&&u.annotations.leftEyeIris&&u.annotations.leftEyeIris[0]){n.strokeStyle=a.useDepth?"rgba(255, 200, 255, 0.3)":a.color,n.beginPath();let p=Math.abs(u.annotations.leftEyeIris[3][0]-u.annotations.leftEyeIris[1][0])/2,h=Math.abs(u.annotations.leftEyeIris[4][1]-u.annotations.leftEyeIris[2][1])/2;n.ellipse(u.annotations.leftEyeIris[0][0],u.annotations.leftEyeIris[0][1],p,h,0,0,2*Math.PI),n.stroke(),a.fillPolygons&&(n.fillStyle=a.useDepth?"rgba(255, 255, 200, 0.3)":a.color,n.fill())}if(u.annotations&&u.annotations.rightEyeIris&&u.annotations.rightEyeIris[0]){n.strokeStyle=a.useDepth?"rgba(255, 200, 255, 0.3)":a.color,n.beginPath();let p=Math.abs(u.annotations.rightEyeIris[3][0]-u.annotations.rightEyeIris[1][0])/2,h=Math.abs(u.annotations.rightEyeIris[4][1]-u.annotations.rightEyeIris[2][1])/2;n.ellipse(u.annotations.rightEyeIris[0][0],u.annotations.rightEyeIris[0][1],p,h,0,0,2*Math.PI),n.stroke(),a.fillPolygons&&(n.fillStyle=a.useDepth?"rgba(255, 255, 200, 0.3)":a.color,n.fill())}if(a.drawGaze&&((s=u.rotation)==null?void 0:s.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let p=u.box[0]+u.box[2]/2-u.box[3]*_d(u.rotation.angle.yaw)/90,h=u.box[1]+u.box[3]/2+u.box[2]*_d(u.rotation.angle.pitch)/90,c=new Path2D(` +`;var Zx=(e,t,r)=>{let a=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(a,(n,s)=>(r[s]=0,n))},yT=class{constructor(t,r,a){fe(this,"uniform",{});fe(this,"attribute",{});fe(this,"gl");fe(this,"id");fe(this,"compile",(t,r)=>{let a=this.gl.createShader(r);return a?(this.gl.shaderSource(a,t),this.gl.compileShader(a),this.gl.getShaderParameter(a,this.gl.COMPILE_STATUS)?a:(se(`filter: gl compile failed: ${this.gl.getShaderInfoLog(a)}`),null)):(se("filter: could not create shader"),null)});this.gl=t;let n=this.compile(r,this.gl.VERTEX_SHADER),s=this.compile(a,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!s)){if(!this.id){se("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,s),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){se(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),Zx(r,"attribute",this.attribute);for(let i in this.attribute)this.attribute[i]=this.gl.getAttribLocation(this.id,i);Zx(r,"uniform",this.uniform),Zx(a,"uniform",this.uniform);for(let i in this.uniform)this.uniform[i]=this.gl.getUniformLocation(this.id,i)}}};function AT(){let e=0,t=null,r=!1,a=-1,n=[null,null],s=[],i=null,o=null,l=Ur(100,100),d={},u={INTERMEDIATE:1},p=l.getContext("webgl");if(this.gl=p,!p){se("filter: cannot get webgl context");return}function h(A,x){if(!(A===l.width&&x===l.height)){if(l.width=A,l.height=x,!i){let b=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=p.createBuffer(),p.bindBuffer(p.ARRAY_BUFFER,i),p.bufferData(p.ARRAY_BUFFER,b,p.STATIC_DRAW),p.pixelStorei(p.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}p.viewport(0,0,l.width,l.height),n=[null,null]}}function c(A,x){let b=p.createFramebuffer();p.bindFramebuffer(p.FRAMEBUFFER,b);let v=p.createRenderbuffer();p.bindRenderbuffer(p.RENDERBUFFER,v);let C=p.createTexture();return p.bindTexture(p.TEXTURE_2D,C),p.texImage2D(p.TEXTURE_2D,0,p.RGBA,A,x,0,p.RGBA,p.UNSIGNED_BYTE,null),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MAG_FILTER,p.LINEAR),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MIN_FILTER,p.LINEAR),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_S,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_T,p.CLAMP_TO_EDGE),p.framebufferTexture2D(p.FRAMEBUFFER,p.COLOR_ATTACHMENT0,p.TEXTURE_2D,C,0),p.bindTexture(p.TEXTURE_2D,null),p.bindFramebuffer(p.FRAMEBUFFER,null),{fbo:b,texture:C}}function f(A){return n[A]=n[A]||c(l.width,l.height),n[A]}function m(A=0){if(!o)return;let x=null,b=null,v=!1;e===0?x=t:x=f(a).texture||null,e++,r&&!(A&u.INTERMEDIATE)?(b=null,v=e%2===0):(a=(a+1)%2,b=f(a).fbo||null),p.bindTexture(p.TEXTURE_2D,x),p.bindFramebuffer(p.FRAMEBUFFER,b),p.uniform1f(o.uniform.flipY,v?-1:1),p.drawArrays(p.TRIANGLES,0,6)}function g(A){if(d[A])return o=d[A],p.useProgram((o?o.id:null)||null),o;if(o=new yT(p,pT,A),!o)return se("filter: could not get webgl program"),null;let x=Float32Array.BYTES_PER_ELEMENT,b=4*x;return p.enableVertexAttribArray(o.attribute.pos),p.vertexAttribPointer(o.attribute.pos,2,p.FLOAT,!1,b,0*x),p.enableVertexAttribArray(o.attribute.uv),p.vertexAttribPointer(o.attribute.uv,2,p.FLOAT,!1,b,2*x),d[A]=o,o}let y={colorMatrix:A=>{let x=new Float32Array(A);x[4]/=255,x[9]/=255,x[14]/=255,x[19]/=255;let b=x[18]===1&&x[3]===0&&x[8]===0&&x[13]===0&&x[15]===0&&x[16]===0&&x[17]===0&&x[19]===0?cT:hT,v=g(b);!v||(p.uniform1fv(v.uniform.m,x),m())},brightness:A=>{let x=(A||0)+1;y.colorMatrix([x,0,0,0,0,0,x,0,0,0,0,0,x,0,0,0,0,0,1,0])},saturation:A=>{let x=(A||0)*2/3+1,b=(x-1)*-.5;y.colorMatrix([x,b,b,0,0,b,x,b,0,0,b,b,x,0,0,0,0,0,1,0])},desaturate:()=>{y.saturation(-1)},contrast:A=>{let x=(A||0)+1,b=-128*(x-1);y.colorMatrix([x,0,0,0,b,0,x,0,0,b,0,0,x,0,b,0,0,0,1,0])},negative:()=>{y.contrast(-2)},hue:A=>{A=(A||0)/180*Math.PI;let x=Math.cos(A),b=Math.sin(A),v=.213,C=.715,T=.072;y.colorMatrix([v+x*(1-v)+b*-v,C+x*-C+b*-C,T+x*-T+b*(1-T),0,0,v+x*-v+b*.143,C+x*(1-C)+b*.14,T+x*-T+b*-.283,0,0,v+x*-v+b*-(1-v),C+x*-C+b*C,T+x*(1-T)+b*T,0,0,0,0,0,1,0])},desaturateLuminance:()=>{y.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{y.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{y.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{y.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{y.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{y.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{y.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{y.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:A=>{let x=new Float32Array(A),b=1/l.width,v=1/l.height,C=g(gT);!C||(p.uniform1fv(C.uniform.m,x),p.uniform2f(C.uniform.px,b,v),m())},detectEdges:()=>{y.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{y.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{y.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:A=>{let x=A||1;y.convolution.call(this,[0,-1*x,0,-1*x,1+4*x,-1*x,0,-1*x,0])},emboss:A=>{let x=A||1;y.convolution.call(this,[-2*x,-1*x,0,-1*x,1,1*x,0,1*x,2*x])},blur:A=>{let x=A/7/l.width,b=A/7/l.height,v=g(mT);!v||(p.uniform2f(v.uniform.px,0,b),m(u.INTERMEDIATE),p.uniform2f(v.uniform.px,x,0),m())},pixelate:A=>{let x=A/l.width,b=A/l.height,v=g(fT);!v||(p.uniform2f(v.uniform.size,x,b),m())}};this.add=function(A){let x=Array.prototype.slice.call(arguments,1),b=y[A];s.push({func:b,args:x})},this.reset=function(){s=[]},this.get=function(){return s},this.apply=function(A){h(A.width,A.height),e=0,t||(t=p.createTexture()),p.bindTexture(p.TEXTURE_2D,t),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_S,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_T,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MIN_FILTER,p.NEAREST),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MAG_FILTER,p.NEAREST),p.texImage2D(p.TEXTURE_2D,0,p.RGBA,p.RGBA,p.UNSIGNED_BYTE,A);for(let x=0;xc.data())),i=.99*Math.max(s[0][0],s[1][0],s[2][0]),o=[he(r[0],a[0]),he(r[1],a[1]),he(r[2],a[2])],l=[he(n[0],a[0]),he(n[1],a[1]),he(n[2],a[2])],d=[pe(i,l[0]),pe(i,l[1]),pe(i,l[2])],u=[L(o[0],d[0]),L(o[1],d[1]),L(o[2],d[2])],p=nr([u[0],u[1],u[2]],2),h=U(p,[1,t.shape[0],t.shape[1],3]);return re([...r,...a,...n,...o,...l,...d,...u,p,t]),h}var o0=2048,lt=null,ir=null,kd=null,Ct,rs={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function Ur(e,t){let r;if(ce.browser)if(ce.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");r=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");r=document.createElement("canvas"),r.width=e,r.height=t}else typeof ce.Canvas!="undefined"?r=new ce.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(r=new globalThis.Canvas(e,t));return r}function Yx(e,t){let r=t||Ur(e.width,e.height);return r.getContext("2d").drawImage(e,0,0),r}async function Id(e,t,r=!0){if(!e)return t.debug&&se("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof et)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof ce.Canvas!="undefined"&&e instanceof ce.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof et){let a=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)a=Ht(e,0);else if(e.shape[2]===4){let n=vl(e,[0,0,0],[-1,-1,3]);a=Ht(n,0),re(n)}}else e.shape.length===4&&(e.shape[3]===3?a=Pr(e):e.shape[3]===4&&(a=wo(e,[0,0,0,0],[-1,-1,-1,3])));if(a==null||a.shape.length!==4||a.shape[0]!==1||a.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(a.dtype==="int32"){let n=me(a,"float32");re(a),a=n}return{tensor:a,canvas:t.filter.return?ir:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&se("input stream is not ready"),{tensor:null,canvas:lt};let a=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!a||!n)return t.debug&&se("cannot determine input dimensions"),{tensor:null,canvas:lt};let s=a,i=n;if(s>o0&&(s=o0,i=Math.trunc(s*n/a)),i>o0&&(i=o0,s=Math.trunc(i*a/n)),(t.filter.width||0)>0?s=t.filter.width:(t.filter.height||0)>0&&(s=a*((t.filter.height||0)/n)),(t.filter.height||0)>0?i=t.filter.height:(t.filter.width||0)>0&&(i=n*((t.filter.width||0)/a)),!s||!i)throw new Error("input error: cannot determine dimension");(!lt||(lt==null?void 0:lt.width)!==s||(lt==null?void 0:lt.height)!==i)&&(lt=Ur(s,i));let o=lt.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?o.putImageData(e,0,0):t.filter.flip&&typeof o.translate!="undefined"?(o.translate(a,0),o.scale(-1,1),o.drawImage(e,0,0,a,n,0,0,lt==null?void 0:lt.width,lt==null?void 0:lt.height),o.setTransform(1,0,0,1,0,0)):o.drawImage(e,0,0,a,n,0,0,lt==null?void 0:lt.width,lt==null?void 0:lt.height),(!ir||lt.width!==ir.width||(lt==null?void 0:lt.height)!==(ir==null?void 0:ir.height))&&(ir=Ur(lt.width,lt.height)),t.filter.enabled&&ce.webgl.supported){if(Ct||(Ct=ce.browser?new AT:null),ce.filter=!!Ct,!Ct||!Ct.add)return t.debug&&se("input process error: cannot initialize filters"),{tensor:null,canvas:lt};Ct.reset(),t.filter.brightness!==0&&Ct.add("brightness",t.filter.brightness),t.filter.contrast!==0&&Ct.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&Ct.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&Ct.add("blur",t.filter.blur),t.filter.saturation!==0&&Ct.add("saturation",t.filter.saturation),t.filter.hue!==0&&Ct.add("hue",t.filter.hue),t.filter.negative&&Ct.add("negative"),t.filter.sepia&&Ct.add("sepia"),t.filter.vintage&&Ct.add("brownie"),t.filter.sepia&&Ct.add("sepia"),t.filter.kodachrome&&Ct.add("kodachrome"),t.filter.technicolor&&Ct.add("technicolor"),t.filter.polaroid&&Ct.add("polaroid"),t.filter.pixelate!==0&&Ct.add("pixelate",t.filter.pixelate),Ct.get()>0?ir=Ct.apply(lt):ir=Ct.draw(lt)}else Yx(lt,ir),Ct&&(Ct=null),ce.filter=!!Ct;if(!r)return{tensor:null,canvas:ir};if(!ir)throw new Error("canvas error: cannot create output");let l,d=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(ce.browser&&$a)l=$a?$a.fromPixels(e):null;else{d=e.data.length/e.height/e.width;let h=new Uint8Array(e.data.buffer);l=pt(h,[e.height,e.width,d],"int32")}else if((!kd||ir.width!==kd.width||ir.height!==kd.height)&&(kd=Ur(ir.width,ir.height)),$a&&ce.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?l=$a.fromPixels(ir):(kd=Yx(ir),l=$a.fromPixels(kd));else{let f=Yx(ir).getContext("2d").getImageData(0,0,s,i);d=f.data.length/s/i;let m=new Uint8Array(f.data.buffer);l=pt(m,[s,i,d])}if(d===4){let h=vl(l,[0,0,0],[-1,-1,3]);re(l),l=h}if(!l)throw new Error("input error: cannot create tensor");let u=me(l,"float32"),p=t.filter.equalization?await i0(u):Ht(u,0);return re([l,u]),{tensor:p,canvas:t.filter.return?ir:null}}}async function xT(e,t){let r=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return r;if(!rs.inputTensor)rs.inputTensor=Pr(t);else if(rs.inputTensor.shape[1]!==t.shape[1]||rs.inputTensor.shape[2]!==t.shape[2])re(rs.inputTensor),rs.inputTensor=Pr(t);else{let a={};a.diff=he(t,rs.inputTensor),a.squared=L(a.diff,a.diff),a.sum=ke(a.squared);let s=(await a.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;re([rs.inputTensor,a.diff,a.squared,a.sum]),rs.inputTensor=Pr(t),r=s<=(e.cacheSensitivity||0)}return r}async function bT(e,t,r){let a={};if(!t||!r||t.shape.length!==4||t.shape.length!==r.shape.length)return e.debug||se("invalid input tensor or tensor shapes do not match:",t.shape,r.shape),0;if(t.shape[0]!==1||r.shape[0]!==1||t.shape[3]!==3||r.shape[3]!==3)return e.debug||se("input tensors must be of shape [1, height, width, 3]:",t.shape,r.shape),0;a.input1=Pr(t),a.input2=t.shape[1]!==r.shape[1]||t.shape[2]!==r.shape[2]?Ie.resizeBilinear(r,[t.shape[1],t.shape[2]]):Pr(r),a.diff=he(a.input1,a.input2),a.squared=L(a.diff,a.diff),a.sum=ke(a.squared);let s=(await a.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return re([a.input1,a.input2,a.diff,a.squared,a.sum]),s}var vT=class{constructor(){fe(this,"browser");fe(this,"node");fe(this,"worker");fe(this,"platform","");fe(this,"agent","");fe(this,"backends",[]);fe(this,"initial");fe(this,"filter");fe(this,"tfjs");fe(this,"offscreen");fe(this,"perfadd",!1);fe(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});fe(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});fe(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});fe(this,"cpu",{model:void 0,flags:[]});fe(this,"kernels",[]);fe(this,"Canvas");fe(this,"Image");fe(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:Dh["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let r=t[0].match(/\(([^()]+)\)/g);this.platform=r&&r[0]?r[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(kr().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&ca()==="wasm"&&(this.wasm.simd=await Y().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await Y().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=Ur(100,100),r=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof r!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(ca()==="webgl"||ca()==="humangl")){let a=cn().gpgpu!=="undefined"?await cn().getGPGPUContext().gl:null;a&&(this.webgl.version=a.getParameter(a.VERSION),this.webgl.renderer=a.getParameter(a.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(a){this.webgpu.supported=!1}try{this.kernels=Tn(ca()).map(a=>a.kernelName.toLowerCase())}catch(a){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},ce=new vT;var as={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function wye(e,t){return as.debug&&se("load model fetch:",e,t),fetch(e,t)}function wT(e){as.cacheModels=e.cacheModels,as.verbose=e.debug,as.modelBasePath=e.modelBasePath}async function Ue(e){let t=B5(as.modelBasePath,e||""),r=t.split("/"),a="indexeddb://"+r[r.length-1].replace(".json",""),n=await Ir.listModels(),s=as.cacheModels&&Object.keys(n).includes(a),i=typeof fetch=="undefined"?{}:{fetchFunc:(l,d)=>wye(l,d)},o=new qm(s?a:t,i);try{o.findIOHandler(),as.debug&&se("model load handler:",o.handler);let l=await o.handler.load();o.loadSync(l),as.verbose&&se("load model:",o.modelUrl)}catch(l){se("error loading model:",t,l)}if(as.cacheModels&&!s)try{let l=await o.save(a);se("model saved:",a,l)}catch(l){se("error saving model:",t,l)}return o}var Jx="2.6.3";var Xa,Qx=[],Sye=["white","black","asian","indian","other"],Tye=[15,23,28,35.5,45.5,55.5,65],kT=0,IT=0,eb=Number.MAX_SAFE_INTEGER;async function ST(e){return ce.initial&&(Xa=null),Xa?e.debug&&se("cached model:",Xa.modelUrl):Xa=await Ue(e.face.gear),Xa}async function tb(e,t,r,a){var i,o;if(!Xa)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=eb<(((i=t.face.gear)==null?void 0:i.skipFrames)||0),s=(((o=t.face.gear)==null?void 0:o.skipTime)||0)>oe()-IT;return t.skipAllowed&&s&&n&&kT===a&&Qx[r]?(eb++,Qx[r]):(eb=0,new Promise(async l=>{var y,A;if(!(Xa==null?void 0:Xa.inputs[0].shape))return;let d={},u=[[0,.1,.9,.9]];d.resize=Ie.cropAndResize(e,u,[0],[Xa.inputs[0].shape[2],Xa.inputs[0].shape[1]]);let p={age:0,gender:"unknown",genderScore:0,race:[]};((y=t.face.gear)==null?void 0:y.enabled)&&([d.age,d.gender,d.race]=Xa.execute(d.resize,["age_output","gender_output","race_output"]));let h=await d.gender.data();p.gender=h[0]>h[1]?"male":"female",p.genderScore=Math.round(100*(h[0]>h[1]?h[0]:h[1]))/100;let c=await d.race.data();for(let x=0;x(((A=t.face.gear)==null?void 0:A.minConfidence)||.2)&&p.race.push({score:Math.round(100*c[x])/100,race:Sye[x]});p.race.sort((x,b)=>b.score-x.score);let m=Array.from(await d.age.data()).map((x,b)=>[Tye[b],x]).sort((x,b)=>b[1]-x[1]),g=m[0][0];for(let x=1;xre(d[x])),Qx[r]=p,kT=a,IT=oe(),l(p)}))}var Xe={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function CT(){Xe.tf255=Se(255,"float32"),Xe.tf1=Se(1,"float32"),Xe.tf2=Se(2,"float32"),Xe.tf05=Se(.5,"float32"),Xe.tf127=Se(127.5,"float32"),Xe.rgb=St([.2989,.587,.114],"float32")}var ma,l0=[],NT=0,ET=0,rb=Number.MAX_SAFE_INTEGER;async function RT(e){return ce.initial&&(ma=null),ma?e.debug&&se("cached model:",ma.modelUrl):ma=await Ue(e.face.ssrnet.modelPathAge),ma}async function ab(e,t,r,a){var i,o,l,d;if(!ma)return{age:0};let n=rb<(((i=t.face.ssrnet)==null?void 0:i.skipFrames)||0),s=(((o=t.face.ssrnet)==null?void 0:o.skipTime)||0)>oe()-ET;return t.skipAllowed&&n&&s&&NT===a&&((l=l0[r])==null?void 0:l.age)&&((d=l0[r])==null?void 0:d.age)>0?(rb++,l0[r]):(rb=0,new Promise(async u=>{if(!(ma==null?void 0:ma.inputs)||!ma.inputs[0]||!ma.inputs[0].shape)return;let p={};p.resize=Ie.resizeBilinear(e,[ma.inputs[0].shape[2],ma.inputs[0].shape[1]],!1),p.enhance=L(p.resize,Xe.tf255);let h={age:0};if(t.face.ssrnet.enabled&&(p.age=ma.execute(p.enhance)),p.age){let c=await p.age.data();h.age=Math.trunc(10*c[0])/10}Object.keys(p).forEach(c=>re(p[c])),l0[r]=h,NT=a,ET=oe(),u(h)}))}var Za,u0=[],MT=0,$T=0,nb=Number.MAX_SAFE_INTEGER,sb=[.2989,.587,.114];async function PT(e){return ce.initial&&(Za=null),Za?e.debug&&se("cached model:",Za.modelUrl):Za=await Ue(e.face.ssrnet.modelPathGender),Za}async function ib(e,t,r,a){var i,o,l,d;if(!Za)return{gender:"unknown",genderScore:0};let n=nb<(((i=t.face.ssrnet)==null?void 0:i.skipFrames)||0),s=(((o=t.face.ssrnet)==null?void 0:o.skipTime)||0)>oe()-$T;return t.skipAllowed&&n&&s&&MT===a&&((l=u0[r])==null?void 0:l.gender)&&((d=u0[r])==null?void 0:d.genderScore)>0?(nb++,u0[r]):(nb=0,new Promise(async u=>{if(!(Za==null?void 0:Za.inputs[0].shape))return;let p={};p.resize=Ie.resizeBilinear(e,[Za.inputs[0].shape[2],Za.inputs[0].shape[1]],!1),p.enhance=q(()=>{let[f,m,g]=Kt(p.resize,3,3),y=L(f,sb[0]),A=L(m,sb[1]),x=L(g,sb[2]),b=Jf([y,A,x]);return L(he(b,Xe.tf05),2)});let h={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(p.gender=Za.execute(p.enhance));let c=await p.gender.data();h.gender=c[0]>c[1]?"female":"male",h.genderScore=c[0]>c[1]?Math.trunc(100*c[0])/100:Math.trunc(100*c[1])/100,Object.keys(p).forEach(f=>re(p[f])),u0[r]=h,MT=a,$T=oe(),u(h)}))}var Cr,d0=[],ob=Number.MAX_SAFE_INTEGER,zT=0,DT=0;async function _T(e){var t;return ce.initial&&(Cr=null),Cr?e.debug&&se("cached model:",Cr.modelUrl):Cr=await Ue((t=e.face.antispoof)==null?void 0:t.modelPath),Cr}async function lb(e,t,r,a){var i,o;if(!Cr)return 0;let n=(((i=t.face.antispoof)==null?void 0:i.skipTime)||0)>oe()-DT,s=ob<(((o=t.face.antispoof)==null?void 0:o.skipFrames)||0);return t.skipAllowed&&n&&s&&zT===a&&d0[r]?(ob++,d0[r]):(ob=0,new Promise(async l=>{let d=Ie.resizeBilinear(e,[(Cr==null?void 0:Cr.inputs[0].shape)?Cr.inputs[0].shape[2]:0,(Cr==null?void 0:Cr.inputs[0].shape)?Cr.inputs[0].shape[1]:0],!1),u=Cr==null?void 0:Cr.execute(d),p=(await u.data())[0];d0[r]=Math.round(100*p)/100,zT=a,DT=oe(),re([d,u]),l(d0[r])}))}var Ya={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},ub={count:468,mouth:13,symmetryLine:[13,Ya.midwayBetweenEyes[0]]},Lh={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},db=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],Bh=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],El=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var Nye=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],Eye=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],Rye=[33,133,362,263,1,78,308],wAe=Nye.map(e=>Bh[e]),kAe=Eye.map(e=>Bh[e]),IAe=Rye.map(e=>Bh[e]);var Sd=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],p0=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],fb=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],mb=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],VT=(e,t)=>{let r=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],a=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:r,endPoint:a,landmarks:e.landmarks,confidence:e.confidence}},hb=(e,t,r)=>{let a=t.shape[1],n=t.shape[2],s=[e.startPoint[1]/a,e.startPoint[0]/n,e.endPoint[1]/a,e.endPoint[0]/n],i=Ie.cropAndResize(t,[s],[0],r),o=pe(i,Xe.tf255);return re(i),o},h0=(e,t)=>{let r=p0(e),a=Sd(e),n=[t*a[0]/2,t*a[1]/2];return{startPoint:[r[0]-n[0],r[1]-n[1]],endPoint:[r[0]+n[0],r[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},c0=e=>{let t=p0(e),r=Sd(e),a=Math.max(...r)/2;return{startPoint:[Math.round(t[0]-a),Math.round(t[1]-a)],endPoint:[Math.round(t[0]+a),Math.round(t[1]+a)],landmarks:e.landmarks,confidence:e.confidence}},UT=e=>{let t=e.map(a=>a[0]),r=e.map(a=>a[1]);return{startPoint:[Math.min(...t),Math.min(...r)],endPoint:[Math.max(...t),Math.max(...r)],landmarks:e}},cb=[[1,0,0],[0,1,0],[0,0,1]],Fye=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),Mye=(e,t)=>Fye(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var BT=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Rl=(e,t)=>{let r=0;for(let a=0;a{let r=[];for(let a=0;a{let r=[],a=e.length;for(let n=0;n{let r=Math.cos(e),a=Math.sin(e),n=[[r,-a,0],[a,r,0],[0,0,1]],s=BT(t[0],t[1]),i=WT(s,n),o=BT(-t[0],-t[1]);return WT(i,o)},Pye=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],r=[e[0][2],e[1][2]],a=[-Rl(t[0],r),-Rl(t[1],r)];return[t[0].concat(a[0]),t[1].concat(a[1]),[0,0,1]]},Oye=(e,t)=>[Rl(e,t[0]),Rl(e,t[1])];function jT(e){let t={strides:[e/16,e/8],anchors:[2,6]},r=[];for(let a=0;a[s[0]/n*(c[0]-n/2),s[1]/n*(c[1]-n/2),c[2]||0]),o=r&&r!==0&&Math.abs(r)>.2,l=o?GT(r,[0,0]):cb,d=o?i.map(c=>[...Oye(c,l),c[2]]):i,u=o?Pye(a):cb,p=p0(t),h=[Rl(p,u[0]),Rl(p,u[1])];return d.map(c=>[Math.trunc(c[0]+h[0]),Math.trunc(c[1]+h[1]),Math.trunc(c[2]||0)])}function qT(e,t,r,a){let n=t.landmarks.length>=ub.count?ub.symmetryLine:Lh.symmetryLine,s=0,i=cb,o;if(e&&ce.kernels.includes("rotatewithoffset"))if(s=Mye(t.landmarks[n[0]],t.landmarks[n[1]]),s&&s!==0&&Math.abs(s)>.2){let d=p0(t),u=[d[0]/r.shape[2],d[1]/r.shape[1]],p=Ie.rotateWithOffset(r,s,0,u);i=GT(-s,d),o=hb(t,p,[a,a]),re(p)}else o=hb(t,r,[a,a]);else o=hb(t,r,[a,a]);return[s,i,o]}var zye=e=>{let t=e.map(a=>a[0]),r=e.map(a=>a[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...r)+(Math.max(...r)-Math.min(...r))/2]},KT=(e,t)=>{let r=zye(e),a=Sd(t);return{startPoint:[r[0]-a[0]/2,r[1]-a[1]/2],endPoint:[r[0]+a[0]/2,r[1]+a[1]/2]}};var XT=6,Dye=1.2,$n,ZT=null,Ui=0,Wh=null,f0=()=>Ui;async function YT(e){var t;return ce.initial&&($n=null),$n?e.debug&&se("cached model:",$n.modelUrl):$n=await Ue((t=e.face.detector)==null?void 0:t.modelPath),Ui=$n.inputs[0].shape?$n.inputs[0].shape[2]:0,Wh=Se(Ui,"int32"),ZT=an(jT(Ui)),$n}function _ye(e){let t={};t.boxStarts=Oe(e,[0,1],[-1,2]),t.centers=ue(t.boxStarts,ZT),t.boxSizes=Oe(e,[0,3],[-1,2]),t.boxSizesNormalized=pe(t.boxSizes,Wh),t.centersNormalized=pe(t.centers,Wh),t.halfBoxSize=pe(t.boxSizesNormalized,Xe.tf2),t.starts=he(t.centersNormalized,t.halfBoxSize),t.ends=ue(t.centersNormalized,t.halfBoxSize),t.startNormalized=L(t.starts,Wh),t.endNormalized=L(t.ends,Wh);let r=td([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(a=>re(t[a])),r}async function JT(e,t){var o,l,d,u;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let r={};r.resized=Ie.resizeBilinear(e,[Ui,Ui]),r.div=pe(r.resized,Xe.tf127),r.normalized=he(r.div,Xe.tf05);let a=$n==null?void 0:$n.execute(r.normalized);if(Array.isArray(a)){let p=a.sort((h,c)=>h.size-c.size);r.concat384=kt([p[0],p[2]],2),r.concat512=kt([p[1],p[3]],2),r.concat=kt([r.concat512,r.concat384],1),r.batch=Ye(r.concat,0)}else r.batch=Ye(a);re(a),r.boxes=_ye(r.batch),r.logits=Oe(r.batch,[0,0],[-1,1]),r.sigmoid=Sr(r.logits),r.scores=Ye(r.sigmoid),r.nms=await Ie.nonMaxSuppressionAsync(r.boxes,r.scores,((o=t.face.detector)==null?void 0:o.maxDetected)||0,((l=t.face.detector)==null?void 0:l.iouThreshold)||0,((d=t.face.detector)==null?void 0:d.minConfidence)||0);let n=await r.nms.array(),s=[],i=await r.scores.data();for(let p=0;p(((u=t.face.detector)==null?void 0:u.minConfidence)||0)){let c={};c.bbox=Oe(r.boxes,[n[p],0],[1,-1]),c.slice=Oe(r.batch,[n[p],XT-1],[1,-1]),c.squeeze=Ye(c.slice),c.landmarks=U(c.squeeze,[XT,-1]);let f=await c.bbox.data(),m={startPoint:[f[0],f[1]],endPoint:[f[2],f[3]],landmarks:await c.landmarks.array(),confidence:h},g=VT(m,[(e.shape[2]||0)/Ui,(e.shape[1]||0)/Ui]),y=h0(g,t.face.scale||Dye),A=c0(y);s.push(A),Object.keys(c).forEach(x=>re(c[x]))}}return Object.keys(r).forEach(p=>re(r[p])),s}var m0={};ep(m0,{connected:()=>Ab,kpt:()=>yb});var yb=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],Ab={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var eC=224,Lye,Bye=5,g0=[8,16,32,32,32];async function tC(){let e=[],t=0;for(;tr.x)),y:St(e.map(r=>r.y))}}function ns(e,t=[1,1]){let r=[e.map(o=>o[0]),e.map(o=>o[1])],a=[Math.min(...r[0]),Math.min(...r[1])],n=[Math.max(...r[0]),Math.max(...r[1])],s=[a[0],a[1],n[0]-a[0],n[1]-a[1]],i=[s[0]/t[0],s[1]/t[1],s[2]/t[0],s[3]/t[1]];return{box:s,boxRaw:i}}function rC(e,t=[1,1]){let r=[e.map(d=>d[0]),e.map(d=>d[1])],a=[Math.min(...r[0]),Math.min(...r[1])],n=[Math.max(...r[0]),Math.max(...r[1])],s=[(a[0]+n[0])/2,(a[1]+n[1])/2],i=Math.max(s[0]-a[0],s[1]-a[1],-s[0]+n[0],-s[1]+n[1]),o=[Math.trunc(s[0]-i),Math.trunc(s[1]-i),Math.trunc(2*i),Math.trunc(2*i)],l=[o[0]/t[0],o[1]/t[1],o[2]/t[0],o[3]/t[1]];return{box:o,boxRaw:l}}function y0(e,t){let r=[e[2]*t,e[3]*t];return[e[0]-(r[0]-e[2])/2,e[1]-(r[1]-e[3])/2,r[0],r[1]]}var sC={initial:!0},ga={detector:null,landmarks:null},Td={detector:[224,224],landmarks:[256,256]},xb=Number.MAX_SAFE_INTEGER,Vye={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},x0=null,Vh,Gi=[[0,0],[0,0],[0,0],[0,0]],aC=0,nC=e=>1-1/(1+Math.exp(e));async function iC(e){if(sC.initial&&(ga.detector=null),!ga.detector&&e.body.detector&&e.body.detector.modelPath){ga.detector=await Ue(e.body.detector.modelPath);let t=Object.values(ga.detector.modelSignature.inputs);Td.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Td.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&ga.detector&&se("cached model:",ga.detector.modelUrl);return await tC(),ga.detector}async function oC(e){if(sC.initial&&(ga.landmarks=null),ga.landmarks)e.debug&&se("cached model:",ga.landmarks.modelUrl);else{ga.landmarks=await Ue(e.body.modelPath);let t=Object.values(ga.landmarks.modelSignature.inputs);Td.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Td.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return ga.landmarks}async function Uye(e,t){let r={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let a;if(Vh&&(r.cropped=Ie.cropAndResize(e,[Vh],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],s=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];Gi=[[0,0],n,s,[0,0]],r.pad=ja(r.cropped||e,Gi),r.resize=Ie.resizeBilinear(r.pad,[t,t]),a=pe(r.resize,Xe.tf255)}else e.shape[1]!==t?(r.resize=Ie.resizeBilinear(r.cropped||e,[t,t]),a=pe(r.resize,Xe.tf255)):a=pe(r.cropped||e,Xe.tf255);return Object.keys(r).forEach(n=>re(r[n])),a}function Gye(e,t){for(let r of e)r.position=[Math.trunc(r.position[0]*(t[0]+Gi[2][0]+Gi[2][1])/t[0]-Gi[2][0]),Math.trunc(r.position[1]*(t[1]+Gi[1][0]+Gi[1][1])/t[1]-Gi[1][0]),r.position[2]],r.positionRaw=[r.position[0]/t[0],r.position[1]/t[1],2*r.position[2]/(t[0]+t[1])];if(Vh)for(let r of e)r.positionRaw=[r.positionRaw[0]+Vh[1],r.positionRaw[1]+Vh[0],r.positionRaw[2]],r.position=[Math.trunc(r.positionRaw[0]*t[0]),Math.trunc(r.positionRaw[1]*t[1]),r.positionRaw[2]];return e}async function jye(e){let t=e.find(o=>o.part==="leftPalm"),r=e.find(o=>o.part==="leftWrist"),a=e.find(o=>o.part==="leftIndex");t.position[2]=((r.position[2]||0)+(a.position[2]||0))/2;let n=e.find(o=>o.part==="rightPalm"),s=e.find(o=>o.part==="rightWrist"),i=e.find(o=>o.part==="rightIndex");n.position[2]=((s.position[2]||0)+(i.position[2]||0))/2}async function Hye(e,t,r){var f;let a={};[a.ld,a.segmentation,a.heatmap,a.world,a.poseflag]=(f=ga.landmarks)==null?void 0:f.execute(e,Vye.landmarks);let n=(await a.poseflag.data())[0],s=await a.ld.data(),i=await a.world.data();Object.keys(a).forEach(m=>re(a[m]));let o=[],l=5;for(let m=0;mm.position),p=ns(u,[r[0],r[1]]),h={};for(let[m,g]of Object.entries(Ab)){let y=[];for(let A=0;Av.part===g[A]),b=d.find(v=>v.part===g[A+1]);x&&b&&y.push([x.position,b.position])}h[m]=y}return{id:0,score:Math.trunc(100*n)/100,box:p.box,boxRaw:p.boxRaw,keypoints:d,annotations:h}}async function bb(e,t){let r=[e.shape[2]||0,e.shape[1]||0],a=(t.body.skipTime||0)>oe()-aC,n=xb<(t.body.skipFrames||0);if(t.skipAllowed&&a&&n&&x0!==null)xb++;else{let s={};s.landmarks=await Uye(e,256),x0=await Hye(s.landmarks,t,r),Object.keys(s).forEach(i=>re(s[i])),aC=oe(),xb=0}return x0?[x0]:[]}var Cd=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var ss,Fl=0,vb=[],uC=0,wb=Number.MAX_SAFE_INTEGER;async function dC(e){if(ce.initial&&(ss=null),ss)e.debug&&se("cached model:",ss.modelUrl);else{ss=await Ue(e.object.modelPath);let t=Object.values(ss.modelSignature.inputs);Fl=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return ss}async function qye(e,t,r){if(!e)return[];let a={},n=[],s=await e.array();a.squeeze=Ye(e);let i=Kt(a.squeeze,6,1);a.stack=nr([i[1],i[0],i[3],i[2]],1),a.boxes=Ye(a.stack),a.scores=Ye(i[4]),a.classes=Ye(i[5]),re([e,...i]),a.nms=await Ie.nonMaxSuppressionAsync(a.boxes,a.scores,r.object.maxDetected,r.object.iouThreshold,r.object.minConfidence||0);let o=await a.nms.data(),l=0;for(let d of Array.from(o)){let u=Math.trunc(100*s[0][d][4])/100,p=s[0][d][5],h=Cd[p].label,[c,f]=[s[0][d][0]/Fl,s[0][d][1]/Fl],m=[c,f,s[0][d][2]/Fl-c,s[0][d][3]/Fl-f],g=[Math.trunc(m[0]*t[0]),Math.trunc(m[1]*t[1]),Math.trunc(m[2]*t[0]),Math.trunc(m[3]*t[1])];n.push({id:l++,score:u,class:p,label:h,box:g,boxRaw:m})}return Object.keys(a).forEach(d=>re(a[d])),n}async function kb(e,t){let r=(t.object.skipTime||0)>oe()-uC,a=wb<(t.object.skipFrames||0);return t.skipAllowed&&r&&a&&vb.length>0?(wb++,vb):(wb=0,new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],i=Ie.resizeBilinear(e,[Fl,Fl]),o=t.object.enabled?ss==null?void 0:ss.execute(i,["tower_0/detections"]):null;uC=oe(),re(i);let l=await qye(o,s,t);vb=l,n(l)}))}var b0={};ep(b0,{connected:()=>Sb,kpt:()=>Ib});var Ib=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],Sb={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var Nr,hC=0,Gr={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},Tb=Number.MAX_SAFE_INTEGER;async function cC(e){return ce.initial&&(Nr=null),Nr?e.debug&&se("cached model:",Nr.modelUrl):Nr=await Ue(e.body.modelPath),Nr}async function Kye(e,t){let[r,a]=e.shape,n=U(e,[a*r]),s=hr(n,0),i=(await s.data())[0];if(re([n,s]),i>t){let o=Ta(n,0),l=nd(o,r),d=(await l.data())[0],u=pe(o,Se(r,"int32")),p=(await u.data())[0];return re([l,u]),[d,p,i]}return[0,0,i]}async function Cb(e,t){let r=(t.body.skipTime||0)>oe()-hC,a=Tb<(t.body.skipFrames||0);return t.skipAllowed&&r&&a&&Object.keys(Gr.keypoints).length>0?(Tb++,[Gr]):(Tb=0,new Promise(async n=>{var p;let s=q(()=>{if(!(Nr==null?void 0:Nr.inputs[0].shape))return null;let h=Ie.resizeBilinear(e,[Nr.inputs[0].shape[2],Nr.inputs[0].shape[1]],!1),c=L(h,Xe.tf2);return he(c,Xe.tf1)}),i;if(t.body.enabled&&(i=Nr==null?void 0:Nr.execute(s)),hC=oe(),re(s),i){Gr.keypoints.length=0;let h=i.squeeze();re(i);let c=h.unstack(2);re(h);for(let f=0;f(((p=t.body)==null?void 0:p.minConfidence)||0)&&Gr.keypoints.push({score:Math.round(100*y)/100,part:Ib[f],positionRaw:[m/Nr.inputs[0].shape[2],g/Nr.inputs[0].shape[1]],position:[Math.round(e.shape[2]*m/Nr.inputs[0].shape[2]),Math.round(e.shape[1]*g/Nr.inputs[0].shape[1])]})}c.forEach(f=>re(f))}Gr.score=Gr.keypoints.reduce((h,c)=>c.score>h?c.score:h,0);let o=Gr.keypoints.map(h=>h.position[0]),l=Gr.keypoints.map(h=>h.position[1]);Gr.box=[Math.min(...o),Math.min(...l),Math.max(...o)-Math.min(...o),Math.max(...l)-Math.min(...l)];let d=Gr.keypoints.map(h=>h.positionRaw[0]),u=Gr.keypoints.map(h=>h.positionRaw[1]);Gr.boxRaw=[Math.min(...d),Math.min(...u),Math.max(...d)-Math.min(...d),Math.max(...u)-Math.min(...u)];for(let[h,c]of Object.entries(Sb)){let f=[];for(let m=0;mA.part===c[m]),y=Gr.keypoints.find(A=>A.part===c[m+1]);g&&y&&g.score>(t.body.minConfidence||0)&&y.score>(t.body.minConfidence||0)&&f.push([g.position,y.position])}Gr.annotations[h]=f}n([Gr])}))}var Xye=["angry","disgust","fear","happy","sad","surprise","neutral"],Oa,v0=[],mC=0,gC=0,Nb=Number.MAX_SAFE_INTEGER;async function yC(e){var t;return ce.initial&&(Oa=null),Oa?e.debug&&se("cached model:",Oa.modelUrl):Oa=await Ue((t=e.face.emotion)==null?void 0:t.modelPath),Oa}async function Eb(e,t,r,a){var i,o;if(!Oa)return[];let n=Nb<(((i=t.face.emotion)==null?void 0:i.skipFrames)||0),s=(((o=t.face.emotion)==null?void 0:o.skipTime)||0)>oe()-gC;return t.skipAllowed&&s&&n&&mC===a&&v0[r]&&v0[r].length>0?(Nb++,v0[r]):(Nb=0,new Promise(async l=>{var u,p;let d=[];if((u=t.face.emotion)==null?void 0:u.enabled){let h={},c=(Oa==null?void 0:Oa.inputs[0].shape)?Oa.inputs[0].shape[2]:0;h.resize=Ie.resizeBilinear(e,[c,c],!1),h.channels=L(h.resize,Xe.rgb),h.grayscale=ke(h.channels,3,!0),h.grayscaleSub=he(h.grayscale,Xe.tf05),h.grayscaleMul=L(h.grayscaleSub,Xe.tf2),h.emotion=Oa==null?void 0:Oa.execute(h.grayscaleMul),gC=oe();let f=await h.emotion.data();for(let m=0;m(((p=t.face.emotion)==null?void 0:p.minConfidence)||0)&&d.push({score:Math.min(.99,Math.trunc(100*f[m])/100),emotion:Xye[m]});d.sort((m,g)=>g.score-m.score),Object.keys(h).forEach(m=>re(h[m]))}v0[r]=d,mC=a,l(d)}))}var ya,Rb=[],xC=0,bC=0,vC=Number.MAX_SAFE_INTEGER;async function wC(e){return ce.initial&&(ya=null),ya?e.debug&&se("cached model:",ya.modelUrl):ya=await Ue(e.face.mobilefacenet.modelPath),ya}async function Fb(e,t,r,a){var i,o;if(!ya)return[];let n=vC<(((i=t.face.embedding)==null?void 0:i.skipFrames)||0),s=(((o=t.face.embedding)==null?void 0:o.skipTime)||0)>oe()-bC;return t.skipAllowed&&s&&n&&xC===a&&Rb[r]?(vC++,Rb[r]):new Promise(async l=>{var u;let d=[];if(((u=t.face.embedding)==null?void 0:u.enabled)&&(ya==null?void 0:ya.inputs[0].shape)){let p={};p.crop=Ie.resizeBilinear(e,[ya.inputs[0].shape[2],ya.inputs[0].shape[1]],!1),p.data=ya==null?void 0:ya.execute(p.crop);let h=await p.data.data();d=Array.from(h)}Rb[r]=d,xC=a,bC=oe(),l(d)})}var is,ji=0,Zye=2.3,Mb=Ya.leftEyeLower0,$b=Ya.rightEyeLower0,Nd={leftBounds:[Mb[0],Mb[Mb.length-1]],rightBounds:[$b[0],$b[$b.length-1]]},Ed={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function CC(e){var t;return ce.initial&&(is=null),is?e.debug&&se("cached model:",is.modelUrl):is=await Ue((t=e.face.iris)==null?void 0:t.modelPath),ji=is.inputs[0].shape?is.inputs[0].shape[2]:0,ji===-1&&(ji=64),is}function w0(e,t,r,a){for(let n=0;n{let t=e[Nd.leftBounds[0]][2],r=e[Nd.rightBounds[0]][2];return t-r},IC=(e,t,r,a,n,s=!1)=>{let i=c0(h0(UT([e[r],e[a]]),Zye)),o=Sd(i),l=Ie.cropAndResize(t,[[i.startPoint[1]/n,i.startPoint[0]/n,i.endPoint[1]/n,i.endPoint[0]/n]],[0],[ji,ji]);if(s&&ce.kernels.includes("flipleftright")){let d=Ie.flipLeftRight(l);re(l),l=d}return{box:i,boxSize:o,crop:l}},SC=(e,t,r,a=!1)=>{let n=[];for(let s=0;s{let a=e[Ya[`${r}EyeUpper0`][Ed.upperCenter]][2],n=e[Ya[`${r}EyeLower0`][Ed.lowerCenter]][2],s=(a+n)/2;return t.map((i,o)=>{let l=s;return o===2?l=a:o===4&&(l=n),[i[0],i[1],l]})};async function NC(e,t,r,a){if(!is)return r.debug&&se("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:s,crop:i}=IC(e,t,Nd.leftBounds[0],Nd.leftBounds[1],a,!0),{box:o,boxSize:l,crop:d}=IC(e,t,Nd.rightBounds[0],Nd.rightBounds[1],a,!0),u=kt([i,d]);re(i),re(d);let p=is.execute(u);re(u);let h=await p.data();re(p);let c=h.slice(0,Ed.numCoordinates*3),{rawCoords:f,iris:m}=SC(c,n,s,!0),g=h.slice(Ed.numCoordinates*3),{rawCoords:y,iris:A}=SC(g,o,l),x=Yye(e);Math.abs(x)<30?(w0(e,f,"left",null),w0(e,y,"right",null)):x<1?w0(e,f,"left",["EyeUpper0","EyeLower0"]):w0(e,y,"right",["EyeUpper0","EyeLower0"]);let b=TC(e,m,"left"),v=TC(e,A,"right");return e.concat(b).concat(v)}var Pn={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},os=null,Rd=0;async function RC(e,t){var o,l,d,u,p,h,c,f,m;let r=(((o=t.face.detector)==null?void 0:o.skipTime)||0)>oe()-Pn.timestamp,a=Pn.skipped<(((l=t.face.detector)==null?void 0:l.skipFrames)||0);!t.skipAllowed||!r||!a||Pn.boxes.length===0?(Pn.boxes=await JT(e,t),Pn.timestamp=oe(),Pn.skipped=0):Pn.skipped++;let n=[],s=[],i=0;for(let g=0;g[I[0]/(e.shape[2]||0),I[1]/(e.shape[1]||0),(I[2]||0)/Rd]);for(let I of Object.keys(Ya))b.annotations[I]=Ya[I].map(D=>b.mesh[D]);b.score=b.faceScore;let M={...KT(b.mesh,y),confidence:y.confidence,landmarks:y.landmarks};b.box=fb(M,e),b.boxRaw=mb(M,e),s.push(M)}}else{b.box=fb(y,e),b.boxRaw=mb(y,e),b.score=b.boxScore,b.mesh=y.landmarks.map(v=>[(y.startPoint[0]+y.endPoint[0])/2+(y.endPoint[0]+y.startPoint[0])*v[0]/f0(),(y.startPoint[1]+y.endPoint[1])/2+(y.endPoint[1]+y.startPoint[1])*v[1]/f0()]),b.meshRaw=b.mesh.map(v=>[v[0]/(e.shape[2]||0),v[1]/(e.shape[1]||0),(v[2]||0)/Rd]);for(let v of Object.keys(Lh))b.annotations[v]=[b.mesh[Lh[v]]]}b.score>(((m=t.face.detector)==null?void 0:m.minConfidence)||1)?n.push(b):re(b.tensor)}return Pn.boxes=s,n}async function FC(e){var t;return ce.initial&&(os=null),os?e.debug&&se("cached model:",os.modelUrl):os=await Ue((t=e.face.mesh)==null?void 0:t.modelPath),Rd=os.inputs[0].shape?os.inputs[0].shape[2]:0,os}var MC=El,$C=Bh;var Aa,k0=[],PC=0,OC=0,Ob=Number.MAX_SAFE_INTEGER;async function zC(e){var t;return ce.initial&&(Aa=null),Aa?e.debug&&se("cached model:",Aa.modelUrl):Aa=await Ue((t=e.face.description)==null?void 0:t.modelPath),Aa}function zb(e){let t=e.image||e.tensor||e;if(!(Aa==null?void 0:Aa.inputs[0].shape))return t;let r=Ie.resizeBilinear(t,[Aa.inputs[0].shape[2],Aa.inputs[0].shape[1]],!1),a=L(r,Xe.tf255);return re(r),a}async function Db(e,t,r,a){var i,o,l,d;if(!Aa)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=Ob<(((i=t.face.description)==null?void 0:i.skipFrames)||0),s=(((o=t.face.description)==null?void 0:o.skipTime)||0)>oe()-PC;return t.skipAllowed&&n&&s&&OC===a&&((l=k0[r])==null?void 0:l.age)&&((d=k0[r])==null?void 0:d.age)>0?(Ob++,k0[r]):(Ob=0,new Promise(async u=>{var h,c;let p={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((h=t.face.description)==null?void 0:h.enabled){let f=zb(e),m=Aa==null?void 0:Aa.execute(f);PC=oe(),re(f);let y=await(await m.find(R=>R.shape[1]===1)).data(),A=Math.trunc(200*Math.abs(y[0]-.5))/100;A>(((c=t.face.description)==null?void 0:c.minConfidence)||0)&&(p.gender=y[0]<=.5?"female":"male",p.genderScore=Math.min(.99,A));let x=Ta(m.find(R=>R.shape[1]===100),1),b=(await x.data())[0];re(x);let C=await m.find(R=>R.shape[1]===100).data();p.age=Math.round(C[b-1]>C[b+1]?10*b-100*C[b-1]:10*b+100*C[b+1])/10;let T=m.find(R=>R.shape[1]===1024),E=T?await T.data():[];p.descriptor=Array.from(E),m.forEach(R=>re(R))}k0[r]=p,OC=a,u(p)}))}function I0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Uh(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function LC(e,t,r){let a=t.shape[1],n=t.shape[2],s=[[e.startPoint[1]/a,e.startPoint[0]/n,e.endPoint[1]/a,e.endPoint[0]/n]];return Ie.cropAndResize(t,s,[0],r)}function BC(e,t){let r=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],a=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:r,endPoint:a,palmLandmarks:n,confidence:e.confidence}}function S0(e,t=1.5){let r=Uh(e),a=I0(e),n=[t*a[0]/2,t*a[1]/2],s=[r[0]-n[0],r[1]-n[1]],i=[r[0]+n[0],r[1]+n[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function T0(e){let t=Uh(e),r=I0(e),n=Math.max(...r)/2,s=[t[0]-n,t[1]-n],i=[t[0]+n,t[1]+n];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function Jye(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function WC(e,t){let r=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Jye(r)}var DC=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function Hi(e,t){let r=0;for(let a=0;a[r.x,r.y]),this.anchorsTensor=an(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=St([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=St([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let r={};r.boxOffsets=Oe(t,[0,0],[-1,2]),r.boxSizes=Oe(t,[0,2],[-1,2]),r.div=pe(r.boxOffsets,this.inputSizeTensor),r.boxCenterPoints=ue(r.div,this.anchorsTensor),r.halfBoxSizes=pe(r.boxSizes,this.doubleInputSizeTensor),r.sub=he(r.boxCenterPoints,r.halfBoxSizes),r.startPoints=L(r.sub,this.inputSizeTensor),r.add=ue(r.boxCenterPoints,r.halfBoxSizes),r.endPoints=L(r.add,this.inputSizeTensor);let a=td([r.startPoints,r.endPoints],1);return Object.keys(r).forEach(n=>re(r[n])),a}normalizeLandmarks(t,r){let a={};a.reshape=U(t,[-1,7,2]),a.div=pe(a.reshape,this.inputSizeTensor),a.landmarks=ue(a.div,this.anchors[r]);let n=L(a.landmarks,this.inputSizeTensor);return Object.keys(a).forEach(s=>re(a[s])),n}async predict(t,r){let a={};a.resize=Ie.resizeBilinear(t,[this.inputSize,this.inputSize]),a.div=pe(a.resize,Xe.tf127),a.image=he(a.div,Xe.tf1),a.batched=this.model.execute(a.image),a.predictions=Ye(a.batched),a.slice=Oe(a.predictions,[0,0],[-1,1]),a.sigmoid=Sr(a.slice),a.scores=Ye(a.sigmoid);let n=await a.scores.data();a.boxes=Oe(a.predictions,[0,1],[-1,4]),a.norm=this.normalizeBoxes(a.boxes),a.nms=await Ie.nonMaxSuppressionAsync(a.norm,a.scores,3*r.hand.maxDetected,r.hand.iouThreshold,r.hand.minConfidence);let s=await a.nms.array(),i=[];for(let o of s){let l={};l.box=Oe(a.norm,[o,0],[1,-1]),l.slice=Oe(a.predictions,[o,5],[1,14]),l.norm=this.normalizeLandmarks(l.slice,o),l.palmLandmarks=U(l.norm,[-1,2]);let d=await l.box.data(),u=d.slice(0,2),p=d.slice(2,4),h=await l.palmLandmarks.array(),c={startPoint:u,endPoint:p,palmLandmarks:h,confidence:n[o]},f=BC(c,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);i.push(f),Object.keys(l).forEach(m=>re(l[m]))}return Object.keys(a).forEach(o=>re(a[o])),i}};var r2e=5,jC=1.65,HC=[0,5,9,13,17,1,2],a2e=0,n2e=2,qC=0,Vb=class{constructor(t,r){fe(this,"handDetector");fe(this,"handPoseModel");fe(this,"inputSize");fe(this,"storedBoxes");fe(this,"skipped");fe(this,"detectedHands");this.handDetector=t,this.handPoseModel=r,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let r=t.map(i=>i[0]),a=t.map(i=>i[1]),n=[Math.min(...r),Math.min(...a)],s=[Math.max(...r),Math.max(...a)];return{startPoint:n,endPoint:s}}getBoxForPalmLandmarks(t,r){let a=t.map(s=>Bb([...s,1],r)),n=this.calculateLandmarksBoundingBox(a);return S0(T0(n),r2e)}getBoxForHandLandmarks(t){let r=this.calculateLandmarksBoundingBox(t),a=S0(T0(r),jC);a.palmLandmarks=[];for(let n=0;n[i[0]*(c[0]-this.inputSize/2),i[1]*(c[1]-this.inputSize/2),i[2]*c[2]]),l=Lb(a,[0,0]),d=o.map(c=>[...Bb(c,l),c[2]]),u=VC(n),p=[...Uh(r),1],h=[Hi(p,u[0]),Hi(p,u[1])];return d.map(c=>[Math.trunc(c[0]+h[0]),Math.trunc(c[1]+h[1]),Math.trunc(c[2])])}async estimateHands(t,r){let a=!1,n,s=(r.hand.skipTime||0)>oe()-qC,i=this.skipped<(r.hand.skipFrames||0);r.skipAllowed&&s&&i&&(n=await this.handDetector.predict(t,r),this.skipped=0),r.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==r.hand.maxDetected||!r.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(a=!0));let o=[];for(let l=0;l=r.hand.minConfidence/4){let v=U(x,[-1,3]),C=await v.array();re(x),re(v);let T=this.transformRawCoords(C,m,u,f),E=this.getBoxForHandLandmarks(T);this.storedBoxes[l]={...E,confidence:b};let R={landmarks:T,confidence:b,boxConfidence:d.confidence,fingerConfidence:b,box:{topLeft:E.startPoint,bottomRight:E.endPoint}};o.push(R)}else this.storedBoxes[l]=null;re(x)}else{let u=S0(T0(d),jC),p={confidence:d.confidence,boxConfidence:d.confidence,fingerConfidence:0,box:{topLeft:u.startPoint,bottomRight:u.endPoint},landmarks:[]};o.push(p)}}return this.storedBoxes=this.storedBoxes.filter(l=>l!==null),this.detectedHands=o.length,o.length>r.hand.maxDetected&&(o.length=r.hand.maxDetected),o}};var jr={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>jr.nameMapping[e],getPoints:e=>jr.pointsMapping[e]},qi={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>qi.nameMapping[e]},_t={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>_t.nameMapping[e]},Ml=class{constructor(t){fe(this,"name");fe(this,"curls");fe(this,"directions");fe(this,"weights");fe(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,r,a){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([r,a])}direction(t,r,a){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([r,a])}weight(t,r){this.weights[t]=r;let a=this.weights.reduce((n,s)=>n+s,0);this.weightsRelative=this.weights.map(n=>n*5/a)}matchAgainst(t,r){let a=0;for(let n in t){let s=t[n],i=this.curls[n];if(typeof i=="undefined"){a+=this.weightsRelative[n];continue}for(let[o,l]of i)if(s===o){a+=l*this.weightsRelative[n];break}}for(let n in r){let s=r[n],i=this.directions[n];if(typeof i=="undefined"){a+=this.weightsRelative[n];continue}for(let[o,l]of i)if(s===o){a+=l*this.weightsRelative[n];break}}return a/10}};var{thumb:mn,index:ls,middle:us,ring:$l,pinky:Pl}=jr,{none:gn,half:i2e,full:yn}=qi,{verticalUp:Fd,verticalDown:cxe,horizontalLeft:Ub,horizontalRight:o2e,diagonalUpRight:l2e,diagonalUpLeft:Md,diagonalDownRight:fxe,diagonalDownLeft:mxe}=_t,Ki=new Ml("thumbs up");Ki.curl(mn,gn,1);Ki.direction(mn,Fd,1);Ki.direction(mn,Md,.25);Ki.direction(mn,l2e,.25);for(let e of[jr.index,jr.middle,jr.ring,jr.pinky])Ki.curl(e,yn,1),Ki.direction(e,Ub,1),Ki.direction(e,o2e,1);var Yt=new Ml("victory");Yt.curl(mn,i2e,.5);Yt.curl(mn,gn,.5);Yt.direction(mn,Fd,1);Yt.direction(mn,Md,1);Yt.curl(ls,gn,1);Yt.direction(ls,Fd,.75);Yt.direction(ls,Md,1);Yt.curl(us,gn,1);Yt.direction(us,Fd,1);Yt.direction(us,Md,.75);Yt.curl($l,yn,1);Yt.direction($l,Fd,.2);Yt.direction($l,Md,1);Yt.direction($l,Ub,.2);Yt.curl(Pl,yn,1);Yt.direction(Pl,Fd,.2);Yt.direction(Pl,Md,1);Yt.direction(Pl,Ub,.2);Yt.weight(ls,2);Yt.weight(us,2);var Xi=new Ml("point");Xi.curl(mn,yn,1);Xi.curl(ls,gn,.5);Xi.curl(us,yn,.5);Xi.curl($l,yn,.5);Xi.curl(Pl,yn,.5);Xi.weight(ls,2);Xi.weight(us,2);var Zi=new Ml("middle finger");Zi.curl(mn,gn,1);Zi.curl(ls,yn,.5);Zi.curl(us,yn,.5);Zi.curl($l,yn,.5);Zi.curl(Pl,yn,.5);Zi.weight(ls,2);Zi.weight(us,2);var $d=new Ml("open palm");$d.curl(mn,gn,.75);$d.curl(ls,gn,.75);$d.curl(us,gn,.75);$d.curl($l,gn,.75);$d.curl(Pl,gn,.75);var KC=[Ki,Yt,Xi,Zi,$d];var u2e=.7,Ol={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function XC(e,t,r,a){let n=(t-a)/(e-r),s=Math.atan(n)*180/Math.PI;return s<=0?s=-s:s>0&&(s=180-s),s}function YC(e,t){if(!e||!t)return[0,0];let r=XC(e[0],e[1],t[0],t[1]);if(e.length===2)return r;let a=XC(e[1],e[2],t[1],t[2]);return[r,a]}function ZC(e,t=1){let r=0,a=0,n=0;return e>=75&&e<=105?r=1*t:e>=25&&e<=155?a=1*t:n=1*t,[r,a,n]}function d2e(e,t,r){let a=e[0]-t[0],n=e[0]-r[0],s=t[0]-r[0],i=e[1]-t[1],o=e[1]-r[1],l=t[1]-r[1],d=e[2]-t[2],u=e[2]-r[2],p=t[2]-r[2],h=Math.sqrt(a*a+i*i+d*d),c=Math.sqrt(n*n+o*o+u*u),f=Math.sqrt(s*s+l*l+p*p),m=(f*f+h*h-c*c)/(2*f*h);m>1?m=1:m<-1&&(m=-1);let g=Math.acos(m);g=57.2958*g%180;let y;return g>Ol.NO_CURL_START_LIMIT?y=qi.none:g>Ol.HALF_CURL_START_LIMIT?y=qi.half:y=qi.full,y}function JC(e,t,r,a){let n;return a===Math.abs(e)?e>0?n=_t.horizontalLeft:n=_t.horizontalRight:a===Math.abs(t)?t>0?n=_t.horizontalLeft:n=_t.horizontalRight:r>0?n=_t.horizontalLeft:n=_t.horizontalRight,n}function QC(e,t,r,a){let n;return a===Math.abs(e)?e<0?n=_t.verticalDown:n=_t.verticalUp:a===Math.abs(t)?t<0?n=_t.verticalDown:n=_t.verticalUp:r<0?n=_t.verticalDown:n=_t.verticalUp,n}function p2e(e,t,r,a,n,s,i,o){let l,d=QC(e,t,r,a),u=JC(n,s,i,o);return d===_t.verticalUp?u===_t.horizontalLeft?l=_t.diagonalUpLeft:l=_t.diagonalUpRight:u===_t.horizontalLeft?l=_t.diagonalDownLeft:l=_t.diagonalDownRight,l}function h2e(e,t,r,a){let n=e[0]-t[0],s=e[0]-r[0],i=t[0]-r[0],o=e[1]-t[1],l=e[1]-r[1],d=t[1]-r[1],u=Math.max(Math.abs(n),Math.abs(s),Math.abs(i)),p=Math.max(Math.abs(o),Math.abs(l),Math.abs(d)),h=0,c=0,f=0,m=p/(u+1e-5);m>1.5?h+=Ol.DISTANCE_VOTE_POWER:m>.66?c+=Ol.DISTANCE_VOTE_POWER:f+=Ol.DISTANCE_VOTE_POWER;let g=Math.sqrt(n*n+o*o),y=Math.sqrt(s*s+l*l),A=Math.sqrt(i*i+d*d),x=Math.max(g,y,A),b=e[0],v=e[1],C=r[0],T=r[1];x===g?(C=r[0],T=r[1]):x===A&&(b=t[0],v=t[1]);let z=YC([b,v],[C,T]),M=ZC(z,Ol.TOTAL_ANGLE_VOTE_POWER);h+=M[0],c+=M[1],f+=M[2];for(let D of a){let O=ZC(D,Ol.SINGLE_ANGLE_VOTE_POWER);h+=O[0],c+=O[1],f+=O[2]}let I;return h===Math.max(h,c,f)?I=QC(l,o,d,p):f===Math.max(c,f)?I=JC(s,n,i,u):I=p2e(l,o,d,p,s,n,i,u),I}function eN(e){let t=[],r=[],a=[],n=[];if(!e)return{curls:a,directions:n};for(let s of jr.all){let i=jr.getPoints(s),o=[],l=[];for(let d of i){let u=e[d[0]],p=e[d[1]],h=YC(u,p),c=h[0],f=h[1];o.push(c),l.push(f)}t.push(o),r.push(l)}for(let s of jr.all){let i=s===jr.thumb?1:0,o=jr.getPoints(s),l=e[o[i][0]],d=e[o[i+1][1]],u=e[o[3][1]],p=d2e(l,d,u),h=h2e(l,d,u,t[s].slice(i));a[s]=p,n[s]=h}return{curls:a,directions:n}}function C0(e){if(!e||e.length===0)return null;let t=eN(e),r={};for(let a of jr.all)r[jr.getName(a)]={curl:qi.getName(t.curls[a]),direction:_t.getName(t.directions[a])};return r}function tN(e){let t=[];if(!e||e.length===0)return t;let r=eN(e);for(let a of KC){let n=a.matchAgainst(r.curls,r.directions);n>=u2e&&t.push({name:a.name,confidence:n})}return t}var rN={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Pd,Od,aN;async function jb(e,t){let r=await aN.estimateHands(e,t);if(!r)return[];let a=[];for(let n=0;nr[n].landmarks[p]);let i=r[n].landmarks,o=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],l=[0,0,0,0];if(i&&i.length>0){for(let u of i)u[0]o[2]&&(o[2]=u[0]),u[1]>o[3]&&(o[3]=u[1]);o[2]-=o[0],o[3]-=o[1],l=[o[0]/(e.shape[2]||0),o[1]/(e.shape[1]||0),o[2]/(e.shape[2]||0),o[3]/(e.shape[1]||0)]}else o=r[n].box?[Math.trunc(Math.max(0,r[n].box.topLeft[0])),Math.trunc(Math.max(0,r[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,r[n].box.bottomRight[0])-Math.max(0,r[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,r[n].box.bottomRight[1])-Math.max(0,r[n].box.topLeft[1]))]:[0,0,0,0],l=[r[n].box.topLeft[0]/(e.shape[2]||0),r[n].box.topLeft[1]/(e.shape[1]||0),(r[n].box.bottomRight[0]-r[n].box.topLeft[0])/(e.shape[2]||0),(r[n].box.bottomRight[1]-r[n].box.topLeft[1])/(e.shape[1]||0)];let d=C0(i);a.push({id:n,score:Math.round(100*r[n].confidence)/100,boxScore:Math.round(100*r[n].boxConfidence)/100,fingerScore:Math.round(100*r[n].fingerConfidence)/100,label:"hand",box:o,boxRaw:l,keypoints:i,annotations:s,landmarks:d})}return a}async function Hb(e){var r,a;ce.initial&&(Pd=null,Od=null),!Pd||!Od?[Pd,Od]=await Promise.all([e.hand.enabled?Ue((r=e.hand.detector)==null?void 0:r.modelPath):null,e.hand.landmarks?Ue((a=e.hand.skeleton)==null?void 0:a.modelPath):null]):(e.debug&&se("cached model:",Pd.modelUrl),e.debug&&se("cached model:",Od.modelUrl));let t=new Wb(Pd);return aN=new Vb(t,Od),[Pd,Od]}var or=[null,null],c2e=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],Yi=[[0,0],[0,0]],f2e=["hand","fist","pinch","point","face","tip","pinchtip"],sN=4,iN=1.6,m2e=512,g2e=1.4,N0=Number.MAX_SAFE_INTEGER,qb=0,ds=[0,0],jt={boxes:[],hands:[]},oN={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function lN(e){var t;if(ce.initial&&(or[0]=null),or[0])e.debug&&se("cached model:",or[0].modelUrl);else{E0(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),or[0]=await Ue((t=e.hand.detector)==null?void 0:t.modelPath);let r=Object.values(or[0].modelSignature.inputs);Yi[0][0]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[1].size):0,Yi[0][1]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[2].size):0}return or[0]}async function uN(e){var t;if(ce.initial&&(or[1]=null),or[1])e.debug&&se("cached model:",or[1].modelUrl);else{or[1]=await Ue((t=e.hand.skeleton)==null?void 0:t.modelPath);let r=Object.values(or[1].modelSignature.inputs);Yi[1][0]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[1].size):0,Yi[1][1]=Array.isArray(r)?parseInt(r[0].tensorShape.dim[2].size):0}return or[1]}async function y2e(e,t){let r=[];if(!e||!or[0])return r;let a={},n=(e.shape[2]||1)/(e.shape[1]||1),s=Math.min(Math.round((e.shape[1]||0)/8)*8,m2e),i=Math.round(s*n/8)*8;a.resize=Ie.resizeBilinear(e,[s,i]),a.cast=me(a.resize,"int32"),[a.rawScores,a.rawBoxes]=await or[0].executeAsync(a.cast,c2e),a.boxes=Ye(a.rawBoxes,[0,2]),a.scores=Ye(a.rawScores,[0]);let o=ra(a.scores,1);re(o[sN]),o.splice(sN,1),a.filtered=nr(o,1),re(o),a.max=hr(a.filtered,1),a.argmax=Ta(a.filtered,1);let l=0;a.nms=await Ie.nonMaxSuppressionAsync(a.boxes,a.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let d=await a.nms.data(),u=await a.max.data(),p=await a.argmax.data();for(let h of Array.from(d)){let c=Oe(a.boxes,h,1),f=await c.data();re(c);let m=[f[1],f[0],f[3]-f[1],f[2]-f[0]],g=y0(m,g2e),y=[Math.trunc(m[0]*ds[0]),Math.trunc(m[1]*ds[1]),Math.trunc(m[2]*ds[0]),Math.trunc(m[3]*ds[1])],A=u[h],x=f2e[p[h]],b={id:l++,score:A,box:y,boxRaw:g,label:x};r.push(b)}return Object.keys(a).forEach(h=>re(a[h])),r.sort((h,c)=>c.score-h.score),r.length>(t.hand.maxDetected||1)&&(r.length=t.hand.maxDetected||1),r}async function Kb(e,t,r){let a={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&or[1]&&r.hand.landmarks&&t.score>(r.hand.minConfidence||0)){let n={},s=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Ie.cropAndResize(e,[s],[0],[Yi[1][0],Yi[1][1]],"bilinear"),n.div=pe(n.crop,Xe.tf255),[n.score,n.keypoints]=or[1].execute(n.div,["Identity_1","Identity"]);let i=(await n.score.data())[0],o=(100-Math.trunc(100/(1+Math.exp(i))))/100;if(o>=(r.hand.minConfidence||0)){a.fingerScore=o,n.reshaped=U(n.keypoints,[-1,3]);let u=(await n.reshaped.array()).map(p=>[p[0]/Yi[1][1],p[1]/Yi[1][0],p[2]||0]).map(p=>[p[0]*t.boxRaw[2],p[1]*t.boxRaw[3],p[2]||0]);a.keypoints=u.map(p=>[ds[0]*(p[0]+t.boxRaw[0]),ds[1]*(p[1]+t.boxRaw[1]),p[2]||0]),a.landmarks=C0(a.keypoints);for(let p of Object.keys(oN))a.annotations[p]=oN[p].map(h=>a.landmarks&&a.keypoints[h]?a.keypoints[h]:null)}Object.keys(n).forEach(l=>re(n[l]))}return a}async function Xb(e,t){var n,s;if(!or[0]||!or[1]||!((n=or[0])==null?void 0:n.inputs[0].shape)||!((s=or[1])==null?void 0:s.inputs[0].shape))return[];ds=[e.shape[2]||0,e.shape[1]||0],N0++;let r=(t.hand.skipTime||0)>oe()-qb,a=N0<(t.hand.skipFrames||0);return t.skipAllowed&&r&&a?jt.hands:new Promise(async i=>{let o=3*(t.hand.skipTime||0)>oe()-qb,l=N0<3*(t.hand.skipFrames||0);t.skipAllowed&&jt.hands.length===t.hand.maxDetected?jt.hands=await Promise.all(jt.boxes.map(u=>Kb(e,u,t))):t.skipAllowed&&o&&l&&jt.hands.length>0?jt.hands=await Promise.all(jt.boxes.map(u=>Kb(e,u,t))):(jt.boxes=await y2e(e,t),qb=oe(),jt.hands=await Promise.all(jt.boxes.map(u=>Kb(e,u,t))),N0=0);let d=[...jt.boxes];if(jt.boxes.length=0,t.cacheSensitivity>0)for(let u=0;u.05&&p.box[3]/(e.shape[1]||1)>.05&&jt.hands[u].fingerScore&&jt.hands[u].fingerScore>(t.hand.minConfidence||0)){let h=y0(p.box,iN),c=y0(p.boxRaw,iN);jt.boxes.push({...d[u],box:h,boxRaw:c})}}for(let u=0;uoe()-hN,s=Zb<(((o=t.face.liveness)==null?void 0:o.skipFrames)||0);return t.skipAllowed&&n&&s&&pN===a&&R0[r]?(Zb++,R0[r]):(Zb=0,new Promise(async l=>{let d=Ie.resizeBilinear(e,[(Er==null?void 0:Er.inputs[0].shape)?Er.inputs[0].shape[2]:0,(Er==null?void 0:Er.inputs[0].shape)?Er.inputs[0].shape[1]:0],!1),u=Er==null?void 0:Er.execute(d),p=(await u.data())[0];R0[r]=Math.round(100*p)/100,pN=a,hN=oe(),re([d,u]),l(R0[r])}))}var Gh={};ep(Gh,{connected:()=>M0,horizontal:()=>Jb,kpt:()=>F0,relative:()=>e5,vertical:()=>Qb});var F0=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],Jb=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],Qb=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],e5=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],M0={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var mN=.005,xa={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function t5(e){for(let t of Jb){let r=e.keypoints.findIndex(n=>n.part===t[0]),a=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[r]&&e.keypoints[a]&&e.keypoints[r].position[0]n&&n.part===t[0]),a=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[r]&&e.keypoints[a]&&e.keypoints[r].position[1]d&&d.part===t[0]),n=e.keypoints.findIndex(d=>d&&d.part===t[1]),s=e.keypoints.findIndex(d=>d&&d.part===r[0]),i=e.keypoints.findIndex(d=>d&&d.part===r[1]);if(!e.keypoints[s]||!e.keypoints[i])continue;let o=e.keypoints[a]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[a].position[0]),Math.abs(e.keypoints[i].position[0]-e.keypoints[a].position[0])]:[0,0],l=e.keypoints[n]?[Math.abs(e.keypoints[i].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0])]:[0,0];if(o[0]>o[1]||l[0]>l[1]){let d=e.keypoints[a];e.keypoints[a]=e.keypoints[n],e.keypoints[n]=d}}}function gN(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],r.pad=ja(e,xa.padding),r.resize=Ie.resizeBilinear(r.pad,[t,t]);let a=me(r.resize,"int32");return Object.keys(r).forEach(n=>re(r[n])),a}function AN(e,t){e.keypoints=e.keypoints.filter(a=>a&&a.position);for(let a of e.keypoints)a.position=[a.position[0]*(t[0]+xa.padding[2][0]+xa.padding[2][1])/t[0]-xa.padding[2][0],a.position[1]*(t[1]+xa.padding[1][0]+xa.padding[1][1])/t[1]-xa.padding[1][0]],a.positionRaw=[a.position[0]/t[0],a.position[1]/t[1]];let r=ns(e.keypoints.map(a=>a.position),t);return e.box=r.box,e.boxRaw=r.boxRaw,e}var ba,$0=0,r5=Number.MAX_SAFE_INTEGER,zl={boxes:[],bodies:[],last:0};async function xN(e){return ce.initial&&(ba=null),ba?e.debug&&se("cached model:",ba.modelUrl):(E0(["size"],e),ba=await Ue(e.body.modelPath)),$0=ba.inputs[0].shape?ba.inputs[0].shape[2]:0,$0<64&&($0=256),ba}async function x2e(e,t,r){let a=e[0][0],n=[],s=0;for(let u=0;ut.body.minConfidence){let p=[a[u][1],a[u][0]];n.push({score:Math.round(100*s)/100,part:F0[u],positionRaw:p,position:[Math.round((r.shape[2]||0)*p[0]),Math.round((r.shape[1]||0)*p[1])]})}s=n.reduce((u,p)=>p.score>u?p.score:u,0);let i=[],o=ns(n.map(u=>u.position),[r.shape[2],r.shape[1]]),l={};for(let[u,p]of Object.entries(M0)){let h=[];for(let c=0;cg.part===p[c]),m=n.find(g=>g.part===p[c+1]);f&&m&&f.score>(t.body.minConfidence||0)&&m.score>(t.body.minConfidence||0)&&h.push([f.position,m.position])}l[u]=h}let d={id:0,score:s,box:o.box,boxRaw:o.boxRaw,keypoints:n,annotations:l};return t5(d),i.push(d),i}async function b2e(e,t,r){let a=[];for(let n=0;nt.body.minConfidence){let o=[];for(let p=0;p<17;p++){let h=s[3*p+2];if(h>t.body.minConfidence){let c=[s[3*p+1],s[3*p+0]];o.push({part:F0[p],score:Math.round(100*h)/100,positionRaw:c,position:[Math.round((r.shape[2]||0)*c[0]),Math.round((r.shape[1]||0)*c[1])]})}}let l=ns(o.map(p=>p.position),[r.shape[2],r.shape[1]]),d={};for(let[p,h]of Object.entries(M0)){let c=[];for(let f=0;fy.part===h[f]),g=o.find(y=>y.part===h[f+1]);m&&g&&m.score>(t.body.minConfidence||0)&&g.score>(t.body.minConfidence||0)&&c.push([m.position,g.position])}d[p]=c}let u={id:n,score:i,box:l.box,boxRaw:l.boxRaw,keypoints:[...o],annotations:d};t5(u),a.push(u)}}return a.sort((n,s)=>s.score-n.score),a.length>t.body.maxDetected&&(a.length=t.body.maxDetected),a}async function a5(e,t){if(!ba||!(ba==null?void 0:ba.inputs[0].shape))return[];t.skipAllowed||(zl.boxes.length=0),r5++;let r=(t.body.skipTime||0)>oe()-zl.last,a=r5<(t.body.skipFrames||0);return t.skipAllowed&&r&&a?zl.bodies:new Promise(async n=>{let s={};r5=0,s.input=yN(e,$0),s.res=ba==null?void 0:ba.execute(s.input),zl.last=oe();let i=await s.res.array();zl.bodies=s.res.shape[2]===17?await x2e(i,t,e):await b2e(i,t,e);for(let o of zl.bodies)AN(o,[e.shape[2]||1,e.shape[1]||1]),gN(o.keypoints);Object.keys(s).forEach(o=>re(s[o])),n(zl.bodies)})}var zd,P0=[],vN=0,n5=Number.MAX_SAFE_INTEGER,z0=0,O0=2.5;async function wN(e){if(!zd||ce.initial){zd=await Ue(e.object.modelPath);let t=Object.values(zd.modelSignature.inputs);z0=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&se("cached model:",zd.modelUrl);return zd}async function v2e(e,t,r){let a=0,n=[];for(let l of[1,2,4])q(async()=>{let d=l*13,u=Ye(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)===Cd.length)),p=Ye(e.find(m=>m.shape[1]===d**2&&(m.shape[2]||0)(r.object.minConfidence||0)&&g!==61){let A=(.5+Math.trunc(m%d))/d,x=(.5+Math.trunc(m/d))/d,b=c[m].map(I=>I*(d/l/z0)),[v,C]=[A-O0/l*b[0],x-O0/l*b[1]],[T,E]=[A+O0/l*b[2]-v,x+O0/l*b[3]-C],R=[v,C,T,E];R=R.map(I=>Math.max(0,Math.min(I,1)));let z=[R[0]*t[0],R[1]*t[1],R[2]*t[0],R[3]*t[1]],M={id:a++,score:Math.round(100*y)/100,class:g+1,label:Cd[g].label,box:z.map(I=>Math.trunc(I)),boxRaw:R};n.push(M)}}});e.forEach(l=>re(l));let s=n.map(l=>[l.boxRaw[1],l.boxRaw[0],l.boxRaw[3],l.boxRaw[2]]),i=n.map(l=>l.score),o=[];if(s&&s.length>0){let l=await Ie.nonMaxSuppressionAsync(s,i,r.object.maxDetected,r.object.iouThreshold,r.object.minConfidence);o=await l.data(),re(l)}return n=n.filter((l,d)=>o.includes(d)).sort((l,d)=>d.score-l.score),n}async function s5(e,t){let r=(t.object.skipTime||0)>oe()-vN,a=n5<(t.object.skipFrames||0);return t.skipAllowed&&r&&a&&P0.length>0?(n5++,P0):(n5=0,!ce.kernels.includes("mod")||!ce.kernels.includes("sparsetodense")?P0:new Promise(async n=>{let s=[e.shape[2]||0,e.shape[1]||0],i=Ie.resizeBilinear(e,[z0,z0],!1),o=pe(i,Xe.tf255),l=o.transpose([0,3,1,2]);re(o),re(i);let d;t.object.enabled&&(d=zd.execute(l)),vN=oe(),re(l);let u=await v2e(d,s,t);P0=u,n(u)}))}var Hh=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],w2e=Hh.length,jh=Hh.reduce((e,t,r)=>(e[t]=r,e),{}),k2e=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Lxe=k2e.map(([e,t])=>[jh[e],jh[t]]),IN=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function SN(e){let t=e.reduce(({maxX:r,maxY:a,minX:n,minY:s},{position:{x:i,y:o}})=>({maxX:Math.max(r,i),maxY:Math.max(a,o),minX:Math.min(n,i),minY:Math.min(s,o)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function TN(e,[t,r],[a,n]){let s=t/a,i=r/n,o=(d,u)=>({id:u,score:d.score,boxRaw:[d.box[0]/n,d.box[1]/a,d.box[2]/n,d.box[3]/a],box:[Math.trunc(d.box[0]*i),Math.trunc(d.box[1]*s),Math.trunc(d.box[2]*i),Math.trunc(d.box[3]*s)],keypoints:d.keypoints.map(({score:p,part:h,position:c})=>({score:p,part:h,position:[Math.trunc(c.x*i),Math.trunc(c.y*s)],positionRaw:[c.x/a,c.y/a]})),annotations:{}});return e.map((d,u)=>o(d,u))}var i5=class{constructor(t,r){fe(this,"priorityQueue");fe(this,"numberOfElements");fe(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=r}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let r=2*t;if(rr?r:e}function CN(e,t,r,a){let n=r-e,s=a-t;return n*n+s*s}function d5(e,t){return{x:e.x+t.x,y:e.y+t.y}}var An,S2e=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],D0=1,Dd=16,T2e=50**2;function NN(e,t,r,a,n,s,i=2){let o=y=>({y:s.get(y.y,y.x,e),x:s.get(y.y,y.x,s.shape[2]/2+e)}),l=(y,A,x)=>({y:u5(Math.round(y.y/Dd),0,A-1),x:u5(Math.round(y.x/Dd),0,x-1)}),[d,u]=a.shape,p=l(t.position,d,u),h=o(p),f=d5(t.position,h);for(let y=0;y[jh[h],jh[c]]),i=s.map(([,h])=>h),o=s.map(([h])=>h),l=t.shape[2],d=i.length,u=new Array(l),p=l5(e.part,Dd,r);u[e.part.id]={score:e.score,part:Hh[e.part.id],position:p};for(let h=d-1;h>=0;--h){let c=i[h],f=o[h];u[c]&&!u[f]&&(u[f]=NN(h,u[c],f,t,r,n))}for(let h=0;ht){o=!1;break}if(!o)break}return o}function E2e(e,t){let[r,a,n]=t.shape,s=new i5(r*a*n,({score:i})=>i);for(let i=0;i{var i;let s=(i=n[a])==null?void 0:i.position;return s?CN(r,t,s.y,s.x)<=T2e:!1})}function R2e(e,t){return t.reduce((a,{position:n,score:s},i)=>(EN(e,n,i)||(a+=s),a),0)/t.length}function F2e(e,t,r,a,n,s){let i=[],o=E2e(s,t);for(;i.lengthc.score>s);let p=R2e(i,u),h=SN(u);p>s&&i.push({keypoints:u,box:h,score:Math.round(100*p)/100})}return i}async function p5(e,t){let r=q(()=>{if(!An.inputs[0].shape)return[];let i=Ie.resizeBilinear(e,[An.inputs[0].shape[2],An.inputs[0].shape[1]]),o=he(pe(me(i,"float32"),127.5),1),d=An.execute(o,S2e).map(u=>Ye(u,[0]));return d[1]=Sr(d[1]),d}),a=await Promise.all(r.map(i=>i.buffer()));for(let i of r)re(i);let n=await F2e(a[0],a[1],a[2],a[3],t.body.maxDetected,t.body.minConfidence);return An.inputs[0].shape?TN(n,[e.shape[1],e.shape[2]],[An.inputs[0].shape[2],An.inputs[0].shape[1]]):[]}async function RN(e){return!An||ce.initial?An=await Ue(e.body.modelPath):e.debug&&se("cached model:",An.modelUrl),An}var On,h5=!1;async function c5(e){return!On||ce.initial?On=await Ue(e.segmentation.modelPath):e.debug&&se("cached model:",On.modelUrl),On}async function MN(e,t,r){var m,g;if(h5)return{data:[],canvas:null,alpha:null};h5=!0,On||await c5(r);let a=await Id(e,r),n=((m=a.tensor)==null?void 0:m.shape[2])||0,s=((g=a.tensor)==null?void 0:g.shape[1])||0;if(!a.tensor)return{data:[],canvas:null,alpha:null};let i={};i.resize=Ie.resizeBilinear(a.tensor,[On.inputs[0].shape?On.inputs[0].shape[1]:0,On.inputs[0].shape?On.inputs[0].shape[2]:0],!1),re(a.tensor),i.norm=pe(i.resize,Xe.tf255),i.res=On.execute(i.norm),i.squeeze=Ye(i.res,0),i.squeeze.shape[2]===2?(i.softmax=id(i.squeeze),[i.bg,i.fg]=ra(i.softmax,2),i.expand=Ht(i.fg,2),i.pad=Ht(i.expand,0),i.crop=Ie.cropAndResize(i.pad,[[0,0,.5,.5]],[0],[n,s]),i.data=Ye(i.crop,0)):i.data=Ie.resizeBilinear(i.squeeze,[s,n]);let o=Array.from(await i.data.data());if(ce.node&&!ce.Canvas&&typeof ImageData=="undefined")return r.debug&&se("canvas support missing"),Object.keys(i).forEach(y=>re(i[y])),{data:o,canvas:null,alpha:null};let l=Ur(n,s);$a&&await $a.toPixels(i.data,l);let d=l.getContext("2d");r.segmentation.blur&&r.segmentation.blur>0&&(d.filter=`blur(${r.segmentation.blur}px)`);let u=d.getImageData(0,0,n,s),p=Ur(n,s),h=p.getContext("2d");a.canvas&&h.drawImage(a.canvas,0,0),h.globalCompositeOperation="darken",r.segmentation.blur&&r.segmentation.blur>0&&(h.filter=`blur(${r.segmentation.blur}px)`),h.drawImage(l,0,0),h.globalCompositeOperation="source-over",h.filter="none";let c=h.getImageData(0,0,n,s);for(let y=0;yre(i[y])),h5=!1,{data:o,canvas:p,alpha:l}}var f5=class{constructor(){fe(this,"ssrnetage",null);fe(this,"gear",null);fe(this,"blazeposedetect",null);fe(this,"blazepose",null);fe(this,"centernet",null);fe(this,"efficientpose",null);fe(this,"mobilefacenet",null);fe(this,"emotion",null);fe(this,"facedetect",null);fe(this,"faceiris",null);fe(this,"facemesh",null);fe(this,"faceres",null);fe(this,"ssrnetgender",null);fe(this,"handpose",null);fe(this,"handskeleton",null);fe(this,"handtrack",null);fe(this,"liveness",null);fe(this,"movenet",null);fe(this,"nanodet",null);fe(this,"posenet",null);fe(this,"segmentation",null);fe(this,"antispoof",null)}};function m5(e){for(let t of Object.keys(e.models))e.models[t]=null}async function PN(e){var t,r,a,n,s,i,o,l,d,u,p,h,c,f,m,g,y,A,x,b,v,C,T,E,R,z,M,I,D,O;ce.initial&&m5(e),e.config.hand.enabled&&(!e.models.handpose&&((r=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:r.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await Hb(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(a=e.config.hand.detector)==null?void 0:a.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await Hb(e.config))),e.config.body.enabled&&!e.models.blazepose&&((i=(s=e.config.body)==null?void 0:s.modelPath)==null?void 0:i.includes("blazepose"))&&(e.models.blazepose=oC(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=iC(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((l=(o=e.config.body)==null?void 0:o.modelPath)==null?void 0:l.includes("efficientpose"))&&(e.models.efficientpose=cC(e.config)),e.config.body.enabled&&!e.models.movenet&&((u=(d=e.config.body)==null?void 0:d.modelPath)==null?void 0:u.includes("movenet"))&&(e.models.movenet=xN(e.config)),e.config.body.enabled&&!e.models.posenet&&((h=(p=e.config.body)==null?void 0:p.modelPath)==null?void 0:h.includes("posenet"))&&(e.models.posenet=RN(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=YT(e.config)),e.config.face.enabled&&((c=e.config.face.antispoof)==null?void 0:c.enabled)&&!e.models.antispoof&&(e.models.antispoof=_T(e.config)),e.config.face.enabled&&((f=e.config.face.liveness)==null?void 0:f.enabled)&&!e.models.liveness&&(e.models.liveness=cN(e.config)),e.config.face.enabled&&((m=e.config.face.description)==null?void 0:m.enabled)&&!e.models.faceres&&(e.models.faceres=zC(e.config)),e.config.face.enabled&&((g=e.config.face.emotion)==null?void 0:g.enabled)&&!e.models.emotion&&(e.models.emotion=yC(e.config)),e.config.face.enabled&&((y=e.config.face.iris)==null?void 0:y.enabled)&&!e.models.faceiris&&(e.models.faceiris=CC(e.config)),e.config.face.enabled&&((A=e.config.face.mesh)==null?void 0:A.enabled)&&!e.models.facemesh&&(e.models.facemesh=FC(e.config)),e.config.face.enabled&&((x=e.config.face.gear)==null?void 0:x.enabled)&&!e.models.gear&&(e.models.gear=ST(e.config)),e.config.face.enabled&&((b=e.config.face.ssrnet)==null?void 0:b.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=RT(e.config)),e.config.face.enabled&&((v=e.config.face.ssrnet)==null?void 0:v.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=PT(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=wC(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((E=(T=e.config.hand.detector)==null?void 0:T.modelPath)==null?void 0:E.includes("handtrack"))&&(e.models.handtrack=lN(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((z=(R=e.config.hand.detector)==null?void 0:R.modelPath)==null?void 0:z.includes("handtrack"))&&(e.models.handskeleton=uN(e.config)),e.config.object.enabled&&!e.models.centernet&&((I=(M=e.config.object)==null?void 0:M.modelPath)==null?void 0:I.includes("centernet"))&&(e.models.centernet=dC(e.config)),e.config.object.enabled&&!e.models.nanodet&&((O=(D=e.config.object)==null?void 0:D.modelPath)==null?void 0:O.includes("nanodet"))&&(e.models.nanodet=wN(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=c5(e.config));for await(let j of Object.keys(e.models))e.models[j]&&typeof e.models[j]!="undefined"&&(e.models[j]=await e.models[j])}async function ON(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let r of Object.keys(e.models)){let a=e.models[r];if(!a)continue;let n=[],s=a==null?void 0:a.executor;if(s&&s.graph.nodes)for(let o of Object.values(s.graph.nodes)){let l=o.op.toLowerCase();n.includes(l)||n.push(l)}else!s&&e.config.debug&&se("model signature not determined:",r);let i=[];for(let o of n)!t.includes(o)&&!e.env.kernels.includes(o)&&!e.env.kernels.includes(o.replace("_",""))&&!e.env.kernels.includes(o.replace("native",""))&&!e.env.kernels.includes(o.replace("v2",""))&&i.push(o);e.config.debug&&i.length>0&&se("model validation failed:",r,i)}}var Nt={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function M2e(){let e=Nt.gl;!e||(Nt.extensions=e.getSupportedExtensions())}async function DN(e){var t;if(e.config.backend==="humangl"&&(Nt.name in kr().registry&&(!Nt.gl||!Nt.gl.getParameter(Nt.gl.VERSION))&&(se("error: humangl backend invalid context"),m5(e)),!e2(Nt.name))){try{Nt.canvas=await Ur(100,100)}catch(a){se("error: cannot create canvas:",a);return}try{if(Nt.gl=(t=Nt.canvas)==null?void 0:t.getContext("webgl2",Nt.webGLattr),!Nt.gl.getParameter(Nt.gl.VERSION).includes("2.0")){se("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}Nt.canvas&&(Nt.canvas.addEventListener("webglcontextlost",async n=>{throw se("error: humangl:",n.type),se("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),Nt.canvas.addEventListener("webglcontextrestored",n=>{se("error: humangl context restored:",n)}),Nt.canvas.addEventListener("webglcontextcreationerror",n=>{se("error: humangl context create:",n)}))}catch(a){se("error: cannot get WebGL context:",a);return}try{Zm(2,Nt.gl)}catch(a){se("error: cannot set WebGL context:",a);return}try{let a=new uu(Nt.gl);Al(Nt.name,()=>new Nh(a),Nt.priority)}catch(a){se("error: cannot register WebGL backend:",a);return}try{Tn("webgl").forEach(n=>{let s={...n,backendName:Nt.name};Ga(s)})}catch(a){se("error: cannot update WebGL backend registration:",a);return}let r=cn().getGPGPUContext?cn().getGPGPUContext().gl:null;if(r)se(`humangl webgl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`);else{se("error: no current gl context:",r,Nt.gl);return}try{hn.set("WEBGL_VERSION",2)}catch(a){se("error: cannot set WebGL backend flags:",a);return}M2e(),se("backend registered:",Nt.name)}}function $2e(){if(!ce.kernels.includes("mod")){let e={kernelName:"Mod",backendName:ca(),kernelFunc:t=>q(()=>he(t.inputs.a,L(pe(t.inputs.a,t.inputs.b),t.inputs.b)))};Ga(e),ce.kernels.push("mod")}if(!ce.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:ca(),kernelFunc:t=>q(()=>ih(t.inputs.a/t.inputs.b)*t.inputs.b+nd(t.inputs.a,t.inputs.b))};Ga(e),ce.kernels.push("floormod")}}async function _0(e,t=!1){if(e.state="backend",t||ce.initial||e.config.backend&&e.config.backend.length>0&&ca()!==e.config.backend){let r=oe();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&se("running inside web worker"),ce.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&se("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),ce.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&se(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),ce.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")se("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&se("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await DN(e);let a=Object.keys(kr().registryFactory);if(e.config.debug&&se("available backends:",a),a.includes(e.config.backend)||(se(`error: backend ${e.config.backend} not found in registry`),e.config.backend=ce.node?"tensorflow":"webgl",e.config.debug&&se(`override: setting backend ${e.config.backend}`)),e.config.debug&&se("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&se("wasm path:",e.config.wasmPath),typeof(We==null?void 0:We.setWasmPaths)!="undefined")await Xx(e.config.wasmPath,e.config.wasmPlatformFetch);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await Y().getAsync("WASM_HAS_SIMD_SUPPORT"),s=await Y().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&se(`wasm execution: ${n?"SIMD":"no SIMD"} ${s?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&se("warning: wasm simd support is not enabled")}try{await Qy(e.config.backend),await ed(),CT()}catch(n){return se("error: cannot set backend:",e.config.backend,n),!1}}if(ca()==="humangl"&&(hn.set("CHECK_COMPUTATION_FOR_ERRORS",!1),hn.set("WEBGL_CPU_FORWARD",!0),hn.set("WEBGL_USE_SHAPES_UNIFORMS",!0),hn.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(se("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),hn.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),cn().getGPGPUContext)){let a=await cn().getGPGPUContext().gl;e.config.debug&&se(`gl version:${a.getParameter(a.VERSION)} renderer:${a.getParameter(a.RENDERER)}`)}ca()==="webgpu",Yy(),await ed(),e.performance.initBackend=Math.trunc(oe()-r),e.config.backend=ca(),await ce.updateBackend(),$2e()}return!0}function E0(e,t){for(let r of e){let a={kernelName:r,backendName:t.backend,kernelFunc:()=>{t.debug&&se("kernelFunc",r,t.backend)}};Ga(a)}ce.kernels=Tn(ca()).map(r=>r.kernelName.toLowerCase())}var ps={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},g5=0,Dl=e=>{if(!e)se("draw error: invalid canvas");else if(!e.getContext)se("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)se("draw error: cannot get canvas context");else return t}return null},_d=e=>Math.round(e*180/Math.PI);function y5(e,t,r,a,n){a=a||0,e.fillStyle=n.useDepth&&a?`rgba(${127.5+2*a}, ${127.5-2*a}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,r,n.pointSize,0,2*Math.PI),e.fill()}function qh(e,t,r,a,n,s){if(e.beginPath(),e.lineWidth=s.lineWidth,s.useCurves){let i=(t+t+a)/2,o=(r+r+n)/2;e.ellipse(i,o,a/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+s.roundRect,r),e.lineTo(t+a-s.roundRect,r),e.quadraticCurveTo(t+a,r,t+a,r+s.roundRect),e.lineTo(t+a,r+n-s.roundRect),e.quadraticCurveTo(t+a,r+n,t+a-s.roundRect,r+n),e.lineTo(t+s.roundRect,r+n),e.quadraticCurveTo(t,r+n,t,r+n-s.roundRect),e.lineTo(t,r+s.roundRect),e.quadraticCurveTo(t,r,t+s.roundRect,r),e.closePath();e.stroke()}function BN(e,t,r){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let a of t){let n=a[2]||0;e.strokeStyle=r.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:r.color,e.fillStyle=r.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:r.color,e.lineTo(a[0],Math.round(a[1]))}e.stroke(),r.fillPolygons&&(e.closePath(),e.fill())}}function O2e(e,t,r){if(!(t.length<2)){if(e.lineWidth=r.lineWidth,!r.useCurves||t.length<=2){BN(e,t,r);return}e.moveTo(t[0][0],t[0][1]);for(let a=0;a1&&l[1].length>0){let d=o[1]>0?`#${o[1]}`:"",u=`${o[0]} ${d}: ${l[1]}`;a.shadowColor&&a.shadowColor!==""&&(n.fillStyle=a.shadowColor,n.fillText(u,8,2+s*a.lineHeight)),n.fillStyle=a.labelColor,n.fillText(u,6,0+s*a.lineHeight),s+=1}}}}async function x5(e,t,r){var s,i,o,l,d;let a=vr(ps,r);if(!t||!e)return;let n=Dl(e);if(!!n)for(let u of t){if(n.font=a.font,n.strokeStyle=a.color,n.fillStyle=a.color,a.drawBoxes&&qh(n,u.box[0],u.box[1],u.box[2],u.box[3],a),a.drawLabels){let p=[];if(p.push(`face: ${Math.trunc(100*u.score)}%`),u.genderScore&&p.push(`${u.gender||""} ${Math.trunc(100*u.genderScore)}%`),u.age&&p.push(`age: ${u.age||""}`),u.iris&&p.push(`distance: ${u.iris}`),u.real&&p.push(`real: ${Math.trunc(100*u.real)}%`),u.live&&p.push(`live: ${Math.trunc(100*u.live)}%`),u.emotion&&u.emotion.length>0){let h=u.emotion.map(c=>`${Math.trunc(100*c.score)}% ${c.emotion}`);h.length>3&&(h.length=3),p.push(h.join(" "))}u.rotation&&u.rotation.angle&&u.rotation.gaze&&(u.rotation.angle.roll&&p.push(`roll: ${_d(u.rotation.angle.roll)}\xB0 yaw:${_d(u.rotation.angle.yaw)}\xB0 pitch:${_d(u.rotation.angle.pitch)}\xB0`),u.rotation.gaze.bearing&&p.push(`gaze: ${_d(u.rotation.gaze.bearing)}\xB0`)),p.length===0&&p.push("face"),n.fillStyle=a.color;for(let h=p.length-1;h>=0;h--){let c=Math.max(u.box[0],0),f=h*a.lineHeight+u.box[1];a.shadowColor&&a.shadowColor!==""&&(n.fillStyle=a.shadowColor,n.fillText(p[h],c+5,f+16)),n.fillStyle=a.labelColor,n.fillText(p[h],c+4,f+15)}}if(n.lineWidth=2,u.mesh&&u.mesh.length>0){if(a.drawPoints)for(let p of u.mesh)y5(n,p[0],p[1],p[2],a);if(a.drawPolygons){if(u.mesh.length>450)for(let p=0;pu.mesh[c]);BN(n,h,a)}if(u.annotations&&u.annotations.leftEyeIris&&u.annotations.leftEyeIris[0]){n.strokeStyle=a.useDepth?"rgba(255, 200, 255, 0.3)":a.color,n.beginPath();let p=Math.abs(u.annotations.leftEyeIris[3][0]-u.annotations.leftEyeIris[1][0])/2,h=Math.abs(u.annotations.leftEyeIris[4][1]-u.annotations.leftEyeIris[2][1])/2;n.ellipse(u.annotations.leftEyeIris[0][0],u.annotations.leftEyeIris[0][1],p,h,0,0,2*Math.PI),n.stroke(),a.fillPolygons&&(n.fillStyle=a.useDepth?"rgba(255, 255, 200, 0.3)":a.color,n.fill())}if(u.annotations&&u.annotations.rightEyeIris&&u.annotations.rightEyeIris[0]){n.strokeStyle=a.useDepth?"rgba(255, 200, 255, 0.3)":a.color,n.beginPath();let p=Math.abs(u.annotations.rightEyeIris[3][0]-u.annotations.rightEyeIris[1][0])/2,h=Math.abs(u.annotations.rightEyeIris[4][1]-u.annotations.rightEyeIris[2][1])/2;n.ellipse(u.annotations.rightEyeIris[0][0],u.annotations.rightEyeIris[0][1],p,h,0,0,2*Math.PI),n.stroke(),a.fillPolygons&&(n.fillStyle=a.useDepth?"rgba(255, 255, 200, 0.3)":a.color,n.fill())}if(a.drawGaze&&((s=u.rotation)==null?void 0:s.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let p=u.box[0]+u.box[2]/2-u.box[3]*_d(u.rotation.angle.yaw)/90,h=u.box[1]+u.box[3]/2+u.box[2]*_d(u.rotation.angle.pitch)/90,c=new Path2D(` M ${u.box[0]+u.box[2]/2} ${u.box[1]} C ${p} ${u.box[1]}, diff --git a/dist/human.node-gpu.d.ts b/dist/human.node-gpu.d.ts index fca0ad10..121f5b21 100644 --- a/dist/human.node-gpu.d.ts +++ b/dist/human.node-gpu.d.ts @@ -167,6 +167,11 @@ export declare interface Config { * default: auto-detects to link to CDN `jsdelivr` when running in browser */ wasmPath: string; + /** Force WASM loader to use platform fetch + * + * default: auto-detects to link to CDN `jsdelivr` when running in browser + */ + wasmPlatformFetch: false; /** Print debug statements to console * * default: `true` diff --git a/dist/human.node-gpu.js b/dist/human.node-gpu.js index e5ead337..1e2b0e3a 100644 --- a/dist/human.node-gpu.js +++ b/dist/human.node-gpu.js @@ -4,7 +4,7 @@ author: ' */ -var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Jr=Object.getPrototypeOf,Yr=Object.prototype.hasOwnProperty;var Kr=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Ho=e=>$e(e,"__esModule",{value:!0});var Qr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mt=(e,t)=>{for(var o in t)$e(e,o,{get:t[o],enumerable:!0})},Fo=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ur(t))!Yr.call(e,n)&&(o||n!=="default")&&$e(e,n,{get:()=>t[n],enumerable:!(A=qr(t,n))||A.enumerable});return e},V=(e,t)=>Fo(Ho($e(e!=null?Dr(Jr(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),_r=(e=>(t,o)=>e&&e.get(t)||(o=Fo(Ho({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0);var R=(e,t,o)=>(Kr(e,typeof t!="symbol"?t+"":t,o),o),Vo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var et=(e,t,o)=>(Vo(e,t,"read from private field"),o?o.call(e):t.get(e)),tt=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ot=(e,t,o,A)=>(Vo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);var F=Qr((Gs,Uo)=>{var Xo=Object.defineProperty,$r=Object.getOwnPropertyDescriptor,e2=Object.getOwnPropertyNames,t2=Object.prototype.hasOwnProperty,o2=e=>Xo(e,"__esModule",{value:!0}),Do=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of e2(t))!t2.call(e,n)&&(o||n!=="default")&&Xo(e,n,{get:()=>t[n],enumerable:!(A=$r(t,n))||A.enumerable});return e},A2=(e=>(t,o)=>e&&e.get(t)||(o=Do(o2({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0),qo={};Do(qo,require("@tensorflow/tfjs-node-gpu"));Uo.exports=A2(qo)});var Is={};mt(Is,{Human:()=>Xr,default:()=>Xr,defaults:()=>le,env:()=>T});function b(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function Zo(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var g=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function A5(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")A5(e[n],t[n],n,A);else{let r=e&&typeof e[n]!="undefined";r||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let s=e&&typeof e[n]==typeof t[n];r&&!s&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&b("invalid configuration",A),A}function c0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let r=o[n],s=A[n];Array.isArray(r)&&Array.isArray(s)?o[n]=r.concat(...s):t(r)&&t(s)?o[n]=c0(r,s):o[n]=s}),o),{})}var le={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var d0=V(F());var W=V(F());var Jo=` +var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Jr=Object.getPrototypeOf,Yr=Object.prototype.hasOwnProperty;var Kr=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Ho=e=>$e(e,"__esModule",{value:!0});var Qr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mt=(e,t)=>{for(var o in t)$e(e,o,{get:t[o],enumerable:!0})},Fo=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ur(t))!Yr.call(e,n)&&(o||n!=="default")&&$e(e,n,{get:()=>t[n],enumerable:!(A=qr(t,n))||A.enumerable});return e},V=(e,t)=>Fo(Ho($e(e!=null?Dr(Jr(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),_r=(e=>(t,o)=>e&&e.get(t)||(o=Fo(Ho({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0);var R=(e,t,o)=>(Kr(e,typeof t!="symbol"?t+"":t,o),o),Vo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var et=(e,t,o)=>(Vo(e,t,"read from private field"),o?o.call(e):t.get(e)),tt=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ot=(e,t,o,A)=>(Vo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);var F=Qr((Gs,Uo)=>{var Xo=Object.defineProperty,$r=Object.getOwnPropertyDescriptor,e2=Object.getOwnPropertyNames,t2=Object.prototype.hasOwnProperty,o2=e=>Xo(e,"__esModule",{value:!0}),Do=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of e2(t))!t2.call(e,n)&&(o||n!=="default")&&Xo(e,n,{get:()=>t[n],enumerable:!(A=$r(t,n))||A.enumerable});return e},A2=(e=>(t,o)=>e&&e.get(t)||(o=Do(o2({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0),qo={};Do(qo,require("@tensorflow/tfjs-node-gpu"));Uo.exports=A2(qo)});var Is={};mt(Is,{Human:()=>Xr,default:()=>Xr,defaults:()=>le,env:()=>T});function b(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function Zo(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var g=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function A5(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")A5(e[n],t[n],n,A);else{let r=e&&typeof e[n]!="undefined";r||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let s=e&&typeof e[n]==typeof t[n];r&&!s&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&b("invalid configuration",A),A}function c0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let r=o[n],s=A[n];Array.isArray(r)&&Array.isArray(s)?o[n]=r.concat(...s):t(r)&&t(s)?o[n]=c0(r,s):o[n]=s}),o),{})}var le={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var d0=V(F());var W=V(F());var Jo=` precision highp float; attribute vec2 pos; attribute vec2 uv; @@ -96,7 +96,7 @@ var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDe c31 * m[6] + c32 * m[7] + c33 * m[8]; gl_FragColor.a = c22.a; } -`;var n5=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,r)=>(o[r]=0,n))},eA=class{constructor(t,o,A){R(this,"uniform",{});R(this,"attribute",{});R(this,"gl");R(this,"id");R(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(b(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(b("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),r=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!r)){if(!this.id){b("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,r),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){b(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),n5(o,"attribute",this.attribute);for(let s in this.attribute)this.attribute[s]=this.gl.getAttribLocation(this.id,s);n5(o,"uniform",this.uniform),n5(A,"uniform",this.uniform);for(let s in this.uniform)this.uniform[s]=this.gl.getUniformLocation(this.id,s)}}};function tA(){let e=0,t=null,o=!1,A=-1,n=[null,null],r=[],s=null,a=null,y=h0(100,100),c={},i={INTERMEDIATE:1},l=y.getContext("webgl");if(this.gl=l,!l){b("filter: cannot get webgl context");return}function x(P,m){if(!(P===y.width&&m===y.height)){if(y.width=P,y.height=m,!s){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);s=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,s),l.bufferData(l.ARRAY_BUFFER,p,l.STATIC_DRAW),l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}l.viewport(0,0,y.width,y.height),n=[null,null]}}function d(P,m){let p=l.createFramebuffer();l.bindFramebuffer(l.FRAMEBUFFER,p);let k=l.createRenderbuffer();l.bindRenderbuffer(l.RENDERBUFFER,k);let C=l.createTexture();return l.bindTexture(l.TEXTURE_2D,C),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,P,m,0,l.RGBA,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,C,0),l.bindTexture(l.TEXTURE_2D,null),l.bindFramebuffer(l.FRAMEBUFFER,null),{fbo:p,texture:C}}function u(P){return n[P]=n[P]||d(y.width,y.height),n[P]}function f(P=0){if(!a)return;let m=null,p=null,k=!1;e===0?m=t:m=u(A).texture||null,e++,o&&!(P&i.INTERMEDIATE)?(p=null,k=e%2===0):(A=(A+1)%2,p=u(A).fbo||null),l.bindTexture(l.TEXTURE_2D,m),l.bindFramebuffer(l.FRAMEBUFFER,p),l.uniform1f(a.uniform.flipY,k?-1:1),l.drawArrays(l.TRIANGLES,0,6)}function M(P){if(c[P])return a=c[P],l.useProgram((a?a.id:null)||null),a;if(a=new eA(l,Jo,P),!a)return b("filter: could not get webgl program"),null;let m=Float32Array.BYTES_PER_ELEMENT,p=4*m;return l.enableVertexAttribArray(a.attribute.pos),l.vertexAttribPointer(a.attribute.pos,2,l.FLOAT,!1,p,0*m),l.enableVertexAttribArray(a.attribute.uv),l.vertexAttribPointer(a.attribute.uv,2,l.FLOAT,!1,p,2*m),c[P]=a,a}let h={colorMatrix:P=>{let m=new Float32Array(P);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let p=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?Ko:Yo,k=M(p);!k||(l.uniform1fv(k.uniform.m,m),f())},brightness:P=>{let m=(P||0)+1;h.colorMatrix([m,0,0,0,0,0,m,0,0,0,0,0,m,0,0,0,0,0,1,0])},saturation:P=>{let m=(P||0)*2/3+1,p=(m-1)*-.5;h.colorMatrix([m,p,p,0,0,p,m,p,0,0,p,p,m,0,0,0,0,0,1,0])},desaturate:()=>{h.saturation(-1)},contrast:P=>{let m=(P||0)+1,p=-128*(m-1);h.colorMatrix([m,0,0,0,p,0,m,0,0,p,0,0,m,0,p,0,0,0,1,0])},negative:()=>{h.contrast(-2)},hue:P=>{P=(P||0)/180*Math.PI;let m=Math.cos(P),p=Math.sin(P),k=.213,C=.715,O=.072;h.colorMatrix([k+m*(1-k)+p*-k,C+m*-C+p*-C,O+m*-O+p*(1-O),0,0,k+m*-k+p*.143,C+m*(1-C)+p*.14,O+m*-O+p*-.283,0,0,k+m*-k+p*-(1-k),C+m*-C+p*C,O+m*(1-O)+p*O,0,0,0,0,0,1,0])},desaturateLuminance:()=>{h.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{h.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{h.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{h.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{h.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{h.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{h.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{h.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:P=>{let m=new Float32Array(P),p=1/y.width,k=1/y.height,C=M($o);!C||(l.uniform1fv(C.uniform.m,m),l.uniform2f(C.uniform.px,p,k),f())},detectEdges:()=>{h.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{h.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{h.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:P=>{let m=P||1;h.convolution.call(this,[0,-1*m,0,-1*m,1+4*m,-1*m,0,-1*m,0])},emboss:P=>{let m=P||1;h.convolution.call(this,[-2*m,-1*m,0,-1*m,1,1*m,0,1*m,2*m])},blur:P=>{let m=P/7/y.width,p=P/7/y.height,k=M(_o);!k||(l.uniform2f(k.uniform.px,0,p),f(i.INTERMEDIATE),l.uniform2f(k.uniform.px,m,0),f())},pixelate:P=>{let m=P/y.width,p=P/y.height,k=M(Qo);!k||(l.uniform2f(k.uniform.size,m,p),f())}};this.add=function(P){let m=Array.prototype.slice.call(arguments,1),p=h[P];r.push({func:p,args:m})},this.reset=function(){r=[]},this.get=function(){return r},this.apply=function(P){x(P.width,P.height),e=0,t||(t=l.createTexture()),l.bindTexture(l.TEXTURE_2D,t),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,P);for(let m=0;md.data())),s=.99*Math.max(r[0][0],r[1][0],r[2][0]),a=[X.sub(o[0],A[0]),X.sub(o[1],A[1]),X.sub(o[2],A[2])],y=[X.sub(n[0],A[0]),X.sub(n[1],A[1]),X.sub(n[2],A[2])],c=[X.div(s,y[0]),X.div(s,y[1]),X.div(s,y[2])],i=[X.mul(a[0],c[0]),X.mul(a[1],c[1]),X.mul(a[2],c[2])],l=X.stack([i[0],i[1],i[2]],2),x=X.reshape(l,[1,t.shape[0],t.shape[1],3]);return X.dispose([...o,...A,...n,...a,...y,...c,...i,l,t]),x}var ut=2048,D=null,i0=null,Se=null,_,Q0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function h0(e,t){let o;if(T.browser)if(T.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof T.Canvas!="undefined"?o=new T.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function r5(e,t){let o=t||h0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function We(e,t,o=!0){if(!e)return t.debug&&b("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof W.Tensor)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof T.Canvas!="undefined"&&e instanceof T.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof W.Tensor){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=W.expandDims(e,0);else if(e.shape[2]===4){let n=W.slice3d(e,[0,0,0],[-1,-1,3]);A=W.expandDims(n,0),W.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=W.clone(e):e.shape[3]===4&&(A=W.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=W.cast(A,"float32");W.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?i0:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&b("input stream is not ready"),{tensor:null,canvas:D};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&b("cannot determine input dimensions"),{tensor:null,canvas:D};let r=A,s=n;if(r>ut&&(r=ut,s=Math.trunc(r*n/A)),s>ut&&(s=ut,r=Math.trunc(s*A/n)),(t.filter.width||0)>0?r=t.filter.width:(t.filter.height||0)>0&&(r=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?s=t.filter.height:(t.filter.width||0)>0&&(s=n*((t.filter.width||0)/A)),!r||!s)throw new Error("input error: cannot determine dimension");(!D||(D==null?void 0:D.width)!==r||(D==null?void 0:D.height)!==s)&&(D=h0(r,s));let a=D.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?a.putImageData(e,0,0):t.filter.flip&&typeof a.translate!="undefined"?(a.translate(A,0),a.scale(-1,1),a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),a.setTransform(1,0,0,1,0,0)):a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),(!i0||D.width!==i0.width||(D==null?void 0:D.height)!==(i0==null?void 0:i0.height))&&(i0=h0(D.width,D.height)),t.filter.enabled&&T.webgl.supported){if(_||(_=T.browser?new tA:null),T.filter=!!_,!_||!_.add)return t.debug&&b("input process error: cannot initialize filters"),{tensor:null,canvas:D};_.reset(),t.filter.brightness!==0&&_.add("brightness",t.filter.brightness),t.filter.contrast!==0&&_.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&_.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&_.add("blur",t.filter.blur),t.filter.saturation!==0&&_.add("saturation",t.filter.saturation),t.filter.hue!==0&&_.add("hue",t.filter.hue),t.filter.negative&&_.add("negative"),t.filter.sepia&&_.add("sepia"),t.filter.vintage&&_.add("brownie"),t.filter.sepia&&_.add("sepia"),t.filter.kodachrome&&_.add("kodachrome"),t.filter.technicolor&&_.add("technicolor"),t.filter.polaroid&&_.add("polaroid"),t.filter.pixelate!==0&&_.add("pixelate",t.filter.pixelate),_.get()>0?i0=_.apply(D):i0=_.draw(D)}else r5(D,i0),_&&(_=null),T.filter=!!_;if(!o)return{tensor:null,canvas:i0};if(!i0)throw new Error("canvas error: cannot create output");let y,c=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(T.browser&&W.browser)y=W.browser?W.browser.fromPixels(e):null;else{c=e.data.length/e.height/e.width;let x=new Uint8Array(e.data.buffer);y=W.tensor(x,[e.height,e.width,c],"int32")}else if((!Se||i0.width!==Se.width||i0.height!==Se.height)&&(Se=h0(i0.width,i0.height)),W.browser&&T.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?y=W.browser.fromPixels(i0):(Se=r5(i0),y=W.browser.fromPixels(Se));else{let u=r5(i0).getContext("2d").getImageData(0,0,r,s);c=u.data.length/r/s;let f=new Uint8Array(u.data.buffer);y=W.tensor(f,[r,s,c])}if(c===4){let x=W.slice3d(y,[0,0,0],[-1,-1,3]);W.dispose(y),y=x}if(!y)throw new Error("input error: cannot create tensor");let i=W.cast(y,"float32"),l=t.filter.equalization?await pt(i):W.expandDims(i,0);return W.dispose([y,i]),{tensor:l,canvas:t.filter.return?i0:null}}}async function oA(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!Q0.inputTensor)Q0.inputTensor=W.clone(t);else if(Q0.inputTensor.shape[1]!==t.shape[1]||Q0.inputTensor.shape[2]!==t.shape[2])W.dispose(Q0.inputTensor),Q0.inputTensor=W.clone(t);else{let A={};A.diff=W.sub(t,Q0.inputTensor),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;W.dispose([Q0.inputTensor,A.diff,A.squared,A.sum]),Q0.inputTensor=W.clone(t),o=r<=(e.cacheSensitivity||0)}return o}async function AA(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||b("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||b("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=W.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?W.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):W.clone(o),A.diff=W.sub(A.input1,A.input2),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return W.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),r}var nA=class{constructor(){R(this,"browser");R(this,"node");R(this,"worker");R(this,"platform","");R(this,"agent","");R(this,"backends",[]);R(this,"initial");R(this,"filter");R(this,"tfjs");R(this,"offscreen");R(this,"perfadd",!1);R(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});R(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});R(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});R(this,"cpu",{model:void 0,flags:[]});R(this,"kernels",[]);R(this,"Canvas");R(this,"Image");R(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:d0.version["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(d0.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&d0.getBackend()==="wasm"&&(this.wasm.simd=await d0.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await d0.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=h0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(d0.getBackend()==="webgl"||d0.getBackend()==="humangl")){let A=d0.backend().gpgpu!=="undefined"?await d0.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=d0.getKernelsForBackend(d0.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},T=new nA;var ht=V(F()),_0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function a2(e,t){return _0.debug&&b("load model fetch:",e,t),fetch(e,t)}function rA(e){_0.cacheModels=e.cacheModels,_0.verbose=e.debug,_0.modelBasePath=e.modelBasePath}async function G(e){let t=Zo(_0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await ht.io.listModels(),r=_0.cacheModels&&Object.keys(n).includes(A),s=typeof fetch=="undefined"?{}:{fetchFunc:(y,c)=>a2(y,c)},a=new ht.GraphModel(r?A:t,s);try{a.findIOHandler(),_0.debug&&b("model load handler:",a.handler);let y=await a.handler.load();a.loadSync(y),_0.verbose&&b("load model:",a.modelUrl)}catch(y){b("error loading model:",t,y)}if(_0.cacheModels&&!r)try{let y=await a.save(A);b("model saved:",A,y)}catch(y){b("error saving model:",t,y)}return a}var D0=V(F());var s5="2.6.2";var s0=V(F());var bt=V(F());var I0,a5=[],y2=["white","black","asian","indian","other"],x2=[15,23,28,35.5,45.5,55.5,65],sA=0,aA=0,i5=Number.MAX_SAFE_INTEGER;async function iA(e){return T.initial&&(I0=null),I0?e.debug&&b("cached model:",I0.modelUrl):I0=await G(e.face.gear),I0}async function l5(e,t,o,A){var s,a;if(!I0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=i5<(((s=t.face.gear)==null?void 0:s.skipFrames)||0),r=(((a=t.face.gear)==null?void 0:a.skipTime)||0)>g()-aA;return t.skipAllowed&&r&&n&&sA===A&&a5[o]?(i5++,a5[o]):(i5=0,new Promise(async y=>{var h,P;if(!(I0==null?void 0:I0.inputs[0].shape))return;let c={},i=[[0,.1,.9,.9]];c.resize=bt.image.cropAndResize(e,i,[0],[I0.inputs[0].shape[2],I0.inputs[0].shape[1]]);let l={age:0,gender:"unknown",genderScore:0,race:[]};((h=t.face.gear)==null?void 0:h.enabled)&&([c.age,c.gender,c.race]=I0.execute(c.resize,["age_output","gender_output","race_output"]));let x=await c.gender.data();l.gender=x[0]>x[1]?"male":"female",l.genderScore=Math.round(100*(x[0]>x[1]?x[0]:x[1]))/100;let d=await c.race.data();for(let m=0;m(((P=t.face.gear)==null?void 0:P.minConfidence)||.2)&&l.race.push({score:Math.round(100*d[m])/100,race:y2[m]});l.race.sort((m,p)=>p.score-m.score);let f=Array.from(await c.age.data()).map((m,p)=>[x2[p],m]).sort((m,p)=>p[1]-m[1]),M=f[0][0];for(let m=1;mbt.dispose(c[m])),a5[o]=l,sA=A,aA=g(),y(l)}))}var Ce=V(F());var ye=V(F()),H={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function yA(){H.tf255=ye.scalar(255,"float32"),H.tf1=ye.scalar(1,"float32"),H.tf2=ye.scalar(2,"float32"),H.tf05=ye.scalar(.5,"float32"),H.tf127=ye.scalar(127.5,"float32"),H.rgb=ye.tensor1d([.2989,.587,.114],"float32")}var T0,gt=[],xA=0,cA=0,y5=Number.MAX_SAFE_INTEGER;async function dA(e){return T.initial&&(T0=null),T0?e.debug&&b("cached model:",T0.modelUrl):T0=await G(e.face.ssrnet.modelPathAge),T0}async function x5(e,t,o,A){var s,a,y,c;if(!T0)return{age:0};let n=y5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-cA;return t.skipAllowed&&n&&r&&xA===A&&((y=gt[o])==null?void 0:y.age)&&((c=gt[o])==null?void 0:c.age)>0?(y5++,gt[o]):(y5=0,new Promise(async i=>{if(!(T0==null?void 0:T0.inputs)||!T0.inputs[0]||!T0.inputs[0].shape)return;let l={};l.resize=Ce.image.resizeBilinear(e,[T0.inputs[0].shape[2],T0.inputs[0].shape[1]],!1),l.enhance=Ce.mul(l.resize,H.tf255);let x={age:0};if(t.face.ssrnet.enabled&&(l.age=T0.execute(l.enhance)),l.age){let d=await l.age.data();x.age=Math.trunc(10*d[0])/10}Object.keys(l).forEach(d=>Ce.dispose(l[d])),gt[o]=x,xA=A,cA=g(),i(x)}))}var f0=V(F());var N0,Pt=[],mA=0,pA=0,c5=Number.MAX_SAFE_INTEGER,d5=[.2989,.587,.114];async function uA(e){return T.initial&&(N0=null),N0?e.debug&&b("cached model:",N0.modelUrl):N0=await G(e.face.ssrnet.modelPathGender),N0}async function f5(e,t,o,A){var s,a,y,c;if(!N0)return{gender:"unknown",genderScore:0};let n=c5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-pA;return t.skipAllowed&&n&&r&&mA===A&&((y=Pt[o])==null?void 0:y.gender)&&((c=Pt[o])==null?void 0:c.genderScore)>0?(c5++,Pt[o]):(c5=0,new Promise(async i=>{if(!(N0==null?void 0:N0.inputs[0].shape))return;let l={};l.resize=f0.image.resizeBilinear(e,[N0.inputs[0].shape[2],N0.inputs[0].shape[1]],!1),l.enhance=f0.tidy(()=>{let[u,f,M]=f0.split(l.resize,3,3),h=f0.mul(u,d5[0]),P=f0.mul(f,d5[1]),m=f0.mul(M,d5[2]),p=f0.addN([h,P,m]);return f0.mul(f0.sub(p,H.tf05),2)});let x={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(l.gender=N0.execute(l.enhance));let d=await l.gender.data();x.gender=d[0]>d[1]?"female":"male",x.genderScore=d[0]>d[1]?Math.trunc(100*d[0])/100:Math.trunc(100*d[1])/100,Object.keys(l).forEach(u=>f0.dispose(l[u])),Pt[o]=x,mA=A,pA=g(),i(x)}))}var vt=V(F());var m0,Mt=[],m5=Number.MAX_SAFE_INTEGER,bA=0,gA=0;async function PA(e){var t;return T.initial&&(m0=null),m0?e.debug&&b("cached model:",m0.modelUrl):m0=await G((t=e.face.antispoof)==null?void 0:t.modelPath),m0}async function p5(e,t,o,A){var s,a;if(!m0)return 0;let n=(((s=t.face.antispoof)==null?void 0:s.skipTime)||0)>g()-gA,r=m5<(((a=t.face.antispoof)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&bA===A&&Mt[o]?(m5++,Mt[o]):(m5=0,new Promise(async y=>{let c=vt.image.resizeBilinear(e,[(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[2]:0,(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[1]:0],!1),i=m0==null?void 0:m0.execute(c),l=(await i.data())[0];Mt[o]=Math.round(100*l)/100,bA=A,gA=g(),vt.dispose([c,i]),y(Mt[o])}))}var N=V(F());var $0=V(F());var L0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},u5={count:468,mouth:13,symmetryLine:[13,L0.midwayBetweenEyes[0]]},nt={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},h5=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],rt=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],Pe=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var d2=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],f2=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],m2=[33,133,362,263,1,78,308],aa=d2.map(e=>rt[e]),ia=f2.map(e=>rt[e]),la=m2.map(e=>rt[e]);var Oe=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Tt=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],M5=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],v5=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],RA=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},g5=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],r=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],s=$0.image.cropAndResize(t,[r],[0],o),a=$0.div(s,H.tf255);return $0.dispose(s),a},Rt=(e,t)=>{let o=Tt(e),A=Oe(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},wt=e=>{let t=Tt(e),o=Oe(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},wA=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},P5=[[1,0,0],[0,1,0],[0,0,1]],p2=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),u2=(e,t)=>p2(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var vA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Me=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],r=vA(t[0],t[1]),s=TA(r,n),a=vA(-t[0],-t[1]);return TA(s,a)},b2=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Me(t[0],o),-Me(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},g2=(e,t)=>[Me(e,t[0]),Me(e,t[1])];function EA(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[r[0]/n*(d[0]-n/2),r[1]/n*(d[1]-n/2),d[2]||0]),a=o&&o!==0&&Math.abs(o)>.2,y=a?kA(o,[0,0]):P5,c=a?s.map(d=>[...g2(d,y),d[2]]):s,i=a?b2(A):P5,l=Tt(t),x=[Me(l,i[0]),Me(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2]||0)])}function jA(e,t,o,A){let n=t.landmarks.length>=u5.count?u5.symmetryLine:nt.symmetryLine,r=0,s=P5,a;if(e&&T.kernels.includes("rotatewithoffset"))if(r=u2(t.landmarks[n[0]],t.landmarks[n[1]]),r&&r!==0&&Math.abs(r)>.2){let c=Tt(t),i=[c[0]/o.shape[2],c[1]/o.shape[1]],l=$0.image.rotateWithOffset(o,r,0,i);s=kA(-r,c),a=g5(t,l,[A,A]),$0.dispose(l)}else a=g5(t,o,[A,A]);else a=g5(t,o,[A,A]);return[r,s,a]}var P2=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},SA=(e,t)=>{let o=P2(e),A=Oe(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var WA=6,M2=1.2,q0,CA=null,xe=0,st=null,kt=()=>xe;async function OA(e){var t;return T.initial&&(q0=null),q0?e.debug&&b("cached model:",q0.modelUrl):q0=await G((t=e.face.detector)==null?void 0:t.modelPath),xe=q0.inputs[0].shape?q0.inputs[0].shape[2]:0,st=N.scalar(xe,"int32"),CA=N.tensor2d(EA(xe)),q0}function v2(e){let t={};t.boxStarts=N.slice(e,[0,1],[-1,2]),t.centers=N.add(t.boxStarts,CA),t.boxSizes=N.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=N.div(t.boxSizes,st),t.centersNormalized=N.div(t.centers,st),t.halfBoxSize=N.div(t.boxSizesNormalized,H.tf2),t.starts=N.sub(t.centersNormalized,t.halfBoxSize),t.ends=N.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=N.mul(t.starts,st),t.endNormalized=N.mul(t.ends,st);let o=N.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>N.dispose(t[A])),o}async function IA(e,t){var a,y,c,i;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=N.image.resizeBilinear(e,[xe,xe]),o.div=N.div(o.resized,H.tf127),o.normalized=N.sub(o.div,H.tf05);let A=q0==null?void 0:q0.execute(o.normalized);if(Array.isArray(A)){let l=A.sort((x,d)=>x.size-d.size);o.concat384=N.concat([l[0],l[2]],2),o.concat512=N.concat([l[1],l[3]],2),o.concat=N.concat([o.concat512,o.concat384],1),o.batch=N.squeeze(o.concat,0)}else o.batch=N.squeeze(A);N.dispose(A),o.boxes=v2(o.batch),o.logits=N.slice(o.batch,[0,0],[-1,1]),o.sigmoid=N.sigmoid(o.logits),o.scores=N.squeeze(o.sigmoid),o.nms=await N.image.nonMaxSuppressionAsync(o.boxes,o.scores,((a=t.face.detector)==null?void 0:a.maxDetected)||0,((y=t.face.detector)==null?void 0:y.iouThreshold)||0,((c=t.face.detector)==null?void 0:c.minConfidence)||0);let n=await o.nms.array(),r=[],s=await o.scores.data();for(let l=0;l(((i=t.face.detector)==null?void 0:i.minConfidence)||0)){let d={};d.bbox=N.slice(o.boxes,[n[l],0],[1,-1]),d.slice=N.slice(o.batch,[n[l],WA-1],[1,-1]),d.squeeze=N.squeeze(d.slice),d.landmarks=N.reshape(d.squeeze,[WA,-1]);let u=await d.bbox.data(),f={startPoint:[u[0],u[1]],endPoint:[u[2],u[3]],landmarks:await d.landmarks.array(),confidence:x},M=RA(f,[(e.shape[2]||0)/xe,(e.shape[1]||0)/xe]),h=Rt(M,t.face.scale||M2),P=wt(h);r.push(P),Object.keys(d).forEach(m=>N.dispose(d[m]))}}return Object.keys(o).forEach(l=>N.dispose(o[l])),r}var k0=V(F());var Et={};mt(Et,{connected:()=>w5,kpt:()=>R5});var R5=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],w5={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var R0=V(F()),LA=224,T2,R2=5,zt=[8,16,32,32,32];async function BA(){let e=[],t=0;for(;to.x)),y:R0.tensor1d(e.map(o=>o.y))}}function ee(e,t=[1,1]){let o=[e.map(a=>a[0]),e.map(a=>a[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[A[0],A[1],n[0]-A[0],n[1]-A[1]],s=[r[0]/t[0],r[1]/t[1],r[2]/t[0],r[3]/t[1]];return{box:r,boxRaw:s}}function GA(e,t=[1,1]){let o=[e.map(c=>c[0]),e.map(c=>c[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[(A[0]+n[0])/2,(A[1]+n[1])/2],s=Math.max(r[0]-A[0],r[1]-A[1],-r[0]+n[0],-r[1]+n[1]),a=[Math.trunc(r[0]-s),Math.trunc(r[1]-s),Math.trunc(2*s),Math.trunc(2*s)],y=[a[0]/t[0],a[1]/t[1],a[2]/t[0],a[3]/t[1]];return{box:a,boxRaw:y}}function jt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var VA={initial:!0},w0={detector:null,landmarks:null},Ie={detector:[224,224],landmarks:[256,256]},k5=Number.MAX_SAFE_INTEGER,k2={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},Wt=null,at,ce=[[0,0],[0,0],[0,0],[0,0]],HA=0,FA=e=>1-1/(1+Math.exp(e));async function ZA(e){if(VA.initial&&(w0.detector=null),!w0.detector&&e.body.detector&&e.body.detector.modelPath){w0.detector=await G(e.body.detector.modelPath);let t=Object.values(w0.detector.modelSignature.inputs);Ie.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&w0.detector&&b("cached model:",w0.detector.modelUrl);return await BA(),w0.detector}async function XA(e){if(VA.initial&&(w0.landmarks=null),w0.landmarks)e.debug&&b("cached model:",w0.landmarks.modelUrl);else{w0.landmarks=await G(e.body.modelPath);let t=Object.values(w0.landmarks.modelSignature.inputs);Ie.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return w0.landmarks}async function E2(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(at&&(o.cropped=k0.image.cropAndResize(e,[at],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],r=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];ce=[[0,0],n,r,[0,0]],o.pad=k0.pad(o.cropped||e,ce),o.resize=k0.image.resizeBilinear(o.pad,[t,t]),A=k0.div(o.resize,H.tf255)}else e.shape[1]!==t?(o.resize=k0.image.resizeBilinear(o.cropped||e,[t,t]),A=k0.div(o.resize,H.tf255)):A=k0.div(o.cropped||e,H.tf255);return Object.keys(o).forEach(n=>k0.dispose(o[n])),A}function z2(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+ce[2][0]+ce[2][1])/t[0]-ce[2][0]),Math.trunc(o.position[1]*(t[1]+ce[1][0]+ce[1][1])/t[1]-ce[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(at)for(let o of e)o.positionRaw=[o.positionRaw[0]+at[1],o.positionRaw[1]+at[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function j2(e){let t=e.find(a=>a.part==="leftPalm"),o=e.find(a=>a.part==="leftWrist"),A=e.find(a=>a.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(a=>a.part==="rightPalm"),r=e.find(a=>a.part==="rightWrist"),s=e.find(a=>a.part==="rightIndex");n.position[2]=((r.position[2]||0)+(s.position[2]||0))/2}async function S2(e,t,o){var u;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(u=w0.landmarks)==null?void 0:u.execute(e,k2.landmarks);let n=(await A.poseflag.data())[0],r=await A.ld.data(),s=await A.world.data();Object.keys(A).forEach(f=>k0.dispose(A[f]));let a=[],y=5;for(let f=0;ff.position),l=ee(i,[o[0],o[1]]),x={};for(let[f,M]of Object.entries(w5)){let h=[];for(let P=0;Pk.part===M[P]),p=c.find(k=>k.part===M[P+1]);m&&p&&h.push([m.position,p.position])}x[f]=h}return{id:0,score:Math.trunc(100*n)/100,box:l.box,boxRaw:l.boxRaw,keypoints:c,annotations:x}}async function E5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>g()-HA,n=k5<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&Wt!==null)k5++;else{let r={};r.landmarks=await E2(e,256),Wt=await S2(r.landmarks,t,o),Object.keys(r).forEach(s=>k0.dispose(r[s])),HA=g(),k5=0}return Wt?[Wt]:[]}var b0=V(F());var Ne=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var te,ve=0,z5=[],qA=0,j5=Number.MAX_SAFE_INTEGER;async function UA(e){if(T.initial&&(te=null),te)e.debug&&b("cached model:",te.modelUrl);else{te=await G(e.object.modelPath);let t=Object.values(te.modelSignature.inputs);ve=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return te}async function W2(e,t,o){if(!e)return[];let A={},n=[],r=await e.array();A.squeeze=b0.squeeze(e);let s=b0.split(A.squeeze,6,1);A.stack=b0.stack([s[1],s[0],s[3],s[2]],1),A.boxes=b0.squeeze(A.stack),A.scores=b0.squeeze(s[4]),A.classes=b0.squeeze(s[5]),b0.dispose([e,...s]),A.nms=await b0.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let a=await A.nms.data(),y=0;for(let c of Array.from(a)){let i=Math.trunc(100*r[0][c][4])/100,l=r[0][c][5],x=Ne[l].label,[d,u]=[r[0][c][0]/ve,r[0][c][1]/ve],f=[d,u,r[0][c][2]/ve-d,r[0][c][3]/ve-u],M=[Math.trunc(f[0]*t[0]),Math.trunc(f[1]*t[1]),Math.trunc(f[2]*t[0]),Math.trunc(f[3]*t[1])];n.push({id:y++,score:i,class:l,label:x,box:M,boxRaw:f})}return Object.keys(A).forEach(c=>b0.dispose(A[c])),n}async function S5(e,t){let o=(t.object.skipTime||0)>g()-qA,A=j5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&z5.length>0?(j5++,z5):(j5=0,new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=b0.image.resizeBilinear(e,[ve,ve]),a=t.object.enabled?te==null?void 0:te.execute(s,["tower_0/detections"]):null;qA=g(),b0.dispose(s);let y=await W2(a,r,t);z5=y,n(y)}))}var K=V(F());var Ct={};mt(Ct,{connected:()=>C5,kpt:()=>W5});var W5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],C5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var p0,YA=0,g0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},O5=Number.MAX_SAFE_INTEGER;async function KA(e){return T.initial&&(p0=null),p0?e.debug&&b("cached model:",p0.modelUrl):p0=await G(e.body.modelPath),p0}async function C2(e,t){let[o,A]=e.shape,n=K.reshape(e,[A*o]),r=K.max(n,0),s=(await r.data())[0];if(K.dispose([n,r]),s>t){let a=K.argMax(n,0),y=K.mod(a,o),c=(await y.data())[0],i=K.div(a,K.scalar(o,"int32")),l=(await i.data())[0];return K.dispose([y,i]),[c,l,s]}return[0,0,s]}async function I5(e,t){let o=(t.body.skipTime||0)>g()-YA,A=O5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(g0.keypoints).length>0?(O5++,[g0]):(O5=0,new Promise(async n=>{var l;let r=K.tidy(()=>{if(!(p0==null?void 0:p0.inputs[0].shape))return null;let x=K.image.resizeBilinear(e,[p0.inputs[0].shape[2],p0.inputs[0].shape[1]],!1),d=K.mul(x,H.tf2);return K.sub(d,H.tf1)}),s;if(t.body.enabled&&(s=p0==null?void 0:p0.execute(r)),YA=g(),K.dispose(r),s){g0.keypoints.length=0;let x=s.squeeze();K.dispose(s);let d=x.unstack(2);K.dispose(x);for(let u=0;u(((l=t.body)==null?void 0:l.minConfidence)||0)&&g0.keypoints.push({score:Math.round(100*h)/100,part:W5[u],positionRaw:[f/p0.inputs[0].shape[2],M/p0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*f/p0.inputs[0].shape[2]),Math.round(e.shape[1]*M/p0.inputs[0].shape[1])]})}d.forEach(u=>K.dispose(u))}g0.score=g0.keypoints.reduce((x,d)=>d.score>x?d.score:x,0);let a=g0.keypoints.map(x=>x.position[0]),y=g0.keypoints.map(x=>x.position[1]);g0.box=[Math.min(...a),Math.min(...y),Math.max(...a)-Math.min(...a),Math.max(...y)-Math.min(...y)];let c=g0.keypoints.map(x=>x.positionRaw[0]),i=g0.keypoints.map(x=>x.positionRaw[1]);g0.boxRaw=[Math.min(...c),Math.min(...i),Math.max(...c)-Math.min(...c),Math.max(...i)-Math.min(...i)];for(let[x,d]of Object.entries(C5)){let u=[];for(let f=0;fP.part===d[f]),h=g0.keypoints.find(P=>P.part===d[f+1]);M&&h&&M.score>(t.body.minConfidence||0)&&h.score>(t.body.minConfidence||0)&&u.push([M.position,h.position])}g0.annotations[x]=u}n([g0])}))}var B0=V(F());var O2=["angry","disgust","fear","happy","sad","surprise","neutral"],O0,Ot=[],_A=0,$A=0,N5=Number.MAX_SAFE_INTEGER;async function en(e){var t;return T.initial&&(O0=null),O0?e.debug&&b("cached model:",O0.modelUrl):O0=await G((t=e.face.emotion)==null?void 0:t.modelPath),O0}async function L5(e,t,o,A){var s,a;if(!O0)return[];let n=N5<(((s=t.face.emotion)==null?void 0:s.skipFrames)||0),r=(((a=t.face.emotion)==null?void 0:a.skipTime)||0)>g()-$A;return t.skipAllowed&&r&&n&&_A===A&&Ot[o]&&Ot[o].length>0?(N5++,Ot[o]):(N5=0,new Promise(async y=>{var i,l;let c=[];if((i=t.face.emotion)==null?void 0:i.enabled){let x={},d=(O0==null?void 0:O0.inputs[0].shape)?O0.inputs[0].shape[2]:0;x.resize=B0.image.resizeBilinear(e,[d,d],!1),x.channels=B0.mul(x.resize,H.rgb),x.grayscale=B0.sum(x.channels,3,!0),x.grayscaleSub=B0.sub(x.grayscale,H.tf05),x.grayscaleMul=B0.mul(x.grayscaleSub,H.tf2),x.emotion=O0==null?void 0:O0.execute(x.grayscaleMul),$A=g();let u=await x.emotion.data();for(let f=0;f(((l=t.face.emotion)==null?void 0:l.minConfidence)||0)&&c.push({score:Math.min(.99,Math.trunc(100*u[f])/100),emotion:O2[f]});c.sort((f,M)=>M.score-f.score),Object.keys(x).forEach(f=>B0.dispose(x[f]))}Ot[o]=c,_A=A,y(c)}))}var rn=V(F());var E0,B5=[],on=0,An=0,nn=Number.MAX_SAFE_INTEGER;async function sn(e){return T.initial&&(E0=null),E0?e.debug&&b("cached model:",E0.modelUrl):E0=await G(e.face.mobilefacenet.modelPath),E0}async function G5(e,t,o,A){var s,a;if(!E0)return[];let n=nn<(((s=t.face.embedding)==null?void 0:s.skipFrames)||0),r=(((a=t.face.embedding)==null?void 0:a.skipTime)||0)>g()-An;return t.skipAllowed&&r&&n&&on===A&&B5[o]?(nn++,B5[o]):new Promise(async y=>{var i;let c=[];if(((i=t.face.embedding)==null?void 0:i.enabled)&&(E0==null?void 0:E0.inputs[0].shape)){let l={};l.crop=rn.image.resizeBilinear(e,[E0.inputs[0].shape[2],E0.inputs[0].shape[1]],!1),l.data=E0==null?void 0:E0.execute(l.crop);let x=await l.data.data();c=Array.from(x)}B5[o]=c,on=A,An=g(),y(c)})}var He=V(F());var G0=V(F());var oe,de=0,I2=2.3,H5=L0.leftEyeLower0,F5=L0.rightEyeLower0,Le={leftBounds:[H5[0],H5[H5.length-1]],rightBounds:[F5[0],F5[F5.length-1]]},Be={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function cn(e){var t;return T.initial&&(oe=null),oe?e.debug&&b("cached model:",oe.modelUrl):oe=await G((t=e.face.iris)==null?void 0:t.modelPath),de=oe.inputs[0].shape?oe.inputs[0].shape[2]:0,de===-1&&(de=64),oe}function It(e,t,o,A){for(let n=0;n{let t=e[Le.leftBounds[0]][2],o=e[Le.rightBounds[0]][2];return t-o},ln=(e,t,o,A,n,r=!1)=>{let s=wt(Rt(wA([e[o],e[A]]),I2)),a=Oe(s),y=G0.image.cropAndResize(t,[[s.startPoint[1]/n,s.startPoint[0]/n,s.endPoint[1]/n,s.endPoint[0]/n]],[0],[de,de]);if(r&&T.kernels.includes("flipleftright")){let c=G0.image.flipLeftRight(y);G0.dispose(y),y=c}return{box:s,boxSize:a,crop:y}},yn=(e,t,o,A=!1)=>{let n=[];for(let r=0;r{let A=e[L0[`${o}EyeUpper0`][Be.upperCenter]][2],n=e[L0[`${o}EyeLower0`][Be.lowerCenter]][2],r=(A+n)/2;return t.map((s,a)=>{let y=r;return a===2?y=A:a===4&&(y=n),[s[0],s[1],y]})};async function dn(e,t,o,A){if(!oe)return o.debug&&b("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:r,crop:s}=ln(e,t,Le.leftBounds[0],Le.leftBounds[1],A,!0),{box:a,boxSize:y,crop:c}=ln(e,t,Le.rightBounds[0],Le.rightBounds[1],A,!0),i=G0.concat([s,c]);G0.dispose(s),G0.dispose(c);let l=oe.execute(i);G0.dispose(i);let x=await l.data();G0.dispose(l);let d=x.slice(0,Be.numCoordinates*3),{rawCoords:u,iris:f}=yn(d,n,r,!0),M=x.slice(Be.numCoordinates*3),{rawCoords:h,iris:P}=yn(M,a,y),m=N2(e);Math.abs(m)<30?(It(e,u,"left",null),It(e,h,"right",null)):m<1?It(e,u,"left",["EyeUpper0","EyeLower0"]):It(e,h,"right",["EyeUpper0","EyeLower0"]);let p=xn(e,f,"left"),k=xn(e,P,"right");return e.concat(p).concat(k)}var U0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},Ae=null,Ge=0;async function mn(e,t){var a,y,c,i,l,x,d,u,f;let o=(((a=t.face.detector)==null?void 0:a.skipTime)||0)>g()-U0.timestamp,A=U0.skipped<(((y=t.face.detector)==null?void 0:y.skipFrames)||0);!t.skipAllowed||!o||!A||U0.boxes.length===0?(U0.boxes=await IA(e,t),U0.timestamp=g(),U0.skipped=0):U0.skipped++;let n=[],r=[],s=0;for(let M=0;M[q[0]/(e.shape[2]||0),q[1]/(e.shape[1]||0),(q[2]||0)/Ge]);for(let q of Object.keys(L0))p.annotations[q]=L0[q].map(x0=>p.mesh[x0]);p.score=p.faceScore;let Z={...SA(p.mesh,h),confidence:h.confidence,landmarks:h.landmarks};p.box=M5(Z,e),p.boxRaw=v5(Z,e),r.push(Z)}}else{p.box=M5(h,e),p.boxRaw=v5(h,e),p.score=p.boxScore,p.mesh=h.landmarks.map(k=>[(h.startPoint[0]+h.endPoint[0])/2+(h.endPoint[0]+h.startPoint[0])*k[0]/kt(),(h.startPoint[1]+h.endPoint[1])/2+(h.endPoint[1]+h.startPoint[1])*k[1]/kt()]),p.meshRaw=p.mesh.map(k=>[k[0]/(e.shape[2]||0),k[1]/(e.shape[1]||0),(k[2]||0)/Ge]);for(let k of Object.keys(nt))p.annotations[k]=[p.mesh[nt[k]]]}p.score>(((f=t.face.detector)==null?void 0:f.minConfidence)||1)?n.push(p):He.dispose(p.tensor)}return U0.boxes=r,n}async function pn(e){var t;return T.initial&&(Ae=null),Ae?e.debug&&b("cached model:",Ae.modelUrl):Ae=await G((t=e.face.mesh)==null?void 0:t.modelPath),Ge=Ae.inputs[0].shape?Ae.inputs[0].shape[2]:0,Ae}var un=Pe,hn=rt;var H0=V(F());var z0,Nt=[],bn=0,gn=0,Z5=Number.MAX_SAFE_INTEGER;async function Pn(e){var t;return T.initial&&(z0=null),z0?e.debug&&b("cached model:",z0.modelUrl):z0=await G((t=e.face.description)==null?void 0:t.modelPath),z0}function X5(e){let t=e.image||e.tensor||e;if(!(z0==null?void 0:z0.inputs[0].shape))return t;let o=H0.image.resizeBilinear(t,[z0.inputs[0].shape[2],z0.inputs[0].shape[1]],!1),A=H0.mul(o,H.tf255);return H0.dispose(o),A}async function D5(e,t,o,A){var s,a,y,c;if(!z0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=Z5<(((s=t.face.description)==null?void 0:s.skipFrames)||0),r=(((a=t.face.description)==null?void 0:a.skipTime)||0)>g()-bn;return t.skipAllowed&&n&&r&&gn===A&&((y=Nt[o])==null?void 0:y.age)&&((c=Nt[o])==null?void 0:c.age)>0?(Z5++,Nt[o]):(Z5=0,new Promise(async i=>{var x,d;let l={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((x=t.face.description)==null?void 0:x.enabled){let u=X5(e),f=z0==null?void 0:z0.execute(u);bn=g(),H0.dispose(u);let h=await(await f.find(L=>L.shape[1]===1)).data(),P=Math.trunc(200*Math.abs(h[0]-.5))/100;P>(((d=t.face.description)==null?void 0:d.minConfidence)||0)&&(l.gender=h[0]<=.5?"female":"male",l.genderScore=Math.min(.99,P));let m=H0.argMax(f.find(L=>L.shape[1]===100),1),p=(await m.data())[0];H0.dispose(m);let C=await f.find(L=>L.shape[1]===100).data();l.age=Math.round(C[p-1]>C[p+1]?10*p-100*C[p-1]:10*p+100*C[p+1])/10;let O=f.find(L=>L.shape[1]===1024),j=O?await O.data():[];l.descriptor=Array.from(j),f.forEach(L=>H0.dispose(L))}Nt[o]=l,gn=A,i(l)}))}var B=V(F());var Tn=V(F());function Lt(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function it(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function Rn(e,t,o){let A=t.shape[1],n=t.shape[2],r=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return Tn.image.cropAndResize(t,r,[0],o)}function wn(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(r=>[r[0]*t[0],r[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function Bt(e,t=1.5){let o=it(e),A=Lt(e),n=[t*A[0]/2,t*A[1]/2],r=[o[0]-n[0],o[1]-n[1]],s=[o[0]+n[0],o[1]+n[1]];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function Gt(e){let t=it(e),o=Lt(e),n=Math.max(...o)/2,r=[t[0]-n,t[1]-n],s=[t[0]+n,t[1]+n];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function L2(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function kn(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return L2(o)}var Mn=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function fe(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=B.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=B.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=B.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=B.slice(t,[0,0],[-1,2]),o.boxSizes=B.slice(t,[0,2],[-1,2]),o.div=B.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=B.add(o.div,this.anchorsTensor),o.halfBoxSizes=B.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=B.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=B.mul(o.sub,this.inputSizeTensor),o.add=B.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=B.mul(o.add,this.inputSizeTensor);let A=B.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>B.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=B.reshape(t,[-1,7,2]),A.div=B.div(A.reshape,this.inputSizeTensor),A.landmarks=B.add(A.div,this.anchors[o]);let n=B.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(r=>B.dispose(A[r])),n}async predict(t,o){let A={};A.resize=B.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=B.div(A.resize,H.tf127),A.image=B.sub(A.div,H.tf1),A.batched=this.model.execute(A.image),A.predictions=B.squeeze(A.batched),A.slice=B.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=B.sigmoid(A.slice),A.scores=B.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=B.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await B.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let r=await A.nms.array(),s=[];for(let a of r){let y={};y.box=B.slice(A.norm,[a,0],[1,-1]),y.slice=B.slice(A.predictions,[a,5],[1,14]),y.norm=this.normalizeLandmarks(y.slice,a),y.palmLandmarks=B.reshape(y.norm,[-1,2]);let c=await y.box.data(),i=c.slice(0,2),l=c.slice(2,4),x=await y.palmLandmarks.array(),d={startPoint:i,endPoint:l,palmLandmarks:x,confidence:n[a]},u=wn(d,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);s.push(u),Object.keys(y).forEach(f=>B.dispose(y[f]))}return Object.keys(A).forEach(a=>B.dispose(A[a])),s}};var j0=V(F());var F2=5,Sn=1.65,Wn=[0,5,9,13,17,1,2],V2=0,Z2=2,Cn=0,K5=class{constructor(t,o){R(this,"handDetector");R(this,"handPoseModel");R(this,"inputSize");R(this,"storedBoxes");R(this,"skipped");R(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(s=>s[0]),A=t.map(s=>s[1]),n=[Math.min(...o),Math.min(...A)],r=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:r}}getBoxForPalmLandmarks(t,o){let A=t.map(r=>J5([...r,1],o)),n=this.calculateLandmarksBoundingBox(A);return Bt(Gt(n),F2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=Bt(Gt(o),Sn);A.palmLandmarks=[];for(let n=0;n[s[0]*(d[0]-this.inputSize/2),s[1]*(d[1]-this.inputSize/2),s[2]*d[2]]),y=U5(A,[0,0]),c=a.map(d=>[...J5(d,y),d[2]]),i=En(n),l=[...it(o),1],x=[fe(l,i[0]),fe(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2])])}async estimateHands(t,o){let A=!1,n,r=(o.hand.skipTime||0)>g()-Cn,s=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&r&&s&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let a=[];for(let y=0;y=o.hand.minConfidence/4){let k=j0.reshape(m,[-1,3]),C=await k.array();j0.dispose(m),j0.dispose(k);let O=this.transformRawCoords(C,f,i,u),j=this.getBoxForHandLandmarks(O);this.storedBoxes[y]={...j,confidence:p};let L={landmarks:O,confidence:p,boxConfidence:c.confidence,fingerConfidence:p,box:{topLeft:j.startPoint,bottomRight:j.endPoint}};a.push(L)}else this.storedBoxes[y]=null;j0.dispose(m)}else{let i=Bt(Gt(c),Sn),l={confidence:c.confidence,boxConfidence:c.confidence,fingerConfidence:0,box:{topLeft:i.startPoint,bottomRight:i.endPoint},landmarks:[]};a.push(l)}}return this.storedBoxes=this.storedBoxes.filter(y=>y!==null),this.detectedHands=a.length,a.length>o.hand.maxDetected&&(a.length=o.hand.maxDetected),a}};var P0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>P0.nameMapping[e],getPoints:e=>P0.pointsMapping[e]},me={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>me.nameMapping[e]},e0={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>e0.nameMapping[e]},Te=class{constructor(t){R(this,"name");R(this,"curls");R(this,"directions");R(this,"weights");R(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,r)=>n+r,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let r=t[n],s=this.curls[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}for(let n in o){let r=o[n],s=this.directions[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}return A/10}};var{thumb:F0,index:ne,middle:re,ring:Re,pinky:we}=P0,{none:V0,half:D2,full:Z0}=me,{verticalUp:Fe,verticalDown:_a,horizontalLeft:Q5,horizontalRight:q2,diagonalUpRight:U2,diagonalUpLeft:Ve,diagonalDownRight:$a,diagonalDownLeft:e1}=e0,pe=new Te("thumbs up");pe.curl(F0,V0,1);pe.direction(F0,Fe,1);pe.direction(F0,Ve,.25);pe.direction(F0,U2,.25);for(let e of[P0.index,P0.middle,P0.ring,P0.pinky])pe.curl(e,Z0,1),pe.direction(e,Q5,1),pe.direction(e,q2,1);var r0=new Te("victory");r0.curl(F0,D2,.5);r0.curl(F0,V0,.5);r0.direction(F0,Fe,1);r0.direction(F0,Ve,1);r0.curl(ne,V0,1);r0.direction(ne,Fe,.75);r0.direction(ne,Ve,1);r0.curl(re,V0,1);r0.direction(re,Fe,1);r0.direction(re,Ve,.75);r0.curl(Re,Z0,1);r0.direction(Re,Fe,.2);r0.direction(Re,Ve,1);r0.direction(Re,Q5,.2);r0.curl(we,Z0,1);r0.direction(we,Fe,.2);r0.direction(we,Ve,1);r0.direction(we,Q5,.2);r0.weight(ne,2);r0.weight(re,2);var ue=new Te("point");ue.curl(F0,Z0,1);ue.curl(ne,V0,.5);ue.curl(re,Z0,.5);ue.curl(Re,Z0,.5);ue.curl(we,Z0,.5);ue.weight(ne,2);ue.weight(re,2);var he=new Te("middle finger");he.curl(F0,V0,1);he.curl(ne,Z0,.5);he.curl(re,Z0,.5);he.curl(Re,Z0,.5);he.curl(we,Z0,.5);he.weight(ne,2);he.weight(re,2);var Ze=new Te("open palm");Ze.curl(F0,V0,.75);Ze.curl(ne,V0,.75);Ze.curl(re,V0,.75);Ze.curl(Re,V0,.75);Ze.curl(we,V0,.75);var On=[pe,r0,ue,he,Ze];var J2=.7,ke={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function In(e,t,o,A){let n=(t-A)/(e-o),r=Math.atan(n)*180/Math.PI;return r<=0?r=-r:r>0&&(r=180-r),r}function Ln(e,t){if(!e||!t)return[0,0];let o=In(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=In(e[1],e[2],t[1],t[2]);return[o,A]}function Nn(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function Y2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],r=t[0]-o[0],s=e[1]-t[1],a=e[1]-o[1],y=t[1]-o[1],c=e[2]-t[2],i=e[2]-o[2],l=t[2]-o[2],x=Math.sqrt(A*A+s*s+c*c),d=Math.sqrt(n*n+a*a+i*i),u=Math.sqrt(r*r+y*y+l*l),f=(u*u+x*x-d*d)/(2*u*x);f>1?f=1:f<-1&&(f=-1);let M=Math.acos(f);M=57.2958*M%180;let h;return M>ke.NO_CURL_START_LIMIT?h=me.none:M>ke.HALF_CURL_START_LIMIT?h=me.half:h=me.full,h}function Bn(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=e0.horizontalLeft:n=e0.horizontalRight:A===Math.abs(t)?t>0?n=e0.horizontalLeft:n=e0.horizontalRight:o>0?n=e0.horizontalLeft:n=e0.horizontalRight,n}function Gn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=e0.verticalDown:n=e0.verticalUp:A===Math.abs(t)?t<0?n=e0.verticalDown:n=e0.verticalUp:o<0?n=e0.verticalDown:n=e0.verticalUp,n}function K2(e,t,o,A,n,r,s,a){let y,c=Gn(e,t,o,A),i=Bn(n,r,s,a);return c===e0.verticalUp?i===e0.horizontalLeft?y=e0.diagonalUpLeft:y=e0.diagonalUpRight:i===e0.horizontalLeft?y=e0.diagonalDownLeft:y=e0.diagonalDownRight,y}function Q2(e,t,o,A){let n=e[0]-t[0],r=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],y=e[1]-o[1],c=t[1]-o[1],i=Math.max(Math.abs(n),Math.abs(r),Math.abs(s)),l=Math.max(Math.abs(a),Math.abs(y),Math.abs(c)),x=0,d=0,u=0,f=l/(i+1e-5);f>1.5?x+=ke.DISTANCE_VOTE_POWER:f>.66?d+=ke.DISTANCE_VOTE_POWER:u+=ke.DISTANCE_VOTE_POWER;let M=Math.sqrt(n*n+a*a),h=Math.sqrt(r*r+y*y),P=Math.sqrt(s*s+c*c),m=Math.max(M,h,P),p=e[0],k=e[1],C=o[0],O=o[1];m===M?(C=o[0],O=o[1]):m===P&&(p=t[0],k=t[1]);let J=Ln([p,k],[C,O]),Z=Nn(J,ke.TOTAL_ANGLE_VOTE_POWER);x+=Z[0],d+=Z[1],u+=Z[2];for(let x0 of A){let E=Nn(x0,ke.SINGLE_ANGLE_VOTE_POWER);x+=E[0],d+=E[1],u+=E[2]}let q;return x===Math.max(x,d,u)?q=Gn(y,a,c,l):u===Math.max(d,u)?q=Bn(r,n,s,i):q=K2(y,a,c,l,r,n,s,i),q}function Hn(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let r of P0.all){let s=P0.getPoints(r),a=[],y=[];for(let c of s){let i=e[c[0]],l=e[c[1]],x=Ln(i,l),d=x[0],u=x[1];a.push(d),y.push(u)}t.push(a),o.push(y)}for(let r of P0.all){let s=r===P0.thumb?1:0,a=P0.getPoints(r),y=e[a[s][0]],c=e[a[s+1][1]],i=e[a[3][1]],l=Y2(y,c,i),x=Q2(y,c,i,t[r].slice(s));A[r]=l,n[r]=x}return{curls:A,directions:n}}function Ht(e){if(!e||e.length===0)return null;let t=Hn(e),o={};for(let A of P0.all)o[P0.getName(A)]={curl:me.getName(t.curls[A]),direction:e0.getName(t.directions[A])};return o}function Fn(e){let t=[];if(!e||e.length===0)return t;let o=Hn(e);for(let A of On){let n=A.matchAgainst(o.curls,o.directions);n>=J2&&t.push({name:A.name,confidence:n})}return t}var Vn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Xe,De,Zn;async function $5(e,t){let o=await Zn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[l]);let s=o[n].landmarks,a=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],y=[0,0,0,0];if(s&&s.length>0){for(let i of s)i[0]a[2]&&(a[2]=i[0]),i[1]>a[3]&&(a[3]=i[1]);a[2]-=a[0],a[3]-=a[1],y=[a[0]/(e.shape[2]||0),a[1]/(e.shape[1]||0),a[2]/(e.shape[2]||0),a[3]/(e.shape[1]||0)]}else a=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],y=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let c=Ht(s);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:a,boxRaw:y,keypoints:s,annotations:r,landmarks:c})}return A}async function eo(e){var o,A;T.initial&&(Xe=null,De=null),!Xe||!De?[Xe,De]=await Promise.all([e.hand.enabled?G((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?G((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&b("cached model:",Xe.modelUrl),e.debug&&b("cached model:",De.modelUrl));let t=new Y5(Xe);return Zn=new K5(t,De),[Xe,De]}var Y=V(F());var l0=[null,null],_2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],be=[[0,0],[0,0]],$2=["hand","fist","pinch","point","face","tip","pinchtip"],Dn=4,qn=1.6,es=512,ts=1.4,Ft=Number.MAX_SAFE_INTEGER,to=0,se=[0,0],o0={boxes:[],hands:[]},Un={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function Jn(e){var t;if(T.initial&&(l0[0]=null),l0[0])e.debug&&b("cached model:",l0[0].modelUrl);else{Vt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),l0[0]=await G((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values(l0[0].modelSignature.inputs);be[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[0]}async function Yn(e){var t;if(T.initial&&(l0[1]=null),l0[1])e.debug&&b("cached model:",l0[1].modelUrl);else{l0[1]=await G((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values(l0[1].modelSignature.inputs);be[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[1]}async function os(e,t){let o=[];if(!e||!l0[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),r=Math.min(Math.round((e.shape[1]||0)/8)*8,es),s=Math.round(r*n/8)*8;A.resize=Y.image.resizeBilinear(e,[r,s]),A.cast=Y.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await l0[0].executeAsync(A.cast,_2),A.boxes=Y.squeeze(A.rawBoxes,[0,2]),A.scores=Y.squeeze(A.rawScores,[0]);let a=Y.unstack(A.scores,1);Y.dispose(a[Dn]),a.splice(Dn,1),A.filtered=Y.stack(a,1),Y.dispose(a),A.max=Y.max(A.filtered,1),A.argmax=Y.argMax(A.filtered,1);let y=0;A.nms=await Y.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let c=await A.nms.data(),i=await A.max.data(),l=await A.argmax.data();for(let x of Array.from(c)){let d=Y.slice(A.boxes,x,1),u=await d.data();Y.dispose(d);let f=[u[1],u[0],u[3]-u[1],u[2]-u[0]],M=jt(f,ts),h=[Math.trunc(f[0]*se[0]),Math.trunc(f[1]*se[1]),Math.trunc(f[2]*se[0]),Math.trunc(f[3]*se[1])],P=i[x],m=$2[l[x]],p={id:y++,score:P,box:h,boxRaw:M,label:m};o.push(p)}return Object.keys(A).forEach(x=>Y.dispose(A[x])),o.sort((x,d)=>d.score-x.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function oo(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&l0[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},r=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Y.image.cropAndResize(e,[r],[0],[be[1][0],be[1][1]],"bilinear"),n.div=Y.div(n.crop,H.tf255),[n.score,n.keypoints]=l0[1].execute(n.div,["Identity_1","Identity"]);let s=(await n.score.data())[0],a=(100-Math.trunc(100/(1+Math.exp(s))))/100;if(a>=(o.hand.minConfidence||0)){A.fingerScore=a,n.reshaped=Y.reshape(n.keypoints,[-1,3]);let i=(await n.reshaped.array()).map(l=>[l[0]/be[1][1],l[1]/be[1][0],l[2]||0]).map(l=>[l[0]*t.boxRaw[2],l[1]*t.boxRaw[3],l[2]||0]);A.keypoints=i.map(l=>[se[0]*(l[0]+t.boxRaw[0]),se[1]*(l[1]+t.boxRaw[1]),l[2]||0]),A.landmarks=Ht(A.keypoints);for(let l of Object.keys(Un))A.annotations[l]=Un[l].map(x=>A.landmarks&&A.keypoints[x]?A.keypoints[x]:null)}Object.keys(n).forEach(y=>Y.dispose(n[y]))}return A}async function Ao(e,t){var n,r;if(!l0[0]||!l0[1]||!((n=l0[0])==null?void 0:n.inputs[0].shape)||!((r=l0[1])==null?void 0:r.inputs[0].shape))return[];se=[e.shape[2]||0,e.shape[1]||0],Ft++;let o=(t.hand.skipTime||0)>g()-to,A=Ft<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?o0.hands:new Promise(async s=>{let a=3*(t.hand.skipTime||0)>g()-to,y=Ft<3*(t.hand.skipFrames||0);t.skipAllowed&&o0.hands.length===t.hand.maxDetected?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):t.skipAllowed&&a&&y&&o0.hands.length>0?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):(o0.boxes=await os(e,t),to=g(),o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))),Ft=0);let c=[...o0.boxes];if(o0.boxes.length=0,t.cacheSensitivity>0)for(let i=0;i.05&&l.box[3]/(e.shape[1]||1)>.05&&o0.hands[i].fingerScore&&o0.hands[i].fingerScore>(t.hand.minConfidence||0)){let x=jt(l.box,qn),d=jt(l.boxRaw,qn);o0.boxes.push({...c[i],box:x,boxRaw:d})}}for(let i=0;ig()-_n,r=no<(((a=t.face.liveness)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&Qn===A&&Zt[o]?(no++,Zt[o]):(no=0,new Promise(async y=>{let c=Xt.image.resizeBilinear(e,[(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[2]:0,(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[1]:0],!1),i=u0==null?void 0:u0.execute(c),l=(await i.data())[0];Zt[o]=Math.round(100*l)/100,Qn=A,_n=g(),Xt.dispose([c,i]),y(Zt[o])}))}var rr=V(F());var lt={};mt(lt,{connected:()=>qt,horizontal:()=>so,kpt:()=>Dt,relative:()=>io,vertical:()=>ao});var Dt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],so=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],ao=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],io=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],qt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var ge=V(F()),tr=.005,S0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function lo(e){for(let t of so){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]c&&c.part===t[0]),n=e.keypoints.findIndex(c=>c&&c.part===t[1]),r=e.keypoints.findIndex(c=>c&&c.part===o[0]),s=e.keypoints.findIndex(c=>c&&c.part===o[1]);if(!e.keypoints[r]||!e.keypoints[s])continue;let a=e.keypoints[A]?[Math.abs(e.keypoints[r].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0])]:[0,0],y=e.keypoints[n]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[r].position[0]-e.keypoints[n].position[0])]:[0,0];if(a[0]>a[1]||y[0]>y[1]){let c=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=c}}}function or(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=ge.pad(e,S0.padding),o.resize=ge.image.resizeBilinear(o.pad,[t,t]);let A=ge.cast(o.resize,"int32");return Object.keys(o).forEach(n=>ge.dispose(o[n])),A}function nr(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+S0.padding[2][0]+S0.padding[2][1])/t[0]-S0.padding[2][0],A.position[1]*(t[1]+S0.padding[1][0]+S0.padding[1][1])/t[1]-S0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=ee(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var W0,Ut=0,yo=Number.MAX_SAFE_INTEGER,Ee={boxes:[],bodies:[],last:0};async function sr(e){return T.initial&&(W0=null),W0?e.debug&&b("cached model:",W0.modelUrl):(Vt(["size"],e),W0=await G(e.body.modelPath)),Ut=W0.inputs[0].shape?W0.inputs[0].shape[2]:0,Ut<64&&(Ut=256),W0}async function ns(e,t,o){let A=e[0][0],n=[],r=0;for(let i=0;it.body.minConfidence){let l=[A[i][1],A[i][0]];n.push({score:Math.round(100*r)/100,part:Dt[i],positionRaw:l,position:[Math.round((o.shape[2]||0)*l[0]),Math.round((o.shape[1]||0)*l[1])]})}r=n.reduce((i,l)=>l.score>i?l.score:i,0);let s=[],a=ee(n.map(i=>i.position),[o.shape[2],o.shape[1]]),y={};for(let[i,l]of Object.entries(qt)){let x=[];for(let d=0;dM.part===l[d]),f=n.find(M=>M.part===l[d+1]);u&&f&&u.score>(t.body.minConfidence||0)&&f.score>(t.body.minConfidence||0)&&x.push([u.position,f.position])}y[i]=x}let c={id:0,score:r,box:a.box,boxRaw:a.boxRaw,keypoints:n,annotations:y};return lo(c),s.push(c),s}async function rs(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let a=[];for(let l=0;l<17;l++){let x=r[3*l+2];if(x>t.body.minConfidence){let d=[r[3*l+1],r[3*l+0]];a.push({part:Dt[l],score:Math.round(100*x)/100,positionRaw:d,position:[Math.round((o.shape[2]||0)*d[0]),Math.round((o.shape[1]||0)*d[1])]})}}let y=ee(a.map(l=>l.position),[o.shape[2],o.shape[1]]),c={};for(let[l,x]of Object.entries(qt)){let d=[];for(let u=0;uh.part===x[u]),M=a.find(h=>h.part===x[u+1]);f&&M&&f.score>(t.body.minConfidence||0)&&M.score>(t.body.minConfidence||0)&&d.push([f.position,M.position])}c[l]=d}let i={id:n,score:s,box:y.box,boxRaw:y.boxRaw,keypoints:[...a],annotations:c};lo(i),A.push(i)}}return A.sort((n,r)=>r.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function xo(e,t){if(!W0||!(W0==null?void 0:W0.inputs[0].shape))return[];t.skipAllowed||(Ee.boxes.length=0),yo++;let o=(t.body.skipTime||0)>g()-Ee.last,A=yo<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ee.bodies:new Promise(async n=>{let r={};yo=0,r.input=Ar(e,Ut),r.res=W0==null?void 0:W0.execute(r.input),Ee.last=g();let s=await r.res.array();Ee.bodies=r.res.shape[2]===17?await ns(s,t,e):await rs(s,t,e);for(let a of Ee.bodies)nr(a,[e.shape[2]||1,e.shape[1]||1]),or(a.keypoints);Object.keys(r).forEach(a=>rr.dispose(r[a])),n(Ee.bodies)})}var M0=V(F());var qe,Jt=[],ir=0,co=Number.MAX_SAFE_INTEGER,Kt=0,Yt=2.5;async function lr(e){if(!qe||T.initial){qe=await G(e.object.modelPath);let t=Object.values(qe.modelSignature.inputs);Kt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&b("cached model:",qe.modelUrl);return qe}async function ss(e,t,o){let A=0,n=[];for(let y of[1,2,4])M0.tidy(async()=>{let c=y*13,i=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)===Ne.length)),l=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)(o.object.minConfidence||0)&&M!==61){let P=(.5+Math.trunc(f%c))/c,m=(.5+Math.trunc(f/c))/c,p=d[f].map(q=>q*(c/y/Kt)),[k,C]=[P-Yt/y*p[0],m-Yt/y*p[1]],[O,j]=[P+Yt/y*p[2]-k,m+Yt/y*p[3]-C],L=[k,C,O,j];L=L.map(q=>Math.max(0,Math.min(q,1)));let J=[L[0]*t[0],L[1]*t[1],L[2]*t[0],L[3]*t[1]],Z={id:A++,score:Math.round(100*h)/100,class:M+1,label:Ne[M].label,box:J.map(q=>Math.trunc(q)),boxRaw:L};n.push(Z)}}});e.forEach(y=>M0.dispose(y));let r=n.map(y=>[y.boxRaw[1],y.boxRaw[0],y.boxRaw[3],y.boxRaw[2]]),s=n.map(y=>y.score),a=[];if(r&&r.length>0){let y=await M0.image.nonMaxSuppressionAsync(r,s,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);a=await y.data(),M0.dispose(y)}return n=n.filter((y,c)=>a.includes(c)).sort((y,c)=>c.score-y.score),n}async function fo(e,t){let o=(t.object.skipTime||0)>g()-ir,A=co<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&Jt.length>0?(co++,Jt):(co=0,!T.kernels.includes("mod")||!T.kernels.includes("sparsetodense")?Jt:new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=M0.image.resizeBilinear(e,[Kt,Kt],!1),a=M0.div(s,H.tf255),y=a.transpose([0,3,1,2]);M0.dispose(a),M0.dispose(s);let c;t.object.enabled&&(c=qe.execute(y)),ir=g(),M0.dispose(y);let i=await ss(c,r,t);Jt=i,n(i)}))}var v0=V(F());var xt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],as=xt.length,yt=xt.reduce((e,t,o)=>(e[t]=o,e),{}),is=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],T1=is.map(([e,t])=>[yt[e],yt[t]]),xr=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function cr(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:r},{position:{x:s,y:a}})=>({maxX:Math.max(o,s),maxY:Math.max(A,a),minX:Math.min(n,s),minY:Math.min(r,a)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function dr(e,[t,o],[A,n]){let r=t/A,s=o/n,a=(c,i)=>({id:i,score:c.score,boxRaw:[c.box[0]/n,c.box[1]/A,c.box[2]/n,c.box[3]/A],box:[Math.trunc(c.box[0]*s),Math.trunc(c.box[1]*r),Math.trunc(c.box[2]*s),Math.trunc(c.box[3]*r)],keypoints:c.keypoints.map(({score:l,part:x,position:d})=>({score:l,part:x,position:[Math.trunc(d.x*s),Math.trunc(d.y*r)],positionRaw:[d.x/A,d.y/A]})),annotations:{}});return e.map((c,i)=>a(c,i))}var mo=class{constructor(t,o){R(this,"priorityQueue");R(this,"numberOfElements");R(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function fr(e,t,o,A){let n=o-e,r=A-t;return n*n+r*r}function bo(e,t){return{x:e.x+t.x,y:e.y+t.y}}var X0,ys=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Qt=1,Ue=16,xs=50**2;function mr(e,t,o,A,n,r,s=2){let a=h=>({y:r.get(h.y,h.x,e),x:r.get(h.y,h.x,r.shape[2]/2+e)}),y=(h,P,m)=>({y:ho(Math.round(h.y/Ue),0,P-1),x:ho(Math.round(h.x/Ue),0,m-1)}),[c,i]=A.shape,l=y(t.position,c,i),x=a(l),u=bo(t.position,x);for(let h=0;h[yt[x],yt[d]]),s=r.map(([,x])=>x),a=r.map(([x])=>x),y=t.shape[2],c=s.length,i=new Array(y),l=uo(e.part,Ue,o);i[e.part.id]={score:e.score,part:xt[e.part.id],position:l};for(let x=c-1;x>=0;--x){let d=s[x],u=a[x];i[d]&&!i[u]&&(i[u]=mr(x,i[d],u,t,o,n))}for(let x=0;xt){a=!1;break}if(!a)break}return a}function fs(e,t){let[o,A,n]=t.shape,r=new mo(o*A*n,({score:s})=>s);for(let s=0;s{var s;let r=(s=n[A])==null?void 0:s.position;return r?fr(o,t,r.y,r.x)<=xs:!1})}function ms(e,t){return t.reduce((A,{position:n,score:r},s)=>(pr(e,n,s)||(A+=r),A),0)/t.length}function ps(e,t,o,A,n,r){let s=[],a=fs(r,t);for(;s.lengthd.score>r);let l=ms(s,i),x=cr(i);l>r&&s.push({keypoints:i,box:x,score:Math.round(100*l)/100})}return s}async function go(e,t){let o=v0.tidy(()=>{if(!X0.inputs[0].shape)return[];let s=v0.image.resizeBilinear(e,[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]),a=v0.sub(v0.div(v0.cast(s,"float32"),127.5),1),c=X0.execute(a,ys).map(i=>v0.squeeze(i,[0]));return c[1]=v0.sigmoid(c[1]),c}),A=await Promise.all(o.map(s=>s.buffer()));for(let s of o)v0.dispose(s);let n=await ps(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return X0.inputs[0].shape?dr(n,[e.shape[1],e.shape[2]],[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]):[]}async function ur(e){return!X0||T.initial?X0=await G(e.body.modelPath):e.debug&&b("cached model:",X0.modelUrl),X0}var t0=V(F());var J0,Po=!1;async function Mo(e){return!J0||T.initial?J0=await G(e.segmentation.modelPath):e.debug&&b("cached model:",J0.modelUrl),J0}async function br(e,t,o){var f,M;if(Po)return{data:[],canvas:null,alpha:null};Po=!0,J0||await Mo(o);let A=await We(e,o),n=((f=A.tensor)==null?void 0:f.shape[2])||0,r=((M=A.tensor)==null?void 0:M.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let s={};s.resize=t0.image.resizeBilinear(A.tensor,[J0.inputs[0].shape?J0.inputs[0].shape[1]:0,J0.inputs[0].shape?J0.inputs[0].shape[2]:0],!1),t0.dispose(A.tensor),s.norm=t0.div(s.resize,H.tf255),s.res=J0.execute(s.norm),s.squeeze=t0.squeeze(s.res,0),s.squeeze.shape[2]===2?(s.softmax=t0.softmax(s.squeeze),[s.bg,s.fg]=t0.unstack(s.softmax,2),s.expand=t0.expandDims(s.fg,2),s.pad=t0.expandDims(s.expand,0),s.crop=t0.image.cropAndResize(s.pad,[[0,0,.5,.5]],[0],[n,r]),s.data=t0.squeeze(s.crop,0)):s.data=t0.image.resizeBilinear(s.squeeze,[r,n]);let a=Array.from(await s.data.data());if(T.node&&!T.Canvas&&typeof ImageData=="undefined")return o.debug&&b("canvas support missing"),Object.keys(s).forEach(h=>t0.dispose(s[h])),{data:a,canvas:null,alpha:null};let y=h0(n,r);t0.browser&&await t0.browser.toPixels(s.data,y);let c=y.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`);let i=c.getImageData(0,0,n,r),l=h0(n,r),x=l.getContext("2d");A.canvas&&x.drawImage(A.canvas,0,0),x.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(x.filter=`blur(${o.segmentation.blur}px)`),x.drawImage(y,0,0),x.globalCompositeOperation="source-over",x.filter="none";let d=x.getImageData(0,0,n,r);for(let h=0;ht0.dispose(s[h])),Po=!1,{data:a,canvas:l,alpha:y}}var vo=class{constructor(){R(this,"ssrnetage",null);R(this,"gear",null);R(this,"blazeposedetect",null);R(this,"blazepose",null);R(this,"centernet",null);R(this,"efficientpose",null);R(this,"mobilefacenet",null);R(this,"emotion",null);R(this,"facedetect",null);R(this,"faceiris",null);R(this,"facemesh",null);R(this,"faceres",null);R(this,"ssrnetgender",null);R(this,"handpose",null);R(this,"handskeleton",null);R(this,"handtrack",null);R(this,"liveness",null);R(this,"movenet",null);R(this,"nanodet",null);R(this,"posenet",null);R(this,"segmentation",null);R(this,"antispoof",null)}};function To(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Pr(e){var t,o,A,n,r,s,a,y,c,i,l,x,d,u,f,M,h,P,m,p,k,C,O,j,L,J,Z,q,x0,E;T.initial&&To(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config))),e.config.body.enabled&&!e.models.blazepose&&((s=(r=e.config.body)==null?void 0:r.modelPath)==null?void 0:s.includes("blazepose"))&&(e.models.blazepose=XA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=ZA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((y=(a=e.config.body)==null?void 0:a.modelPath)==null?void 0:y.includes("efficientpose"))&&(e.models.efficientpose=KA(e.config)),e.config.body.enabled&&!e.models.movenet&&((i=(c=e.config.body)==null?void 0:c.modelPath)==null?void 0:i.includes("movenet"))&&(e.models.movenet=sr(e.config)),e.config.body.enabled&&!e.models.posenet&&((x=(l=e.config.body)==null?void 0:l.modelPath)==null?void 0:x.includes("posenet"))&&(e.models.posenet=ur(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=OA(e.config)),e.config.face.enabled&&((d=e.config.face.antispoof)==null?void 0:d.enabled)&&!e.models.antispoof&&(e.models.antispoof=PA(e.config)),e.config.face.enabled&&((u=e.config.face.liveness)==null?void 0:u.enabled)&&!e.models.liveness&&(e.models.liveness=$n(e.config)),e.config.face.enabled&&((f=e.config.face.description)==null?void 0:f.enabled)&&!e.models.faceres&&(e.models.faceres=Pn(e.config)),e.config.face.enabled&&((M=e.config.face.emotion)==null?void 0:M.enabled)&&!e.models.emotion&&(e.models.emotion=en(e.config)),e.config.face.enabled&&((h=e.config.face.iris)==null?void 0:h.enabled)&&!e.models.faceiris&&(e.models.faceiris=cn(e.config)),e.config.face.enabled&&((P=e.config.face.mesh)==null?void 0:P.enabled)&&!e.models.facemesh&&(e.models.facemesh=pn(e.config)),e.config.face.enabled&&((m=e.config.face.gear)==null?void 0:m.enabled)&&!e.models.gear&&(e.models.gear=iA(e.config)),e.config.face.enabled&&((p=e.config.face.ssrnet)==null?void 0:p.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=dA(e.config)),e.config.face.enabled&&((k=e.config.face.ssrnet)==null?void 0:k.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=uA(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=sn(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((j=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:j.includes("handtrack"))&&(e.models.handtrack=Jn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((J=(L=e.config.hand.detector)==null?void 0:L.modelPath)==null?void 0:J.includes("handtrack"))&&(e.models.handskeleton=Yn(e.config)),e.config.object.enabled&&!e.models.centernet&&((q=(Z=e.config.object)==null?void 0:Z.modelPath)==null?void 0:q.includes("centernet"))&&(e.models.centernet=UA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((E=(x0=e.config.object)==null?void 0:x0.modelPath)==null?void 0:E.includes("nanodet"))&&(e.models.nanodet=lr(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=Mo(e.config));for await(let C0 of Object.keys(e.models))e.models[C0]&&typeof e.models[C0]!="undefined"&&(e.models[C0]=await e.models[C0])}async function Mr(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],r=A==null?void 0:A.executor;if(r&&r.graph.nodes)for(let a of Object.values(r.graph.nodes)){let y=a.op.toLowerCase();n.includes(y)||n.push(y)}else!r&&e.config.debug&&b("model signature not determined:",o);let s=[];for(let a of n)!t.includes(a)&&!e.env.kernels.includes(a)&&!e.env.kernels.includes(a.replace("_",""))&&!e.env.kernels.includes(a.replace("native",""))&&!e.env.kernels.includes(a.replace("v2",""))&&s.push(a);e.config.debug&&s.length>0&&b("model validation failed:",o,s)}}var $={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function us(){let e=$.gl;!e||($.extensions=e.getSupportedExtensions())}async function Tr(e){var t;if(e.config.backend==="humangl"&&($.name in s0.engine().registry&&(!$.gl||!$.gl.getParameter($.gl.VERSION))&&(b("error: humangl backend invalid context"),To(e)),!s0.findBackend($.name))){try{$.canvas=await h0(100,100)}catch(A){b("error: cannot create canvas:",A);return}try{if($.gl=(t=$.canvas)==null?void 0:t.getContext("webgl2",$.webGLattr),!$.gl.getParameter($.gl.VERSION).includes("2.0")){b("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}$.canvas&&($.canvas.addEventListener("webglcontextlost",async n=>{throw b("error: humangl:",n.type),b("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),$.canvas.addEventListener("webglcontextrestored",n=>{b("error: humangl context restored:",n)}),$.canvas.addEventListener("webglcontextcreationerror",n=>{b("error: humangl context create:",n)}))}catch(A){b("error: cannot get WebGL context:",A);return}try{s0.setWebGLContext(2,$.gl)}catch(A){b("error: cannot set WebGL context:",A);return}try{let A=new s0.GPGPUContext($.gl);s0.registerBackend($.name,()=>new s0.MathBackendWebGL(A),$.priority)}catch(A){b("error: cannot register WebGL backend:",A);return}try{s0.getKernelsForBackend("webgl").forEach(n=>{let r={...n,backendName:$.name};s0.registerKernel(r)})}catch(A){b("error: cannot update WebGL backend registration:",A);return}let o=s0.backend().getGPGPUContext?s0.backend().getGPGPUContext().gl:null;if(o)b(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{b("error: no current gl context:",o,$.gl);return}try{s0.ENV.set("WEBGL_VERSION",2)}catch(A){b("error: cannot set WebGL backend flags:",A);return}us(),b("backend registered:",$.name)}}var S=V(F());function hs(){if(!T.kernels.includes("mod")){let e={kernelName:"Mod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.sub(t.inputs.a,S.mul(S.div(t.inputs.a,t.inputs.b),t.inputs.b)))};S.registerKernel(e),T.kernels.push("mod")}if(!T.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+S.mod(t.inputs.a,t.inputs.b))};S.registerKernel(e),T.kernels.push("floormod")}}async function _t(e,t=!1){if(e.state="backend",t||T.initial||e.config.backend&&e.config.backend.length>0&&S.getBackend()!==e.config.backend){let o=g();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&b("running inside web worker"),T.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&b("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),T.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&b(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),T.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")b("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&b("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Tr(e);let A=Object.keys(S.engine().registryFactory);if(e.config.debug&&b("available backends:",A),A.includes(e.config.backend)||(b(`error: backend ${e.config.backend} not found in registry`),e.config.backend=T.node?"tensorflow":"webgl",e.config.debug&&b(`override: setting backend ${e.config.backend}`)),e.config.debug&&b("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&b("wasm path:",e.config.wasmPath),typeof(S==null?void 0:S.setWasmPaths)!="undefined")await S.setWasmPaths(e.config.wasmPath);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await S.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await S.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&b(`wasm execution: ${n?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&b("warning: wasm simd support is not enabled")}try{await S.setBackend(e.config.backend),await S.ready(),yA()}catch(n){return b("error: cannot set backend:",e.config.backend,n),!1}}if(S.getBackend()==="humangl"&&(S.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),S.ENV.set("WEBGL_CPU_FORWARD",!0),S.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),S.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(b("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),S.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),S.backend().getGPGPUContext)){let A=await S.backend().getGPGPUContext().gl;e.config.debug&&b(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}S.getBackend()==="webgpu",S.enableProdMode(),await S.ready(),e.performance.initBackend=Math.trunc(g()-o),e.config.backend=S.getBackend(),await T.updateBackend(),hs()}return!0}function Vt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&b("kernelFunc",o,t.backend)}};S.registerKernel(A)}T.kernels=S.getKernelsForBackend(S.getBackend()).map(o=>o.kernelName.toLowerCase())}var ae={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},Ro=0,ze=e=>{if(!e)b("draw error: invalid canvas");else if(!e.getContext)b("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)b("draw error: cannot get canvas context");else return t}return null},Je=e=>Math.round(e*180/Math.PI);function wo(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function ct(e,t,o,A,n,r){if(e.beginPath(),e.lineWidth=r.lineWidth,r.useCurves){let s=(t+t+A)/2,a=(o+o+n)/2;e.ellipse(s,a,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+r.roundRect,o),e.lineTo(t+A-r.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+r.roundRect),e.lineTo(t+A,o+n-r.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-r.roundRect,o+n),e.lineTo(t+r.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-r.roundRect),e.lineTo(t,o+r.roundRect),e.quadraticCurveTo(t,o,t+r.roundRect,o),e.closePath();e.stroke()}function kr(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function gs(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){kr(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&y[1].length>0){let c=a[1]>0?`#${a[1]}`:"",i=`${a[0]} ${c}: ${y[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(i,8,2+r*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(i,6,0+r*A.lineHeight),r+=1}}}}async function Eo(e,t,o){var r,s,a,y,c;let A=c0(ae,o);if(!t||!e)return;let n=ze(e);if(!!n)for(let i of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&ct(n,i.box[0],i.box[1],i.box[2],i.box[3],A),A.drawLabels){let l=[];if(l.push(`face: ${Math.trunc(100*i.score)}%`),i.genderScore&&l.push(`${i.gender||""} ${Math.trunc(100*i.genderScore)}%`),i.age&&l.push(`age: ${i.age||""}`),i.iris&&l.push(`distance: ${i.iris}`),i.real&&l.push(`real: ${Math.trunc(100*i.real)}%`),i.live&&l.push(`live: ${Math.trunc(100*i.live)}%`),i.emotion&&i.emotion.length>0){let x=i.emotion.map(d=>`${Math.trunc(100*d.score)}% ${d.emotion}`);x.length>3&&(x.length=3),l.push(x.join(" "))}i.rotation&&i.rotation.angle&&i.rotation.gaze&&(i.rotation.angle.roll&&l.push(`roll: ${Je(i.rotation.angle.roll)}\xB0 yaw:${Je(i.rotation.angle.yaw)}\xB0 pitch:${Je(i.rotation.angle.pitch)}\xB0`),i.rotation.gaze.bearing&&l.push(`gaze: ${Je(i.rotation.gaze.bearing)}\xB0`)),l.length===0&&l.push("face"),n.fillStyle=A.color;for(let x=l.length-1;x>=0;x--){let d=Math.max(i.box[0],0),u=x*A.lineHeight+i.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l[x],d+5,u+16)),n.fillStyle=A.labelColor,n.fillText(l[x],d+4,u+15)}}if(n.lineWidth=2,i.mesh&&i.mesh.length>0){if(A.drawPoints)for(let l of i.mesh)wo(n,l[0],l[1],l[2],A);if(A.drawPolygons){if(i.mesh.length>450)for(let l=0;li.mesh[d]);kr(n,x,A)}if(i.annotations&&i.annotations.leftEyeIris&&i.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.leftEyeIris[3][0]-i.annotations.leftEyeIris[1][0])/2,x=Math.abs(i.annotations.leftEyeIris[4][1]-i.annotations.leftEyeIris[2][1])/2;n.ellipse(i.annotations.leftEyeIris[0][0],i.annotations.leftEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(i.annotations&&i.annotations.rightEyeIris&&i.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.rightEyeIris[3][0]-i.annotations.rightEyeIris[1][0])/2,x=Math.abs(i.annotations.rightEyeIris[4][1]-i.annotations.rightEyeIris[2][1])/2;n.ellipse(i.annotations.rightEyeIris[0][0],i.annotations.rightEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((r=i.rotation)==null?void 0:r.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let l=i.box[0]+i.box[2]/2-i.box[3]*Je(i.rotation.angle.yaw)/90,x=i.box[1]+i.box[3]/2+i.box[2]*Je(i.rotation.angle.pitch)/90,d=new Path2D(` +`;var n5=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,r)=>(o[r]=0,n))},eA=class{constructor(t,o,A){R(this,"uniform",{});R(this,"attribute",{});R(this,"gl");R(this,"id");R(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(b(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(b("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),r=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!r)){if(!this.id){b("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,r),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){b(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),n5(o,"attribute",this.attribute);for(let s in this.attribute)this.attribute[s]=this.gl.getAttribLocation(this.id,s);n5(o,"uniform",this.uniform),n5(A,"uniform",this.uniform);for(let s in this.uniform)this.uniform[s]=this.gl.getUniformLocation(this.id,s)}}};function tA(){let e=0,t=null,o=!1,A=-1,n=[null,null],r=[],s=null,a=null,y=h0(100,100),c={},i={INTERMEDIATE:1},l=y.getContext("webgl");if(this.gl=l,!l){b("filter: cannot get webgl context");return}function x(P,m){if(!(P===y.width&&m===y.height)){if(y.width=P,y.height=m,!s){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);s=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,s),l.bufferData(l.ARRAY_BUFFER,p,l.STATIC_DRAW),l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}l.viewport(0,0,y.width,y.height),n=[null,null]}}function d(P,m){let p=l.createFramebuffer();l.bindFramebuffer(l.FRAMEBUFFER,p);let k=l.createRenderbuffer();l.bindRenderbuffer(l.RENDERBUFFER,k);let C=l.createTexture();return l.bindTexture(l.TEXTURE_2D,C),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,P,m,0,l.RGBA,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,C,0),l.bindTexture(l.TEXTURE_2D,null),l.bindFramebuffer(l.FRAMEBUFFER,null),{fbo:p,texture:C}}function u(P){return n[P]=n[P]||d(y.width,y.height),n[P]}function f(P=0){if(!a)return;let m=null,p=null,k=!1;e===0?m=t:m=u(A).texture||null,e++,o&&!(P&i.INTERMEDIATE)?(p=null,k=e%2===0):(A=(A+1)%2,p=u(A).fbo||null),l.bindTexture(l.TEXTURE_2D,m),l.bindFramebuffer(l.FRAMEBUFFER,p),l.uniform1f(a.uniform.flipY,k?-1:1),l.drawArrays(l.TRIANGLES,0,6)}function M(P){if(c[P])return a=c[P],l.useProgram((a?a.id:null)||null),a;if(a=new eA(l,Jo,P),!a)return b("filter: could not get webgl program"),null;let m=Float32Array.BYTES_PER_ELEMENT,p=4*m;return l.enableVertexAttribArray(a.attribute.pos),l.vertexAttribPointer(a.attribute.pos,2,l.FLOAT,!1,p,0*m),l.enableVertexAttribArray(a.attribute.uv),l.vertexAttribPointer(a.attribute.uv,2,l.FLOAT,!1,p,2*m),c[P]=a,a}let h={colorMatrix:P=>{let m=new Float32Array(P);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let p=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?Ko:Yo,k=M(p);!k||(l.uniform1fv(k.uniform.m,m),f())},brightness:P=>{let m=(P||0)+1;h.colorMatrix([m,0,0,0,0,0,m,0,0,0,0,0,m,0,0,0,0,0,1,0])},saturation:P=>{let m=(P||0)*2/3+1,p=(m-1)*-.5;h.colorMatrix([m,p,p,0,0,p,m,p,0,0,p,p,m,0,0,0,0,0,1,0])},desaturate:()=>{h.saturation(-1)},contrast:P=>{let m=(P||0)+1,p=-128*(m-1);h.colorMatrix([m,0,0,0,p,0,m,0,0,p,0,0,m,0,p,0,0,0,1,0])},negative:()=>{h.contrast(-2)},hue:P=>{P=(P||0)/180*Math.PI;let m=Math.cos(P),p=Math.sin(P),k=.213,C=.715,O=.072;h.colorMatrix([k+m*(1-k)+p*-k,C+m*-C+p*-C,O+m*-O+p*(1-O),0,0,k+m*-k+p*.143,C+m*(1-C)+p*.14,O+m*-O+p*-.283,0,0,k+m*-k+p*-(1-k),C+m*-C+p*C,O+m*(1-O)+p*O,0,0,0,0,0,1,0])},desaturateLuminance:()=>{h.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{h.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{h.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{h.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{h.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{h.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{h.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{h.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:P=>{let m=new Float32Array(P),p=1/y.width,k=1/y.height,C=M($o);!C||(l.uniform1fv(C.uniform.m,m),l.uniform2f(C.uniform.px,p,k),f())},detectEdges:()=>{h.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{h.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{h.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:P=>{let m=P||1;h.convolution.call(this,[0,-1*m,0,-1*m,1+4*m,-1*m,0,-1*m,0])},emboss:P=>{let m=P||1;h.convolution.call(this,[-2*m,-1*m,0,-1*m,1,1*m,0,1*m,2*m])},blur:P=>{let m=P/7/y.width,p=P/7/y.height,k=M(_o);!k||(l.uniform2f(k.uniform.px,0,p),f(i.INTERMEDIATE),l.uniform2f(k.uniform.px,m,0),f())},pixelate:P=>{let m=P/y.width,p=P/y.height,k=M(Qo);!k||(l.uniform2f(k.uniform.size,m,p),f())}};this.add=function(P){let m=Array.prototype.slice.call(arguments,1),p=h[P];r.push({func:p,args:m})},this.reset=function(){r=[]},this.get=function(){return r},this.apply=function(P){x(P.width,P.height),e=0,t||(t=l.createTexture()),l.bindTexture(l.TEXTURE_2D,t),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,P);for(let m=0;md.data())),s=.99*Math.max(r[0][0],r[1][0],r[2][0]),a=[X.sub(o[0],A[0]),X.sub(o[1],A[1]),X.sub(o[2],A[2])],y=[X.sub(n[0],A[0]),X.sub(n[1],A[1]),X.sub(n[2],A[2])],c=[X.div(s,y[0]),X.div(s,y[1]),X.div(s,y[2])],i=[X.mul(a[0],c[0]),X.mul(a[1],c[1]),X.mul(a[2],c[2])],l=X.stack([i[0],i[1],i[2]],2),x=X.reshape(l,[1,t.shape[0],t.shape[1],3]);return X.dispose([...o,...A,...n,...a,...y,...c,...i,l,t]),x}var ut=2048,D=null,i0=null,Se=null,_,Q0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function h0(e,t){let o;if(T.browser)if(T.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof T.Canvas!="undefined"?o=new T.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function r5(e,t){let o=t||h0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function We(e,t,o=!0){if(!e)return t.debug&&b("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof W.Tensor)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof T.Canvas!="undefined"&&e instanceof T.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof W.Tensor){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=W.expandDims(e,0);else if(e.shape[2]===4){let n=W.slice3d(e,[0,0,0],[-1,-1,3]);A=W.expandDims(n,0),W.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=W.clone(e):e.shape[3]===4&&(A=W.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=W.cast(A,"float32");W.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?i0:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&b("input stream is not ready"),{tensor:null,canvas:D};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&b("cannot determine input dimensions"),{tensor:null,canvas:D};let r=A,s=n;if(r>ut&&(r=ut,s=Math.trunc(r*n/A)),s>ut&&(s=ut,r=Math.trunc(s*A/n)),(t.filter.width||0)>0?r=t.filter.width:(t.filter.height||0)>0&&(r=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?s=t.filter.height:(t.filter.width||0)>0&&(s=n*((t.filter.width||0)/A)),!r||!s)throw new Error("input error: cannot determine dimension");(!D||(D==null?void 0:D.width)!==r||(D==null?void 0:D.height)!==s)&&(D=h0(r,s));let a=D.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?a.putImageData(e,0,0):t.filter.flip&&typeof a.translate!="undefined"?(a.translate(A,0),a.scale(-1,1),a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),a.setTransform(1,0,0,1,0,0)):a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),(!i0||D.width!==i0.width||(D==null?void 0:D.height)!==(i0==null?void 0:i0.height))&&(i0=h0(D.width,D.height)),t.filter.enabled&&T.webgl.supported){if(_||(_=T.browser?new tA:null),T.filter=!!_,!_||!_.add)return t.debug&&b("input process error: cannot initialize filters"),{tensor:null,canvas:D};_.reset(),t.filter.brightness!==0&&_.add("brightness",t.filter.brightness),t.filter.contrast!==0&&_.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&_.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&_.add("blur",t.filter.blur),t.filter.saturation!==0&&_.add("saturation",t.filter.saturation),t.filter.hue!==0&&_.add("hue",t.filter.hue),t.filter.negative&&_.add("negative"),t.filter.sepia&&_.add("sepia"),t.filter.vintage&&_.add("brownie"),t.filter.sepia&&_.add("sepia"),t.filter.kodachrome&&_.add("kodachrome"),t.filter.technicolor&&_.add("technicolor"),t.filter.polaroid&&_.add("polaroid"),t.filter.pixelate!==0&&_.add("pixelate",t.filter.pixelate),_.get()>0?i0=_.apply(D):i0=_.draw(D)}else r5(D,i0),_&&(_=null),T.filter=!!_;if(!o)return{tensor:null,canvas:i0};if(!i0)throw new Error("canvas error: cannot create output");let y,c=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(T.browser&&W.browser)y=W.browser?W.browser.fromPixels(e):null;else{c=e.data.length/e.height/e.width;let x=new Uint8Array(e.data.buffer);y=W.tensor(x,[e.height,e.width,c],"int32")}else if((!Se||i0.width!==Se.width||i0.height!==Se.height)&&(Se=h0(i0.width,i0.height)),W.browser&&T.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?y=W.browser.fromPixels(i0):(Se=r5(i0),y=W.browser.fromPixels(Se));else{let u=r5(i0).getContext("2d").getImageData(0,0,r,s);c=u.data.length/r/s;let f=new Uint8Array(u.data.buffer);y=W.tensor(f,[r,s,c])}if(c===4){let x=W.slice3d(y,[0,0,0],[-1,-1,3]);W.dispose(y),y=x}if(!y)throw new Error("input error: cannot create tensor");let i=W.cast(y,"float32"),l=t.filter.equalization?await pt(i):W.expandDims(i,0);return W.dispose([y,i]),{tensor:l,canvas:t.filter.return?i0:null}}}async function oA(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!Q0.inputTensor)Q0.inputTensor=W.clone(t);else if(Q0.inputTensor.shape[1]!==t.shape[1]||Q0.inputTensor.shape[2]!==t.shape[2])W.dispose(Q0.inputTensor),Q0.inputTensor=W.clone(t);else{let A={};A.diff=W.sub(t,Q0.inputTensor),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;W.dispose([Q0.inputTensor,A.diff,A.squared,A.sum]),Q0.inputTensor=W.clone(t),o=r<=(e.cacheSensitivity||0)}return o}async function AA(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||b("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||b("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=W.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?W.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):W.clone(o),A.diff=W.sub(A.input1,A.input2),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return W.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),r}var nA=class{constructor(){R(this,"browser");R(this,"node");R(this,"worker");R(this,"platform","");R(this,"agent","");R(this,"backends",[]);R(this,"initial");R(this,"filter");R(this,"tfjs");R(this,"offscreen");R(this,"perfadd",!1);R(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});R(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});R(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});R(this,"cpu",{model:void 0,flags:[]});R(this,"kernels",[]);R(this,"Canvas");R(this,"Image");R(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:d0.version["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(d0.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&d0.getBackend()==="wasm"&&(this.wasm.simd=await d0.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await d0.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=h0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(d0.getBackend()==="webgl"||d0.getBackend()==="humangl")){let A=d0.backend().gpgpu!=="undefined"?await d0.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=d0.getKernelsForBackend(d0.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},T=new nA;var ht=V(F()),_0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function a2(e,t){return _0.debug&&b("load model fetch:",e,t),fetch(e,t)}function rA(e){_0.cacheModels=e.cacheModels,_0.verbose=e.debug,_0.modelBasePath=e.modelBasePath}async function G(e){let t=Zo(_0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await ht.io.listModels(),r=_0.cacheModels&&Object.keys(n).includes(A),s=typeof fetch=="undefined"?{}:{fetchFunc:(y,c)=>a2(y,c)},a=new ht.GraphModel(r?A:t,s);try{a.findIOHandler(),_0.debug&&b("model load handler:",a.handler);let y=await a.handler.load();a.loadSync(y),_0.verbose&&b("load model:",a.modelUrl)}catch(y){b("error loading model:",t,y)}if(_0.cacheModels&&!r)try{let y=await a.save(A);b("model saved:",A,y)}catch(y){b("error saving model:",t,y)}return a}var D0=V(F());var s5="2.6.3";var s0=V(F());var bt=V(F());var I0,a5=[],y2=["white","black","asian","indian","other"],x2=[15,23,28,35.5,45.5,55.5,65],sA=0,aA=0,i5=Number.MAX_SAFE_INTEGER;async function iA(e){return T.initial&&(I0=null),I0?e.debug&&b("cached model:",I0.modelUrl):I0=await G(e.face.gear),I0}async function l5(e,t,o,A){var s,a;if(!I0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=i5<(((s=t.face.gear)==null?void 0:s.skipFrames)||0),r=(((a=t.face.gear)==null?void 0:a.skipTime)||0)>g()-aA;return t.skipAllowed&&r&&n&&sA===A&&a5[o]?(i5++,a5[o]):(i5=0,new Promise(async y=>{var h,P;if(!(I0==null?void 0:I0.inputs[0].shape))return;let c={},i=[[0,.1,.9,.9]];c.resize=bt.image.cropAndResize(e,i,[0],[I0.inputs[0].shape[2],I0.inputs[0].shape[1]]);let l={age:0,gender:"unknown",genderScore:0,race:[]};((h=t.face.gear)==null?void 0:h.enabled)&&([c.age,c.gender,c.race]=I0.execute(c.resize,["age_output","gender_output","race_output"]));let x=await c.gender.data();l.gender=x[0]>x[1]?"male":"female",l.genderScore=Math.round(100*(x[0]>x[1]?x[0]:x[1]))/100;let d=await c.race.data();for(let m=0;m(((P=t.face.gear)==null?void 0:P.minConfidence)||.2)&&l.race.push({score:Math.round(100*d[m])/100,race:y2[m]});l.race.sort((m,p)=>p.score-m.score);let f=Array.from(await c.age.data()).map((m,p)=>[x2[p],m]).sort((m,p)=>p[1]-m[1]),M=f[0][0];for(let m=1;mbt.dispose(c[m])),a5[o]=l,sA=A,aA=g(),y(l)}))}var Ce=V(F());var ye=V(F()),H={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function yA(){H.tf255=ye.scalar(255,"float32"),H.tf1=ye.scalar(1,"float32"),H.tf2=ye.scalar(2,"float32"),H.tf05=ye.scalar(.5,"float32"),H.tf127=ye.scalar(127.5,"float32"),H.rgb=ye.tensor1d([.2989,.587,.114],"float32")}var T0,gt=[],xA=0,cA=0,y5=Number.MAX_SAFE_INTEGER;async function dA(e){return T.initial&&(T0=null),T0?e.debug&&b("cached model:",T0.modelUrl):T0=await G(e.face.ssrnet.modelPathAge),T0}async function x5(e,t,o,A){var s,a,y,c;if(!T0)return{age:0};let n=y5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-cA;return t.skipAllowed&&n&&r&&xA===A&&((y=gt[o])==null?void 0:y.age)&&((c=gt[o])==null?void 0:c.age)>0?(y5++,gt[o]):(y5=0,new Promise(async i=>{if(!(T0==null?void 0:T0.inputs)||!T0.inputs[0]||!T0.inputs[0].shape)return;let l={};l.resize=Ce.image.resizeBilinear(e,[T0.inputs[0].shape[2],T0.inputs[0].shape[1]],!1),l.enhance=Ce.mul(l.resize,H.tf255);let x={age:0};if(t.face.ssrnet.enabled&&(l.age=T0.execute(l.enhance)),l.age){let d=await l.age.data();x.age=Math.trunc(10*d[0])/10}Object.keys(l).forEach(d=>Ce.dispose(l[d])),gt[o]=x,xA=A,cA=g(),i(x)}))}var f0=V(F());var N0,Pt=[],mA=0,pA=0,c5=Number.MAX_SAFE_INTEGER,d5=[.2989,.587,.114];async function uA(e){return T.initial&&(N0=null),N0?e.debug&&b("cached model:",N0.modelUrl):N0=await G(e.face.ssrnet.modelPathGender),N0}async function f5(e,t,o,A){var s,a,y,c;if(!N0)return{gender:"unknown",genderScore:0};let n=c5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-pA;return t.skipAllowed&&n&&r&&mA===A&&((y=Pt[o])==null?void 0:y.gender)&&((c=Pt[o])==null?void 0:c.genderScore)>0?(c5++,Pt[o]):(c5=0,new Promise(async i=>{if(!(N0==null?void 0:N0.inputs[0].shape))return;let l={};l.resize=f0.image.resizeBilinear(e,[N0.inputs[0].shape[2],N0.inputs[0].shape[1]],!1),l.enhance=f0.tidy(()=>{let[u,f,M]=f0.split(l.resize,3,3),h=f0.mul(u,d5[0]),P=f0.mul(f,d5[1]),m=f0.mul(M,d5[2]),p=f0.addN([h,P,m]);return f0.mul(f0.sub(p,H.tf05),2)});let x={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(l.gender=N0.execute(l.enhance));let d=await l.gender.data();x.gender=d[0]>d[1]?"female":"male",x.genderScore=d[0]>d[1]?Math.trunc(100*d[0])/100:Math.trunc(100*d[1])/100,Object.keys(l).forEach(u=>f0.dispose(l[u])),Pt[o]=x,mA=A,pA=g(),i(x)}))}var vt=V(F());var m0,Mt=[],m5=Number.MAX_SAFE_INTEGER,bA=0,gA=0;async function PA(e){var t;return T.initial&&(m0=null),m0?e.debug&&b("cached model:",m0.modelUrl):m0=await G((t=e.face.antispoof)==null?void 0:t.modelPath),m0}async function p5(e,t,o,A){var s,a;if(!m0)return 0;let n=(((s=t.face.antispoof)==null?void 0:s.skipTime)||0)>g()-gA,r=m5<(((a=t.face.antispoof)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&bA===A&&Mt[o]?(m5++,Mt[o]):(m5=0,new Promise(async y=>{let c=vt.image.resizeBilinear(e,[(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[2]:0,(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[1]:0],!1),i=m0==null?void 0:m0.execute(c),l=(await i.data())[0];Mt[o]=Math.round(100*l)/100,bA=A,gA=g(),vt.dispose([c,i]),y(Mt[o])}))}var N=V(F());var $0=V(F());var L0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},u5={count:468,mouth:13,symmetryLine:[13,L0.midwayBetweenEyes[0]]},nt={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},h5=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],rt=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],Pe=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var d2=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],f2=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],m2=[33,133,362,263,1,78,308],aa=d2.map(e=>rt[e]),ia=f2.map(e=>rt[e]),la=m2.map(e=>rt[e]);var Oe=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Tt=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],M5=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],v5=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],RA=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},g5=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],r=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],s=$0.image.cropAndResize(t,[r],[0],o),a=$0.div(s,H.tf255);return $0.dispose(s),a},Rt=(e,t)=>{let o=Tt(e),A=Oe(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},wt=e=>{let t=Tt(e),o=Oe(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},wA=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},P5=[[1,0,0],[0,1,0],[0,0,1]],p2=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),u2=(e,t)=>p2(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var vA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Me=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],r=vA(t[0],t[1]),s=TA(r,n),a=vA(-t[0],-t[1]);return TA(s,a)},b2=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Me(t[0],o),-Me(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},g2=(e,t)=>[Me(e,t[0]),Me(e,t[1])];function EA(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[r[0]/n*(d[0]-n/2),r[1]/n*(d[1]-n/2),d[2]||0]),a=o&&o!==0&&Math.abs(o)>.2,y=a?kA(o,[0,0]):P5,c=a?s.map(d=>[...g2(d,y),d[2]]):s,i=a?b2(A):P5,l=Tt(t),x=[Me(l,i[0]),Me(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2]||0)])}function jA(e,t,o,A){let n=t.landmarks.length>=u5.count?u5.symmetryLine:nt.symmetryLine,r=0,s=P5,a;if(e&&T.kernels.includes("rotatewithoffset"))if(r=u2(t.landmarks[n[0]],t.landmarks[n[1]]),r&&r!==0&&Math.abs(r)>.2){let c=Tt(t),i=[c[0]/o.shape[2],c[1]/o.shape[1]],l=$0.image.rotateWithOffset(o,r,0,i);s=kA(-r,c),a=g5(t,l,[A,A]),$0.dispose(l)}else a=g5(t,o,[A,A]);else a=g5(t,o,[A,A]);return[r,s,a]}var P2=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},SA=(e,t)=>{let o=P2(e),A=Oe(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var WA=6,M2=1.2,q0,CA=null,xe=0,st=null,kt=()=>xe;async function OA(e){var t;return T.initial&&(q0=null),q0?e.debug&&b("cached model:",q0.modelUrl):q0=await G((t=e.face.detector)==null?void 0:t.modelPath),xe=q0.inputs[0].shape?q0.inputs[0].shape[2]:0,st=N.scalar(xe,"int32"),CA=N.tensor2d(EA(xe)),q0}function v2(e){let t={};t.boxStarts=N.slice(e,[0,1],[-1,2]),t.centers=N.add(t.boxStarts,CA),t.boxSizes=N.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=N.div(t.boxSizes,st),t.centersNormalized=N.div(t.centers,st),t.halfBoxSize=N.div(t.boxSizesNormalized,H.tf2),t.starts=N.sub(t.centersNormalized,t.halfBoxSize),t.ends=N.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=N.mul(t.starts,st),t.endNormalized=N.mul(t.ends,st);let o=N.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>N.dispose(t[A])),o}async function IA(e,t){var a,y,c,i;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=N.image.resizeBilinear(e,[xe,xe]),o.div=N.div(o.resized,H.tf127),o.normalized=N.sub(o.div,H.tf05);let A=q0==null?void 0:q0.execute(o.normalized);if(Array.isArray(A)){let l=A.sort((x,d)=>x.size-d.size);o.concat384=N.concat([l[0],l[2]],2),o.concat512=N.concat([l[1],l[3]],2),o.concat=N.concat([o.concat512,o.concat384],1),o.batch=N.squeeze(o.concat,0)}else o.batch=N.squeeze(A);N.dispose(A),o.boxes=v2(o.batch),o.logits=N.slice(o.batch,[0,0],[-1,1]),o.sigmoid=N.sigmoid(o.logits),o.scores=N.squeeze(o.sigmoid),o.nms=await N.image.nonMaxSuppressionAsync(o.boxes,o.scores,((a=t.face.detector)==null?void 0:a.maxDetected)||0,((y=t.face.detector)==null?void 0:y.iouThreshold)||0,((c=t.face.detector)==null?void 0:c.minConfidence)||0);let n=await o.nms.array(),r=[],s=await o.scores.data();for(let l=0;l(((i=t.face.detector)==null?void 0:i.minConfidence)||0)){let d={};d.bbox=N.slice(o.boxes,[n[l],0],[1,-1]),d.slice=N.slice(o.batch,[n[l],WA-1],[1,-1]),d.squeeze=N.squeeze(d.slice),d.landmarks=N.reshape(d.squeeze,[WA,-1]);let u=await d.bbox.data(),f={startPoint:[u[0],u[1]],endPoint:[u[2],u[3]],landmarks:await d.landmarks.array(),confidence:x},M=RA(f,[(e.shape[2]||0)/xe,(e.shape[1]||0)/xe]),h=Rt(M,t.face.scale||M2),P=wt(h);r.push(P),Object.keys(d).forEach(m=>N.dispose(d[m]))}}return Object.keys(o).forEach(l=>N.dispose(o[l])),r}var k0=V(F());var Et={};mt(Et,{connected:()=>w5,kpt:()=>R5});var R5=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],w5={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var R0=V(F()),LA=224,T2,R2=5,zt=[8,16,32,32,32];async function BA(){let e=[],t=0;for(;to.x)),y:R0.tensor1d(e.map(o=>o.y))}}function ee(e,t=[1,1]){let o=[e.map(a=>a[0]),e.map(a=>a[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[A[0],A[1],n[0]-A[0],n[1]-A[1]],s=[r[0]/t[0],r[1]/t[1],r[2]/t[0],r[3]/t[1]];return{box:r,boxRaw:s}}function GA(e,t=[1,1]){let o=[e.map(c=>c[0]),e.map(c=>c[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[(A[0]+n[0])/2,(A[1]+n[1])/2],s=Math.max(r[0]-A[0],r[1]-A[1],-r[0]+n[0],-r[1]+n[1]),a=[Math.trunc(r[0]-s),Math.trunc(r[1]-s),Math.trunc(2*s),Math.trunc(2*s)],y=[a[0]/t[0],a[1]/t[1],a[2]/t[0],a[3]/t[1]];return{box:a,boxRaw:y}}function jt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var VA={initial:!0},w0={detector:null,landmarks:null},Ie={detector:[224,224],landmarks:[256,256]},k5=Number.MAX_SAFE_INTEGER,k2={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},Wt=null,at,ce=[[0,0],[0,0],[0,0],[0,0]],HA=0,FA=e=>1-1/(1+Math.exp(e));async function ZA(e){if(VA.initial&&(w0.detector=null),!w0.detector&&e.body.detector&&e.body.detector.modelPath){w0.detector=await G(e.body.detector.modelPath);let t=Object.values(w0.detector.modelSignature.inputs);Ie.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&w0.detector&&b("cached model:",w0.detector.modelUrl);return await BA(),w0.detector}async function XA(e){if(VA.initial&&(w0.landmarks=null),w0.landmarks)e.debug&&b("cached model:",w0.landmarks.modelUrl);else{w0.landmarks=await G(e.body.modelPath);let t=Object.values(w0.landmarks.modelSignature.inputs);Ie.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return w0.landmarks}async function E2(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(at&&(o.cropped=k0.image.cropAndResize(e,[at],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],r=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];ce=[[0,0],n,r,[0,0]],o.pad=k0.pad(o.cropped||e,ce),o.resize=k0.image.resizeBilinear(o.pad,[t,t]),A=k0.div(o.resize,H.tf255)}else e.shape[1]!==t?(o.resize=k0.image.resizeBilinear(o.cropped||e,[t,t]),A=k0.div(o.resize,H.tf255)):A=k0.div(o.cropped||e,H.tf255);return Object.keys(o).forEach(n=>k0.dispose(o[n])),A}function z2(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+ce[2][0]+ce[2][1])/t[0]-ce[2][0]),Math.trunc(o.position[1]*(t[1]+ce[1][0]+ce[1][1])/t[1]-ce[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(at)for(let o of e)o.positionRaw=[o.positionRaw[0]+at[1],o.positionRaw[1]+at[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function j2(e){let t=e.find(a=>a.part==="leftPalm"),o=e.find(a=>a.part==="leftWrist"),A=e.find(a=>a.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(a=>a.part==="rightPalm"),r=e.find(a=>a.part==="rightWrist"),s=e.find(a=>a.part==="rightIndex");n.position[2]=((r.position[2]||0)+(s.position[2]||0))/2}async function S2(e,t,o){var u;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(u=w0.landmarks)==null?void 0:u.execute(e,k2.landmarks);let n=(await A.poseflag.data())[0],r=await A.ld.data(),s=await A.world.data();Object.keys(A).forEach(f=>k0.dispose(A[f]));let a=[],y=5;for(let f=0;ff.position),l=ee(i,[o[0],o[1]]),x={};for(let[f,M]of Object.entries(w5)){let h=[];for(let P=0;Pk.part===M[P]),p=c.find(k=>k.part===M[P+1]);m&&p&&h.push([m.position,p.position])}x[f]=h}return{id:0,score:Math.trunc(100*n)/100,box:l.box,boxRaw:l.boxRaw,keypoints:c,annotations:x}}async function E5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>g()-HA,n=k5<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&Wt!==null)k5++;else{let r={};r.landmarks=await E2(e,256),Wt=await S2(r.landmarks,t,o),Object.keys(r).forEach(s=>k0.dispose(r[s])),HA=g(),k5=0}return Wt?[Wt]:[]}var b0=V(F());var Ne=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var te,ve=0,z5=[],qA=0,j5=Number.MAX_SAFE_INTEGER;async function UA(e){if(T.initial&&(te=null),te)e.debug&&b("cached model:",te.modelUrl);else{te=await G(e.object.modelPath);let t=Object.values(te.modelSignature.inputs);ve=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return te}async function W2(e,t,o){if(!e)return[];let A={},n=[],r=await e.array();A.squeeze=b0.squeeze(e);let s=b0.split(A.squeeze,6,1);A.stack=b0.stack([s[1],s[0],s[3],s[2]],1),A.boxes=b0.squeeze(A.stack),A.scores=b0.squeeze(s[4]),A.classes=b0.squeeze(s[5]),b0.dispose([e,...s]),A.nms=await b0.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let a=await A.nms.data(),y=0;for(let c of Array.from(a)){let i=Math.trunc(100*r[0][c][4])/100,l=r[0][c][5],x=Ne[l].label,[d,u]=[r[0][c][0]/ve,r[0][c][1]/ve],f=[d,u,r[0][c][2]/ve-d,r[0][c][3]/ve-u],M=[Math.trunc(f[0]*t[0]),Math.trunc(f[1]*t[1]),Math.trunc(f[2]*t[0]),Math.trunc(f[3]*t[1])];n.push({id:y++,score:i,class:l,label:x,box:M,boxRaw:f})}return Object.keys(A).forEach(c=>b0.dispose(A[c])),n}async function S5(e,t){let o=(t.object.skipTime||0)>g()-qA,A=j5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&z5.length>0?(j5++,z5):(j5=0,new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=b0.image.resizeBilinear(e,[ve,ve]),a=t.object.enabled?te==null?void 0:te.execute(s,["tower_0/detections"]):null;qA=g(),b0.dispose(s);let y=await W2(a,r,t);z5=y,n(y)}))}var K=V(F());var Ct={};mt(Ct,{connected:()=>C5,kpt:()=>W5});var W5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],C5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var p0,YA=0,g0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},O5=Number.MAX_SAFE_INTEGER;async function KA(e){return T.initial&&(p0=null),p0?e.debug&&b("cached model:",p0.modelUrl):p0=await G(e.body.modelPath),p0}async function C2(e,t){let[o,A]=e.shape,n=K.reshape(e,[A*o]),r=K.max(n,0),s=(await r.data())[0];if(K.dispose([n,r]),s>t){let a=K.argMax(n,0),y=K.mod(a,o),c=(await y.data())[0],i=K.div(a,K.scalar(o,"int32")),l=(await i.data())[0];return K.dispose([y,i]),[c,l,s]}return[0,0,s]}async function I5(e,t){let o=(t.body.skipTime||0)>g()-YA,A=O5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(g0.keypoints).length>0?(O5++,[g0]):(O5=0,new Promise(async n=>{var l;let r=K.tidy(()=>{if(!(p0==null?void 0:p0.inputs[0].shape))return null;let x=K.image.resizeBilinear(e,[p0.inputs[0].shape[2],p0.inputs[0].shape[1]],!1),d=K.mul(x,H.tf2);return K.sub(d,H.tf1)}),s;if(t.body.enabled&&(s=p0==null?void 0:p0.execute(r)),YA=g(),K.dispose(r),s){g0.keypoints.length=0;let x=s.squeeze();K.dispose(s);let d=x.unstack(2);K.dispose(x);for(let u=0;u(((l=t.body)==null?void 0:l.minConfidence)||0)&&g0.keypoints.push({score:Math.round(100*h)/100,part:W5[u],positionRaw:[f/p0.inputs[0].shape[2],M/p0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*f/p0.inputs[0].shape[2]),Math.round(e.shape[1]*M/p0.inputs[0].shape[1])]})}d.forEach(u=>K.dispose(u))}g0.score=g0.keypoints.reduce((x,d)=>d.score>x?d.score:x,0);let a=g0.keypoints.map(x=>x.position[0]),y=g0.keypoints.map(x=>x.position[1]);g0.box=[Math.min(...a),Math.min(...y),Math.max(...a)-Math.min(...a),Math.max(...y)-Math.min(...y)];let c=g0.keypoints.map(x=>x.positionRaw[0]),i=g0.keypoints.map(x=>x.positionRaw[1]);g0.boxRaw=[Math.min(...c),Math.min(...i),Math.max(...c)-Math.min(...c),Math.max(...i)-Math.min(...i)];for(let[x,d]of Object.entries(C5)){let u=[];for(let f=0;fP.part===d[f]),h=g0.keypoints.find(P=>P.part===d[f+1]);M&&h&&M.score>(t.body.minConfidence||0)&&h.score>(t.body.minConfidence||0)&&u.push([M.position,h.position])}g0.annotations[x]=u}n([g0])}))}var B0=V(F());var O2=["angry","disgust","fear","happy","sad","surprise","neutral"],O0,Ot=[],_A=0,$A=0,N5=Number.MAX_SAFE_INTEGER;async function en(e){var t;return T.initial&&(O0=null),O0?e.debug&&b("cached model:",O0.modelUrl):O0=await G((t=e.face.emotion)==null?void 0:t.modelPath),O0}async function L5(e,t,o,A){var s,a;if(!O0)return[];let n=N5<(((s=t.face.emotion)==null?void 0:s.skipFrames)||0),r=(((a=t.face.emotion)==null?void 0:a.skipTime)||0)>g()-$A;return t.skipAllowed&&r&&n&&_A===A&&Ot[o]&&Ot[o].length>0?(N5++,Ot[o]):(N5=0,new Promise(async y=>{var i,l;let c=[];if((i=t.face.emotion)==null?void 0:i.enabled){let x={},d=(O0==null?void 0:O0.inputs[0].shape)?O0.inputs[0].shape[2]:0;x.resize=B0.image.resizeBilinear(e,[d,d],!1),x.channels=B0.mul(x.resize,H.rgb),x.grayscale=B0.sum(x.channels,3,!0),x.grayscaleSub=B0.sub(x.grayscale,H.tf05),x.grayscaleMul=B0.mul(x.grayscaleSub,H.tf2),x.emotion=O0==null?void 0:O0.execute(x.grayscaleMul),$A=g();let u=await x.emotion.data();for(let f=0;f(((l=t.face.emotion)==null?void 0:l.minConfidence)||0)&&c.push({score:Math.min(.99,Math.trunc(100*u[f])/100),emotion:O2[f]});c.sort((f,M)=>M.score-f.score),Object.keys(x).forEach(f=>B0.dispose(x[f]))}Ot[o]=c,_A=A,y(c)}))}var rn=V(F());var E0,B5=[],on=0,An=0,nn=Number.MAX_SAFE_INTEGER;async function sn(e){return T.initial&&(E0=null),E0?e.debug&&b("cached model:",E0.modelUrl):E0=await G(e.face.mobilefacenet.modelPath),E0}async function G5(e,t,o,A){var s,a;if(!E0)return[];let n=nn<(((s=t.face.embedding)==null?void 0:s.skipFrames)||0),r=(((a=t.face.embedding)==null?void 0:a.skipTime)||0)>g()-An;return t.skipAllowed&&r&&n&&on===A&&B5[o]?(nn++,B5[o]):new Promise(async y=>{var i;let c=[];if(((i=t.face.embedding)==null?void 0:i.enabled)&&(E0==null?void 0:E0.inputs[0].shape)){let l={};l.crop=rn.image.resizeBilinear(e,[E0.inputs[0].shape[2],E0.inputs[0].shape[1]],!1),l.data=E0==null?void 0:E0.execute(l.crop);let x=await l.data.data();c=Array.from(x)}B5[o]=c,on=A,An=g(),y(c)})}var He=V(F());var G0=V(F());var oe,de=0,I2=2.3,H5=L0.leftEyeLower0,F5=L0.rightEyeLower0,Le={leftBounds:[H5[0],H5[H5.length-1]],rightBounds:[F5[0],F5[F5.length-1]]},Be={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function cn(e){var t;return T.initial&&(oe=null),oe?e.debug&&b("cached model:",oe.modelUrl):oe=await G((t=e.face.iris)==null?void 0:t.modelPath),de=oe.inputs[0].shape?oe.inputs[0].shape[2]:0,de===-1&&(de=64),oe}function It(e,t,o,A){for(let n=0;n{let t=e[Le.leftBounds[0]][2],o=e[Le.rightBounds[0]][2];return t-o},ln=(e,t,o,A,n,r=!1)=>{let s=wt(Rt(wA([e[o],e[A]]),I2)),a=Oe(s),y=G0.image.cropAndResize(t,[[s.startPoint[1]/n,s.startPoint[0]/n,s.endPoint[1]/n,s.endPoint[0]/n]],[0],[de,de]);if(r&&T.kernels.includes("flipleftright")){let c=G0.image.flipLeftRight(y);G0.dispose(y),y=c}return{box:s,boxSize:a,crop:y}},yn=(e,t,o,A=!1)=>{let n=[];for(let r=0;r{let A=e[L0[`${o}EyeUpper0`][Be.upperCenter]][2],n=e[L0[`${o}EyeLower0`][Be.lowerCenter]][2],r=(A+n)/2;return t.map((s,a)=>{let y=r;return a===2?y=A:a===4&&(y=n),[s[0],s[1],y]})};async function dn(e,t,o,A){if(!oe)return o.debug&&b("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:r,crop:s}=ln(e,t,Le.leftBounds[0],Le.leftBounds[1],A,!0),{box:a,boxSize:y,crop:c}=ln(e,t,Le.rightBounds[0],Le.rightBounds[1],A,!0),i=G0.concat([s,c]);G0.dispose(s),G0.dispose(c);let l=oe.execute(i);G0.dispose(i);let x=await l.data();G0.dispose(l);let d=x.slice(0,Be.numCoordinates*3),{rawCoords:u,iris:f}=yn(d,n,r,!0),M=x.slice(Be.numCoordinates*3),{rawCoords:h,iris:P}=yn(M,a,y),m=N2(e);Math.abs(m)<30?(It(e,u,"left",null),It(e,h,"right",null)):m<1?It(e,u,"left",["EyeUpper0","EyeLower0"]):It(e,h,"right",["EyeUpper0","EyeLower0"]);let p=xn(e,f,"left"),k=xn(e,P,"right");return e.concat(p).concat(k)}var U0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},Ae=null,Ge=0;async function mn(e,t){var a,y,c,i,l,x,d,u,f;let o=(((a=t.face.detector)==null?void 0:a.skipTime)||0)>g()-U0.timestamp,A=U0.skipped<(((y=t.face.detector)==null?void 0:y.skipFrames)||0);!t.skipAllowed||!o||!A||U0.boxes.length===0?(U0.boxes=await IA(e,t),U0.timestamp=g(),U0.skipped=0):U0.skipped++;let n=[],r=[],s=0;for(let M=0;M[q[0]/(e.shape[2]||0),q[1]/(e.shape[1]||0),(q[2]||0)/Ge]);for(let q of Object.keys(L0))p.annotations[q]=L0[q].map(x0=>p.mesh[x0]);p.score=p.faceScore;let Z={...SA(p.mesh,h),confidence:h.confidence,landmarks:h.landmarks};p.box=M5(Z,e),p.boxRaw=v5(Z,e),r.push(Z)}}else{p.box=M5(h,e),p.boxRaw=v5(h,e),p.score=p.boxScore,p.mesh=h.landmarks.map(k=>[(h.startPoint[0]+h.endPoint[0])/2+(h.endPoint[0]+h.startPoint[0])*k[0]/kt(),(h.startPoint[1]+h.endPoint[1])/2+(h.endPoint[1]+h.startPoint[1])*k[1]/kt()]),p.meshRaw=p.mesh.map(k=>[k[0]/(e.shape[2]||0),k[1]/(e.shape[1]||0),(k[2]||0)/Ge]);for(let k of Object.keys(nt))p.annotations[k]=[p.mesh[nt[k]]]}p.score>(((f=t.face.detector)==null?void 0:f.minConfidence)||1)?n.push(p):He.dispose(p.tensor)}return U0.boxes=r,n}async function pn(e){var t;return T.initial&&(Ae=null),Ae?e.debug&&b("cached model:",Ae.modelUrl):Ae=await G((t=e.face.mesh)==null?void 0:t.modelPath),Ge=Ae.inputs[0].shape?Ae.inputs[0].shape[2]:0,Ae}var un=Pe,hn=rt;var H0=V(F());var z0,Nt=[],bn=0,gn=0,Z5=Number.MAX_SAFE_INTEGER;async function Pn(e){var t;return T.initial&&(z0=null),z0?e.debug&&b("cached model:",z0.modelUrl):z0=await G((t=e.face.description)==null?void 0:t.modelPath),z0}function X5(e){let t=e.image||e.tensor||e;if(!(z0==null?void 0:z0.inputs[0].shape))return t;let o=H0.image.resizeBilinear(t,[z0.inputs[0].shape[2],z0.inputs[0].shape[1]],!1),A=H0.mul(o,H.tf255);return H0.dispose(o),A}async function D5(e,t,o,A){var s,a,y,c;if(!z0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=Z5<(((s=t.face.description)==null?void 0:s.skipFrames)||0),r=(((a=t.face.description)==null?void 0:a.skipTime)||0)>g()-bn;return t.skipAllowed&&n&&r&&gn===A&&((y=Nt[o])==null?void 0:y.age)&&((c=Nt[o])==null?void 0:c.age)>0?(Z5++,Nt[o]):(Z5=0,new Promise(async i=>{var x,d;let l={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((x=t.face.description)==null?void 0:x.enabled){let u=X5(e),f=z0==null?void 0:z0.execute(u);bn=g(),H0.dispose(u);let h=await(await f.find(L=>L.shape[1]===1)).data(),P=Math.trunc(200*Math.abs(h[0]-.5))/100;P>(((d=t.face.description)==null?void 0:d.minConfidence)||0)&&(l.gender=h[0]<=.5?"female":"male",l.genderScore=Math.min(.99,P));let m=H0.argMax(f.find(L=>L.shape[1]===100),1),p=(await m.data())[0];H0.dispose(m);let C=await f.find(L=>L.shape[1]===100).data();l.age=Math.round(C[p-1]>C[p+1]?10*p-100*C[p-1]:10*p+100*C[p+1])/10;let O=f.find(L=>L.shape[1]===1024),j=O?await O.data():[];l.descriptor=Array.from(j),f.forEach(L=>H0.dispose(L))}Nt[o]=l,gn=A,i(l)}))}var B=V(F());var Tn=V(F());function Lt(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function it(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function Rn(e,t,o){let A=t.shape[1],n=t.shape[2],r=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return Tn.image.cropAndResize(t,r,[0],o)}function wn(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(r=>[r[0]*t[0],r[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function Bt(e,t=1.5){let o=it(e),A=Lt(e),n=[t*A[0]/2,t*A[1]/2],r=[o[0]-n[0],o[1]-n[1]],s=[o[0]+n[0],o[1]+n[1]];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function Gt(e){let t=it(e),o=Lt(e),n=Math.max(...o)/2,r=[t[0]-n,t[1]-n],s=[t[0]+n,t[1]+n];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function L2(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function kn(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return L2(o)}var Mn=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function fe(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=B.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=B.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=B.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=B.slice(t,[0,0],[-1,2]),o.boxSizes=B.slice(t,[0,2],[-1,2]),o.div=B.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=B.add(o.div,this.anchorsTensor),o.halfBoxSizes=B.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=B.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=B.mul(o.sub,this.inputSizeTensor),o.add=B.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=B.mul(o.add,this.inputSizeTensor);let A=B.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>B.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=B.reshape(t,[-1,7,2]),A.div=B.div(A.reshape,this.inputSizeTensor),A.landmarks=B.add(A.div,this.anchors[o]);let n=B.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(r=>B.dispose(A[r])),n}async predict(t,o){let A={};A.resize=B.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=B.div(A.resize,H.tf127),A.image=B.sub(A.div,H.tf1),A.batched=this.model.execute(A.image),A.predictions=B.squeeze(A.batched),A.slice=B.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=B.sigmoid(A.slice),A.scores=B.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=B.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await B.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let r=await A.nms.array(),s=[];for(let a of r){let y={};y.box=B.slice(A.norm,[a,0],[1,-1]),y.slice=B.slice(A.predictions,[a,5],[1,14]),y.norm=this.normalizeLandmarks(y.slice,a),y.palmLandmarks=B.reshape(y.norm,[-1,2]);let c=await y.box.data(),i=c.slice(0,2),l=c.slice(2,4),x=await y.palmLandmarks.array(),d={startPoint:i,endPoint:l,palmLandmarks:x,confidence:n[a]},u=wn(d,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);s.push(u),Object.keys(y).forEach(f=>B.dispose(y[f]))}return Object.keys(A).forEach(a=>B.dispose(A[a])),s}};var j0=V(F());var F2=5,Sn=1.65,Wn=[0,5,9,13,17,1,2],V2=0,Z2=2,Cn=0,K5=class{constructor(t,o){R(this,"handDetector");R(this,"handPoseModel");R(this,"inputSize");R(this,"storedBoxes");R(this,"skipped");R(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(s=>s[0]),A=t.map(s=>s[1]),n=[Math.min(...o),Math.min(...A)],r=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:r}}getBoxForPalmLandmarks(t,o){let A=t.map(r=>J5([...r,1],o)),n=this.calculateLandmarksBoundingBox(A);return Bt(Gt(n),F2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=Bt(Gt(o),Sn);A.palmLandmarks=[];for(let n=0;n[s[0]*(d[0]-this.inputSize/2),s[1]*(d[1]-this.inputSize/2),s[2]*d[2]]),y=U5(A,[0,0]),c=a.map(d=>[...J5(d,y),d[2]]),i=En(n),l=[...it(o),1],x=[fe(l,i[0]),fe(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2])])}async estimateHands(t,o){let A=!1,n,r=(o.hand.skipTime||0)>g()-Cn,s=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&r&&s&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let a=[];for(let y=0;y=o.hand.minConfidence/4){let k=j0.reshape(m,[-1,3]),C=await k.array();j0.dispose(m),j0.dispose(k);let O=this.transformRawCoords(C,f,i,u),j=this.getBoxForHandLandmarks(O);this.storedBoxes[y]={...j,confidence:p};let L={landmarks:O,confidence:p,boxConfidence:c.confidence,fingerConfidence:p,box:{topLeft:j.startPoint,bottomRight:j.endPoint}};a.push(L)}else this.storedBoxes[y]=null;j0.dispose(m)}else{let i=Bt(Gt(c),Sn),l={confidence:c.confidence,boxConfidence:c.confidence,fingerConfidence:0,box:{topLeft:i.startPoint,bottomRight:i.endPoint},landmarks:[]};a.push(l)}}return this.storedBoxes=this.storedBoxes.filter(y=>y!==null),this.detectedHands=a.length,a.length>o.hand.maxDetected&&(a.length=o.hand.maxDetected),a}};var P0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>P0.nameMapping[e],getPoints:e=>P0.pointsMapping[e]},me={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>me.nameMapping[e]},e0={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>e0.nameMapping[e]},Te=class{constructor(t){R(this,"name");R(this,"curls");R(this,"directions");R(this,"weights");R(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,r)=>n+r,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let r=t[n],s=this.curls[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}for(let n in o){let r=o[n],s=this.directions[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}return A/10}};var{thumb:F0,index:ne,middle:re,ring:Re,pinky:we}=P0,{none:V0,half:D2,full:Z0}=me,{verticalUp:Fe,verticalDown:_a,horizontalLeft:Q5,horizontalRight:q2,diagonalUpRight:U2,diagonalUpLeft:Ve,diagonalDownRight:$a,diagonalDownLeft:e1}=e0,pe=new Te("thumbs up");pe.curl(F0,V0,1);pe.direction(F0,Fe,1);pe.direction(F0,Ve,.25);pe.direction(F0,U2,.25);for(let e of[P0.index,P0.middle,P0.ring,P0.pinky])pe.curl(e,Z0,1),pe.direction(e,Q5,1),pe.direction(e,q2,1);var r0=new Te("victory");r0.curl(F0,D2,.5);r0.curl(F0,V0,.5);r0.direction(F0,Fe,1);r0.direction(F0,Ve,1);r0.curl(ne,V0,1);r0.direction(ne,Fe,.75);r0.direction(ne,Ve,1);r0.curl(re,V0,1);r0.direction(re,Fe,1);r0.direction(re,Ve,.75);r0.curl(Re,Z0,1);r0.direction(Re,Fe,.2);r0.direction(Re,Ve,1);r0.direction(Re,Q5,.2);r0.curl(we,Z0,1);r0.direction(we,Fe,.2);r0.direction(we,Ve,1);r0.direction(we,Q5,.2);r0.weight(ne,2);r0.weight(re,2);var ue=new Te("point");ue.curl(F0,Z0,1);ue.curl(ne,V0,.5);ue.curl(re,Z0,.5);ue.curl(Re,Z0,.5);ue.curl(we,Z0,.5);ue.weight(ne,2);ue.weight(re,2);var he=new Te("middle finger");he.curl(F0,V0,1);he.curl(ne,Z0,.5);he.curl(re,Z0,.5);he.curl(Re,Z0,.5);he.curl(we,Z0,.5);he.weight(ne,2);he.weight(re,2);var Ze=new Te("open palm");Ze.curl(F0,V0,.75);Ze.curl(ne,V0,.75);Ze.curl(re,V0,.75);Ze.curl(Re,V0,.75);Ze.curl(we,V0,.75);var On=[pe,r0,ue,he,Ze];var J2=.7,ke={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function In(e,t,o,A){let n=(t-A)/(e-o),r=Math.atan(n)*180/Math.PI;return r<=0?r=-r:r>0&&(r=180-r),r}function Ln(e,t){if(!e||!t)return[0,0];let o=In(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=In(e[1],e[2],t[1],t[2]);return[o,A]}function Nn(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function Y2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],r=t[0]-o[0],s=e[1]-t[1],a=e[1]-o[1],y=t[1]-o[1],c=e[2]-t[2],i=e[2]-o[2],l=t[2]-o[2],x=Math.sqrt(A*A+s*s+c*c),d=Math.sqrt(n*n+a*a+i*i),u=Math.sqrt(r*r+y*y+l*l),f=(u*u+x*x-d*d)/(2*u*x);f>1?f=1:f<-1&&(f=-1);let M=Math.acos(f);M=57.2958*M%180;let h;return M>ke.NO_CURL_START_LIMIT?h=me.none:M>ke.HALF_CURL_START_LIMIT?h=me.half:h=me.full,h}function Bn(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=e0.horizontalLeft:n=e0.horizontalRight:A===Math.abs(t)?t>0?n=e0.horizontalLeft:n=e0.horizontalRight:o>0?n=e0.horizontalLeft:n=e0.horizontalRight,n}function Gn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=e0.verticalDown:n=e0.verticalUp:A===Math.abs(t)?t<0?n=e0.verticalDown:n=e0.verticalUp:o<0?n=e0.verticalDown:n=e0.verticalUp,n}function K2(e,t,o,A,n,r,s,a){let y,c=Gn(e,t,o,A),i=Bn(n,r,s,a);return c===e0.verticalUp?i===e0.horizontalLeft?y=e0.diagonalUpLeft:y=e0.diagonalUpRight:i===e0.horizontalLeft?y=e0.diagonalDownLeft:y=e0.diagonalDownRight,y}function Q2(e,t,o,A){let n=e[0]-t[0],r=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],y=e[1]-o[1],c=t[1]-o[1],i=Math.max(Math.abs(n),Math.abs(r),Math.abs(s)),l=Math.max(Math.abs(a),Math.abs(y),Math.abs(c)),x=0,d=0,u=0,f=l/(i+1e-5);f>1.5?x+=ke.DISTANCE_VOTE_POWER:f>.66?d+=ke.DISTANCE_VOTE_POWER:u+=ke.DISTANCE_VOTE_POWER;let M=Math.sqrt(n*n+a*a),h=Math.sqrt(r*r+y*y),P=Math.sqrt(s*s+c*c),m=Math.max(M,h,P),p=e[0],k=e[1],C=o[0],O=o[1];m===M?(C=o[0],O=o[1]):m===P&&(p=t[0],k=t[1]);let J=Ln([p,k],[C,O]),Z=Nn(J,ke.TOTAL_ANGLE_VOTE_POWER);x+=Z[0],d+=Z[1],u+=Z[2];for(let x0 of A){let E=Nn(x0,ke.SINGLE_ANGLE_VOTE_POWER);x+=E[0],d+=E[1],u+=E[2]}let q;return x===Math.max(x,d,u)?q=Gn(y,a,c,l):u===Math.max(d,u)?q=Bn(r,n,s,i):q=K2(y,a,c,l,r,n,s,i),q}function Hn(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let r of P0.all){let s=P0.getPoints(r),a=[],y=[];for(let c of s){let i=e[c[0]],l=e[c[1]],x=Ln(i,l),d=x[0],u=x[1];a.push(d),y.push(u)}t.push(a),o.push(y)}for(let r of P0.all){let s=r===P0.thumb?1:0,a=P0.getPoints(r),y=e[a[s][0]],c=e[a[s+1][1]],i=e[a[3][1]],l=Y2(y,c,i),x=Q2(y,c,i,t[r].slice(s));A[r]=l,n[r]=x}return{curls:A,directions:n}}function Ht(e){if(!e||e.length===0)return null;let t=Hn(e),o={};for(let A of P0.all)o[P0.getName(A)]={curl:me.getName(t.curls[A]),direction:e0.getName(t.directions[A])};return o}function Fn(e){let t=[];if(!e||e.length===0)return t;let o=Hn(e);for(let A of On){let n=A.matchAgainst(o.curls,o.directions);n>=J2&&t.push({name:A.name,confidence:n})}return t}var Vn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Xe,De,Zn;async function $5(e,t){let o=await Zn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[l]);let s=o[n].landmarks,a=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],y=[0,0,0,0];if(s&&s.length>0){for(let i of s)i[0]a[2]&&(a[2]=i[0]),i[1]>a[3]&&(a[3]=i[1]);a[2]-=a[0],a[3]-=a[1],y=[a[0]/(e.shape[2]||0),a[1]/(e.shape[1]||0),a[2]/(e.shape[2]||0),a[3]/(e.shape[1]||0)]}else a=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],y=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let c=Ht(s);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:a,boxRaw:y,keypoints:s,annotations:r,landmarks:c})}return A}async function eo(e){var o,A;T.initial&&(Xe=null,De=null),!Xe||!De?[Xe,De]=await Promise.all([e.hand.enabled?G((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?G((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&b("cached model:",Xe.modelUrl),e.debug&&b("cached model:",De.modelUrl));let t=new Y5(Xe);return Zn=new K5(t,De),[Xe,De]}var Y=V(F());var l0=[null,null],_2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],be=[[0,0],[0,0]],$2=["hand","fist","pinch","point","face","tip","pinchtip"],Dn=4,qn=1.6,es=512,ts=1.4,Ft=Number.MAX_SAFE_INTEGER,to=0,se=[0,0],o0={boxes:[],hands:[]},Un={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function Jn(e){var t;if(T.initial&&(l0[0]=null),l0[0])e.debug&&b("cached model:",l0[0].modelUrl);else{Vt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),l0[0]=await G((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values(l0[0].modelSignature.inputs);be[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[0]}async function Yn(e){var t;if(T.initial&&(l0[1]=null),l0[1])e.debug&&b("cached model:",l0[1].modelUrl);else{l0[1]=await G((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values(l0[1].modelSignature.inputs);be[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[1]}async function os(e,t){let o=[];if(!e||!l0[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),r=Math.min(Math.round((e.shape[1]||0)/8)*8,es),s=Math.round(r*n/8)*8;A.resize=Y.image.resizeBilinear(e,[r,s]),A.cast=Y.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await l0[0].executeAsync(A.cast,_2),A.boxes=Y.squeeze(A.rawBoxes,[0,2]),A.scores=Y.squeeze(A.rawScores,[0]);let a=Y.unstack(A.scores,1);Y.dispose(a[Dn]),a.splice(Dn,1),A.filtered=Y.stack(a,1),Y.dispose(a),A.max=Y.max(A.filtered,1),A.argmax=Y.argMax(A.filtered,1);let y=0;A.nms=await Y.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let c=await A.nms.data(),i=await A.max.data(),l=await A.argmax.data();for(let x of Array.from(c)){let d=Y.slice(A.boxes,x,1),u=await d.data();Y.dispose(d);let f=[u[1],u[0],u[3]-u[1],u[2]-u[0]],M=jt(f,ts),h=[Math.trunc(f[0]*se[0]),Math.trunc(f[1]*se[1]),Math.trunc(f[2]*se[0]),Math.trunc(f[3]*se[1])],P=i[x],m=$2[l[x]],p={id:y++,score:P,box:h,boxRaw:M,label:m};o.push(p)}return Object.keys(A).forEach(x=>Y.dispose(A[x])),o.sort((x,d)=>d.score-x.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function oo(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&l0[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},r=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Y.image.cropAndResize(e,[r],[0],[be[1][0],be[1][1]],"bilinear"),n.div=Y.div(n.crop,H.tf255),[n.score,n.keypoints]=l0[1].execute(n.div,["Identity_1","Identity"]);let s=(await n.score.data())[0],a=(100-Math.trunc(100/(1+Math.exp(s))))/100;if(a>=(o.hand.minConfidence||0)){A.fingerScore=a,n.reshaped=Y.reshape(n.keypoints,[-1,3]);let i=(await n.reshaped.array()).map(l=>[l[0]/be[1][1],l[1]/be[1][0],l[2]||0]).map(l=>[l[0]*t.boxRaw[2],l[1]*t.boxRaw[3],l[2]||0]);A.keypoints=i.map(l=>[se[0]*(l[0]+t.boxRaw[0]),se[1]*(l[1]+t.boxRaw[1]),l[2]||0]),A.landmarks=Ht(A.keypoints);for(let l of Object.keys(Un))A.annotations[l]=Un[l].map(x=>A.landmarks&&A.keypoints[x]?A.keypoints[x]:null)}Object.keys(n).forEach(y=>Y.dispose(n[y]))}return A}async function Ao(e,t){var n,r;if(!l0[0]||!l0[1]||!((n=l0[0])==null?void 0:n.inputs[0].shape)||!((r=l0[1])==null?void 0:r.inputs[0].shape))return[];se=[e.shape[2]||0,e.shape[1]||0],Ft++;let o=(t.hand.skipTime||0)>g()-to,A=Ft<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?o0.hands:new Promise(async s=>{let a=3*(t.hand.skipTime||0)>g()-to,y=Ft<3*(t.hand.skipFrames||0);t.skipAllowed&&o0.hands.length===t.hand.maxDetected?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):t.skipAllowed&&a&&y&&o0.hands.length>0?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):(o0.boxes=await os(e,t),to=g(),o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))),Ft=0);let c=[...o0.boxes];if(o0.boxes.length=0,t.cacheSensitivity>0)for(let i=0;i.05&&l.box[3]/(e.shape[1]||1)>.05&&o0.hands[i].fingerScore&&o0.hands[i].fingerScore>(t.hand.minConfidence||0)){let x=jt(l.box,qn),d=jt(l.boxRaw,qn);o0.boxes.push({...c[i],box:x,boxRaw:d})}}for(let i=0;ig()-_n,r=no<(((a=t.face.liveness)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&Qn===A&&Zt[o]?(no++,Zt[o]):(no=0,new Promise(async y=>{let c=Xt.image.resizeBilinear(e,[(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[2]:0,(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[1]:0],!1),i=u0==null?void 0:u0.execute(c),l=(await i.data())[0];Zt[o]=Math.round(100*l)/100,Qn=A,_n=g(),Xt.dispose([c,i]),y(Zt[o])}))}var rr=V(F());var lt={};mt(lt,{connected:()=>qt,horizontal:()=>so,kpt:()=>Dt,relative:()=>io,vertical:()=>ao});var Dt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],so=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],ao=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],io=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],qt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var ge=V(F()),tr=.005,S0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function lo(e){for(let t of so){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]c&&c.part===t[0]),n=e.keypoints.findIndex(c=>c&&c.part===t[1]),r=e.keypoints.findIndex(c=>c&&c.part===o[0]),s=e.keypoints.findIndex(c=>c&&c.part===o[1]);if(!e.keypoints[r]||!e.keypoints[s])continue;let a=e.keypoints[A]?[Math.abs(e.keypoints[r].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0])]:[0,0],y=e.keypoints[n]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[r].position[0]-e.keypoints[n].position[0])]:[0,0];if(a[0]>a[1]||y[0]>y[1]){let c=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=c}}}function or(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=ge.pad(e,S0.padding),o.resize=ge.image.resizeBilinear(o.pad,[t,t]);let A=ge.cast(o.resize,"int32");return Object.keys(o).forEach(n=>ge.dispose(o[n])),A}function nr(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+S0.padding[2][0]+S0.padding[2][1])/t[0]-S0.padding[2][0],A.position[1]*(t[1]+S0.padding[1][0]+S0.padding[1][1])/t[1]-S0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=ee(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var W0,Ut=0,yo=Number.MAX_SAFE_INTEGER,Ee={boxes:[],bodies:[],last:0};async function sr(e){return T.initial&&(W0=null),W0?e.debug&&b("cached model:",W0.modelUrl):(Vt(["size"],e),W0=await G(e.body.modelPath)),Ut=W0.inputs[0].shape?W0.inputs[0].shape[2]:0,Ut<64&&(Ut=256),W0}async function ns(e,t,o){let A=e[0][0],n=[],r=0;for(let i=0;it.body.minConfidence){let l=[A[i][1],A[i][0]];n.push({score:Math.round(100*r)/100,part:Dt[i],positionRaw:l,position:[Math.round((o.shape[2]||0)*l[0]),Math.round((o.shape[1]||0)*l[1])]})}r=n.reduce((i,l)=>l.score>i?l.score:i,0);let s=[],a=ee(n.map(i=>i.position),[o.shape[2],o.shape[1]]),y={};for(let[i,l]of Object.entries(qt)){let x=[];for(let d=0;dM.part===l[d]),f=n.find(M=>M.part===l[d+1]);u&&f&&u.score>(t.body.minConfidence||0)&&f.score>(t.body.minConfidence||0)&&x.push([u.position,f.position])}y[i]=x}let c={id:0,score:r,box:a.box,boxRaw:a.boxRaw,keypoints:n,annotations:y};return lo(c),s.push(c),s}async function rs(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let a=[];for(let l=0;l<17;l++){let x=r[3*l+2];if(x>t.body.minConfidence){let d=[r[3*l+1],r[3*l+0]];a.push({part:Dt[l],score:Math.round(100*x)/100,positionRaw:d,position:[Math.round((o.shape[2]||0)*d[0]),Math.round((o.shape[1]||0)*d[1])]})}}let y=ee(a.map(l=>l.position),[o.shape[2],o.shape[1]]),c={};for(let[l,x]of Object.entries(qt)){let d=[];for(let u=0;uh.part===x[u]),M=a.find(h=>h.part===x[u+1]);f&&M&&f.score>(t.body.minConfidence||0)&&M.score>(t.body.minConfidence||0)&&d.push([f.position,M.position])}c[l]=d}let i={id:n,score:s,box:y.box,boxRaw:y.boxRaw,keypoints:[...a],annotations:c};lo(i),A.push(i)}}return A.sort((n,r)=>r.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function xo(e,t){if(!W0||!(W0==null?void 0:W0.inputs[0].shape))return[];t.skipAllowed||(Ee.boxes.length=0),yo++;let o=(t.body.skipTime||0)>g()-Ee.last,A=yo<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ee.bodies:new Promise(async n=>{let r={};yo=0,r.input=Ar(e,Ut),r.res=W0==null?void 0:W0.execute(r.input),Ee.last=g();let s=await r.res.array();Ee.bodies=r.res.shape[2]===17?await ns(s,t,e):await rs(s,t,e);for(let a of Ee.bodies)nr(a,[e.shape[2]||1,e.shape[1]||1]),or(a.keypoints);Object.keys(r).forEach(a=>rr.dispose(r[a])),n(Ee.bodies)})}var M0=V(F());var qe,Jt=[],ir=0,co=Number.MAX_SAFE_INTEGER,Kt=0,Yt=2.5;async function lr(e){if(!qe||T.initial){qe=await G(e.object.modelPath);let t=Object.values(qe.modelSignature.inputs);Kt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&b("cached model:",qe.modelUrl);return qe}async function ss(e,t,o){let A=0,n=[];for(let y of[1,2,4])M0.tidy(async()=>{let c=y*13,i=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)===Ne.length)),l=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)(o.object.minConfidence||0)&&M!==61){let P=(.5+Math.trunc(f%c))/c,m=(.5+Math.trunc(f/c))/c,p=d[f].map(q=>q*(c/y/Kt)),[k,C]=[P-Yt/y*p[0],m-Yt/y*p[1]],[O,j]=[P+Yt/y*p[2]-k,m+Yt/y*p[3]-C],L=[k,C,O,j];L=L.map(q=>Math.max(0,Math.min(q,1)));let J=[L[0]*t[0],L[1]*t[1],L[2]*t[0],L[3]*t[1]],Z={id:A++,score:Math.round(100*h)/100,class:M+1,label:Ne[M].label,box:J.map(q=>Math.trunc(q)),boxRaw:L};n.push(Z)}}});e.forEach(y=>M0.dispose(y));let r=n.map(y=>[y.boxRaw[1],y.boxRaw[0],y.boxRaw[3],y.boxRaw[2]]),s=n.map(y=>y.score),a=[];if(r&&r.length>0){let y=await M0.image.nonMaxSuppressionAsync(r,s,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);a=await y.data(),M0.dispose(y)}return n=n.filter((y,c)=>a.includes(c)).sort((y,c)=>c.score-y.score),n}async function fo(e,t){let o=(t.object.skipTime||0)>g()-ir,A=co<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&Jt.length>0?(co++,Jt):(co=0,!T.kernels.includes("mod")||!T.kernels.includes("sparsetodense")?Jt:new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=M0.image.resizeBilinear(e,[Kt,Kt],!1),a=M0.div(s,H.tf255),y=a.transpose([0,3,1,2]);M0.dispose(a),M0.dispose(s);let c;t.object.enabled&&(c=qe.execute(y)),ir=g(),M0.dispose(y);let i=await ss(c,r,t);Jt=i,n(i)}))}var v0=V(F());var xt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],as=xt.length,yt=xt.reduce((e,t,o)=>(e[t]=o,e),{}),is=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],T1=is.map(([e,t])=>[yt[e],yt[t]]),xr=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function cr(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:r},{position:{x:s,y:a}})=>({maxX:Math.max(o,s),maxY:Math.max(A,a),minX:Math.min(n,s),minY:Math.min(r,a)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function dr(e,[t,o],[A,n]){let r=t/A,s=o/n,a=(c,i)=>({id:i,score:c.score,boxRaw:[c.box[0]/n,c.box[1]/A,c.box[2]/n,c.box[3]/A],box:[Math.trunc(c.box[0]*s),Math.trunc(c.box[1]*r),Math.trunc(c.box[2]*s),Math.trunc(c.box[3]*r)],keypoints:c.keypoints.map(({score:l,part:x,position:d})=>({score:l,part:x,position:[Math.trunc(d.x*s),Math.trunc(d.y*r)],positionRaw:[d.x/A,d.y/A]})),annotations:{}});return e.map((c,i)=>a(c,i))}var mo=class{constructor(t,o){R(this,"priorityQueue");R(this,"numberOfElements");R(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function fr(e,t,o,A){let n=o-e,r=A-t;return n*n+r*r}function bo(e,t){return{x:e.x+t.x,y:e.y+t.y}}var X0,ys=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Qt=1,Ue=16,xs=50**2;function mr(e,t,o,A,n,r,s=2){let a=h=>({y:r.get(h.y,h.x,e),x:r.get(h.y,h.x,r.shape[2]/2+e)}),y=(h,P,m)=>({y:ho(Math.round(h.y/Ue),0,P-1),x:ho(Math.round(h.x/Ue),0,m-1)}),[c,i]=A.shape,l=y(t.position,c,i),x=a(l),u=bo(t.position,x);for(let h=0;h[yt[x],yt[d]]),s=r.map(([,x])=>x),a=r.map(([x])=>x),y=t.shape[2],c=s.length,i=new Array(y),l=uo(e.part,Ue,o);i[e.part.id]={score:e.score,part:xt[e.part.id],position:l};for(let x=c-1;x>=0;--x){let d=s[x],u=a[x];i[d]&&!i[u]&&(i[u]=mr(x,i[d],u,t,o,n))}for(let x=0;xt){a=!1;break}if(!a)break}return a}function fs(e,t){let[o,A,n]=t.shape,r=new mo(o*A*n,({score:s})=>s);for(let s=0;s{var s;let r=(s=n[A])==null?void 0:s.position;return r?fr(o,t,r.y,r.x)<=xs:!1})}function ms(e,t){return t.reduce((A,{position:n,score:r},s)=>(pr(e,n,s)||(A+=r),A),0)/t.length}function ps(e,t,o,A,n,r){let s=[],a=fs(r,t);for(;s.lengthd.score>r);let l=ms(s,i),x=cr(i);l>r&&s.push({keypoints:i,box:x,score:Math.round(100*l)/100})}return s}async function go(e,t){let o=v0.tidy(()=>{if(!X0.inputs[0].shape)return[];let s=v0.image.resizeBilinear(e,[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]),a=v0.sub(v0.div(v0.cast(s,"float32"),127.5),1),c=X0.execute(a,ys).map(i=>v0.squeeze(i,[0]));return c[1]=v0.sigmoid(c[1]),c}),A=await Promise.all(o.map(s=>s.buffer()));for(let s of o)v0.dispose(s);let n=await ps(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return X0.inputs[0].shape?dr(n,[e.shape[1],e.shape[2]],[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]):[]}async function ur(e){return!X0||T.initial?X0=await G(e.body.modelPath):e.debug&&b("cached model:",X0.modelUrl),X0}var t0=V(F());var J0,Po=!1;async function Mo(e){return!J0||T.initial?J0=await G(e.segmentation.modelPath):e.debug&&b("cached model:",J0.modelUrl),J0}async function br(e,t,o){var f,M;if(Po)return{data:[],canvas:null,alpha:null};Po=!0,J0||await Mo(o);let A=await We(e,o),n=((f=A.tensor)==null?void 0:f.shape[2])||0,r=((M=A.tensor)==null?void 0:M.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let s={};s.resize=t0.image.resizeBilinear(A.tensor,[J0.inputs[0].shape?J0.inputs[0].shape[1]:0,J0.inputs[0].shape?J0.inputs[0].shape[2]:0],!1),t0.dispose(A.tensor),s.norm=t0.div(s.resize,H.tf255),s.res=J0.execute(s.norm),s.squeeze=t0.squeeze(s.res,0),s.squeeze.shape[2]===2?(s.softmax=t0.softmax(s.squeeze),[s.bg,s.fg]=t0.unstack(s.softmax,2),s.expand=t0.expandDims(s.fg,2),s.pad=t0.expandDims(s.expand,0),s.crop=t0.image.cropAndResize(s.pad,[[0,0,.5,.5]],[0],[n,r]),s.data=t0.squeeze(s.crop,0)):s.data=t0.image.resizeBilinear(s.squeeze,[r,n]);let a=Array.from(await s.data.data());if(T.node&&!T.Canvas&&typeof ImageData=="undefined")return o.debug&&b("canvas support missing"),Object.keys(s).forEach(h=>t0.dispose(s[h])),{data:a,canvas:null,alpha:null};let y=h0(n,r);t0.browser&&await t0.browser.toPixels(s.data,y);let c=y.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`);let i=c.getImageData(0,0,n,r),l=h0(n,r),x=l.getContext("2d");A.canvas&&x.drawImage(A.canvas,0,0),x.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(x.filter=`blur(${o.segmentation.blur}px)`),x.drawImage(y,0,0),x.globalCompositeOperation="source-over",x.filter="none";let d=x.getImageData(0,0,n,r);for(let h=0;ht0.dispose(s[h])),Po=!1,{data:a,canvas:l,alpha:y}}var vo=class{constructor(){R(this,"ssrnetage",null);R(this,"gear",null);R(this,"blazeposedetect",null);R(this,"blazepose",null);R(this,"centernet",null);R(this,"efficientpose",null);R(this,"mobilefacenet",null);R(this,"emotion",null);R(this,"facedetect",null);R(this,"faceiris",null);R(this,"facemesh",null);R(this,"faceres",null);R(this,"ssrnetgender",null);R(this,"handpose",null);R(this,"handskeleton",null);R(this,"handtrack",null);R(this,"liveness",null);R(this,"movenet",null);R(this,"nanodet",null);R(this,"posenet",null);R(this,"segmentation",null);R(this,"antispoof",null)}};function To(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Pr(e){var t,o,A,n,r,s,a,y,c,i,l,x,d,u,f,M,h,P,m,p,k,C,O,j,L,J,Z,q,x0,E;T.initial&&To(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config))),e.config.body.enabled&&!e.models.blazepose&&((s=(r=e.config.body)==null?void 0:r.modelPath)==null?void 0:s.includes("blazepose"))&&(e.models.blazepose=XA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=ZA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((y=(a=e.config.body)==null?void 0:a.modelPath)==null?void 0:y.includes("efficientpose"))&&(e.models.efficientpose=KA(e.config)),e.config.body.enabled&&!e.models.movenet&&((i=(c=e.config.body)==null?void 0:c.modelPath)==null?void 0:i.includes("movenet"))&&(e.models.movenet=sr(e.config)),e.config.body.enabled&&!e.models.posenet&&((x=(l=e.config.body)==null?void 0:l.modelPath)==null?void 0:x.includes("posenet"))&&(e.models.posenet=ur(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=OA(e.config)),e.config.face.enabled&&((d=e.config.face.antispoof)==null?void 0:d.enabled)&&!e.models.antispoof&&(e.models.antispoof=PA(e.config)),e.config.face.enabled&&((u=e.config.face.liveness)==null?void 0:u.enabled)&&!e.models.liveness&&(e.models.liveness=$n(e.config)),e.config.face.enabled&&((f=e.config.face.description)==null?void 0:f.enabled)&&!e.models.faceres&&(e.models.faceres=Pn(e.config)),e.config.face.enabled&&((M=e.config.face.emotion)==null?void 0:M.enabled)&&!e.models.emotion&&(e.models.emotion=en(e.config)),e.config.face.enabled&&((h=e.config.face.iris)==null?void 0:h.enabled)&&!e.models.faceiris&&(e.models.faceiris=cn(e.config)),e.config.face.enabled&&((P=e.config.face.mesh)==null?void 0:P.enabled)&&!e.models.facemesh&&(e.models.facemesh=pn(e.config)),e.config.face.enabled&&((m=e.config.face.gear)==null?void 0:m.enabled)&&!e.models.gear&&(e.models.gear=iA(e.config)),e.config.face.enabled&&((p=e.config.face.ssrnet)==null?void 0:p.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=dA(e.config)),e.config.face.enabled&&((k=e.config.face.ssrnet)==null?void 0:k.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=uA(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=sn(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((j=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:j.includes("handtrack"))&&(e.models.handtrack=Jn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((J=(L=e.config.hand.detector)==null?void 0:L.modelPath)==null?void 0:J.includes("handtrack"))&&(e.models.handskeleton=Yn(e.config)),e.config.object.enabled&&!e.models.centernet&&((q=(Z=e.config.object)==null?void 0:Z.modelPath)==null?void 0:q.includes("centernet"))&&(e.models.centernet=UA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((E=(x0=e.config.object)==null?void 0:x0.modelPath)==null?void 0:E.includes("nanodet"))&&(e.models.nanodet=lr(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=Mo(e.config));for await(let C0 of Object.keys(e.models))e.models[C0]&&typeof e.models[C0]!="undefined"&&(e.models[C0]=await e.models[C0])}async function Mr(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],r=A==null?void 0:A.executor;if(r&&r.graph.nodes)for(let a of Object.values(r.graph.nodes)){let y=a.op.toLowerCase();n.includes(y)||n.push(y)}else!r&&e.config.debug&&b("model signature not determined:",o);let s=[];for(let a of n)!t.includes(a)&&!e.env.kernels.includes(a)&&!e.env.kernels.includes(a.replace("_",""))&&!e.env.kernels.includes(a.replace("native",""))&&!e.env.kernels.includes(a.replace("v2",""))&&s.push(a);e.config.debug&&s.length>0&&b("model validation failed:",o,s)}}var $={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function us(){let e=$.gl;!e||($.extensions=e.getSupportedExtensions())}async function Tr(e){var t;if(e.config.backend==="humangl"&&($.name in s0.engine().registry&&(!$.gl||!$.gl.getParameter($.gl.VERSION))&&(b("error: humangl backend invalid context"),To(e)),!s0.findBackend($.name))){try{$.canvas=await h0(100,100)}catch(A){b("error: cannot create canvas:",A);return}try{if($.gl=(t=$.canvas)==null?void 0:t.getContext("webgl2",$.webGLattr),!$.gl.getParameter($.gl.VERSION).includes("2.0")){b("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}$.canvas&&($.canvas.addEventListener("webglcontextlost",async n=>{throw b("error: humangl:",n.type),b("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),$.canvas.addEventListener("webglcontextrestored",n=>{b("error: humangl context restored:",n)}),$.canvas.addEventListener("webglcontextcreationerror",n=>{b("error: humangl context create:",n)}))}catch(A){b("error: cannot get WebGL context:",A);return}try{s0.setWebGLContext(2,$.gl)}catch(A){b("error: cannot set WebGL context:",A);return}try{let A=new s0.GPGPUContext($.gl);s0.registerBackend($.name,()=>new s0.MathBackendWebGL(A),$.priority)}catch(A){b("error: cannot register WebGL backend:",A);return}try{s0.getKernelsForBackend("webgl").forEach(n=>{let r={...n,backendName:$.name};s0.registerKernel(r)})}catch(A){b("error: cannot update WebGL backend registration:",A);return}let o=s0.backend().getGPGPUContext?s0.backend().getGPGPUContext().gl:null;if(o)b(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{b("error: no current gl context:",o,$.gl);return}try{s0.ENV.set("WEBGL_VERSION",2)}catch(A){b("error: cannot set WebGL backend flags:",A);return}us(),b("backend registered:",$.name)}}var S=V(F());function hs(){if(!T.kernels.includes("mod")){let e={kernelName:"Mod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.sub(t.inputs.a,S.mul(S.div(t.inputs.a,t.inputs.b),t.inputs.b)))};S.registerKernel(e),T.kernels.push("mod")}if(!T.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+S.mod(t.inputs.a,t.inputs.b))};S.registerKernel(e),T.kernels.push("floormod")}}async function _t(e,t=!1){if(e.state="backend",t||T.initial||e.config.backend&&e.config.backend.length>0&&S.getBackend()!==e.config.backend){let o=g();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&b("running inside web worker"),T.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&b("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),T.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&b(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),T.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")b("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&b("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Tr(e);let A=Object.keys(S.engine().registryFactory);if(e.config.debug&&b("available backends:",A),A.includes(e.config.backend)||(b(`error: backend ${e.config.backend} not found in registry`),e.config.backend=T.node?"tensorflow":"webgl",e.config.debug&&b(`override: setting backend ${e.config.backend}`)),e.config.debug&&b("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&b("wasm path:",e.config.wasmPath),typeof(S==null?void 0:S.setWasmPaths)!="undefined")await S.setWasmPaths(e.config.wasmPath,e.config.wasmPlatformFetch);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await S.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await S.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&b(`wasm execution: ${n?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&b("warning: wasm simd support is not enabled")}try{await S.setBackend(e.config.backend),await S.ready(),yA()}catch(n){return b("error: cannot set backend:",e.config.backend,n),!1}}if(S.getBackend()==="humangl"&&(S.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),S.ENV.set("WEBGL_CPU_FORWARD",!0),S.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),S.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(b("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),S.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),S.backend().getGPGPUContext)){let A=await S.backend().getGPGPUContext().gl;e.config.debug&&b(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}S.getBackend()==="webgpu",S.enableProdMode(),await S.ready(),e.performance.initBackend=Math.trunc(g()-o),e.config.backend=S.getBackend(),await T.updateBackend(),hs()}return!0}function Vt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&b("kernelFunc",o,t.backend)}};S.registerKernel(A)}T.kernels=S.getKernelsForBackend(S.getBackend()).map(o=>o.kernelName.toLowerCase())}var ae={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},Ro=0,ze=e=>{if(!e)b("draw error: invalid canvas");else if(!e.getContext)b("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)b("draw error: cannot get canvas context");else return t}return null},Je=e=>Math.round(e*180/Math.PI);function wo(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function ct(e,t,o,A,n,r){if(e.beginPath(),e.lineWidth=r.lineWidth,r.useCurves){let s=(t+t+A)/2,a=(o+o+n)/2;e.ellipse(s,a,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+r.roundRect,o),e.lineTo(t+A-r.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+r.roundRect),e.lineTo(t+A,o+n-r.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-r.roundRect,o+n),e.lineTo(t+r.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-r.roundRect),e.lineTo(t,o+r.roundRect),e.quadraticCurveTo(t,o,t+r.roundRect,o),e.closePath();e.stroke()}function kr(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function gs(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){kr(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&y[1].length>0){let c=a[1]>0?`#${a[1]}`:"",i=`${a[0]} ${c}: ${y[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(i,8,2+r*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(i,6,0+r*A.lineHeight),r+=1}}}}async function Eo(e,t,o){var r,s,a,y,c;let A=c0(ae,o);if(!t||!e)return;let n=ze(e);if(!!n)for(let i of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&ct(n,i.box[0],i.box[1],i.box[2],i.box[3],A),A.drawLabels){let l=[];if(l.push(`face: ${Math.trunc(100*i.score)}%`),i.genderScore&&l.push(`${i.gender||""} ${Math.trunc(100*i.genderScore)}%`),i.age&&l.push(`age: ${i.age||""}`),i.iris&&l.push(`distance: ${i.iris}`),i.real&&l.push(`real: ${Math.trunc(100*i.real)}%`),i.live&&l.push(`live: ${Math.trunc(100*i.live)}%`),i.emotion&&i.emotion.length>0){let x=i.emotion.map(d=>`${Math.trunc(100*d.score)}% ${d.emotion}`);x.length>3&&(x.length=3),l.push(x.join(" "))}i.rotation&&i.rotation.angle&&i.rotation.gaze&&(i.rotation.angle.roll&&l.push(`roll: ${Je(i.rotation.angle.roll)}\xB0 yaw:${Je(i.rotation.angle.yaw)}\xB0 pitch:${Je(i.rotation.angle.pitch)}\xB0`),i.rotation.gaze.bearing&&l.push(`gaze: ${Je(i.rotation.gaze.bearing)}\xB0`)),l.length===0&&l.push("face"),n.fillStyle=A.color;for(let x=l.length-1;x>=0;x--){let d=Math.max(i.box[0],0),u=x*A.lineHeight+i.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l[x],d+5,u+16)),n.fillStyle=A.labelColor,n.fillText(l[x],d+4,u+15)}}if(n.lineWidth=2,i.mesh&&i.mesh.length>0){if(A.drawPoints)for(let l of i.mesh)wo(n,l[0],l[1],l[2],A);if(A.drawPolygons){if(i.mesh.length>450)for(let l=0;li.mesh[d]);kr(n,x,A)}if(i.annotations&&i.annotations.leftEyeIris&&i.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.leftEyeIris[3][0]-i.annotations.leftEyeIris[1][0])/2,x=Math.abs(i.annotations.leftEyeIris[4][1]-i.annotations.leftEyeIris[2][1])/2;n.ellipse(i.annotations.leftEyeIris[0][0],i.annotations.leftEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(i.annotations&&i.annotations.rightEyeIris&&i.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.rightEyeIris[3][0]-i.annotations.rightEyeIris[1][0])/2,x=Math.abs(i.annotations.rightEyeIris[4][1]-i.annotations.rightEyeIris[2][1])/2;n.ellipse(i.annotations.rightEyeIris[0][0],i.annotations.rightEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((r=i.rotation)==null?void 0:r.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let l=i.box[0]+i.box[2]/2-i.box[3]*Je(i.rotation.angle.yaw)/90,x=i.box[1]+i.box[3]/2+i.box[2]*Je(i.rotation.angle.pitch)/90,d=new Path2D(` M ${i.box[0]+i.box[2]/2} ${i.box[1]} C ${l} ${i.box[1]}, diff --git a/dist/human.node-wasm.d.ts b/dist/human.node-wasm.d.ts index fca0ad10..121f5b21 100644 --- a/dist/human.node-wasm.d.ts +++ b/dist/human.node-wasm.d.ts @@ -167,6 +167,11 @@ export declare interface Config { * default: auto-detects to link to CDN `jsdelivr` when running in browser */ wasmPath: string; + /** Force WASM loader to use platform fetch + * + * default: auto-detects to link to CDN `jsdelivr` when running in browser + */ + wasmPlatformFetch: false; /** Print debug statements to console * * default: `true` diff --git a/dist/human.node-wasm.js b/dist/human.node-wasm.js index ff21b7da..c6469f1e 100644 --- a/dist/human.node-wasm.js +++ b/dist/human.node-wasm.js @@ -4,7 +4,7 @@ author: ' */ -var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Jr=Object.getPrototypeOf,Yr=Object.prototype.hasOwnProperty;var Kr=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Vo=e=>$e(e,"__esModule",{value:!0});var Qr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mt=(e,t)=>{for(var o in t)$e(e,o,{get:t[o],enumerable:!0})},Zo=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ur(t))!Yr.call(e,n)&&(o||n!=="default")&&$e(e,n,{get:()=>t[n],enumerable:!(A=qr(t,n))||A.enumerable});return e},V=(e,t)=>Zo(Vo($e(e!=null?Dr(Jr(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),_r=(e=>(t,o)=>e&&e.get(t)||(o=Zo(Vo({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0);var R=(e,t,o)=>(Kr(e,typeof t!="symbol"?t+"":t,o),o),Xo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var et=(e,t,o)=>(Xo(e,t,"read from private field"),o?o.call(e):t.get(e)),tt=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ot=(e,t,o,A)=>(Xo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);var F=Qr((Gs,Uo)=>{var qo=Object.defineProperty,$r=Object.getOwnPropertyDescriptor,e2=Object.getOwnPropertyNames,t2=Object.prototype.hasOwnProperty,o2=e=>qo(e,"__esModule",{value:!0}),n5=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of e2(t))!t2.call(e,n)&&(o||n!=="default")&&qo(e,n,{get:()=>t[n],enumerable:!(A=$r(t,n))||A.enumerable});return e},A2=(e=>(t,o)=>e&&e.get(t)||(o=n5(o2({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0),r5={};n5(r5,require("@tensorflow/tfjs"));n5(r5,require("@tensorflow/tfjs-backend-wasm"));Uo.exports=A2(r5)});var Is={};mt(Is,{Human:()=>Xr,default:()=>Xr,defaults:()=>le,env:()=>T});function b(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function Do(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var g=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function A5(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")A5(e[n],t[n],n,A);else{let r=e&&typeof e[n]!="undefined";r||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let s=e&&typeof e[n]==typeof t[n];r&&!s&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&b("invalid configuration",A),A}function c0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let r=o[n],s=A[n];Array.isArray(r)&&Array.isArray(s)?o[n]=r.concat(...s):t(r)&&t(s)?o[n]=c0(r,s):o[n]=s}),o),{})}var le={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var d0=V(F());var W=V(F());var Jo=` +var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Jr=Object.getPrototypeOf,Yr=Object.prototype.hasOwnProperty;var Kr=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Vo=e=>$e(e,"__esModule",{value:!0});var Qr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mt=(e,t)=>{for(var o in t)$e(e,o,{get:t[o],enumerable:!0})},Zo=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ur(t))!Yr.call(e,n)&&(o||n!=="default")&&$e(e,n,{get:()=>t[n],enumerable:!(A=qr(t,n))||A.enumerable});return e},V=(e,t)=>Zo(Vo($e(e!=null?Dr(Jr(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),_r=(e=>(t,o)=>e&&e.get(t)||(o=Zo(Vo({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0);var R=(e,t,o)=>(Kr(e,typeof t!="symbol"?t+"":t,o),o),Xo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var et=(e,t,o)=>(Xo(e,t,"read from private field"),o?o.call(e):t.get(e)),tt=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ot=(e,t,o,A)=>(Xo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);var F=Qr((Gs,Uo)=>{var qo=Object.defineProperty,$r=Object.getOwnPropertyDescriptor,e2=Object.getOwnPropertyNames,t2=Object.prototype.hasOwnProperty,o2=e=>qo(e,"__esModule",{value:!0}),n5=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of e2(t))!t2.call(e,n)&&(o||n!=="default")&&qo(e,n,{get:()=>t[n],enumerable:!(A=$r(t,n))||A.enumerable});return e},A2=(e=>(t,o)=>e&&e.get(t)||(o=n5(o2({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0),r5={};n5(r5,require("@tensorflow/tfjs"));n5(r5,require("@tensorflow/tfjs-backend-wasm"));Uo.exports=A2(r5)});var Is={};mt(Is,{Human:()=>Xr,default:()=>Xr,defaults:()=>le,env:()=>T});function b(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function Do(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var g=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function A5(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")A5(e[n],t[n],n,A);else{let r=e&&typeof e[n]!="undefined";r||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let s=e&&typeof e[n]==typeof t[n];r&&!s&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&b("invalid configuration",A),A}function c0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let r=o[n],s=A[n];Array.isArray(r)&&Array.isArray(s)?o[n]=r.concat(...s):t(r)&&t(s)?o[n]=c0(r,s):o[n]=s}),o),{})}var le={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var d0=V(F());var W=V(F());var Jo=` precision highp float; attribute vec2 pos; attribute vec2 uv; @@ -96,7 +96,7 @@ var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDe c31 * m[6] + c32 * m[7] + c33 * m[8]; gl_FragColor.a = c22.a; } -`;var s5=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,r)=>(o[r]=0,n))},eA=class{constructor(t,o,A){R(this,"uniform",{});R(this,"attribute",{});R(this,"gl");R(this,"id");R(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(b(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(b("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),r=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!r)){if(!this.id){b("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,r),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){b(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),s5(o,"attribute",this.attribute);for(let s in this.attribute)this.attribute[s]=this.gl.getAttribLocation(this.id,s);s5(o,"uniform",this.uniform),s5(A,"uniform",this.uniform);for(let s in this.uniform)this.uniform[s]=this.gl.getUniformLocation(this.id,s)}}};function tA(){let e=0,t=null,o=!1,A=-1,n=[null,null],r=[],s=null,a=null,y=h0(100,100),c={},i={INTERMEDIATE:1},l=y.getContext("webgl");if(this.gl=l,!l){b("filter: cannot get webgl context");return}function x(P,m){if(!(P===y.width&&m===y.height)){if(y.width=P,y.height=m,!s){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);s=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,s),l.bufferData(l.ARRAY_BUFFER,p,l.STATIC_DRAW),l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}l.viewport(0,0,y.width,y.height),n=[null,null]}}function d(P,m){let p=l.createFramebuffer();l.bindFramebuffer(l.FRAMEBUFFER,p);let k=l.createRenderbuffer();l.bindRenderbuffer(l.RENDERBUFFER,k);let C=l.createTexture();return l.bindTexture(l.TEXTURE_2D,C),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,P,m,0,l.RGBA,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,C,0),l.bindTexture(l.TEXTURE_2D,null),l.bindFramebuffer(l.FRAMEBUFFER,null),{fbo:p,texture:C}}function u(P){return n[P]=n[P]||d(y.width,y.height),n[P]}function f(P=0){if(!a)return;let m=null,p=null,k=!1;e===0?m=t:m=u(A).texture||null,e++,o&&!(P&i.INTERMEDIATE)?(p=null,k=e%2===0):(A=(A+1)%2,p=u(A).fbo||null),l.bindTexture(l.TEXTURE_2D,m),l.bindFramebuffer(l.FRAMEBUFFER,p),l.uniform1f(a.uniform.flipY,k?-1:1),l.drawArrays(l.TRIANGLES,0,6)}function M(P){if(c[P])return a=c[P],l.useProgram((a?a.id:null)||null),a;if(a=new eA(l,Jo,P),!a)return b("filter: could not get webgl program"),null;let m=Float32Array.BYTES_PER_ELEMENT,p=4*m;return l.enableVertexAttribArray(a.attribute.pos),l.vertexAttribPointer(a.attribute.pos,2,l.FLOAT,!1,p,0*m),l.enableVertexAttribArray(a.attribute.uv),l.vertexAttribPointer(a.attribute.uv,2,l.FLOAT,!1,p,2*m),c[P]=a,a}let h={colorMatrix:P=>{let m=new Float32Array(P);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let p=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?Ko:Yo,k=M(p);!k||(l.uniform1fv(k.uniform.m,m),f())},brightness:P=>{let m=(P||0)+1;h.colorMatrix([m,0,0,0,0,0,m,0,0,0,0,0,m,0,0,0,0,0,1,0])},saturation:P=>{let m=(P||0)*2/3+1,p=(m-1)*-.5;h.colorMatrix([m,p,p,0,0,p,m,p,0,0,p,p,m,0,0,0,0,0,1,0])},desaturate:()=>{h.saturation(-1)},contrast:P=>{let m=(P||0)+1,p=-128*(m-1);h.colorMatrix([m,0,0,0,p,0,m,0,0,p,0,0,m,0,p,0,0,0,1,0])},negative:()=>{h.contrast(-2)},hue:P=>{P=(P||0)/180*Math.PI;let m=Math.cos(P),p=Math.sin(P),k=.213,C=.715,O=.072;h.colorMatrix([k+m*(1-k)+p*-k,C+m*-C+p*-C,O+m*-O+p*(1-O),0,0,k+m*-k+p*.143,C+m*(1-C)+p*.14,O+m*-O+p*-.283,0,0,k+m*-k+p*-(1-k),C+m*-C+p*C,O+m*(1-O)+p*O,0,0,0,0,0,1,0])},desaturateLuminance:()=>{h.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{h.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{h.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{h.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{h.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{h.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{h.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{h.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:P=>{let m=new Float32Array(P),p=1/y.width,k=1/y.height,C=M($o);!C||(l.uniform1fv(C.uniform.m,m),l.uniform2f(C.uniform.px,p,k),f())},detectEdges:()=>{h.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{h.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{h.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:P=>{let m=P||1;h.convolution.call(this,[0,-1*m,0,-1*m,1+4*m,-1*m,0,-1*m,0])},emboss:P=>{let m=P||1;h.convolution.call(this,[-2*m,-1*m,0,-1*m,1,1*m,0,1*m,2*m])},blur:P=>{let m=P/7/y.width,p=P/7/y.height,k=M(_o);!k||(l.uniform2f(k.uniform.px,0,p),f(i.INTERMEDIATE),l.uniform2f(k.uniform.px,m,0),f())},pixelate:P=>{let m=P/y.width,p=P/y.height,k=M(Qo);!k||(l.uniform2f(k.uniform.size,m,p),f())}};this.add=function(P){let m=Array.prototype.slice.call(arguments,1),p=h[P];r.push({func:p,args:m})},this.reset=function(){r=[]},this.get=function(){return r},this.apply=function(P){x(P.width,P.height),e=0,t||(t=l.createTexture()),l.bindTexture(l.TEXTURE_2D,t),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,P);for(let m=0;md.data())),s=.99*Math.max(r[0][0],r[1][0],r[2][0]),a=[X.sub(o[0],A[0]),X.sub(o[1],A[1]),X.sub(o[2],A[2])],y=[X.sub(n[0],A[0]),X.sub(n[1],A[1]),X.sub(n[2],A[2])],c=[X.div(s,y[0]),X.div(s,y[1]),X.div(s,y[2])],i=[X.mul(a[0],c[0]),X.mul(a[1],c[1]),X.mul(a[2],c[2])],l=X.stack([i[0],i[1],i[2]],2),x=X.reshape(l,[1,t.shape[0],t.shape[1],3]);return X.dispose([...o,...A,...n,...a,...y,...c,...i,l,t]),x}var ut=2048,D=null,i0=null,Se=null,_,Q0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function h0(e,t){let o;if(T.browser)if(T.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof T.Canvas!="undefined"?o=new T.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function a5(e,t){let o=t||h0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function We(e,t,o=!0){if(!e)return t.debug&&b("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof W.Tensor)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof T.Canvas!="undefined"&&e instanceof T.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof W.Tensor){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=W.expandDims(e,0);else if(e.shape[2]===4){let n=W.slice3d(e,[0,0,0],[-1,-1,3]);A=W.expandDims(n,0),W.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=W.clone(e):e.shape[3]===4&&(A=W.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=W.cast(A,"float32");W.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?i0:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&b("input stream is not ready"),{tensor:null,canvas:D};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&b("cannot determine input dimensions"),{tensor:null,canvas:D};let r=A,s=n;if(r>ut&&(r=ut,s=Math.trunc(r*n/A)),s>ut&&(s=ut,r=Math.trunc(s*A/n)),(t.filter.width||0)>0?r=t.filter.width:(t.filter.height||0)>0&&(r=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?s=t.filter.height:(t.filter.width||0)>0&&(s=n*((t.filter.width||0)/A)),!r||!s)throw new Error("input error: cannot determine dimension");(!D||(D==null?void 0:D.width)!==r||(D==null?void 0:D.height)!==s)&&(D=h0(r,s));let a=D.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?a.putImageData(e,0,0):t.filter.flip&&typeof a.translate!="undefined"?(a.translate(A,0),a.scale(-1,1),a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),a.setTransform(1,0,0,1,0,0)):a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),(!i0||D.width!==i0.width||(D==null?void 0:D.height)!==(i0==null?void 0:i0.height))&&(i0=h0(D.width,D.height)),t.filter.enabled&&T.webgl.supported){if(_||(_=T.browser?new tA:null),T.filter=!!_,!_||!_.add)return t.debug&&b("input process error: cannot initialize filters"),{tensor:null,canvas:D};_.reset(),t.filter.brightness!==0&&_.add("brightness",t.filter.brightness),t.filter.contrast!==0&&_.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&_.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&_.add("blur",t.filter.blur),t.filter.saturation!==0&&_.add("saturation",t.filter.saturation),t.filter.hue!==0&&_.add("hue",t.filter.hue),t.filter.negative&&_.add("negative"),t.filter.sepia&&_.add("sepia"),t.filter.vintage&&_.add("brownie"),t.filter.sepia&&_.add("sepia"),t.filter.kodachrome&&_.add("kodachrome"),t.filter.technicolor&&_.add("technicolor"),t.filter.polaroid&&_.add("polaroid"),t.filter.pixelate!==0&&_.add("pixelate",t.filter.pixelate),_.get()>0?i0=_.apply(D):i0=_.draw(D)}else a5(D,i0),_&&(_=null),T.filter=!!_;if(!o)return{tensor:null,canvas:i0};if(!i0)throw new Error("canvas error: cannot create output");let y,c=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(T.browser&&W.browser)y=W.browser?W.browser.fromPixels(e):null;else{c=e.data.length/e.height/e.width;let x=new Uint8Array(e.data.buffer);y=W.tensor(x,[e.height,e.width,c],"int32")}else if((!Se||i0.width!==Se.width||i0.height!==Se.height)&&(Se=h0(i0.width,i0.height)),W.browser&&T.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?y=W.browser.fromPixels(i0):(Se=a5(i0),y=W.browser.fromPixels(Se));else{let u=a5(i0).getContext("2d").getImageData(0,0,r,s);c=u.data.length/r/s;let f=new Uint8Array(u.data.buffer);y=W.tensor(f,[r,s,c])}if(c===4){let x=W.slice3d(y,[0,0,0],[-1,-1,3]);W.dispose(y),y=x}if(!y)throw new Error("input error: cannot create tensor");let i=W.cast(y,"float32"),l=t.filter.equalization?await pt(i):W.expandDims(i,0);return W.dispose([y,i]),{tensor:l,canvas:t.filter.return?i0:null}}}async function oA(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!Q0.inputTensor)Q0.inputTensor=W.clone(t);else if(Q0.inputTensor.shape[1]!==t.shape[1]||Q0.inputTensor.shape[2]!==t.shape[2])W.dispose(Q0.inputTensor),Q0.inputTensor=W.clone(t);else{let A={};A.diff=W.sub(t,Q0.inputTensor),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;W.dispose([Q0.inputTensor,A.diff,A.squared,A.sum]),Q0.inputTensor=W.clone(t),o=r<=(e.cacheSensitivity||0)}return o}async function AA(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||b("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||b("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=W.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?W.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):W.clone(o),A.diff=W.sub(A.input1,A.input2),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return W.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),r}var nA=class{constructor(){R(this,"browser");R(this,"node");R(this,"worker");R(this,"platform","");R(this,"agent","");R(this,"backends",[]);R(this,"initial");R(this,"filter");R(this,"tfjs");R(this,"offscreen");R(this,"perfadd",!1);R(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});R(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});R(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});R(this,"cpu",{model:void 0,flags:[]});R(this,"kernels",[]);R(this,"Canvas");R(this,"Image");R(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:d0.version["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(d0.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&d0.getBackend()==="wasm"&&(this.wasm.simd=await d0.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await d0.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=h0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(d0.getBackend()==="webgl"||d0.getBackend()==="humangl")){let A=d0.backend().gpgpu!=="undefined"?await d0.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=d0.getKernelsForBackend(d0.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},T=new nA;var ht=V(F()),_0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function a2(e,t){return _0.debug&&b("load model fetch:",e,t),fetch(e,t)}function rA(e){_0.cacheModels=e.cacheModels,_0.verbose=e.debug,_0.modelBasePath=e.modelBasePath}async function G(e){let t=Do(_0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await ht.io.listModels(),r=_0.cacheModels&&Object.keys(n).includes(A),s=typeof fetch=="undefined"?{}:{fetchFunc:(y,c)=>a2(y,c)},a=new ht.GraphModel(r?A:t,s);try{a.findIOHandler(),_0.debug&&b("model load handler:",a.handler);let y=await a.handler.load();a.loadSync(y),_0.verbose&&b("load model:",a.modelUrl)}catch(y){b("error loading model:",t,y)}if(_0.cacheModels&&!r)try{let y=await a.save(A);b("model saved:",A,y)}catch(y){b("error saving model:",t,y)}return a}var D0=V(F());var i5="2.6.2";var s0=V(F());var bt=V(F());var I0,l5=[],y2=["white","black","asian","indian","other"],x2=[15,23,28,35.5,45.5,55.5,65],sA=0,aA=0,y5=Number.MAX_SAFE_INTEGER;async function iA(e){return T.initial&&(I0=null),I0?e.debug&&b("cached model:",I0.modelUrl):I0=await G(e.face.gear),I0}async function x5(e,t,o,A){var s,a;if(!I0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=y5<(((s=t.face.gear)==null?void 0:s.skipFrames)||0),r=(((a=t.face.gear)==null?void 0:a.skipTime)||0)>g()-aA;return t.skipAllowed&&r&&n&&sA===A&&l5[o]?(y5++,l5[o]):(y5=0,new Promise(async y=>{var h,P;if(!(I0==null?void 0:I0.inputs[0].shape))return;let c={},i=[[0,.1,.9,.9]];c.resize=bt.image.cropAndResize(e,i,[0],[I0.inputs[0].shape[2],I0.inputs[0].shape[1]]);let l={age:0,gender:"unknown",genderScore:0,race:[]};((h=t.face.gear)==null?void 0:h.enabled)&&([c.age,c.gender,c.race]=I0.execute(c.resize,["age_output","gender_output","race_output"]));let x=await c.gender.data();l.gender=x[0]>x[1]?"male":"female",l.genderScore=Math.round(100*(x[0]>x[1]?x[0]:x[1]))/100;let d=await c.race.data();for(let m=0;m(((P=t.face.gear)==null?void 0:P.minConfidence)||.2)&&l.race.push({score:Math.round(100*d[m])/100,race:y2[m]});l.race.sort((m,p)=>p.score-m.score);let f=Array.from(await c.age.data()).map((m,p)=>[x2[p],m]).sort((m,p)=>p[1]-m[1]),M=f[0][0];for(let m=1;mbt.dispose(c[m])),l5[o]=l,sA=A,aA=g(),y(l)}))}var Ce=V(F());var ye=V(F()),H={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function yA(){H.tf255=ye.scalar(255,"float32"),H.tf1=ye.scalar(1,"float32"),H.tf2=ye.scalar(2,"float32"),H.tf05=ye.scalar(.5,"float32"),H.tf127=ye.scalar(127.5,"float32"),H.rgb=ye.tensor1d([.2989,.587,.114],"float32")}var T0,gt=[],xA=0,cA=0,c5=Number.MAX_SAFE_INTEGER;async function dA(e){return T.initial&&(T0=null),T0?e.debug&&b("cached model:",T0.modelUrl):T0=await G(e.face.ssrnet.modelPathAge),T0}async function d5(e,t,o,A){var s,a,y,c;if(!T0)return{age:0};let n=c5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-cA;return t.skipAllowed&&n&&r&&xA===A&&((y=gt[o])==null?void 0:y.age)&&((c=gt[o])==null?void 0:c.age)>0?(c5++,gt[o]):(c5=0,new Promise(async i=>{if(!(T0==null?void 0:T0.inputs)||!T0.inputs[0]||!T0.inputs[0].shape)return;let l={};l.resize=Ce.image.resizeBilinear(e,[T0.inputs[0].shape[2],T0.inputs[0].shape[1]],!1),l.enhance=Ce.mul(l.resize,H.tf255);let x={age:0};if(t.face.ssrnet.enabled&&(l.age=T0.execute(l.enhance)),l.age){let d=await l.age.data();x.age=Math.trunc(10*d[0])/10}Object.keys(l).forEach(d=>Ce.dispose(l[d])),gt[o]=x,xA=A,cA=g(),i(x)}))}var f0=V(F());var N0,Pt=[],mA=0,pA=0,f5=Number.MAX_SAFE_INTEGER,m5=[.2989,.587,.114];async function uA(e){return T.initial&&(N0=null),N0?e.debug&&b("cached model:",N0.modelUrl):N0=await G(e.face.ssrnet.modelPathGender),N0}async function p5(e,t,o,A){var s,a,y,c;if(!N0)return{gender:"unknown",genderScore:0};let n=f5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-pA;return t.skipAllowed&&n&&r&&mA===A&&((y=Pt[o])==null?void 0:y.gender)&&((c=Pt[o])==null?void 0:c.genderScore)>0?(f5++,Pt[o]):(f5=0,new Promise(async i=>{if(!(N0==null?void 0:N0.inputs[0].shape))return;let l={};l.resize=f0.image.resizeBilinear(e,[N0.inputs[0].shape[2],N0.inputs[0].shape[1]],!1),l.enhance=f0.tidy(()=>{let[u,f,M]=f0.split(l.resize,3,3),h=f0.mul(u,m5[0]),P=f0.mul(f,m5[1]),m=f0.mul(M,m5[2]),p=f0.addN([h,P,m]);return f0.mul(f0.sub(p,H.tf05),2)});let x={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(l.gender=N0.execute(l.enhance));let d=await l.gender.data();x.gender=d[0]>d[1]?"female":"male",x.genderScore=d[0]>d[1]?Math.trunc(100*d[0])/100:Math.trunc(100*d[1])/100,Object.keys(l).forEach(u=>f0.dispose(l[u])),Pt[o]=x,mA=A,pA=g(),i(x)}))}var vt=V(F());var m0,Mt=[],u5=Number.MAX_SAFE_INTEGER,bA=0,gA=0;async function PA(e){var t;return T.initial&&(m0=null),m0?e.debug&&b("cached model:",m0.modelUrl):m0=await G((t=e.face.antispoof)==null?void 0:t.modelPath),m0}async function h5(e,t,o,A){var s,a;if(!m0)return 0;let n=(((s=t.face.antispoof)==null?void 0:s.skipTime)||0)>g()-gA,r=u5<(((a=t.face.antispoof)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&bA===A&&Mt[o]?(u5++,Mt[o]):(u5=0,new Promise(async y=>{let c=vt.image.resizeBilinear(e,[(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[2]:0,(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[1]:0],!1),i=m0==null?void 0:m0.execute(c),l=(await i.data())[0];Mt[o]=Math.round(100*l)/100,bA=A,gA=g(),vt.dispose([c,i]),y(Mt[o])}))}var N=V(F());var $0=V(F());var L0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},b5={count:468,mouth:13,symmetryLine:[13,L0.midwayBetweenEyes[0]]},nt={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},g5=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],rt=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],Pe=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var d2=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],f2=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],m2=[33,133,362,263,1,78,308],aa=d2.map(e=>rt[e]),ia=f2.map(e=>rt[e]),la=m2.map(e=>rt[e]);var Oe=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Tt=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],T5=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],R5=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],RA=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},M5=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],r=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],s=$0.image.cropAndResize(t,[r],[0],o),a=$0.div(s,H.tf255);return $0.dispose(s),a},Rt=(e,t)=>{let o=Tt(e),A=Oe(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},wt=e=>{let t=Tt(e),o=Oe(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},wA=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},v5=[[1,0,0],[0,1,0],[0,0,1]],p2=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),u2=(e,t)=>p2(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var vA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Me=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],r=vA(t[0],t[1]),s=TA(r,n),a=vA(-t[0],-t[1]);return TA(s,a)},b2=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Me(t[0],o),-Me(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},g2=(e,t)=>[Me(e,t[0]),Me(e,t[1])];function EA(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[r[0]/n*(d[0]-n/2),r[1]/n*(d[1]-n/2),d[2]||0]),a=o&&o!==0&&Math.abs(o)>.2,y=a?kA(o,[0,0]):v5,c=a?s.map(d=>[...g2(d,y),d[2]]):s,i=a?b2(A):v5,l=Tt(t),x=[Me(l,i[0]),Me(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2]||0)])}function jA(e,t,o,A){let n=t.landmarks.length>=b5.count?b5.symmetryLine:nt.symmetryLine,r=0,s=v5,a;if(e&&T.kernels.includes("rotatewithoffset"))if(r=u2(t.landmarks[n[0]],t.landmarks[n[1]]),r&&r!==0&&Math.abs(r)>.2){let c=Tt(t),i=[c[0]/o.shape[2],c[1]/o.shape[1]],l=$0.image.rotateWithOffset(o,r,0,i);s=kA(-r,c),a=M5(t,l,[A,A]),$0.dispose(l)}else a=M5(t,o,[A,A]);else a=M5(t,o,[A,A]);return[r,s,a]}var P2=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},SA=(e,t)=>{let o=P2(e),A=Oe(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var WA=6,M2=1.2,q0,CA=null,xe=0,st=null,kt=()=>xe;async function OA(e){var t;return T.initial&&(q0=null),q0?e.debug&&b("cached model:",q0.modelUrl):q0=await G((t=e.face.detector)==null?void 0:t.modelPath),xe=q0.inputs[0].shape?q0.inputs[0].shape[2]:0,st=N.scalar(xe,"int32"),CA=N.tensor2d(EA(xe)),q0}function v2(e){let t={};t.boxStarts=N.slice(e,[0,1],[-1,2]),t.centers=N.add(t.boxStarts,CA),t.boxSizes=N.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=N.div(t.boxSizes,st),t.centersNormalized=N.div(t.centers,st),t.halfBoxSize=N.div(t.boxSizesNormalized,H.tf2),t.starts=N.sub(t.centersNormalized,t.halfBoxSize),t.ends=N.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=N.mul(t.starts,st),t.endNormalized=N.mul(t.ends,st);let o=N.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>N.dispose(t[A])),o}async function IA(e,t){var a,y,c,i;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=N.image.resizeBilinear(e,[xe,xe]),o.div=N.div(o.resized,H.tf127),o.normalized=N.sub(o.div,H.tf05);let A=q0==null?void 0:q0.execute(o.normalized);if(Array.isArray(A)){let l=A.sort((x,d)=>x.size-d.size);o.concat384=N.concat([l[0],l[2]],2),o.concat512=N.concat([l[1],l[3]],2),o.concat=N.concat([o.concat512,o.concat384],1),o.batch=N.squeeze(o.concat,0)}else o.batch=N.squeeze(A);N.dispose(A),o.boxes=v2(o.batch),o.logits=N.slice(o.batch,[0,0],[-1,1]),o.sigmoid=N.sigmoid(o.logits),o.scores=N.squeeze(o.sigmoid),o.nms=await N.image.nonMaxSuppressionAsync(o.boxes,o.scores,((a=t.face.detector)==null?void 0:a.maxDetected)||0,((y=t.face.detector)==null?void 0:y.iouThreshold)||0,((c=t.face.detector)==null?void 0:c.minConfidence)||0);let n=await o.nms.array(),r=[],s=await o.scores.data();for(let l=0;l(((i=t.face.detector)==null?void 0:i.minConfidence)||0)){let d={};d.bbox=N.slice(o.boxes,[n[l],0],[1,-1]),d.slice=N.slice(o.batch,[n[l],WA-1],[1,-1]),d.squeeze=N.squeeze(d.slice),d.landmarks=N.reshape(d.squeeze,[WA,-1]);let u=await d.bbox.data(),f={startPoint:[u[0],u[1]],endPoint:[u[2],u[3]],landmarks:await d.landmarks.array(),confidence:x},M=RA(f,[(e.shape[2]||0)/xe,(e.shape[1]||0)/xe]),h=Rt(M,t.face.scale||M2),P=wt(h);r.push(P),Object.keys(d).forEach(m=>N.dispose(d[m]))}}return Object.keys(o).forEach(l=>N.dispose(o[l])),r}var k0=V(F());var Et={};mt(Et,{connected:()=>E5,kpt:()=>k5});var k5=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],E5={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var R0=V(F()),LA=224,T2,R2=5,zt=[8,16,32,32,32];async function BA(){let e=[],t=0;for(;to.x)),y:R0.tensor1d(e.map(o=>o.y))}}function ee(e,t=[1,1]){let o=[e.map(a=>a[0]),e.map(a=>a[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[A[0],A[1],n[0]-A[0],n[1]-A[1]],s=[r[0]/t[0],r[1]/t[1],r[2]/t[0],r[3]/t[1]];return{box:r,boxRaw:s}}function GA(e,t=[1,1]){let o=[e.map(c=>c[0]),e.map(c=>c[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[(A[0]+n[0])/2,(A[1]+n[1])/2],s=Math.max(r[0]-A[0],r[1]-A[1],-r[0]+n[0],-r[1]+n[1]),a=[Math.trunc(r[0]-s),Math.trunc(r[1]-s),Math.trunc(2*s),Math.trunc(2*s)],y=[a[0]/t[0],a[1]/t[1],a[2]/t[0],a[3]/t[1]];return{box:a,boxRaw:y}}function jt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var VA={initial:!0},w0={detector:null,landmarks:null},Ie={detector:[224,224],landmarks:[256,256]},z5=Number.MAX_SAFE_INTEGER,k2={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},Wt=null,at,ce=[[0,0],[0,0],[0,0],[0,0]],HA=0,FA=e=>1-1/(1+Math.exp(e));async function ZA(e){if(VA.initial&&(w0.detector=null),!w0.detector&&e.body.detector&&e.body.detector.modelPath){w0.detector=await G(e.body.detector.modelPath);let t=Object.values(w0.detector.modelSignature.inputs);Ie.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&w0.detector&&b("cached model:",w0.detector.modelUrl);return await BA(),w0.detector}async function XA(e){if(VA.initial&&(w0.landmarks=null),w0.landmarks)e.debug&&b("cached model:",w0.landmarks.modelUrl);else{w0.landmarks=await G(e.body.modelPath);let t=Object.values(w0.landmarks.modelSignature.inputs);Ie.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return w0.landmarks}async function E2(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(at&&(o.cropped=k0.image.cropAndResize(e,[at],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],r=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];ce=[[0,0],n,r,[0,0]],o.pad=k0.pad(o.cropped||e,ce),o.resize=k0.image.resizeBilinear(o.pad,[t,t]),A=k0.div(o.resize,H.tf255)}else e.shape[1]!==t?(o.resize=k0.image.resizeBilinear(o.cropped||e,[t,t]),A=k0.div(o.resize,H.tf255)):A=k0.div(o.cropped||e,H.tf255);return Object.keys(o).forEach(n=>k0.dispose(o[n])),A}function z2(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+ce[2][0]+ce[2][1])/t[0]-ce[2][0]),Math.trunc(o.position[1]*(t[1]+ce[1][0]+ce[1][1])/t[1]-ce[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(at)for(let o of e)o.positionRaw=[o.positionRaw[0]+at[1],o.positionRaw[1]+at[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function j2(e){let t=e.find(a=>a.part==="leftPalm"),o=e.find(a=>a.part==="leftWrist"),A=e.find(a=>a.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(a=>a.part==="rightPalm"),r=e.find(a=>a.part==="rightWrist"),s=e.find(a=>a.part==="rightIndex");n.position[2]=((r.position[2]||0)+(s.position[2]||0))/2}async function S2(e,t,o){var u;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(u=w0.landmarks)==null?void 0:u.execute(e,k2.landmarks);let n=(await A.poseflag.data())[0],r=await A.ld.data(),s=await A.world.data();Object.keys(A).forEach(f=>k0.dispose(A[f]));let a=[],y=5;for(let f=0;ff.position),l=ee(i,[o[0],o[1]]),x={};for(let[f,M]of Object.entries(E5)){let h=[];for(let P=0;Pk.part===M[P]),p=c.find(k=>k.part===M[P+1]);m&&p&&h.push([m.position,p.position])}x[f]=h}return{id:0,score:Math.trunc(100*n)/100,box:l.box,boxRaw:l.boxRaw,keypoints:c,annotations:x}}async function j5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>g()-HA,n=z5<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&Wt!==null)z5++;else{let r={};r.landmarks=await E2(e,256),Wt=await S2(r.landmarks,t,o),Object.keys(r).forEach(s=>k0.dispose(r[s])),HA=g(),z5=0}return Wt?[Wt]:[]}var b0=V(F());var Ne=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var te,ve=0,S5=[],qA=0,W5=Number.MAX_SAFE_INTEGER;async function UA(e){if(T.initial&&(te=null),te)e.debug&&b("cached model:",te.modelUrl);else{te=await G(e.object.modelPath);let t=Object.values(te.modelSignature.inputs);ve=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return te}async function W2(e,t,o){if(!e)return[];let A={},n=[],r=await e.array();A.squeeze=b0.squeeze(e);let s=b0.split(A.squeeze,6,1);A.stack=b0.stack([s[1],s[0],s[3],s[2]],1),A.boxes=b0.squeeze(A.stack),A.scores=b0.squeeze(s[4]),A.classes=b0.squeeze(s[5]),b0.dispose([e,...s]),A.nms=await b0.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let a=await A.nms.data(),y=0;for(let c of Array.from(a)){let i=Math.trunc(100*r[0][c][4])/100,l=r[0][c][5],x=Ne[l].label,[d,u]=[r[0][c][0]/ve,r[0][c][1]/ve],f=[d,u,r[0][c][2]/ve-d,r[0][c][3]/ve-u],M=[Math.trunc(f[0]*t[0]),Math.trunc(f[1]*t[1]),Math.trunc(f[2]*t[0]),Math.trunc(f[3]*t[1])];n.push({id:y++,score:i,class:l,label:x,box:M,boxRaw:f})}return Object.keys(A).forEach(c=>b0.dispose(A[c])),n}async function C5(e,t){let o=(t.object.skipTime||0)>g()-qA,A=W5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&S5.length>0?(W5++,S5):(W5=0,new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=b0.image.resizeBilinear(e,[ve,ve]),a=t.object.enabled?te==null?void 0:te.execute(s,["tower_0/detections"]):null;qA=g(),b0.dispose(s);let y=await W2(a,r,t);S5=y,n(y)}))}var K=V(F());var Ct={};mt(Ct,{connected:()=>I5,kpt:()=>O5});var O5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],I5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var p0,YA=0,g0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},N5=Number.MAX_SAFE_INTEGER;async function KA(e){return T.initial&&(p0=null),p0?e.debug&&b("cached model:",p0.modelUrl):p0=await G(e.body.modelPath),p0}async function C2(e,t){let[o,A]=e.shape,n=K.reshape(e,[A*o]),r=K.max(n,0),s=(await r.data())[0];if(K.dispose([n,r]),s>t){let a=K.argMax(n,0),y=K.mod(a,o),c=(await y.data())[0],i=K.div(a,K.scalar(o,"int32")),l=(await i.data())[0];return K.dispose([y,i]),[c,l,s]}return[0,0,s]}async function L5(e,t){let o=(t.body.skipTime||0)>g()-YA,A=N5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(g0.keypoints).length>0?(N5++,[g0]):(N5=0,new Promise(async n=>{var l;let r=K.tidy(()=>{if(!(p0==null?void 0:p0.inputs[0].shape))return null;let x=K.image.resizeBilinear(e,[p0.inputs[0].shape[2],p0.inputs[0].shape[1]],!1),d=K.mul(x,H.tf2);return K.sub(d,H.tf1)}),s;if(t.body.enabled&&(s=p0==null?void 0:p0.execute(r)),YA=g(),K.dispose(r),s){g0.keypoints.length=0;let x=s.squeeze();K.dispose(s);let d=x.unstack(2);K.dispose(x);for(let u=0;u(((l=t.body)==null?void 0:l.minConfidence)||0)&&g0.keypoints.push({score:Math.round(100*h)/100,part:O5[u],positionRaw:[f/p0.inputs[0].shape[2],M/p0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*f/p0.inputs[0].shape[2]),Math.round(e.shape[1]*M/p0.inputs[0].shape[1])]})}d.forEach(u=>K.dispose(u))}g0.score=g0.keypoints.reduce((x,d)=>d.score>x?d.score:x,0);let a=g0.keypoints.map(x=>x.position[0]),y=g0.keypoints.map(x=>x.position[1]);g0.box=[Math.min(...a),Math.min(...y),Math.max(...a)-Math.min(...a),Math.max(...y)-Math.min(...y)];let c=g0.keypoints.map(x=>x.positionRaw[0]),i=g0.keypoints.map(x=>x.positionRaw[1]);g0.boxRaw=[Math.min(...c),Math.min(...i),Math.max(...c)-Math.min(...c),Math.max(...i)-Math.min(...i)];for(let[x,d]of Object.entries(I5)){let u=[];for(let f=0;fP.part===d[f]),h=g0.keypoints.find(P=>P.part===d[f+1]);M&&h&&M.score>(t.body.minConfidence||0)&&h.score>(t.body.minConfidence||0)&&u.push([M.position,h.position])}g0.annotations[x]=u}n([g0])}))}var B0=V(F());var O2=["angry","disgust","fear","happy","sad","surprise","neutral"],O0,Ot=[],_A=0,$A=0,B5=Number.MAX_SAFE_INTEGER;async function en(e){var t;return T.initial&&(O0=null),O0?e.debug&&b("cached model:",O0.modelUrl):O0=await G((t=e.face.emotion)==null?void 0:t.modelPath),O0}async function G5(e,t,o,A){var s,a;if(!O0)return[];let n=B5<(((s=t.face.emotion)==null?void 0:s.skipFrames)||0),r=(((a=t.face.emotion)==null?void 0:a.skipTime)||0)>g()-$A;return t.skipAllowed&&r&&n&&_A===A&&Ot[o]&&Ot[o].length>0?(B5++,Ot[o]):(B5=0,new Promise(async y=>{var i,l;let c=[];if((i=t.face.emotion)==null?void 0:i.enabled){let x={},d=(O0==null?void 0:O0.inputs[0].shape)?O0.inputs[0].shape[2]:0;x.resize=B0.image.resizeBilinear(e,[d,d],!1),x.channels=B0.mul(x.resize,H.rgb),x.grayscale=B0.sum(x.channels,3,!0),x.grayscaleSub=B0.sub(x.grayscale,H.tf05),x.grayscaleMul=B0.mul(x.grayscaleSub,H.tf2),x.emotion=O0==null?void 0:O0.execute(x.grayscaleMul),$A=g();let u=await x.emotion.data();for(let f=0;f(((l=t.face.emotion)==null?void 0:l.minConfidence)||0)&&c.push({score:Math.min(.99,Math.trunc(100*u[f])/100),emotion:O2[f]});c.sort((f,M)=>M.score-f.score),Object.keys(x).forEach(f=>B0.dispose(x[f]))}Ot[o]=c,_A=A,y(c)}))}var rn=V(F());var E0,H5=[],on=0,An=0,nn=Number.MAX_SAFE_INTEGER;async function sn(e){return T.initial&&(E0=null),E0?e.debug&&b("cached model:",E0.modelUrl):E0=await G(e.face.mobilefacenet.modelPath),E0}async function F5(e,t,o,A){var s,a;if(!E0)return[];let n=nn<(((s=t.face.embedding)==null?void 0:s.skipFrames)||0),r=(((a=t.face.embedding)==null?void 0:a.skipTime)||0)>g()-An;return t.skipAllowed&&r&&n&&on===A&&H5[o]?(nn++,H5[o]):new Promise(async y=>{var i;let c=[];if(((i=t.face.embedding)==null?void 0:i.enabled)&&(E0==null?void 0:E0.inputs[0].shape)){let l={};l.crop=rn.image.resizeBilinear(e,[E0.inputs[0].shape[2],E0.inputs[0].shape[1]],!1),l.data=E0==null?void 0:E0.execute(l.crop);let x=await l.data.data();c=Array.from(x)}H5[o]=c,on=A,An=g(),y(c)})}var He=V(F());var G0=V(F());var oe,de=0,I2=2.3,V5=L0.leftEyeLower0,Z5=L0.rightEyeLower0,Le={leftBounds:[V5[0],V5[V5.length-1]],rightBounds:[Z5[0],Z5[Z5.length-1]]},Be={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function cn(e){var t;return T.initial&&(oe=null),oe?e.debug&&b("cached model:",oe.modelUrl):oe=await G((t=e.face.iris)==null?void 0:t.modelPath),de=oe.inputs[0].shape?oe.inputs[0].shape[2]:0,de===-1&&(de=64),oe}function It(e,t,o,A){for(let n=0;n{let t=e[Le.leftBounds[0]][2],o=e[Le.rightBounds[0]][2];return t-o},ln=(e,t,o,A,n,r=!1)=>{let s=wt(Rt(wA([e[o],e[A]]),I2)),a=Oe(s),y=G0.image.cropAndResize(t,[[s.startPoint[1]/n,s.startPoint[0]/n,s.endPoint[1]/n,s.endPoint[0]/n]],[0],[de,de]);if(r&&T.kernels.includes("flipleftright")){let c=G0.image.flipLeftRight(y);G0.dispose(y),y=c}return{box:s,boxSize:a,crop:y}},yn=(e,t,o,A=!1)=>{let n=[];for(let r=0;r{let A=e[L0[`${o}EyeUpper0`][Be.upperCenter]][2],n=e[L0[`${o}EyeLower0`][Be.lowerCenter]][2],r=(A+n)/2;return t.map((s,a)=>{let y=r;return a===2?y=A:a===4&&(y=n),[s[0],s[1],y]})};async function dn(e,t,o,A){if(!oe)return o.debug&&b("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:r,crop:s}=ln(e,t,Le.leftBounds[0],Le.leftBounds[1],A,!0),{box:a,boxSize:y,crop:c}=ln(e,t,Le.rightBounds[0],Le.rightBounds[1],A,!0),i=G0.concat([s,c]);G0.dispose(s),G0.dispose(c);let l=oe.execute(i);G0.dispose(i);let x=await l.data();G0.dispose(l);let d=x.slice(0,Be.numCoordinates*3),{rawCoords:u,iris:f}=yn(d,n,r,!0),M=x.slice(Be.numCoordinates*3),{rawCoords:h,iris:P}=yn(M,a,y),m=N2(e);Math.abs(m)<30?(It(e,u,"left",null),It(e,h,"right",null)):m<1?It(e,u,"left",["EyeUpper0","EyeLower0"]):It(e,h,"right",["EyeUpper0","EyeLower0"]);let p=xn(e,f,"left"),k=xn(e,P,"right");return e.concat(p).concat(k)}var U0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},Ae=null,Ge=0;async function mn(e,t){var a,y,c,i,l,x,d,u,f;let o=(((a=t.face.detector)==null?void 0:a.skipTime)||0)>g()-U0.timestamp,A=U0.skipped<(((y=t.face.detector)==null?void 0:y.skipFrames)||0);!t.skipAllowed||!o||!A||U0.boxes.length===0?(U0.boxes=await IA(e,t),U0.timestamp=g(),U0.skipped=0):U0.skipped++;let n=[],r=[],s=0;for(let M=0;M[q[0]/(e.shape[2]||0),q[1]/(e.shape[1]||0),(q[2]||0)/Ge]);for(let q of Object.keys(L0))p.annotations[q]=L0[q].map(x0=>p.mesh[x0]);p.score=p.faceScore;let Z={...SA(p.mesh,h),confidence:h.confidence,landmarks:h.landmarks};p.box=T5(Z,e),p.boxRaw=R5(Z,e),r.push(Z)}}else{p.box=T5(h,e),p.boxRaw=R5(h,e),p.score=p.boxScore,p.mesh=h.landmarks.map(k=>[(h.startPoint[0]+h.endPoint[0])/2+(h.endPoint[0]+h.startPoint[0])*k[0]/kt(),(h.startPoint[1]+h.endPoint[1])/2+(h.endPoint[1]+h.startPoint[1])*k[1]/kt()]),p.meshRaw=p.mesh.map(k=>[k[0]/(e.shape[2]||0),k[1]/(e.shape[1]||0),(k[2]||0)/Ge]);for(let k of Object.keys(nt))p.annotations[k]=[p.mesh[nt[k]]]}p.score>(((f=t.face.detector)==null?void 0:f.minConfidence)||1)?n.push(p):He.dispose(p.tensor)}return U0.boxes=r,n}async function pn(e){var t;return T.initial&&(Ae=null),Ae?e.debug&&b("cached model:",Ae.modelUrl):Ae=await G((t=e.face.mesh)==null?void 0:t.modelPath),Ge=Ae.inputs[0].shape?Ae.inputs[0].shape[2]:0,Ae}var un=Pe,hn=rt;var H0=V(F());var z0,Nt=[],bn=0,gn=0,D5=Number.MAX_SAFE_INTEGER;async function Pn(e){var t;return T.initial&&(z0=null),z0?e.debug&&b("cached model:",z0.modelUrl):z0=await G((t=e.face.description)==null?void 0:t.modelPath),z0}function q5(e){let t=e.image||e.tensor||e;if(!(z0==null?void 0:z0.inputs[0].shape))return t;let o=H0.image.resizeBilinear(t,[z0.inputs[0].shape[2],z0.inputs[0].shape[1]],!1),A=H0.mul(o,H.tf255);return H0.dispose(o),A}async function U5(e,t,o,A){var s,a,y,c;if(!z0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=D5<(((s=t.face.description)==null?void 0:s.skipFrames)||0),r=(((a=t.face.description)==null?void 0:a.skipTime)||0)>g()-bn;return t.skipAllowed&&n&&r&&gn===A&&((y=Nt[o])==null?void 0:y.age)&&((c=Nt[o])==null?void 0:c.age)>0?(D5++,Nt[o]):(D5=0,new Promise(async i=>{var x,d;let l={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((x=t.face.description)==null?void 0:x.enabled){let u=q5(e),f=z0==null?void 0:z0.execute(u);bn=g(),H0.dispose(u);let h=await(await f.find(L=>L.shape[1]===1)).data(),P=Math.trunc(200*Math.abs(h[0]-.5))/100;P>(((d=t.face.description)==null?void 0:d.minConfidence)||0)&&(l.gender=h[0]<=.5?"female":"male",l.genderScore=Math.min(.99,P));let m=H0.argMax(f.find(L=>L.shape[1]===100),1),p=(await m.data())[0];H0.dispose(m);let C=await f.find(L=>L.shape[1]===100).data();l.age=Math.round(C[p-1]>C[p+1]?10*p-100*C[p-1]:10*p+100*C[p+1])/10;let O=f.find(L=>L.shape[1]===1024),j=O?await O.data():[];l.descriptor=Array.from(j),f.forEach(L=>H0.dispose(L))}Nt[o]=l,gn=A,i(l)}))}var B=V(F());var Tn=V(F());function Lt(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function it(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function Rn(e,t,o){let A=t.shape[1],n=t.shape[2],r=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return Tn.image.cropAndResize(t,r,[0],o)}function wn(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(r=>[r[0]*t[0],r[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function Bt(e,t=1.5){let o=it(e),A=Lt(e),n=[t*A[0]/2,t*A[1]/2],r=[o[0]-n[0],o[1]-n[1]],s=[o[0]+n[0],o[1]+n[1]];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function Gt(e){let t=it(e),o=Lt(e),n=Math.max(...o)/2,r=[t[0]-n,t[1]-n],s=[t[0]+n,t[1]+n];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function L2(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function kn(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return L2(o)}var Mn=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function fe(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=B.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=B.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=B.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=B.slice(t,[0,0],[-1,2]),o.boxSizes=B.slice(t,[0,2],[-1,2]),o.div=B.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=B.add(o.div,this.anchorsTensor),o.halfBoxSizes=B.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=B.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=B.mul(o.sub,this.inputSizeTensor),o.add=B.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=B.mul(o.add,this.inputSizeTensor);let A=B.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>B.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=B.reshape(t,[-1,7,2]),A.div=B.div(A.reshape,this.inputSizeTensor),A.landmarks=B.add(A.div,this.anchors[o]);let n=B.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(r=>B.dispose(A[r])),n}async predict(t,o){let A={};A.resize=B.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=B.div(A.resize,H.tf127),A.image=B.sub(A.div,H.tf1),A.batched=this.model.execute(A.image),A.predictions=B.squeeze(A.batched),A.slice=B.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=B.sigmoid(A.slice),A.scores=B.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=B.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await B.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let r=await A.nms.array(),s=[];for(let a of r){let y={};y.box=B.slice(A.norm,[a,0],[1,-1]),y.slice=B.slice(A.predictions,[a,5],[1,14]),y.norm=this.normalizeLandmarks(y.slice,a),y.palmLandmarks=B.reshape(y.norm,[-1,2]);let c=await y.box.data(),i=c.slice(0,2),l=c.slice(2,4),x=await y.palmLandmarks.array(),d={startPoint:i,endPoint:l,palmLandmarks:x,confidence:n[a]},u=wn(d,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);s.push(u),Object.keys(y).forEach(f=>B.dispose(y[f]))}return Object.keys(A).forEach(a=>B.dispose(A[a])),s}};var j0=V(F());var F2=5,Sn=1.65,Wn=[0,5,9,13,17,1,2],V2=0,Z2=2,Cn=0,_5=class{constructor(t,o){R(this,"handDetector");R(this,"handPoseModel");R(this,"inputSize");R(this,"storedBoxes");R(this,"skipped");R(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(s=>s[0]),A=t.map(s=>s[1]),n=[Math.min(...o),Math.min(...A)],r=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:r}}getBoxForPalmLandmarks(t,o){let A=t.map(r=>K5([...r,1],o)),n=this.calculateLandmarksBoundingBox(A);return Bt(Gt(n),F2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=Bt(Gt(o),Sn);A.palmLandmarks=[];for(let n=0;n[s[0]*(d[0]-this.inputSize/2),s[1]*(d[1]-this.inputSize/2),s[2]*d[2]]),y=Y5(A,[0,0]),c=a.map(d=>[...K5(d,y),d[2]]),i=En(n),l=[...it(o),1],x=[fe(l,i[0]),fe(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2])])}async estimateHands(t,o){let A=!1,n,r=(o.hand.skipTime||0)>g()-Cn,s=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&r&&s&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let a=[];for(let y=0;y=o.hand.minConfidence/4){let k=j0.reshape(m,[-1,3]),C=await k.array();j0.dispose(m),j0.dispose(k);let O=this.transformRawCoords(C,f,i,u),j=this.getBoxForHandLandmarks(O);this.storedBoxes[y]={...j,confidence:p};let L={landmarks:O,confidence:p,boxConfidence:c.confidence,fingerConfidence:p,box:{topLeft:j.startPoint,bottomRight:j.endPoint}};a.push(L)}else this.storedBoxes[y]=null;j0.dispose(m)}else{let i=Bt(Gt(c),Sn),l={confidence:c.confidence,boxConfidence:c.confidence,fingerConfidence:0,box:{topLeft:i.startPoint,bottomRight:i.endPoint},landmarks:[]};a.push(l)}}return this.storedBoxes=this.storedBoxes.filter(y=>y!==null),this.detectedHands=a.length,a.length>o.hand.maxDetected&&(a.length=o.hand.maxDetected),a}};var P0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>P0.nameMapping[e],getPoints:e=>P0.pointsMapping[e]},me={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>me.nameMapping[e]},e0={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>e0.nameMapping[e]},Te=class{constructor(t){R(this,"name");R(this,"curls");R(this,"directions");R(this,"weights");R(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,r)=>n+r,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let r=t[n],s=this.curls[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}for(let n in o){let r=o[n],s=this.directions[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}return A/10}};var{thumb:F0,index:ne,middle:re,ring:Re,pinky:we}=P0,{none:V0,half:D2,full:Z0}=me,{verticalUp:Fe,verticalDown:_a,horizontalLeft:$5,horizontalRight:q2,diagonalUpRight:U2,diagonalUpLeft:Ve,diagonalDownRight:$a,diagonalDownLeft:e1}=e0,pe=new Te("thumbs up");pe.curl(F0,V0,1);pe.direction(F0,Fe,1);pe.direction(F0,Ve,.25);pe.direction(F0,U2,.25);for(let e of[P0.index,P0.middle,P0.ring,P0.pinky])pe.curl(e,Z0,1),pe.direction(e,$5,1),pe.direction(e,q2,1);var r0=new Te("victory");r0.curl(F0,D2,.5);r0.curl(F0,V0,.5);r0.direction(F0,Fe,1);r0.direction(F0,Ve,1);r0.curl(ne,V0,1);r0.direction(ne,Fe,.75);r0.direction(ne,Ve,1);r0.curl(re,V0,1);r0.direction(re,Fe,1);r0.direction(re,Ve,.75);r0.curl(Re,Z0,1);r0.direction(Re,Fe,.2);r0.direction(Re,Ve,1);r0.direction(Re,$5,.2);r0.curl(we,Z0,1);r0.direction(we,Fe,.2);r0.direction(we,Ve,1);r0.direction(we,$5,.2);r0.weight(ne,2);r0.weight(re,2);var ue=new Te("point");ue.curl(F0,Z0,1);ue.curl(ne,V0,.5);ue.curl(re,Z0,.5);ue.curl(Re,Z0,.5);ue.curl(we,Z0,.5);ue.weight(ne,2);ue.weight(re,2);var he=new Te("middle finger");he.curl(F0,V0,1);he.curl(ne,Z0,.5);he.curl(re,Z0,.5);he.curl(Re,Z0,.5);he.curl(we,Z0,.5);he.weight(ne,2);he.weight(re,2);var Ze=new Te("open palm");Ze.curl(F0,V0,.75);Ze.curl(ne,V0,.75);Ze.curl(re,V0,.75);Ze.curl(Re,V0,.75);Ze.curl(we,V0,.75);var On=[pe,r0,ue,he,Ze];var J2=.7,ke={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function In(e,t,o,A){let n=(t-A)/(e-o),r=Math.atan(n)*180/Math.PI;return r<=0?r=-r:r>0&&(r=180-r),r}function Ln(e,t){if(!e||!t)return[0,0];let o=In(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=In(e[1],e[2],t[1],t[2]);return[o,A]}function Nn(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function Y2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],r=t[0]-o[0],s=e[1]-t[1],a=e[1]-o[1],y=t[1]-o[1],c=e[2]-t[2],i=e[2]-o[2],l=t[2]-o[2],x=Math.sqrt(A*A+s*s+c*c),d=Math.sqrt(n*n+a*a+i*i),u=Math.sqrt(r*r+y*y+l*l),f=(u*u+x*x-d*d)/(2*u*x);f>1?f=1:f<-1&&(f=-1);let M=Math.acos(f);M=57.2958*M%180;let h;return M>ke.NO_CURL_START_LIMIT?h=me.none:M>ke.HALF_CURL_START_LIMIT?h=me.half:h=me.full,h}function Bn(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=e0.horizontalLeft:n=e0.horizontalRight:A===Math.abs(t)?t>0?n=e0.horizontalLeft:n=e0.horizontalRight:o>0?n=e0.horizontalLeft:n=e0.horizontalRight,n}function Gn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=e0.verticalDown:n=e0.verticalUp:A===Math.abs(t)?t<0?n=e0.verticalDown:n=e0.verticalUp:o<0?n=e0.verticalDown:n=e0.verticalUp,n}function K2(e,t,o,A,n,r,s,a){let y,c=Gn(e,t,o,A),i=Bn(n,r,s,a);return c===e0.verticalUp?i===e0.horizontalLeft?y=e0.diagonalUpLeft:y=e0.diagonalUpRight:i===e0.horizontalLeft?y=e0.diagonalDownLeft:y=e0.diagonalDownRight,y}function Q2(e,t,o,A){let n=e[0]-t[0],r=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],y=e[1]-o[1],c=t[1]-o[1],i=Math.max(Math.abs(n),Math.abs(r),Math.abs(s)),l=Math.max(Math.abs(a),Math.abs(y),Math.abs(c)),x=0,d=0,u=0,f=l/(i+1e-5);f>1.5?x+=ke.DISTANCE_VOTE_POWER:f>.66?d+=ke.DISTANCE_VOTE_POWER:u+=ke.DISTANCE_VOTE_POWER;let M=Math.sqrt(n*n+a*a),h=Math.sqrt(r*r+y*y),P=Math.sqrt(s*s+c*c),m=Math.max(M,h,P),p=e[0],k=e[1],C=o[0],O=o[1];m===M?(C=o[0],O=o[1]):m===P&&(p=t[0],k=t[1]);let J=Ln([p,k],[C,O]),Z=Nn(J,ke.TOTAL_ANGLE_VOTE_POWER);x+=Z[0],d+=Z[1],u+=Z[2];for(let x0 of A){let E=Nn(x0,ke.SINGLE_ANGLE_VOTE_POWER);x+=E[0],d+=E[1],u+=E[2]}let q;return x===Math.max(x,d,u)?q=Gn(y,a,c,l):u===Math.max(d,u)?q=Bn(r,n,s,i):q=K2(y,a,c,l,r,n,s,i),q}function Hn(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let r of P0.all){let s=P0.getPoints(r),a=[],y=[];for(let c of s){let i=e[c[0]],l=e[c[1]],x=Ln(i,l),d=x[0],u=x[1];a.push(d),y.push(u)}t.push(a),o.push(y)}for(let r of P0.all){let s=r===P0.thumb?1:0,a=P0.getPoints(r),y=e[a[s][0]],c=e[a[s+1][1]],i=e[a[3][1]],l=Y2(y,c,i),x=Q2(y,c,i,t[r].slice(s));A[r]=l,n[r]=x}return{curls:A,directions:n}}function Ht(e){if(!e||e.length===0)return null;let t=Hn(e),o={};for(let A of P0.all)o[P0.getName(A)]={curl:me.getName(t.curls[A]),direction:e0.getName(t.directions[A])};return o}function Fn(e){let t=[];if(!e||e.length===0)return t;let o=Hn(e);for(let A of On){let n=A.matchAgainst(o.curls,o.directions);n>=J2&&t.push({name:A.name,confidence:n})}return t}var Vn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Xe,De,Zn;async function to(e,t){let o=await Zn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[l]);let s=o[n].landmarks,a=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],y=[0,0,0,0];if(s&&s.length>0){for(let i of s)i[0]a[2]&&(a[2]=i[0]),i[1]>a[3]&&(a[3]=i[1]);a[2]-=a[0],a[3]-=a[1],y=[a[0]/(e.shape[2]||0),a[1]/(e.shape[1]||0),a[2]/(e.shape[2]||0),a[3]/(e.shape[1]||0)]}else a=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],y=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let c=Ht(s);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:a,boxRaw:y,keypoints:s,annotations:r,landmarks:c})}return A}async function oo(e){var o,A;T.initial&&(Xe=null,De=null),!Xe||!De?[Xe,De]=await Promise.all([e.hand.enabled?G((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?G((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&b("cached model:",Xe.modelUrl),e.debug&&b("cached model:",De.modelUrl));let t=new Q5(Xe);return Zn=new _5(t,De),[Xe,De]}var Y=V(F());var l0=[null,null],_2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],be=[[0,0],[0,0]],$2=["hand","fist","pinch","point","face","tip","pinchtip"],Dn=4,qn=1.6,es=512,ts=1.4,Ft=Number.MAX_SAFE_INTEGER,Ao=0,se=[0,0],o0={boxes:[],hands:[]},Un={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function Jn(e){var t;if(T.initial&&(l0[0]=null),l0[0])e.debug&&b("cached model:",l0[0].modelUrl);else{Vt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),l0[0]=await G((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values(l0[0].modelSignature.inputs);be[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[0]}async function Yn(e){var t;if(T.initial&&(l0[1]=null),l0[1])e.debug&&b("cached model:",l0[1].modelUrl);else{l0[1]=await G((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values(l0[1].modelSignature.inputs);be[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[1]}async function os(e,t){let o=[];if(!e||!l0[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),r=Math.min(Math.round((e.shape[1]||0)/8)*8,es),s=Math.round(r*n/8)*8;A.resize=Y.image.resizeBilinear(e,[r,s]),A.cast=Y.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await l0[0].executeAsync(A.cast,_2),A.boxes=Y.squeeze(A.rawBoxes,[0,2]),A.scores=Y.squeeze(A.rawScores,[0]);let a=Y.unstack(A.scores,1);Y.dispose(a[Dn]),a.splice(Dn,1),A.filtered=Y.stack(a,1),Y.dispose(a),A.max=Y.max(A.filtered,1),A.argmax=Y.argMax(A.filtered,1);let y=0;A.nms=await Y.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let c=await A.nms.data(),i=await A.max.data(),l=await A.argmax.data();for(let x of Array.from(c)){let d=Y.slice(A.boxes,x,1),u=await d.data();Y.dispose(d);let f=[u[1],u[0],u[3]-u[1],u[2]-u[0]],M=jt(f,ts),h=[Math.trunc(f[0]*se[0]),Math.trunc(f[1]*se[1]),Math.trunc(f[2]*se[0]),Math.trunc(f[3]*se[1])],P=i[x],m=$2[l[x]],p={id:y++,score:P,box:h,boxRaw:M,label:m};o.push(p)}return Object.keys(A).forEach(x=>Y.dispose(A[x])),o.sort((x,d)=>d.score-x.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function no(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&l0[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},r=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Y.image.cropAndResize(e,[r],[0],[be[1][0],be[1][1]],"bilinear"),n.div=Y.div(n.crop,H.tf255),[n.score,n.keypoints]=l0[1].execute(n.div,["Identity_1","Identity"]);let s=(await n.score.data())[0],a=(100-Math.trunc(100/(1+Math.exp(s))))/100;if(a>=(o.hand.minConfidence||0)){A.fingerScore=a,n.reshaped=Y.reshape(n.keypoints,[-1,3]);let i=(await n.reshaped.array()).map(l=>[l[0]/be[1][1],l[1]/be[1][0],l[2]||0]).map(l=>[l[0]*t.boxRaw[2],l[1]*t.boxRaw[3],l[2]||0]);A.keypoints=i.map(l=>[se[0]*(l[0]+t.boxRaw[0]),se[1]*(l[1]+t.boxRaw[1]),l[2]||0]),A.landmarks=Ht(A.keypoints);for(let l of Object.keys(Un))A.annotations[l]=Un[l].map(x=>A.landmarks&&A.keypoints[x]?A.keypoints[x]:null)}Object.keys(n).forEach(y=>Y.dispose(n[y]))}return A}async function ro(e,t){var n,r;if(!l0[0]||!l0[1]||!((n=l0[0])==null?void 0:n.inputs[0].shape)||!((r=l0[1])==null?void 0:r.inputs[0].shape))return[];se=[e.shape[2]||0,e.shape[1]||0],Ft++;let o=(t.hand.skipTime||0)>g()-Ao,A=Ft<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?o0.hands:new Promise(async s=>{let a=3*(t.hand.skipTime||0)>g()-Ao,y=Ft<3*(t.hand.skipFrames||0);t.skipAllowed&&o0.hands.length===t.hand.maxDetected?o0.hands=await Promise.all(o0.boxes.map(i=>no(e,i,t))):t.skipAllowed&&a&&y&&o0.hands.length>0?o0.hands=await Promise.all(o0.boxes.map(i=>no(e,i,t))):(o0.boxes=await os(e,t),Ao=g(),o0.hands=await Promise.all(o0.boxes.map(i=>no(e,i,t))),Ft=0);let c=[...o0.boxes];if(o0.boxes.length=0,t.cacheSensitivity>0)for(let i=0;i.05&&l.box[3]/(e.shape[1]||1)>.05&&o0.hands[i].fingerScore&&o0.hands[i].fingerScore>(t.hand.minConfidence||0)){let x=jt(l.box,qn),d=jt(l.boxRaw,qn);o0.boxes.push({...c[i],box:x,boxRaw:d})}}for(let i=0;ig()-_n,r=so<(((a=t.face.liveness)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&Qn===A&&Zt[o]?(so++,Zt[o]):(so=0,new Promise(async y=>{let c=Xt.image.resizeBilinear(e,[(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[2]:0,(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[1]:0],!1),i=u0==null?void 0:u0.execute(c),l=(await i.data())[0];Zt[o]=Math.round(100*l)/100,Qn=A,_n=g(),Xt.dispose([c,i]),y(Zt[o])}))}var rr=V(F());var lt={};mt(lt,{connected:()=>qt,horizontal:()=>io,kpt:()=>Dt,relative:()=>yo,vertical:()=>lo});var Dt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],io=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],lo=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],yo=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],qt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var ge=V(F()),tr=.005,S0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function xo(e){for(let t of io){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]c&&c.part===t[0]),n=e.keypoints.findIndex(c=>c&&c.part===t[1]),r=e.keypoints.findIndex(c=>c&&c.part===o[0]),s=e.keypoints.findIndex(c=>c&&c.part===o[1]);if(!e.keypoints[r]||!e.keypoints[s])continue;let a=e.keypoints[A]?[Math.abs(e.keypoints[r].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0])]:[0,0],y=e.keypoints[n]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[r].position[0]-e.keypoints[n].position[0])]:[0,0];if(a[0]>a[1]||y[0]>y[1]){let c=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=c}}}function or(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=ge.pad(e,S0.padding),o.resize=ge.image.resizeBilinear(o.pad,[t,t]);let A=ge.cast(o.resize,"int32");return Object.keys(o).forEach(n=>ge.dispose(o[n])),A}function nr(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+S0.padding[2][0]+S0.padding[2][1])/t[0]-S0.padding[2][0],A.position[1]*(t[1]+S0.padding[1][0]+S0.padding[1][1])/t[1]-S0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=ee(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var W0,Ut=0,co=Number.MAX_SAFE_INTEGER,Ee={boxes:[],bodies:[],last:0};async function sr(e){return T.initial&&(W0=null),W0?e.debug&&b("cached model:",W0.modelUrl):(Vt(["size"],e),W0=await G(e.body.modelPath)),Ut=W0.inputs[0].shape?W0.inputs[0].shape[2]:0,Ut<64&&(Ut=256),W0}async function ns(e,t,o){let A=e[0][0],n=[],r=0;for(let i=0;it.body.minConfidence){let l=[A[i][1],A[i][0]];n.push({score:Math.round(100*r)/100,part:Dt[i],positionRaw:l,position:[Math.round((o.shape[2]||0)*l[0]),Math.round((o.shape[1]||0)*l[1])]})}r=n.reduce((i,l)=>l.score>i?l.score:i,0);let s=[],a=ee(n.map(i=>i.position),[o.shape[2],o.shape[1]]),y={};for(let[i,l]of Object.entries(qt)){let x=[];for(let d=0;dM.part===l[d]),f=n.find(M=>M.part===l[d+1]);u&&f&&u.score>(t.body.minConfidence||0)&&f.score>(t.body.minConfidence||0)&&x.push([u.position,f.position])}y[i]=x}let c={id:0,score:r,box:a.box,boxRaw:a.boxRaw,keypoints:n,annotations:y};return xo(c),s.push(c),s}async function rs(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let a=[];for(let l=0;l<17;l++){let x=r[3*l+2];if(x>t.body.minConfidence){let d=[r[3*l+1],r[3*l+0]];a.push({part:Dt[l],score:Math.round(100*x)/100,positionRaw:d,position:[Math.round((o.shape[2]||0)*d[0]),Math.round((o.shape[1]||0)*d[1])]})}}let y=ee(a.map(l=>l.position),[o.shape[2],o.shape[1]]),c={};for(let[l,x]of Object.entries(qt)){let d=[];for(let u=0;uh.part===x[u]),M=a.find(h=>h.part===x[u+1]);f&&M&&f.score>(t.body.minConfidence||0)&&M.score>(t.body.minConfidence||0)&&d.push([f.position,M.position])}c[l]=d}let i={id:n,score:s,box:y.box,boxRaw:y.boxRaw,keypoints:[...a],annotations:c};xo(i),A.push(i)}}return A.sort((n,r)=>r.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function fo(e,t){if(!W0||!(W0==null?void 0:W0.inputs[0].shape))return[];t.skipAllowed||(Ee.boxes.length=0),co++;let o=(t.body.skipTime||0)>g()-Ee.last,A=co<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ee.bodies:new Promise(async n=>{let r={};co=0,r.input=Ar(e,Ut),r.res=W0==null?void 0:W0.execute(r.input),Ee.last=g();let s=await r.res.array();Ee.bodies=r.res.shape[2]===17?await ns(s,t,e):await rs(s,t,e);for(let a of Ee.bodies)nr(a,[e.shape[2]||1,e.shape[1]||1]),or(a.keypoints);Object.keys(r).forEach(a=>rr.dispose(r[a])),n(Ee.bodies)})}var M0=V(F());var qe,Jt=[],ir=0,mo=Number.MAX_SAFE_INTEGER,Kt=0,Yt=2.5;async function lr(e){if(!qe||T.initial){qe=await G(e.object.modelPath);let t=Object.values(qe.modelSignature.inputs);Kt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&b("cached model:",qe.modelUrl);return qe}async function ss(e,t,o){let A=0,n=[];for(let y of[1,2,4])M0.tidy(async()=>{let c=y*13,i=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)===Ne.length)),l=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)(o.object.minConfidence||0)&&M!==61){let P=(.5+Math.trunc(f%c))/c,m=(.5+Math.trunc(f/c))/c,p=d[f].map(q=>q*(c/y/Kt)),[k,C]=[P-Yt/y*p[0],m-Yt/y*p[1]],[O,j]=[P+Yt/y*p[2]-k,m+Yt/y*p[3]-C],L=[k,C,O,j];L=L.map(q=>Math.max(0,Math.min(q,1)));let J=[L[0]*t[0],L[1]*t[1],L[2]*t[0],L[3]*t[1]],Z={id:A++,score:Math.round(100*h)/100,class:M+1,label:Ne[M].label,box:J.map(q=>Math.trunc(q)),boxRaw:L};n.push(Z)}}});e.forEach(y=>M0.dispose(y));let r=n.map(y=>[y.boxRaw[1],y.boxRaw[0],y.boxRaw[3],y.boxRaw[2]]),s=n.map(y=>y.score),a=[];if(r&&r.length>0){let y=await M0.image.nonMaxSuppressionAsync(r,s,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);a=await y.data(),M0.dispose(y)}return n=n.filter((y,c)=>a.includes(c)).sort((y,c)=>c.score-y.score),n}async function po(e,t){let o=(t.object.skipTime||0)>g()-ir,A=mo<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&Jt.length>0?(mo++,Jt):(mo=0,!T.kernels.includes("mod")||!T.kernels.includes("sparsetodense")?Jt:new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=M0.image.resizeBilinear(e,[Kt,Kt],!1),a=M0.div(s,H.tf255),y=a.transpose([0,3,1,2]);M0.dispose(a),M0.dispose(s);let c;t.object.enabled&&(c=qe.execute(y)),ir=g(),M0.dispose(y);let i=await ss(c,r,t);Jt=i,n(i)}))}var v0=V(F());var xt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],as=xt.length,yt=xt.reduce((e,t,o)=>(e[t]=o,e),{}),is=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],T1=is.map(([e,t])=>[yt[e],yt[t]]),xr=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function cr(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:r},{position:{x:s,y:a}})=>({maxX:Math.max(o,s),maxY:Math.max(A,a),minX:Math.min(n,s),minY:Math.min(r,a)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function dr(e,[t,o],[A,n]){let r=t/A,s=o/n,a=(c,i)=>({id:i,score:c.score,boxRaw:[c.box[0]/n,c.box[1]/A,c.box[2]/n,c.box[3]/A],box:[Math.trunc(c.box[0]*s),Math.trunc(c.box[1]*r),Math.trunc(c.box[2]*s),Math.trunc(c.box[3]*r)],keypoints:c.keypoints.map(({score:l,part:x,position:d})=>({score:l,part:x,position:[Math.trunc(d.x*s),Math.trunc(d.y*r)],positionRaw:[d.x/A,d.y/A]})),annotations:{}});return e.map((c,i)=>a(c,i))}var uo=class{constructor(t,o){R(this,"priorityQueue");R(this,"numberOfElements");R(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function fr(e,t,o,A){let n=o-e,r=A-t;return n*n+r*r}function Po(e,t){return{x:e.x+t.x,y:e.y+t.y}}var X0,ys=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Qt=1,Ue=16,xs=50**2;function mr(e,t,o,A,n,r,s=2){let a=h=>({y:r.get(h.y,h.x,e),x:r.get(h.y,h.x,r.shape[2]/2+e)}),y=(h,P,m)=>({y:go(Math.round(h.y/Ue),0,P-1),x:go(Math.round(h.x/Ue),0,m-1)}),[c,i]=A.shape,l=y(t.position,c,i),x=a(l),u=Po(t.position,x);for(let h=0;h[yt[x],yt[d]]),s=r.map(([,x])=>x),a=r.map(([x])=>x),y=t.shape[2],c=s.length,i=new Array(y),l=bo(e.part,Ue,o);i[e.part.id]={score:e.score,part:xt[e.part.id],position:l};for(let x=c-1;x>=0;--x){let d=s[x],u=a[x];i[d]&&!i[u]&&(i[u]=mr(x,i[d],u,t,o,n))}for(let x=0;xt){a=!1;break}if(!a)break}return a}function fs(e,t){let[o,A,n]=t.shape,r=new uo(o*A*n,({score:s})=>s);for(let s=0;s{var s;let r=(s=n[A])==null?void 0:s.position;return r?fr(o,t,r.y,r.x)<=xs:!1})}function ms(e,t){return t.reduce((A,{position:n,score:r},s)=>(pr(e,n,s)||(A+=r),A),0)/t.length}function ps(e,t,o,A,n,r){let s=[],a=fs(r,t);for(;s.lengthd.score>r);let l=ms(s,i),x=cr(i);l>r&&s.push({keypoints:i,box:x,score:Math.round(100*l)/100})}return s}async function Mo(e,t){let o=v0.tidy(()=>{if(!X0.inputs[0].shape)return[];let s=v0.image.resizeBilinear(e,[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]),a=v0.sub(v0.div(v0.cast(s,"float32"),127.5),1),c=X0.execute(a,ys).map(i=>v0.squeeze(i,[0]));return c[1]=v0.sigmoid(c[1]),c}),A=await Promise.all(o.map(s=>s.buffer()));for(let s of o)v0.dispose(s);let n=await ps(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return X0.inputs[0].shape?dr(n,[e.shape[1],e.shape[2]],[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]):[]}async function ur(e){return!X0||T.initial?X0=await G(e.body.modelPath):e.debug&&b("cached model:",X0.modelUrl),X0}var t0=V(F());var J0,vo=!1;async function To(e){return!J0||T.initial?J0=await G(e.segmentation.modelPath):e.debug&&b("cached model:",J0.modelUrl),J0}async function br(e,t,o){var f,M;if(vo)return{data:[],canvas:null,alpha:null};vo=!0,J0||await To(o);let A=await We(e,o),n=((f=A.tensor)==null?void 0:f.shape[2])||0,r=((M=A.tensor)==null?void 0:M.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let s={};s.resize=t0.image.resizeBilinear(A.tensor,[J0.inputs[0].shape?J0.inputs[0].shape[1]:0,J0.inputs[0].shape?J0.inputs[0].shape[2]:0],!1),t0.dispose(A.tensor),s.norm=t0.div(s.resize,H.tf255),s.res=J0.execute(s.norm),s.squeeze=t0.squeeze(s.res,0),s.squeeze.shape[2]===2?(s.softmax=t0.softmax(s.squeeze),[s.bg,s.fg]=t0.unstack(s.softmax,2),s.expand=t0.expandDims(s.fg,2),s.pad=t0.expandDims(s.expand,0),s.crop=t0.image.cropAndResize(s.pad,[[0,0,.5,.5]],[0],[n,r]),s.data=t0.squeeze(s.crop,0)):s.data=t0.image.resizeBilinear(s.squeeze,[r,n]);let a=Array.from(await s.data.data());if(T.node&&!T.Canvas&&typeof ImageData=="undefined")return o.debug&&b("canvas support missing"),Object.keys(s).forEach(h=>t0.dispose(s[h])),{data:a,canvas:null,alpha:null};let y=h0(n,r);t0.browser&&await t0.browser.toPixels(s.data,y);let c=y.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`);let i=c.getImageData(0,0,n,r),l=h0(n,r),x=l.getContext("2d");A.canvas&&x.drawImage(A.canvas,0,0),x.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(x.filter=`blur(${o.segmentation.blur}px)`),x.drawImage(y,0,0),x.globalCompositeOperation="source-over",x.filter="none";let d=x.getImageData(0,0,n,r);for(let h=0;ht0.dispose(s[h])),vo=!1,{data:a,canvas:l,alpha:y}}var Ro=class{constructor(){R(this,"ssrnetage",null);R(this,"gear",null);R(this,"blazeposedetect",null);R(this,"blazepose",null);R(this,"centernet",null);R(this,"efficientpose",null);R(this,"mobilefacenet",null);R(this,"emotion",null);R(this,"facedetect",null);R(this,"faceiris",null);R(this,"facemesh",null);R(this,"faceres",null);R(this,"ssrnetgender",null);R(this,"handpose",null);R(this,"handskeleton",null);R(this,"handtrack",null);R(this,"liveness",null);R(this,"movenet",null);R(this,"nanodet",null);R(this,"posenet",null);R(this,"segmentation",null);R(this,"antispoof",null)}};function wo(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Pr(e){var t,o,A,n,r,s,a,y,c,i,l,x,d,u,f,M,h,P,m,p,k,C,O,j,L,J,Z,q,x0,E;T.initial&&wo(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await oo(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await oo(e.config))),e.config.body.enabled&&!e.models.blazepose&&((s=(r=e.config.body)==null?void 0:r.modelPath)==null?void 0:s.includes("blazepose"))&&(e.models.blazepose=XA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=ZA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((y=(a=e.config.body)==null?void 0:a.modelPath)==null?void 0:y.includes("efficientpose"))&&(e.models.efficientpose=KA(e.config)),e.config.body.enabled&&!e.models.movenet&&((i=(c=e.config.body)==null?void 0:c.modelPath)==null?void 0:i.includes("movenet"))&&(e.models.movenet=sr(e.config)),e.config.body.enabled&&!e.models.posenet&&((x=(l=e.config.body)==null?void 0:l.modelPath)==null?void 0:x.includes("posenet"))&&(e.models.posenet=ur(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=OA(e.config)),e.config.face.enabled&&((d=e.config.face.antispoof)==null?void 0:d.enabled)&&!e.models.antispoof&&(e.models.antispoof=PA(e.config)),e.config.face.enabled&&((u=e.config.face.liveness)==null?void 0:u.enabled)&&!e.models.liveness&&(e.models.liveness=$n(e.config)),e.config.face.enabled&&((f=e.config.face.description)==null?void 0:f.enabled)&&!e.models.faceres&&(e.models.faceres=Pn(e.config)),e.config.face.enabled&&((M=e.config.face.emotion)==null?void 0:M.enabled)&&!e.models.emotion&&(e.models.emotion=en(e.config)),e.config.face.enabled&&((h=e.config.face.iris)==null?void 0:h.enabled)&&!e.models.faceiris&&(e.models.faceiris=cn(e.config)),e.config.face.enabled&&((P=e.config.face.mesh)==null?void 0:P.enabled)&&!e.models.facemesh&&(e.models.facemesh=pn(e.config)),e.config.face.enabled&&((m=e.config.face.gear)==null?void 0:m.enabled)&&!e.models.gear&&(e.models.gear=iA(e.config)),e.config.face.enabled&&((p=e.config.face.ssrnet)==null?void 0:p.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=dA(e.config)),e.config.face.enabled&&((k=e.config.face.ssrnet)==null?void 0:k.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=uA(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=sn(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((j=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:j.includes("handtrack"))&&(e.models.handtrack=Jn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((J=(L=e.config.hand.detector)==null?void 0:L.modelPath)==null?void 0:J.includes("handtrack"))&&(e.models.handskeleton=Yn(e.config)),e.config.object.enabled&&!e.models.centernet&&((q=(Z=e.config.object)==null?void 0:Z.modelPath)==null?void 0:q.includes("centernet"))&&(e.models.centernet=UA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((E=(x0=e.config.object)==null?void 0:x0.modelPath)==null?void 0:E.includes("nanodet"))&&(e.models.nanodet=lr(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=To(e.config));for await(let C0 of Object.keys(e.models))e.models[C0]&&typeof e.models[C0]!="undefined"&&(e.models[C0]=await e.models[C0])}async function Mr(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],r=A==null?void 0:A.executor;if(r&&r.graph.nodes)for(let a of Object.values(r.graph.nodes)){let y=a.op.toLowerCase();n.includes(y)||n.push(y)}else!r&&e.config.debug&&b("model signature not determined:",o);let s=[];for(let a of n)!t.includes(a)&&!e.env.kernels.includes(a)&&!e.env.kernels.includes(a.replace("_",""))&&!e.env.kernels.includes(a.replace("native",""))&&!e.env.kernels.includes(a.replace("v2",""))&&s.push(a);e.config.debug&&s.length>0&&b("model validation failed:",o,s)}}var $={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function us(){let e=$.gl;!e||($.extensions=e.getSupportedExtensions())}async function Tr(e){var t;if(e.config.backend==="humangl"&&($.name in s0.engine().registry&&(!$.gl||!$.gl.getParameter($.gl.VERSION))&&(b("error: humangl backend invalid context"),wo(e)),!s0.findBackend($.name))){try{$.canvas=await h0(100,100)}catch(A){b("error: cannot create canvas:",A);return}try{if($.gl=(t=$.canvas)==null?void 0:t.getContext("webgl2",$.webGLattr),!$.gl.getParameter($.gl.VERSION).includes("2.0")){b("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}$.canvas&&($.canvas.addEventListener("webglcontextlost",async n=>{throw b("error: humangl:",n.type),b("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),$.canvas.addEventListener("webglcontextrestored",n=>{b("error: humangl context restored:",n)}),$.canvas.addEventListener("webglcontextcreationerror",n=>{b("error: humangl context create:",n)}))}catch(A){b("error: cannot get WebGL context:",A);return}try{s0.setWebGLContext(2,$.gl)}catch(A){b("error: cannot set WebGL context:",A);return}try{let A=new s0.GPGPUContext($.gl);s0.registerBackend($.name,()=>new s0.MathBackendWebGL(A),$.priority)}catch(A){b("error: cannot register WebGL backend:",A);return}try{s0.getKernelsForBackend("webgl").forEach(n=>{let r={...n,backendName:$.name};s0.registerKernel(r)})}catch(A){b("error: cannot update WebGL backend registration:",A);return}let o=s0.backend().getGPGPUContext?s0.backend().getGPGPUContext().gl:null;if(o)b(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{b("error: no current gl context:",o,$.gl);return}try{s0.ENV.set("WEBGL_VERSION",2)}catch(A){b("error: cannot set WebGL backend flags:",A);return}us(),b("backend registered:",$.name)}}var S=V(F());function hs(){if(!T.kernels.includes("mod")){let e={kernelName:"Mod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.sub(t.inputs.a,S.mul(S.div(t.inputs.a,t.inputs.b),t.inputs.b)))};S.registerKernel(e),T.kernels.push("mod")}if(!T.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+S.mod(t.inputs.a,t.inputs.b))};S.registerKernel(e),T.kernels.push("floormod")}}async function _t(e,t=!1){if(e.state="backend",t||T.initial||e.config.backend&&e.config.backend.length>0&&S.getBackend()!==e.config.backend){let o=g();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&b("running inside web worker"),T.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&b("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),T.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&b(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),T.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")b("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&b("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Tr(e);let A=Object.keys(S.engine().registryFactory);if(e.config.debug&&b("available backends:",A),A.includes(e.config.backend)||(b(`error: backend ${e.config.backend} not found in registry`),e.config.backend=T.node?"tensorflow":"webgl",e.config.debug&&b(`override: setting backend ${e.config.backend}`)),e.config.debug&&b("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&b("wasm path:",e.config.wasmPath),typeof(S==null?void 0:S.setWasmPaths)!="undefined")await S.setWasmPaths(e.config.wasmPath);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await S.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await S.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&b(`wasm execution: ${n?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&b("warning: wasm simd support is not enabled")}try{await S.setBackend(e.config.backend),await S.ready(),yA()}catch(n){return b("error: cannot set backend:",e.config.backend,n),!1}}if(S.getBackend()==="humangl"&&(S.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),S.ENV.set("WEBGL_CPU_FORWARD",!0),S.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),S.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(b("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),S.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),S.backend().getGPGPUContext)){let A=await S.backend().getGPGPUContext().gl;e.config.debug&&b(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}S.getBackend()==="webgpu",S.enableProdMode(),await S.ready(),e.performance.initBackend=Math.trunc(g()-o),e.config.backend=S.getBackend(),await T.updateBackend(),hs()}return!0}function Vt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&b("kernelFunc",o,t.backend)}};S.registerKernel(A)}T.kernels=S.getKernelsForBackend(S.getBackend()).map(o=>o.kernelName.toLowerCase())}var ae={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},ko=0,ze=e=>{if(!e)b("draw error: invalid canvas");else if(!e.getContext)b("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)b("draw error: cannot get canvas context");else return t}return null},Je=e=>Math.round(e*180/Math.PI);function Eo(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function ct(e,t,o,A,n,r){if(e.beginPath(),e.lineWidth=r.lineWidth,r.useCurves){let s=(t+t+A)/2,a=(o+o+n)/2;e.ellipse(s,a,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+r.roundRect,o),e.lineTo(t+A-r.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+r.roundRect),e.lineTo(t+A,o+n-r.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-r.roundRect,o+n),e.lineTo(t+r.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-r.roundRect),e.lineTo(t,o+r.roundRect),e.quadraticCurveTo(t,o,t+r.roundRect,o),e.closePath();e.stroke()}function kr(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function gs(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){kr(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&y[1].length>0){let c=a[1]>0?`#${a[1]}`:"",i=`${a[0]} ${c}: ${y[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(i,8,2+r*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(i,6,0+r*A.lineHeight),r+=1}}}}async function jo(e,t,o){var r,s,a,y,c;let A=c0(ae,o);if(!t||!e)return;let n=ze(e);if(!!n)for(let i of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&ct(n,i.box[0],i.box[1],i.box[2],i.box[3],A),A.drawLabels){let l=[];if(l.push(`face: ${Math.trunc(100*i.score)}%`),i.genderScore&&l.push(`${i.gender||""} ${Math.trunc(100*i.genderScore)}%`),i.age&&l.push(`age: ${i.age||""}`),i.iris&&l.push(`distance: ${i.iris}`),i.real&&l.push(`real: ${Math.trunc(100*i.real)}%`),i.live&&l.push(`live: ${Math.trunc(100*i.live)}%`),i.emotion&&i.emotion.length>0){let x=i.emotion.map(d=>`${Math.trunc(100*d.score)}% ${d.emotion}`);x.length>3&&(x.length=3),l.push(x.join(" "))}i.rotation&&i.rotation.angle&&i.rotation.gaze&&(i.rotation.angle.roll&&l.push(`roll: ${Je(i.rotation.angle.roll)}\xB0 yaw:${Je(i.rotation.angle.yaw)}\xB0 pitch:${Je(i.rotation.angle.pitch)}\xB0`),i.rotation.gaze.bearing&&l.push(`gaze: ${Je(i.rotation.gaze.bearing)}\xB0`)),l.length===0&&l.push("face"),n.fillStyle=A.color;for(let x=l.length-1;x>=0;x--){let d=Math.max(i.box[0],0),u=x*A.lineHeight+i.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l[x],d+5,u+16)),n.fillStyle=A.labelColor,n.fillText(l[x],d+4,u+15)}}if(n.lineWidth=2,i.mesh&&i.mesh.length>0){if(A.drawPoints)for(let l of i.mesh)Eo(n,l[0],l[1],l[2],A);if(A.drawPolygons){if(i.mesh.length>450)for(let l=0;li.mesh[d]);kr(n,x,A)}if(i.annotations&&i.annotations.leftEyeIris&&i.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.leftEyeIris[3][0]-i.annotations.leftEyeIris[1][0])/2,x=Math.abs(i.annotations.leftEyeIris[4][1]-i.annotations.leftEyeIris[2][1])/2;n.ellipse(i.annotations.leftEyeIris[0][0],i.annotations.leftEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(i.annotations&&i.annotations.rightEyeIris&&i.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.rightEyeIris[3][0]-i.annotations.rightEyeIris[1][0])/2,x=Math.abs(i.annotations.rightEyeIris[4][1]-i.annotations.rightEyeIris[2][1])/2;n.ellipse(i.annotations.rightEyeIris[0][0],i.annotations.rightEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((r=i.rotation)==null?void 0:r.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let l=i.box[0]+i.box[2]/2-i.box[3]*Je(i.rotation.angle.yaw)/90,x=i.box[1]+i.box[3]/2+i.box[2]*Je(i.rotation.angle.pitch)/90,d=new Path2D(` +`;var s5=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,r)=>(o[r]=0,n))},eA=class{constructor(t,o,A){R(this,"uniform",{});R(this,"attribute",{});R(this,"gl");R(this,"id");R(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(b(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(b("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),r=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!r)){if(!this.id){b("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,r),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){b(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),s5(o,"attribute",this.attribute);for(let s in this.attribute)this.attribute[s]=this.gl.getAttribLocation(this.id,s);s5(o,"uniform",this.uniform),s5(A,"uniform",this.uniform);for(let s in this.uniform)this.uniform[s]=this.gl.getUniformLocation(this.id,s)}}};function tA(){let e=0,t=null,o=!1,A=-1,n=[null,null],r=[],s=null,a=null,y=h0(100,100),c={},i={INTERMEDIATE:1},l=y.getContext("webgl");if(this.gl=l,!l){b("filter: cannot get webgl context");return}function x(P,m){if(!(P===y.width&&m===y.height)){if(y.width=P,y.height=m,!s){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);s=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,s),l.bufferData(l.ARRAY_BUFFER,p,l.STATIC_DRAW),l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}l.viewport(0,0,y.width,y.height),n=[null,null]}}function d(P,m){let p=l.createFramebuffer();l.bindFramebuffer(l.FRAMEBUFFER,p);let k=l.createRenderbuffer();l.bindRenderbuffer(l.RENDERBUFFER,k);let C=l.createTexture();return l.bindTexture(l.TEXTURE_2D,C),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,P,m,0,l.RGBA,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,C,0),l.bindTexture(l.TEXTURE_2D,null),l.bindFramebuffer(l.FRAMEBUFFER,null),{fbo:p,texture:C}}function u(P){return n[P]=n[P]||d(y.width,y.height),n[P]}function f(P=0){if(!a)return;let m=null,p=null,k=!1;e===0?m=t:m=u(A).texture||null,e++,o&&!(P&i.INTERMEDIATE)?(p=null,k=e%2===0):(A=(A+1)%2,p=u(A).fbo||null),l.bindTexture(l.TEXTURE_2D,m),l.bindFramebuffer(l.FRAMEBUFFER,p),l.uniform1f(a.uniform.flipY,k?-1:1),l.drawArrays(l.TRIANGLES,0,6)}function M(P){if(c[P])return a=c[P],l.useProgram((a?a.id:null)||null),a;if(a=new eA(l,Jo,P),!a)return b("filter: could not get webgl program"),null;let m=Float32Array.BYTES_PER_ELEMENT,p=4*m;return l.enableVertexAttribArray(a.attribute.pos),l.vertexAttribPointer(a.attribute.pos,2,l.FLOAT,!1,p,0*m),l.enableVertexAttribArray(a.attribute.uv),l.vertexAttribPointer(a.attribute.uv,2,l.FLOAT,!1,p,2*m),c[P]=a,a}let h={colorMatrix:P=>{let m=new Float32Array(P);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let p=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?Ko:Yo,k=M(p);!k||(l.uniform1fv(k.uniform.m,m),f())},brightness:P=>{let m=(P||0)+1;h.colorMatrix([m,0,0,0,0,0,m,0,0,0,0,0,m,0,0,0,0,0,1,0])},saturation:P=>{let m=(P||0)*2/3+1,p=(m-1)*-.5;h.colorMatrix([m,p,p,0,0,p,m,p,0,0,p,p,m,0,0,0,0,0,1,0])},desaturate:()=>{h.saturation(-1)},contrast:P=>{let m=(P||0)+1,p=-128*(m-1);h.colorMatrix([m,0,0,0,p,0,m,0,0,p,0,0,m,0,p,0,0,0,1,0])},negative:()=>{h.contrast(-2)},hue:P=>{P=(P||0)/180*Math.PI;let m=Math.cos(P),p=Math.sin(P),k=.213,C=.715,O=.072;h.colorMatrix([k+m*(1-k)+p*-k,C+m*-C+p*-C,O+m*-O+p*(1-O),0,0,k+m*-k+p*.143,C+m*(1-C)+p*.14,O+m*-O+p*-.283,0,0,k+m*-k+p*-(1-k),C+m*-C+p*C,O+m*(1-O)+p*O,0,0,0,0,0,1,0])},desaturateLuminance:()=>{h.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{h.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{h.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{h.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{h.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{h.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{h.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{h.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:P=>{let m=new Float32Array(P),p=1/y.width,k=1/y.height,C=M($o);!C||(l.uniform1fv(C.uniform.m,m),l.uniform2f(C.uniform.px,p,k),f())},detectEdges:()=>{h.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{h.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{h.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:P=>{let m=P||1;h.convolution.call(this,[0,-1*m,0,-1*m,1+4*m,-1*m,0,-1*m,0])},emboss:P=>{let m=P||1;h.convolution.call(this,[-2*m,-1*m,0,-1*m,1,1*m,0,1*m,2*m])},blur:P=>{let m=P/7/y.width,p=P/7/y.height,k=M(_o);!k||(l.uniform2f(k.uniform.px,0,p),f(i.INTERMEDIATE),l.uniform2f(k.uniform.px,m,0),f())},pixelate:P=>{let m=P/y.width,p=P/y.height,k=M(Qo);!k||(l.uniform2f(k.uniform.size,m,p),f())}};this.add=function(P){let m=Array.prototype.slice.call(arguments,1),p=h[P];r.push({func:p,args:m})},this.reset=function(){r=[]},this.get=function(){return r},this.apply=function(P){x(P.width,P.height),e=0,t||(t=l.createTexture()),l.bindTexture(l.TEXTURE_2D,t),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,P);for(let m=0;md.data())),s=.99*Math.max(r[0][0],r[1][0],r[2][0]),a=[X.sub(o[0],A[0]),X.sub(o[1],A[1]),X.sub(o[2],A[2])],y=[X.sub(n[0],A[0]),X.sub(n[1],A[1]),X.sub(n[2],A[2])],c=[X.div(s,y[0]),X.div(s,y[1]),X.div(s,y[2])],i=[X.mul(a[0],c[0]),X.mul(a[1],c[1]),X.mul(a[2],c[2])],l=X.stack([i[0],i[1],i[2]],2),x=X.reshape(l,[1,t.shape[0],t.shape[1],3]);return X.dispose([...o,...A,...n,...a,...y,...c,...i,l,t]),x}var ut=2048,D=null,i0=null,Se=null,_,Q0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function h0(e,t){let o;if(T.browser)if(T.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof T.Canvas!="undefined"?o=new T.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function a5(e,t){let o=t||h0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function We(e,t,o=!0){if(!e)return t.debug&&b("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof W.Tensor)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof T.Canvas!="undefined"&&e instanceof T.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof W.Tensor){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=W.expandDims(e,0);else if(e.shape[2]===4){let n=W.slice3d(e,[0,0,0],[-1,-1,3]);A=W.expandDims(n,0),W.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=W.clone(e):e.shape[3]===4&&(A=W.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=W.cast(A,"float32");W.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?i0:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&b("input stream is not ready"),{tensor:null,canvas:D};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&b("cannot determine input dimensions"),{tensor:null,canvas:D};let r=A,s=n;if(r>ut&&(r=ut,s=Math.trunc(r*n/A)),s>ut&&(s=ut,r=Math.trunc(s*A/n)),(t.filter.width||0)>0?r=t.filter.width:(t.filter.height||0)>0&&(r=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?s=t.filter.height:(t.filter.width||0)>0&&(s=n*((t.filter.width||0)/A)),!r||!s)throw new Error("input error: cannot determine dimension");(!D||(D==null?void 0:D.width)!==r||(D==null?void 0:D.height)!==s)&&(D=h0(r,s));let a=D.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?a.putImageData(e,0,0):t.filter.flip&&typeof a.translate!="undefined"?(a.translate(A,0),a.scale(-1,1),a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),a.setTransform(1,0,0,1,0,0)):a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),(!i0||D.width!==i0.width||(D==null?void 0:D.height)!==(i0==null?void 0:i0.height))&&(i0=h0(D.width,D.height)),t.filter.enabled&&T.webgl.supported){if(_||(_=T.browser?new tA:null),T.filter=!!_,!_||!_.add)return t.debug&&b("input process error: cannot initialize filters"),{tensor:null,canvas:D};_.reset(),t.filter.brightness!==0&&_.add("brightness",t.filter.brightness),t.filter.contrast!==0&&_.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&_.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&_.add("blur",t.filter.blur),t.filter.saturation!==0&&_.add("saturation",t.filter.saturation),t.filter.hue!==0&&_.add("hue",t.filter.hue),t.filter.negative&&_.add("negative"),t.filter.sepia&&_.add("sepia"),t.filter.vintage&&_.add("brownie"),t.filter.sepia&&_.add("sepia"),t.filter.kodachrome&&_.add("kodachrome"),t.filter.technicolor&&_.add("technicolor"),t.filter.polaroid&&_.add("polaroid"),t.filter.pixelate!==0&&_.add("pixelate",t.filter.pixelate),_.get()>0?i0=_.apply(D):i0=_.draw(D)}else a5(D,i0),_&&(_=null),T.filter=!!_;if(!o)return{tensor:null,canvas:i0};if(!i0)throw new Error("canvas error: cannot create output");let y,c=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(T.browser&&W.browser)y=W.browser?W.browser.fromPixels(e):null;else{c=e.data.length/e.height/e.width;let x=new Uint8Array(e.data.buffer);y=W.tensor(x,[e.height,e.width,c],"int32")}else if((!Se||i0.width!==Se.width||i0.height!==Se.height)&&(Se=h0(i0.width,i0.height)),W.browser&&T.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?y=W.browser.fromPixels(i0):(Se=a5(i0),y=W.browser.fromPixels(Se));else{let u=a5(i0).getContext("2d").getImageData(0,0,r,s);c=u.data.length/r/s;let f=new Uint8Array(u.data.buffer);y=W.tensor(f,[r,s,c])}if(c===4){let x=W.slice3d(y,[0,0,0],[-1,-1,3]);W.dispose(y),y=x}if(!y)throw new Error("input error: cannot create tensor");let i=W.cast(y,"float32"),l=t.filter.equalization?await pt(i):W.expandDims(i,0);return W.dispose([y,i]),{tensor:l,canvas:t.filter.return?i0:null}}}async function oA(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!Q0.inputTensor)Q0.inputTensor=W.clone(t);else if(Q0.inputTensor.shape[1]!==t.shape[1]||Q0.inputTensor.shape[2]!==t.shape[2])W.dispose(Q0.inputTensor),Q0.inputTensor=W.clone(t);else{let A={};A.diff=W.sub(t,Q0.inputTensor),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;W.dispose([Q0.inputTensor,A.diff,A.squared,A.sum]),Q0.inputTensor=W.clone(t),o=r<=(e.cacheSensitivity||0)}return o}async function AA(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||b("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||b("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=W.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?W.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):W.clone(o),A.diff=W.sub(A.input1,A.input2),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return W.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),r}var nA=class{constructor(){R(this,"browser");R(this,"node");R(this,"worker");R(this,"platform","");R(this,"agent","");R(this,"backends",[]);R(this,"initial");R(this,"filter");R(this,"tfjs");R(this,"offscreen");R(this,"perfadd",!1);R(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});R(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});R(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});R(this,"cpu",{model:void 0,flags:[]});R(this,"kernels",[]);R(this,"Canvas");R(this,"Image");R(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:d0.version["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(d0.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&d0.getBackend()==="wasm"&&(this.wasm.simd=await d0.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await d0.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=h0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(d0.getBackend()==="webgl"||d0.getBackend()==="humangl")){let A=d0.backend().gpgpu!=="undefined"?await d0.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=d0.getKernelsForBackend(d0.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},T=new nA;var ht=V(F()),_0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function a2(e,t){return _0.debug&&b("load model fetch:",e,t),fetch(e,t)}function rA(e){_0.cacheModels=e.cacheModels,_0.verbose=e.debug,_0.modelBasePath=e.modelBasePath}async function G(e){let t=Do(_0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await ht.io.listModels(),r=_0.cacheModels&&Object.keys(n).includes(A),s=typeof fetch=="undefined"?{}:{fetchFunc:(y,c)=>a2(y,c)},a=new ht.GraphModel(r?A:t,s);try{a.findIOHandler(),_0.debug&&b("model load handler:",a.handler);let y=await a.handler.load();a.loadSync(y),_0.verbose&&b("load model:",a.modelUrl)}catch(y){b("error loading model:",t,y)}if(_0.cacheModels&&!r)try{let y=await a.save(A);b("model saved:",A,y)}catch(y){b("error saving model:",t,y)}return a}var D0=V(F());var i5="2.6.3";var s0=V(F());var bt=V(F());var I0,l5=[],y2=["white","black","asian","indian","other"],x2=[15,23,28,35.5,45.5,55.5,65],sA=0,aA=0,y5=Number.MAX_SAFE_INTEGER;async function iA(e){return T.initial&&(I0=null),I0?e.debug&&b("cached model:",I0.modelUrl):I0=await G(e.face.gear),I0}async function x5(e,t,o,A){var s,a;if(!I0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=y5<(((s=t.face.gear)==null?void 0:s.skipFrames)||0),r=(((a=t.face.gear)==null?void 0:a.skipTime)||0)>g()-aA;return t.skipAllowed&&r&&n&&sA===A&&l5[o]?(y5++,l5[o]):(y5=0,new Promise(async y=>{var h,P;if(!(I0==null?void 0:I0.inputs[0].shape))return;let c={},i=[[0,.1,.9,.9]];c.resize=bt.image.cropAndResize(e,i,[0],[I0.inputs[0].shape[2],I0.inputs[0].shape[1]]);let l={age:0,gender:"unknown",genderScore:0,race:[]};((h=t.face.gear)==null?void 0:h.enabled)&&([c.age,c.gender,c.race]=I0.execute(c.resize,["age_output","gender_output","race_output"]));let x=await c.gender.data();l.gender=x[0]>x[1]?"male":"female",l.genderScore=Math.round(100*(x[0]>x[1]?x[0]:x[1]))/100;let d=await c.race.data();for(let m=0;m(((P=t.face.gear)==null?void 0:P.minConfidence)||.2)&&l.race.push({score:Math.round(100*d[m])/100,race:y2[m]});l.race.sort((m,p)=>p.score-m.score);let f=Array.from(await c.age.data()).map((m,p)=>[x2[p],m]).sort((m,p)=>p[1]-m[1]),M=f[0][0];for(let m=1;mbt.dispose(c[m])),l5[o]=l,sA=A,aA=g(),y(l)}))}var Ce=V(F());var ye=V(F()),H={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function yA(){H.tf255=ye.scalar(255,"float32"),H.tf1=ye.scalar(1,"float32"),H.tf2=ye.scalar(2,"float32"),H.tf05=ye.scalar(.5,"float32"),H.tf127=ye.scalar(127.5,"float32"),H.rgb=ye.tensor1d([.2989,.587,.114],"float32")}var T0,gt=[],xA=0,cA=0,c5=Number.MAX_SAFE_INTEGER;async function dA(e){return T.initial&&(T0=null),T0?e.debug&&b("cached model:",T0.modelUrl):T0=await G(e.face.ssrnet.modelPathAge),T0}async function d5(e,t,o,A){var s,a,y,c;if(!T0)return{age:0};let n=c5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-cA;return t.skipAllowed&&n&&r&&xA===A&&((y=gt[o])==null?void 0:y.age)&&((c=gt[o])==null?void 0:c.age)>0?(c5++,gt[o]):(c5=0,new Promise(async i=>{if(!(T0==null?void 0:T0.inputs)||!T0.inputs[0]||!T0.inputs[0].shape)return;let l={};l.resize=Ce.image.resizeBilinear(e,[T0.inputs[0].shape[2],T0.inputs[0].shape[1]],!1),l.enhance=Ce.mul(l.resize,H.tf255);let x={age:0};if(t.face.ssrnet.enabled&&(l.age=T0.execute(l.enhance)),l.age){let d=await l.age.data();x.age=Math.trunc(10*d[0])/10}Object.keys(l).forEach(d=>Ce.dispose(l[d])),gt[o]=x,xA=A,cA=g(),i(x)}))}var f0=V(F());var N0,Pt=[],mA=0,pA=0,f5=Number.MAX_SAFE_INTEGER,m5=[.2989,.587,.114];async function uA(e){return T.initial&&(N0=null),N0?e.debug&&b("cached model:",N0.modelUrl):N0=await G(e.face.ssrnet.modelPathGender),N0}async function p5(e,t,o,A){var s,a,y,c;if(!N0)return{gender:"unknown",genderScore:0};let n=f5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-pA;return t.skipAllowed&&n&&r&&mA===A&&((y=Pt[o])==null?void 0:y.gender)&&((c=Pt[o])==null?void 0:c.genderScore)>0?(f5++,Pt[o]):(f5=0,new Promise(async i=>{if(!(N0==null?void 0:N0.inputs[0].shape))return;let l={};l.resize=f0.image.resizeBilinear(e,[N0.inputs[0].shape[2],N0.inputs[0].shape[1]],!1),l.enhance=f0.tidy(()=>{let[u,f,M]=f0.split(l.resize,3,3),h=f0.mul(u,m5[0]),P=f0.mul(f,m5[1]),m=f0.mul(M,m5[2]),p=f0.addN([h,P,m]);return f0.mul(f0.sub(p,H.tf05),2)});let x={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(l.gender=N0.execute(l.enhance));let d=await l.gender.data();x.gender=d[0]>d[1]?"female":"male",x.genderScore=d[0]>d[1]?Math.trunc(100*d[0])/100:Math.trunc(100*d[1])/100,Object.keys(l).forEach(u=>f0.dispose(l[u])),Pt[o]=x,mA=A,pA=g(),i(x)}))}var vt=V(F());var m0,Mt=[],u5=Number.MAX_SAFE_INTEGER,bA=0,gA=0;async function PA(e){var t;return T.initial&&(m0=null),m0?e.debug&&b("cached model:",m0.modelUrl):m0=await G((t=e.face.antispoof)==null?void 0:t.modelPath),m0}async function h5(e,t,o,A){var s,a;if(!m0)return 0;let n=(((s=t.face.antispoof)==null?void 0:s.skipTime)||0)>g()-gA,r=u5<(((a=t.face.antispoof)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&bA===A&&Mt[o]?(u5++,Mt[o]):(u5=0,new Promise(async y=>{let c=vt.image.resizeBilinear(e,[(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[2]:0,(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[1]:0],!1),i=m0==null?void 0:m0.execute(c),l=(await i.data())[0];Mt[o]=Math.round(100*l)/100,bA=A,gA=g(),vt.dispose([c,i]),y(Mt[o])}))}var N=V(F());var $0=V(F());var L0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},b5={count:468,mouth:13,symmetryLine:[13,L0.midwayBetweenEyes[0]]},nt={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},g5=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],rt=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],Pe=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var d2=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],f2=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],m2=[33,133,362,263,1,78,308],aa=d2.map(e=>rt[e]),ia=f2.map(e=>rt[e]),la=m2.map(e=>rt[e]);var Oe=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Tt=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],T5=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],R5=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],RA=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},M5=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],r=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],s=$0.image.cropAndResize(t,[r],[0],o),a=$0.div(s,H.tf255);return $0.dispose(s),a},Rt=(e,t)=>{let o=Tt(e),A=Oe(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},wt=e=>{let t=Tt(e),o=Oe(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},wA=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},v5=[[1,0,0],[0,1,0],[0,0,1]],p2=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),u2=(e,t)=>p2(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var vA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Me=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],r=vA(t[0],t[1]),s=TA(r,n),a=vA(-t[0],-t[1]);return TA(s,a)},b2=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Me(t[0],o),-Me(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},g2=(e,t)=>[Me(e,t[0]),Me(e,t[1])];function EA(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[r[0]/n*(d[0]-n/2),r[1]/n*(d[1]-n/2),d[2]||0]),a=o&&o!==0&&Math.abs(o)>.2,y=a?kA(o,[0,0]):v5,c=a?s.map(d=>[...g2(d,y),d[2]]):s,i=a?b2(A):v5,l=Tt(t),x=[Me(l,i[0]),Me(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2]||0)])}function jA(e,t,o,A){let n=t.landmarks.length>=b5.count?b5.symmetryLine:nt.symmetryLine,r=0,s=v5,a;if(e&&T.kernels.includes("rotatewithoffset"))if(r=u2(t.landmarks[n[0]],t.landmarks[n[1]]),r&&r!==0&&Math.abs(r)>.2){let c=Tt(t),i=[c[0]/o.shape[2],c[1]/o.shape[1]],l=$0.image.rotateWithOffset(o,r,0,i);s=kA(-r,c),a=M5(t,l,[A,A]),$0.dispose(l)}else a=M5(t,o,[A,A]);else a=M5(t,o,[A,A]);return[r,s,a]}var P2=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},SA=(e,t)=>{let o=P2(e),A=Oe(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var WA=6,M2=1.2,q0,CA=null,xe=0,st=null,kt=()=>xe;async function OA(e){var t;return T.initial&&(q0=null),q0?e.debug&&b("cached model:",q0.modelUrl):q0=await G((t=e.face.detector)==null?void 0:t.modelPath),xe=q0.inputs[0].shape?q0.inputs[0].shape[2]:0,st=N.scalar(xe,"int32"),CA=N.tensor2d(EA(xe)),q0}function v2(e){let t={};t.boxStarts=N.slice(e,[0,1],[-1,2]),t.centers=N.add(t.boxStarts,CA),t.boxSizes=N.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=N.div(t.boxSizes,st),t.centersNormalized=N.div(t.centers,st),t.halfBoxSize=N.div(t.boxSizesNormalized,H.tf2),t.starts=N.sub(t.centersNormalized,t.halfBoxSize),t.ends=N.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=N.mul(t.starts,st),t.endNormalized=N.mul(t.ends,st);let o=N.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>N.dispose(t[A])),o}async function IA(e,t){var a,y,c,i;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=N.image.resizeBilinear(e,[xe,xe]),o.div=N.div(o.resized,H.tf127),o.normalized=N.sub(o.div,H.tf05);let A=q0==null?void 0:q0.execute(o.normalized);if(Array.isArray(A)){let l=A.sort((x,d)=>x.size-d.size);o.concat384=N.concat([l[0],l[2]],2),o.concat512=N.concat([l[1],l[3]],2),o.concat=N.concat([o.concat512,o.concat384],1),o.batch=N.squeeze(o.concat,0)}else o.batch=N.squeeze(A);N.dispose(A),o.boxes=v2(o.batch),o.logits=N.slice(o.batch,[0,0],[-1,1]),o.sigmoid=N.sigmoid(o.logits),o.scores=N.squeeze(o.sigmoid),o.nms=await N.image.nonMaxSuppressionAsync(o.boxes,o.scores,((a=t.face.detector)==null?void 0:a.maxDetected)||0,((y=t.face.detector)==null?void 0:y.iouThreshold)||0,((c=t.face.detector)==null?void 0:c.minConfidence)||0);let n=await o.nms.array(),r=[],s=await o.scores.data();for(let l=0;l(((i=t.face.detector)==null?void 0:i.minConfidence)||0)){let d={};d.bbox=N.slice(o.boxes,[n[l],0],[1,-1]),d.slice=N.slice(o.batch,[n[l],WA-1],[1,-1]),d.squeeze=N.squeeze(d.slice),d.landmarks=N.reshape(d.squeeze,[WA,-1]);let u=await d.bbox.data(),f={startPoint:[u[0],u[1]],endPoint:[u[2],u[3]],landmarks:await d.landmarks.array(),confidence:x},M=RA(f,[(e.shape[2]||0)/xe,(e.shape[1]||0)/xe]),h=Rt(M,t.face.scale||M2),P=wt(h);r.push(P),Object.keys(d).forEach(m=>N.dispose(d[m]))}}return Object.keys(o).forEach(l=>N.dispose(o[l])),r}var k0=V(F());var Et={};mt(Et,{connected:()=>E5,kpt:()=>k5});var k5=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],E5={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var R0=V(F()),LA=224,T2,R2=5,zt=[8,16,32,32,32];async function BA(){let e=[],t=0;for(;to.x)),y:R0.tensor1d(e.map(o=>o.y))}}function ee(e,t=[1,1]){let o=[e.map(a=>a[0]),e.map(a=>a[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[A[0],A[1],n[0]-A[0],n[1]-A[1]],s=[r[0]/t[0],r[1]/t[1],r[2]/t[0],r[3]/t[1]];return{box:r,boxRaw:s}}function GA(e,t=[1,1]){let o=[e.map(c=>c[0]),e.map(c=>c[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[(A[0]+n[0])/2,(A[1]+n[1])/2],s=Math.max(r[0]-A[0],r[1]-A[1],-r[0]+n[0],-r[1]+n[1]),a=[Math.trunc(r[0]-s),Math.trunc(r[1]-s),Math.trunc(2*s),Math.trunc(2*s)],y=[a[0]/t[0],a[1]/t[1],a[2]/t[0],a[3]/t[1]];return{box:a,boxRaw:y}}function jt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var VA={initial:!0},w0={detector:null,landmarks:null},Ie={detector:[224,224],landmarks:[256,256]},z5=Number.MAX_SAFE_INTEGER,k2={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},Wt=null,at,ce=[[0,0],[0,0],[0,0],[0,0]],HA=0,FA=e=>1-1/(1+Math.exp(e));async function ZA(e){if(VA.initial&&(w0.detector=null),!w0.detector&&e.body.detector&&e.body.detector.modelPath){w0.detector=await G(e.body.detector.modelPath);let t=Object.values(w0.detector.modelSignature.inputs);Ie.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&w0.detector&&b("cached model:",w0.detector.modelUrl);return await BA(),w0.detector}async function XA(e){if(VA.initial&&(w0.landmarks=null),w0.landmarks)e.debug&&b("cached model:",w0.landmarks.modelUrl);else{w0.landmarks=await G(e.body.modelPath);let t=Object.values(w0.landmarks.modelSignature.inputs);Ie.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return w0.landmarks}async function E2(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(at&&(o.cropped=k0.image.cropAndResize(e,[at],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],r=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];ce=[[0,0],n,r,[0,0]],o.pad=k0.pad(o.cropped||e,ce),o.resize=k0.image.resizeBilinear(o.pad,[t,t]),A=k0.div(o.resize,H.tf255)}else e.shape[1]!==t?(o.resize=k0.image.resizeBilinear(o.cropped||e,[t,t]),A=k0.div(o.resize,H.tf255)):A=k0.div(o.cropped||e,H.tf255);return Object.keys(o).forEach(n=>k0.dispose(o[n])),A}function z2(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+ce[2][0]+ce[2][1])/t[0]-ce[2][0]),Math.trunc(o.position[1]*(t[1]+ce[1][0]+ce[1][1])/t[1]-ce[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(at)for(let o of e)o.positionRaw=[o.positionRaw[0]+at[1],o.positionRaw[1]+at[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function j2(e){let t=e.find(a=>a.part==="leftPalm"),o=e.find(a=>a.part==="leftWrist"),A=e.find(a=>a.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(a=>a.part==="rightPalm"),r=e.find(a=>a.part==="rightWrist"),s=e.find(a=>a.part==="rightIndex");n.position[2]=((r.position[2]||0)+(s.position[2]||0))/2}async function S2(e,t,o){var u;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(u=w0.landmarks)==null?void 0:u.execute(e,k2.landmarks);let n=(await A.poseflag.data())[0],r=await A.ld.data(),s=await A.world.data();Object.keys(A).forEach(f=>k0.dispose(A[f]));let a=[],y=5;for(let f=0;ff.position),l=ee(i,[o[0],o[1]]),x={};for(let[f,M]of Object.entries(E5)){let h=[];for(let P=0;Pk.part===M[P]),p=c.find(k=>k.part===M[P+1]);m&&p&&h.push([m.position,p.position])}x[f]=h}return{id:0,score:Math.trunc(100*n)/100,box:l.box,boxRaw:l.boxRaw,keypoints:c,annotations:x}}async function j5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>g()-HA,n=z5<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&Wt!==null)z5++;else{let r={};r.landmarks=await E2(e,256),Wt=await S2(r.landmarks,t,o),Object.keys(r).forEach(s=>k0.dispose(r[s])),HA=g(),z5=0}return Wt?[Wt]:[]}var b0=V(F());var Ne=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var te,ve=0,S5=[],qA=0,W5=Number.MAX_SAFE_INTEGER;async function UA(e){if(T.initial&&(te=null),te)e.debug&&b("cached model:",te.modelUrl);else{te=await G(e.object.modelPath);let t=Object.values(te.modelSignature.inputs);ve=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return te}async function W2(e,t,o){if(!e)return[];let A={},n=[],r=await e.array();A.squeeze=b0.squeeze(e);let s=b0.split(A.squeeze,6,1);A.stack=b0.stack([s[1],s[0],s[3],s[2]],1),A.boxes=b0.squeeze(A.stack),A.scores=b0.squeeze(s[4]),A.classes=b0.squeeze(s[5]),b0.dispose([e,...s]),A.nms=await b0.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let a=await A.nms.data(),y=0;for(let c of Array.from(a)){let i=Math.trunc(100*r[0][c][4])/100,l=r[0][c][5],x=Ne[l].label,[d,u]=[r[0][c][0]/ve,r[0][c][1]/ve],f=[d,u,r[0][c][2]/ve-d,r[0][c][3]/ve-u],M=[Math.trunc(f[0]*t[0]),Math.trunc(f[1]*t[1]),Math.trunc(f[2]*t[0]),Math.trunc(f[3]*t[1])];n.push({id:y++,score:i,class:l,label:x,box:M,boxRaw:f})}return Object.keys(A).forEach(c=>b0.dispose(A[c])),n}async function C5(e,t){let o=(t.object.skipTime||0)>g()-qA,A=W5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&S5.length>0?(W5++,S5):(W5=0,new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=b0.image.resizeBilinear(e,[ve,ve]),a=t.object.enabled?te==null?void 0:te.execute(s,["tower_0/detections"]):null;qA=g(),b0.dispose(s);let y=await W2(a,r,t);S5=y,n(y)}))}var K=V(F());var Ct={};mt(Ct,{connected:()=>I5,kpt:()=>O5});var O5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],I5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var p0,YA=0,g0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},N5=Number.MAX_SAFE_INTEGER;async function KA(e){return T.initial&&(p0=null),p0?e.debug&&b("cached model:",p0.modelUrl):p0=await G(e.body.modelPath),p0}async function C2(e,t){let[o,A]=e.shape,n=K.reshape(e,[A*o]),r=K.max(n,0),s=(await r.data())[0];if(K.dispose([n,r]),s>t){let a=K.argMax(n,0),y=K.mod(a,o),c=(await y.data())[0],i=K.div(a,K.scalar(o,"int32")),l=(await i.data())[0];return K.dispose([y,i]),[c,l,s]}return[0,0,s]}async function L5(e,t){let o=(t.body.skipTime||0)>g()-YA,A=N5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(g0.keypoints).length>0?(N5++,[g0]):(N5=0,new Promise(async n=>{var l;let r=K.tidy(()=>{if(!(p0==null?void 0:p0.inputs[0].shape))return null;let x=K.image.resizeBilinear(e,[p0.inputs[0].shape[2],p0.inputs[0].shape[1]],!1),d=K.mul(x,H.tf2);return K.sub(d,H.tf1)}),s;if(t.body.enabled&&(s=p0==null?void 0:p0.execute(r)),YA=g(),K.dispose(r),s){g0.keypoints.length=0;let x=s.squeeze();K.dispose(s);let d=x.unstack(2);K.dispose(x);for(let u=0;u(((l=t.body)==null?void 0:l.minConfidence)||0)&&g0.keypoints.push({score:Math.round(100*h)/100,part:O5[u],positionRaw:[f/p0.inputs[0].shape[2],M/p0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*f/p0.inputs[0].shape[2]),Math.round(e.shape[1]*M/p0.inputs[0].shape[1])]})}d.forEach(u=>K.dispose(u))}g0.score=g0.keypoints.reduce((x,d)=>d.score>x?d.score:x,0);let a=g0.keypoints.map(x=>x.position[0]),y=g0.keypoints.map(x=>x.position[1]);g0.box=[Math.min(...a),Math.min(...y),Math.max(...a)-Math.min(...a),Math.max(...y)-Math.min(...y)];let c=g0.keypoints.map(x=>x.positionRaw[0]),i=g0.keypoints.map(x=>x.positionRaw[1]);g0.boxRaw=[Math.min(...c),Math.min(...i),Math.max(...c)-Math.min(...c),Math.max(...i)-Math.min(...i)];for(let[x,d]of Object.entries(I5)){let u=[];for(let f=0;fP.part===d[f]),h=g0.keypoints.find(P=>P.part===d[f+1]);M&&h&&M.score>(t.body.minConfidence||0)&&h.score>(t.body.minConfidence||0)&&u.push([M.position,h.position])}g0.annotations[x]=u}n([g0])}))}var B0=V(F());var O2=["angry","disgust","fear","happy","sad","surprise","neutral"],O0,Ot=[],_A=0,$A=0,B5=Number.MAX_SAFE_INTEGER;async function en(e){var t;return T.initial&&(O0=null),O0?e.debug&&b("cached model:",O0.modelUrl):O0=await G((t=e.face.emotion)==null?void 0:t.modelPath),O0}async function G5(e,t,o,A){var s,a;if(!O0)return[];let n=B5<(((s=t.face.emotion)==null?void 0:s.skipFrames)||0),r=(((a=t.face.emotion)==null?void 0:a.skipTime)||0)>g()-$A;return t.skipAllowed&&r&&n&&_A===A&&Ot[o]&&Ot[o].length>0?(B5++,Ot[o]):(B5=0,new Promise(async y=>{var i,l;let c=[];if((i=t.face.emotion)==null?void 0:i.enabled){let x={},d=(O0==null?void 0:O0.inputs[0].shape)?O0.inputs[0].shape[2]:0;x.resize=B0.image.resizeBilinear(e,[d,d],!1),x.channels=B0.mul(x.resize,H.rgb),x.grayscale=B0.sum(x.channels,3,!0),x.grayscaleSub=B0.sub(x.grayscale,H.tf05),x.grayscaleMul=B0.mul(x.grayscaleSub,H.tf2),x.emotion=O0==null?void 0:O0.execute(x.grayscaleMul),$A=g();let u=await x.emotion.data();for(let f=0;f(((l=t.face.emotion)==null?void 0:l.minConfidence)||0)&&c.push({score:Math.min(.99,Math.trunc(100*u[f])/100),emotion:O2[f]});c.sort((f,M)=>M.score-f.score),Object.keys(x).forEach(f=>B0.dispose(x[f]))}Ot[o]=c,_A=A,y(c)}))}var rn=V(F());var E0,H5=[],on=0,An=0,nn=Number.MAX_SAFE_INTEGER;async function sn(e){return T.initial&&(E0=null),E0?e.debug&&b("cached model:",E0.modelUrl):E0=await G(e.face.mobilefacenet.modelPath),E0}async function F5(e,t,o,A){var s,a;if(!E0)return[];let n=nn<(((s=t.face.embedding)==null?void 0:s.skipFrames)||0),r=(((a=t.face.embedding)==null?void 0:a.skipTime)||0)>g()-An;return t.skipAllowed&&r&&n&&on===A&&H5[o]?(nn++,H5[o]):new Promise(async y=>{var i;let c=[];if(((i=t.face.embedding)==null?void 0:i.enabled)&&(E0==null?void 0:E0.inputs[0].shape)){let l={};l.crop=rn.image.resizeBilinear(e,[E0.inputs[0].shape[2],E0.inputs[0].shape[1]],!1),l.data=E0==null?void 0:E0.execute(l.crop);let x=await l.data.data();c=Array.from(x)}H5[o]=c,on=A,An=g(),y(c)})}var He=V(F());var G0=V(F());var oe,de=0,I2=2.3,V5=L0.leftEyeLower0,Z5=L0.rightEyeLower0,Le={leftBounds:[V5[0],V5[V5.length-1]],rightBounds:[Z5[0],Z5[Z5.length-1]]},Be={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function cn(e){var t;return T.initial&&(oe=null),oe?e.debug&&b("cached model:",oe.modelUrl):oe=await G((t=e.face.iris)==null?void 0:t.modelPath),de=oe.inputs[0].shape?oe.inputs[0].shape[2]:0,de===-1&&(de=64),oe}function It(e,t,o,A){for(let n=0;n{let t=e[Le.leftBounds[0]][2],o=e[Le.rightBounds[0]][2];return t-o},ln=(e,t,o,A,n,r=!1)=>{let s=wt(Rt(wA([e[o],e[A]]),I2)),a=Oe(s),y=G0.image.cropAndResize(t,[[s.startPoint[1]/n,s.startPoint[0]/n,s.endPoint[1]/n,s.endPoint[0]/n]],[0],[de,de]);if(r&&T.kernels.includes("flipleftright")){let c=G0.image.flipLeftRight(y);G0.dispose(y),y=c}return{box:s,boxSize:a,crop:y}},yn=(e,t,o,A=!1)=>{let n=[];for(let r=0;r{let A=e[L0[`${o}EyeUpper0`][Be.upperCenter]][2],n=e[L0[`${o}EyeLower0`][Be.lowerCenter]][2],r=(A+n)/2;return t.map((s,a)=>{let y=r;return a===2?y=A:a===4&&(y=n),[s[0],s[1],y]})};async function dn(e,t,o,A){if(!oe)return o.debug&&b("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:r,crop:s}=ln(e,t,Le.leftBounds[0],Le.leftBounds[1],A,!0),{box:a,boxSize:y,crop:c}=ln(e,t,Le.rightBounds[0],Le.rightBounds[1],A,!0),i=G0.concat([s,c]);G0.dispose(s),G0.dispose(c);let l=oe.execute(i);G0.dispose(i);let x=await l.data();G0.dispose(l);let d=x.slice(0,Be.numCoordinates*3),{rawCoords:u,iris:f}=yn(d,n,r,!0),M=x.slice(Be.numCoordinates*3),{rawCoords:h,iris:P}=yn(M,a,y),m=N2(e);Math.abs(m)<30?(It(e,u,"left",null),It(e,h,"right",null)):m<1?It(e,u,"left",["EyeUpper0","EyeLower0"]):It(e,h,"right",["EyeUpper0","EyeLower0"]);let p=xn(e,f,"left"),k=xn(e,P,"right");return e.concat(p).concat(k)}var U0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},Ae=null,Ge=0;async function mn(e,t){var a,y,c,i,l,x,d,u,f;let o=(((a=t.face.detector)==null?void 0:a.skipTime)||0)>g()-U0.timestamp,A=U0.skipped<(((y=t.face.detector)==null?void 0:y.skipFrames)||0);!t.skipAllowed||!o||!A||U0.boxes.length===0?(U0.boxes=await IA(e,t),U0.timestamp=g(),U0.skipped=0):U0.skipped++;let n=[],r=[],s=0;for(let M=0;M[q[0]/(e.shape[2]||0),q[1]/(e.shape[1]||0),(q[2]||0)/Ge]);for(let q of Object.keys(L0))p.annotations[q]=L0[q].map(x0=>p.mesh[x0]);p.score=p.faceScore;let Z={...SA(p.mesh,h),confidence:h.confidence,landmarks:h.landmarks};p.box=T5(Z,e),p.boxRaw=R5(Z,e),r.push(Z)}}else{p.box=T5(h,e),p.boxRaw=R5(h,e),p.score=p.boxScore,p.mesh=h.landmarks.map(k=>[(h.startPoint[0]+h.endPoint[0])/2+(h.endPoint[0]+h.startPoint[0])*k[0]/kt(),(h.startPoint[1]+h.endPoint[1])/2+(h.endPoint[1]+h.startPoint[1])*k[1]/kt()]),p.meshRaw=p.mesh.map(k=>[k[0]/(e.shape[2]||0),k[1]/(e.shape[1]||0),(k[2]||0)/Ge]);for(let k of Object.keys(nt))p.annotations[k]=[p.mesh[nt[k]]]}p.score>(((f=t.face.detector)==null?void 0:f.minConfidence)||1)?n.push(p):He.dispose(p.tensor)}return U0.boxes=r,n}async function pn(e){var t;return T.initial&&(Ae=null),Ae?e.debug&&b("cached model:",Ae.modelUrl):Ae=await G((t=e.face.mesh)==null?void 0:t.modelPath),Ge=Ae.inputs[0].shape?Ae.inputs[0].shape[2]:0,Ae}var un=Pe,hn=rt;var H0=V(F());var z0,Nt=[],bn=0,gn=0,D5=Number.MAX_SAFE_INTEGER;async function Pn(e){var t;return T.initial&&(z0=null),z0?e.debug&&b("cached model:",z0.modelUrl):z0=await G((t=e.face.description)==null?void 0:t.modelPath),z0}function q5(e){let t=e.image||e.tensor||e;if(!(z0==null?void 0:z0.inputs[0].shape))return t;let o=H0.image.resizeBilinear(t,[z0.inputs[0].shape[2],z0.inputs[0].shape[1]],!1),A=H0.mul(o,H.tf255);return H0.dispose(o),A}async function U5(e,t,o,A){var s,a,y,c;if(!z0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=D5<(((s=t.face.description)==null?void 0:s.skipFrames)||0),r=(((a=t.face.description)==null?void 0:a.skipTime)||0)>g()-bn;return t.skipAllowed&&n&&r&&gn===A&&((y=Nt[o])==null?void 0:y.age)&&((c=Nt[o])==null?void 0:c.age)>0?(D5++,Nt[o]):(D5=0,new Promise(async i=>{var x,d;let l={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((x=t.face.description)==null?void 0:x.enabled){let u=q5(e),f=z0==null?void 0:z0.execute(u);bn=g(),H0.dispose(u);let h=await(await f.find(L=>L.shape[1]===1)).data(),P=Math.trunc(200*Math.abs(h[0]-.5))/100;P>(((d=t.face.description)==null?void 0:d.minConfidence)||0)&&(l.gender=h[0]<=.5?"female":"male",l.genderScore=Math.min(.99,P));let m=H0.argMax(f.find(L=>L.shape[1]===100),1),p=(await m.data())[0];H0.dispose(m);let C=await f.find(L=>L.shape[1]===100).data();l.age=Math.round(C[p-1]>C[p+1]?10*p-100*C[p-1]:10*p+100*C[p+1])/10;let O=f.find(L=>L.shape[1]===1024),j=O?await O.data():[];l.descriptor=Array.from(j),f.forEach(L=>H0.dispose(L))}Nt[o]=l,gn=A,i(l)}))}var B=V(F());var Tn=V(F());function Lt(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function it(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function Rn(e,t,o){let A=t.shape[1],n=t.shape[2],r=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return Tn.image.cropAndResize(t,r,[0],o)}function wn(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(r=>[r[0]*t[0],r[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function Bt(e,t=1.5){let o=it(e),A=Lt(e),n=[t*A[0]/2,t*A[1]/2],r=[o[0]-n[0],o[1]-n[1]],s=[o[0]+n[0],o[1]+n[1]];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function Gt(e){let t=it(e),o=Lt(e),n=Math.max(...o)/2,r=[t[0]-n,t[1]-n],s=[t[0]+n,t[1]+n];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function L2(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function kn(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return L2(o)}var Mn=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function fe(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=B.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=B.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=B.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=B.slice(t,[0,0],[-1,2]),o.boxSizes=B.slice(t,[0,2],[-1,2]),o.div=B.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=B.add(o.div,this.anchorsTensor),o.halfBoxSizes=B.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=B.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=B.mul(o.sub,this.inputSizeTensor),o.add=B.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=B.mul(o.add,this.inputSizeTensor);let A=B.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>B.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=B.reshape(t,[-1,7,2]),A.div=B.div(A.reshape,this.inputSizeTensor),A.landmarks=B.add(A.div,this.anchors[o]);let n=B.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(r=>B.dispose(A[r])),n}async predict(t,o){let A={};A.resize=B.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=B.div(A.resize,H.tf127),A.image=B.sub(A.div,H.tf1),A.batched=this.model.execute(A.image),A.predictions=B.squeeze(A.batched),A.slice=B.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=B.sigmoid(A.slice),A.scores=B.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=B.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await B.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let r=await A.nms.array(),s=[];for(let a of r){let y={};y.box=B.slice(A.norm,[a,0],[1,-1]),y.slice=B.slice(A.predictions,[a,5],[1,14]),y.norm=this.normalizeLandmarks(y.slice,a),y.palmLandmarks=B.reshape(y.norm,[-1,2]);let c=await y.box.data(),i=c.slice(0,2),l=c.slice(2,4),x=await y.palmLandmarks.array(),d={startPoint:i,endPoint:l,palmLandmarks:x,confidence:n[a]},u=wn(d,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);s.push(u),Object.keys(y).forEach(f=>B.dispose(y[f]))}return Object.keys(A).forEach(a=>B.dispose(A[a])),s}};var j0=V(F());var F2=5,Sn=1.65,Wn=[0,5,9,13,17,1,2],V2=0,Z2=2,Cn=0,_5=class{constructor(t,o){R(this,"handDetector");R(this,"handPoseModel");R(this,"inputSize");R(this,"storedBoxes");R(this,"skipped");R(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(s=>s[0]),A=t.map(s=>s[1]),n=[Math.min(...o),Math.min(...A)],r=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:r}}getBoxForPalmLandmarks(t,o){let A=t.map(r=>K5([...r,1],o)),n=this.calculateLandmarksBoundingBox(A);return Bt(Gt(n),F2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=Bt(Gt(o),Sn);A.palmLandmarks=[];for(let n=0;n[s[0]*(d[0]-this.inputSize/2),s[1]*(d[1]-this.inputSize/2),s[2]*d[2]]),y=Y5(A,[0,0]),c=a.map(d=>[...K5(d,y),d[2]]),i=En(n),l=[...it(o),1],x=[fe(l,i[0]),fe(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2])])}async estimateHands(t,o){let A=!1,n,r=(o.hand.skipTime||0)>g()-Cn,s=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&r&&s&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let a=[];for(let y=0;y=o.hand.minConfidence/4){let k=j0.reshape(m,[-1,3]),C=await k.array();j0.dispose(m),j0.dispose(k);let O=this.transformRawCoords(C,f,i,u),j=this.getBoxForHandLandmarks(O);this.storedBoxes[y]={...j,confidence:p};let L={landmarks:O,confidence:p,boxConfidence:c.confidence,fingerConfidence:p,box:{topLeft:j.startPoint,bottomRight:j.endPoint}};a.push(L)}else this.storedBoxes[y]=null;j0.dispose(m)}else{let i=Bt(Gt(c),Sn),l={confidence:c.confidence,boxConfidence:c.confidence,fingerConfidence:0,box:{topLeft:i.startPoint,bottomRight:i.endPoint},landmarks:[]};a.push(l)}}return this.storedBoxes=this.storedBoxes.filter(y=>y!==null),this.detectedHands=a.length,a.length>o.hand.maxDetected&&(a.length=o.hand.maxDetected),a}};var P0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>P0.nameMapping[e],getPoints:e=>P0.pointsMapping[e]},me={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>me.nameMapping[e]},e0={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>e0.nameMapping[e]},Te=class{constructor(t){R(this,"name");R(this,"curls");R(this,"directions");R(this,"weights");R(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,r)=>n+r,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let r=t[n],s=this.curls[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}for(let n in o){let r=o[n],s=this.directions[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}return A/10}};var{thumb:F0,index:ne,middle:re,ring:Re,pinky:we}=P0,{none:V0,half:D2,full:Z0}=me,{verticalUp:Fe,verticalDown:_a,horizontalLeft:$5,horizontalRight:q2,diagonalUpRight:U2,diagonalUpLeft:Ve,diagonalDownRight:$a,diagonalDownLeft:e1}=e0,pe=new Te("thumbs up");pe.curl(F0,V0,1);pe.direction(F0,Fe,1);pe.direction(F0,Ve,.25);pe.direction(F0,U2,.25);for(let e of[P0.index,P0.middle,P0.ring,P0.pinky])pe.curl(e,Z0,1),pe.direction(e,$5,1),pe.direction(e,q2,1);var r0=new Te("victory");r0.curl(F0,D2,.5);r0.curl(F0,V0,.5);r0.direction(F0,Fe,1);r0.direction(F0,Ve,1);r0.curl(ne,V0,1);r0.direction(ne,Fe,.75);r0.direction(ne,Ve,1);r0.curl(re,V0,1);r0.direction(re,Fe,1);r0.direction(re,Ve,.75);r0.curl(Re,Z0,1);r0.direction(Re,Fe,.2);r0.direction(Re,Ve,1);r0.direction(Re,$5,.2);r0.curl(we,Z0,1);r0.direction(we,Fe,.2);r0.direction(we,Ve,1);r0.direction(we,$5,.2);r0.weight(ne,2);r0.weight(re,2);var ue=new Te("point");ue.curl(F0,Z0,1);ue.curl(ne,V0,.5);ue.curl(re,Z0,.5);ue.curl(Re,Z0,.5);ue.curl(we,Z0,.5);ue.weight(ne,2);ue.weight(re,2);var he=new Te("middle finger");he.curl(F0,V0,1);he.curl(ne,Z0,.5);he.curl(re,Z0,.5);he.curl(Re,Z0,.5);he.curl(we,Z0,.5);he.weight(ne,2);he.weight(re,2);var Ze=new Te("open palm");Ze.curl(F0,V0,.75);Ze.curl(ne,V0,.75);Ze.curl(re,V0,.75);Ze.curl(Re,V0,.75);Ze.curl(we,V0,.75);var On=[pe,r0,ue,he,Ze];var J2=.7,ke={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function In(e,t,o,A){let n=(t-A)/(e-o),r=Math.atan(n)*180/Math.PI;return r<=0?r=-r:r>0&&(r=180-r),r}function Ln(e,t){if(!e||!t)return[0,0];let o=In(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=In(e[1],e[2],t[1],t[2]);return[o,A]}function Nn(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function Y2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],r=t[0]-o[0],s=e[1]-t[1],a=e[1]-o[1],y=t[1]-o[1],c=e[2]-t[2],i=e[2]-o[2],l=t[2]-o[2],x=Math.sqrt(A*A+s*s+c*c),d=Math.sqrt(n*n+a*a+i*i),u=Math.sqrt(r*r+y*y+l*l),f=(u*u+x*x-d*d)/(2*u*x);f>1?f=1:f<-1&&(f=-1);let M=Math.acos(f);M=57.2958*M%180;let h;return M>ke.NO_CURL_START_LIMIT?h=me.none:M>ke.HALF_CURL_START_LIMIT?h=me.half:h=me.full,h}function Bn(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=e0.horizontalLeft:n=e0.horizontalRight:A===Math.abs(t)?t>0?n=e0.horizontalLeft:n=e0.horizontalRight:o>0?n=e0.horizontalLeft:n=e0.horizontalRight,n}function Gn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=e0.verticalDown:n=e0.verticalUp:A===Math.abs(t)?t<0?n=e0.verticalDown:n=e0.verticalUp:o<0?n=e0.verticalDown:n=e0.verticalUp,n}function K2(e,t,o,A,n,r,s,a){let y,c=Gn(e,t,o,A),i=Bn(n,r,s,a);return c===e0.verticalUp?i===e0.horizontalLeft?y=e0.diagonalUpLeft:y=e0.diagonalUpRight:i===e0.horizontalLeft?y=e0.diagonalDownLeft:y=e0.diagonalDownRight,y}function Q2(e,t,o,A){let n=e[0]-t[0],r=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],y=e[1]-o[1],c=t[1]-o[1],i=Math.max(Math.abs(n),Math.abs(r),Math.abs(s)),l=Math.max(Math.abs(a),Math.abs(y),Math.abs(c)),x=0,d=0,u=0,f=l/(i+1e-5);f>1.5?x+=ke.DISTANCE_VOTE_POWER:f>.66?d+=ke.DISTANCE_VOTE_POWER:u+=ke.DISTANCE_VOTE_POWER;let M=Math.sqrt(n*n+a*a),h=Math.sqrt(r*r+y*y),P=Math.sqrt(s*s+c*c),m=Math.max(M,h,P),p=e[0],k=e[1],C=o[0],O=o[1];m===M?(C=o[0],O=o[1]):m===P&&(p=t[0],k=t[1]);let J=Ln([p,k],[C,O]),Z=Nn(J,ke.TOTAL_ANGLE_VOTE_POWER);x+=Z[0],d+=Z[1],u+=Z[2];for(let x0 of A){let E=Nn(x0,ke.SINGLE_ANGLE_VOTE_POWER);x+=E[0],d+=E[1],u+=E[2]}let q;return x===Math.max(x,d,u)?q=Gn(y,a,c,l):u===Math.max(d,u)?q=Bn(r,n,s,i):q=K2(y,a,c,l,r,n,s,i),q}function Hn(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let r of P0.all){let s=P0.getPoints(r),a=[],y=[];for(let c of s){let i=e[c[0]],l=e[c[1]],x=Ln(i,l),d=x[0],u=x[1];a.push(d),y.push(u)}t.push(a),o.push(y)}for(let r of P0.all){let s=r===P0.thumb?1:0,a=P0.getPoints(r),y=e[a[s][0]],c=e[a[s+1][1]],i=e[a[3][1]],l=Y2(y,c,i),x=Q2(y,c,i,t[r].slice(s));A[r]=l,n[r]=x}return{curls:A,directions:n}}function Ht(e){if(!e||e.length===0)return null;let t=Hn(e),o={};for(let A of P0.all)o[P0.getName(A)]={curl:me.getName(t.curls[A]),direction:e0.getName(t.directions[A])};return o}function Fn(e){let t=[];if(!e||e.length===0)return t;let o=Hn(e);for(let A of On){let n=A.matchAgainst(o.curls,o.directions);n>=J2&&t.push({name:A.name,confidence:n})}return t}var Vn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Xe,De,Zn;async function to(e,t){let o=await Zn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[l]);let s=o[n].landmarks,a=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],y=[0,0,0,0];if(s&&s.length>0){for(let i of s)i[0]a[2]&&(a[2]=i[0]),i[1]>a[3]&&(a[3]=i[1]);a[2]-=a[0],a[3]-=a[1],y=[a[0]/(e.shape[2]||0),a[1]/(e.shape[1]||0),a[2]/(e.shape[2]||0),a[3]/(e.shape[1]||0)]}else a=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],y=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let c=Ht(s);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:a,boxRaw:y,keypoints:s,annotations:r,landmarks:c})}return A}async function oo(e){var o,A;T.initial&&(Xe=null,De=null),!Xe||!De?[Xe,De]=await Promise.all([e.hand.enabled?G((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?G((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&b("cached model:",Xe.modelUrl),e.debug&&b("cached model:",De.modelUrl));let t=new Q5(Xe);return Zn=new _5(t,De),[Xe,De]}var Y=V(F());var l0=[null,null],_2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],be=[[0,0],[0,0]],$2=["hand","fist","pinch","point","face","tip","pinchtip"],Dn=4,qn=1.6,es=512,ts=1.4,Ft=Number.MAX_SAFE_INTEGER,Ao=0,se=[0,0],o0={boxes:[],hands:[]},Un={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function Jn(e){var t;if(T.initial&&(l0[0]=null),l0[0])e.debug&&b("cached model:",l0[0].modelUrl);else{Vt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),l0[0]=await G((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values(l0[0].modelSignature.inputs);be[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[0]}async function Yn(e){var t;if(T.initial&&(l0[1]=null),l0[1])e.debug&&b("cached model:",l0[1].modelUrl);else{l0[1]=await G((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values(l0[1].modelSignature.inputs);be[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[1]}async function os(e,t){let o=[];if(!e||!l0[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),r=Math.min(Math.round((e.shape[1]||0)/8)*8,es),s=Math.round(r*n/8)*8;A.resize=Y.image.resizeBilinear(e,[r,s]),A.cast=Y.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await l0[0].executeAsync(A.cast,_2),A.boxes=Y.squeeze(A.rawBoxes,[0,2]),A.scores=Y.squeeze(A.rawScores,[0]);let a=Y.unstack(A.scores,1);Y.dispose(a[Dn]),a.splice(Dn,1),A.filtered=Y.stack(a,1),Y.dispose(a),A.max=Y.max(A.filtered,1),A.argmax=Y.argMax(A.filtered,1);let y=0;A.nms=await Y.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let c=await A.nms.data(),i=await A.max.data(),l=await A.argmax.data();for(let x of Array.from(c)){let d=Y.slice(A.boxes,x,1),u=await d.data();Y.dispose(d);let f=[u[1],u[0],u[3]-u[1],u[2]-u[0]],M=jt(f,ts),h=[Math.trunc(f[0]*se[0]),Math.trunc(f[1]*se[1]),Math.trunc(f[2]*se[0]),Math.trunc(f[3]*se[1])],P=i[x],m=$2[l[x]],p={id:y++,score:P,box:h,boxRaw:M,label:m};o.push(p)}return Object.keys(A).forEach(x=>Y.dispose(A[x])),o.sort((x,d)=>d.score-x.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function no(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&l0[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},r=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Y.image.cropAndResize(e,[r],[0],[be[1][0],be[1][1]],"bilinear"),n.div=Y.div(n.crop,H.tf255),[n.score,n.keypoints]=l0[1].execute(n.div,["Identity_1","Identity"]);let s=(await n.score.data())[0],a=(100-Math.trunc(100/(1+Math.exp(s))))/100;if(a>=(o.hand.minConfidence||0)){A.fingerScore=a,n.reshaped=Y.reshape(n.keypoints,[-1,3]);let i=(await n.reshaped.array()).map(l=>[l[0]/be[1][1],l[1]/be[1][0],l[2]||0]).map(l=>[l[0]*t.boxRaw[2],l[1]*t.boxRaw[3],l[2]||0]);A.keypoints=i.map(l=>[se[0]*(l[0]+t.boxRaw[0]),se[1]*(l[1]+t.boxRaw[1]),l[2]||0]),A.landmarks=Ht(A.keypoints);for(let l of Object.keys(Un))A.annotations[l]=Un[l].map(x=>A.landmarks&&A.keypoints[x]?A.keypoints[x]:null)}Object.keys(n).forEach(y=>Y.dispose(n[y]))}return A}async function ro(e,t){var n,r;if(!l0[0]||!l0[1]||!((n=l0[0])==null?void 0:n.inputs[0].shape)||!((r=l0[1])==null?void 0:r.inputs[0].shape))return[];se=[e.shape[2]||0,e.shape[1]||0],Ft++;let o=(t.hand.skipTime||0)>g()-Ao,A=Ft<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?o0.hands:new Promise(async s=>{let a=3*(t.hand.skipTime||0)>g()-Ao,y=Ft<3*(t.hand.skipFrames||0);t.skipAllowed&&o0.hands.length===t.hand.maxDetected?o0.hands=await Promise.all(o0.boxes.map(i=>no(e,i,t))):t.skipAllowed&&a&&y&&o0.hands.length>0?o0.hands=await Promise.all(o0.boxes.map(i=>no(e,i,t))):(o0.boxes=await os(e,t),Ao=g(),o0.hands=await Promise.all(o0.boxes.map(i=>no(e,i,t))),Ft=0);let c=[...o0.boxes];if(o0.boxes.length=0,t.cacheSensitivity>0)for(let i=0;i.05&&l.box[3]/(e.shape[1]||1)>.05&&o0.hands[i].fingerScore&&o0.hands[i].fingerScore>(t.hand.minConfidence||0)){let x=jt(l.box,qn),d=jt(l.boxRaw,qn);o0.boxes.push({...c[i],box:x,boxRaw:d})}}for(let i=0;ig()-_n,r=so<(((a=t.face.liveness)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&Qn===A&&Zt[o]?(so++,Zt[o]):(so=0,new Promise(async y=>{let c=Xt.image.resizeBilinear(e,[(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[2]:0,(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[1]:0],!1),i=u0==null?void 0:u0.execute(c),l=(await i.data())[0];Zt[o]=Math.round(100*l)/100,Qn=A,_n=g(),Xt.dispose([c,i]),y(Zt[o])}))}var rr=V(F());var lt={};mt(lt,{connected:()=>qt,horizontal:()=>io,kpt:()=>Dt,relative:()=>yo,vertical:()=>lo});var Dt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],io=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],lo=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],yo=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],qt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var ge=V(F()),tr=.005,S0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function xo(e){for(let t of io){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]c&&c.part===t[0]),n=e.keypoints.findIndex(c=>c&&c.part===t[1]),r=e.keypoints.findIndex(c=>c&&c.part===o[0]),s=e.keypoints.findIndex(c=>c&&c.part===o[1]);if(!e.keypoints[r]||!e.keypoints[s])continue;let a=e.keypoints[A]?[Math.abs(e.keypoints[r].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0])]:[0,0],y=e.keypoints[n]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[r].position[0]-e.keypoints[n].position[0])]:[0,0];if(a[0]>a[1]||y[0]>y[1]){let c=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=c}}}function or(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=ge.pad(e,S0.padding),o.resize=ge.image.resizeBilinear(o.pad,[t,t]);let A=ge.cast(o.resize,"int32");return Object.keys(o).forEach(n=>ge.dispose(o[n])),A}function nr(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+S0.padding[2][0]+S0.padding[2][1])/t[0]-S0.padding[2][0],A.position[1]*(t[1]+S0.padding[1][0]+S0.padding[1][1])/t[1]-S0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=ee(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var W0,Ut=0,co=Number.MAX_SAFE_INTEGER,Ee={boxes:[],bodies:[],last:0};async function sr(e){return T.initial&&(W0=null),W0?e.debug&&b("cached model:",W0.modelUrl):(Vt(["size"],e),W0=await G(e.body.modelPath)),Ut=W0.inputs[0].shape?W0.inputs[0].shape[2]:0,Ut<64&&(Ut=256),W0}async function ns(e,t,o){let A=e[0][0],n=[],r=0;for(let i=0;it.body.minConfidence){let l=[A[i][1],A[i][0]];n.push({score:Math.round(100*r)/100,part:Dt[i],positionRaw:l,position:[Math.round((o.shape[2]||0)*l[0]),Math.round((o.shape[1]||0)*l[1])]})}r=n.reduce((i,l)=>l.score>i?l.score:i,0);let s=[],a=ee(n.map(i=>i.position),[o.shape[2],o.shape[1]]),y={};for(let[i,l]of Object.entries(qt)){let x=[];for(let d=0;dM.part===l[d]),f=n.find(M=>M.part===l[d+1]);u&&f&&u.score>(t.body.minConfidence||0)&&f.score>(t.body.minConfidence||0)&&x.push([u.position,f.position])}y[i]=x}let c={id:0,score:r,box:a.box,boxRaw:a.boxRaw,keypoints:n,annotations:y};return xo(c),s.push(c),s}async function rs(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let a=[];for(let l=0;l<17;l++){let x=r[3*l+2];if(x>t.body.minConfidence){let d=[r[3*l+1],r[3*l+0]];a.push({part:Dt[l],score:Math.round(100*x)/100,positionRaw:d,position:[Math.round((o.shape[2]||0)*d[0]),Math.round((o.shape[1]||0)*d[1])]})}}let y=ee(a.map(l=>l.position),[o.shape[2],o.shape[1]]),c={};for(let[l,x]of Object.entries(qt)){let d=[];for(let u=0;uh.part===x[u]),M=a.find(h=>h.part===x[u+1]);f&&M&&f.score>(t.body.minConfidence||0)&&M.score>(t.body.minConfidence||0)&&d.push([f.position,M.position])}c[l]=d}let i={id:n,score:s,box:y.box,boxRaw:y.boxRaw,keypoints:[...a],annotations:c};xo(i),A.push(i)}}return A.sort((n,r)=>r.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function fo(e,t){if(!W0||!(W0==null?void 0:W0.inputs[0].shape))return[];t.skipAllowed||(Ee.boxes.length=0),co++;let o=(t.body.skipTime||0)>g()-Ee.last,A=co<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ee.bodies:new Promise(async n=>{let r={};co=0,r.input=Ar(e,Ut),r.res=W0==null?void 0:W0.execute(r.input),Ee.last=g();let s=await r.res.array();Ee.bodies=r.res.shape[2]===17?await ns(s,t,e):await rs(s,t,e);for(let a of Ee.bodies)nr(a,[e.shape[2]||1,e.shape[1]||1]),or(a.keypoints);Object.keys(r).forEach(a=>rr.dispose(r[a])),n(Ee.bodies)})}var M0=V(F());var qe,Jt=[],ir=0,mo=Number.MAX_SAFE_INTEGER,Kt=0,Yt=2.5;async function lr(e){if(!qe||T.initial){qe=await G(e.object.modelPath);let t=Object.values(qe.modelSignature.inputs);Kt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&b("cached model:",qe.modelUrl);return qe}async function ss(e,t,o){let A=0,n=[];for(let y of[1,2,4])M0.tidy(async()=>{let c=y*13,i=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)===Ne.length)),l=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)(o.object.minConfidence||0)&&M!==61){let P=(.5+Math.trunc(f%c))/c,m=(.5+Math.trunc(f/c))/c,p=d[f].map(q=>q*(c/y/Kt)),[k,C]=[P-Yt/y*p[0],m-Yt/y*p[1]],[O,j]=[P+Yt/y*p[2]-k,m+Yt/y*p[3]-C],L=[k,C,O,j];L=L.map(q=>Math.max(0,Math.min(q,1)));let J=[L[0]*t[0],L[1]*t[1],L[2]*t[0],L[3]*t[1]],Z={id:A++,score:Math.round(100*h)/100,class:M+1,label:Ne[M].label,box:J.map(q=>Math.trunc(q)),boxRaw:L};n.push(Z)}}});e.forEach(y=>M0.dispose(y));let r=n.map(y=>[y.boxRaw[1],y.boxRaw[0],y.boxRaw[3],y.boxRaw[2]]),s=n.map(y=>y.score),a=[];if(r&&r.length>0){let y=await M0.image.nonMaxSuppressionAsync(r,s,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);a=await y.data(),M0.dispose(y)}return n=n.filter((y,c)=>a.includes(c)).sort((y,c)=>c.score-y.score),n}async function po(e,t){let o=(t.object.skipTime||0)>g()-ir,A=mo<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&Jt.length>0?(mo++,Jt):(mo=0,!T.kernels.includes("mod")||!T.kernels.includes("sparsetodense")?Jt:new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=M0.image.resizeBilinear(e,[Kt,Kt],!1),a=M0.div(s,H.tf255),y=a.transpose([0,3,1,2]);M0.dispose(a),M0.dispose(s);let c;t.object.enabled&&(c=qe.execute(y)),ir=g(),M0.dispose(y);let i=await ss(c,r,t);Jt=i,n(i)}))}var v0=V(F());var xt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],as=xt.length,yt=xt.reduce((e,t,o)=>(e[t]=o,e),{}),is=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],T1=is.map(([e,t])=>[yt[e],yt[t]]),xr=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function cr(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:r},{position:{x:s,y:a}})=>({maxX:Math.max(o,s),maxY:Math.max(A,a),minX:Math.min(n,s),minY:Math.min(r,a)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function dr(e,[t,o],[A,n]){let r=t/A,s=o/n,a=(c,i)=>({id:i,score:c.score,boxRaw:[c.box[0]/n,c.box[1]/A,c.box[2]/n,c.box[3]/A],box:[Math.trunc(c.box[0]*s),Math.trunc(c.box[1]*r),Math.trunc(c.box[2]*s),Math.trunc(c.box[3]*r)],keypoints:c.keypoints.map(({score:l,part:x,position:d})=>({score:l,part:x,position:[Math.trunc(d.x*s),Math.trunc(d.y*r)],positionRaw:[d.x/A,d.y/A]})),annotations:{}});return e.map((c,i)=>a(c,i))}var uo=class{constructor(t,o){R(this,"priorityQueue");R(this,"numberOfElements");R(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function fr(e,t,o,A){let n=o-e,r=A-t;return n*n+r*r}function Po(e,t){return{x:e.x+t.x,y:e.y+t.y}}var X0,ys=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Qt=1,Ue=16,xs=50**2;function mr(e,t,o,A,n,r,s=2){let a=h=>({y:r.get(h.y,h.x,e),x:r.get(h.y,h.x,r.shape[2]/2+e)}),y=(h,P,m)=>({y:go(Math.round(h.y/Ue),0,P-1),x:go(Math.round(h.x/Ue),0,m-1)}),[c,i]=A.shape,l=y(t.position,c,i),x=a(l),u=Po(t.position,x);for(let h=0;h[yt[x],yt[d]]),s=r.map(([,x])=>x),a=r.map(([x])=>x),y=t.shape[2],c=s.length,i=new Array(y),l=bo(e.part,Ue,o);i[e.part.id]={score:e.score,part:xt[e.part.id],position:l};for(let x=c-1;x>=0;--x){let d=s[x],u=a[x];i[d]&&!i[u]&&(i[u]=mr(x,i[d],u,t,o,n))}for(let x=0;xt){a=!1;break}if(!a)break}return a}function fs(e,t){let[o,A,n]=t.shape,r=new uo(o*A*n,({score:s})=>s);for(let s=0;s{var s;let r=(s=n[A])==null?void 0:s.position;return r?fr(o,t,r.y,r.x)<=xs:!1})}function ms(e,t){return t.reduce((A,{position:n,score:r},s)=>(pr(e,n,s)||(A+=r),A),0)/t.length}function ps(e,t,o,A,n,r){let s=[],a=fs(r,t);for(;s.lengthd.score>r);let l=ms(s,i),x=cr(i);l>r&&s.push({keypoints:i,box:x,score:Math.round(100*l)/100})}return s}async function Mo(e,t){let o=v0.tidy(()=>{if(!X0.inputs[0].shape)return[];let s=v0.image.resizeBilinear(e,[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]),a=v0.sub(v0.div(v0.cast(s,"float32"),127.5),1),c=X0.execute(a,ys).map(i=>v0.squeeze(i,[0]));return c[1]=v0.sigmoid(c[1]),c}),A=await Promise.all(o.map(s=>s.buffer()));for(let s of o)v0.dispose(s);let n=await ps(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return X0.inputs[0].shape?dr(n,[e.shape[1],e.shape[2]],[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]):[]}async function ur(e){return!X0||T.initial?X0=await G(e.body.modelPath):e.debug&&b("cached model:",X0.modelUrl),X0}var t0=V(F());var J0,vo=!1;async function To(e){return!J0||T.initial?J0=await G(e.segmentation.modelPath):e.debug&&b("cached model:",J0.modelUrl),J0}async function br(e,t,o){var f,M;if(vo)return{data:[],canvas:null,alpha:null};vo=!0,J0||await To(o);let A=await We(e,o),n=((f=A.tensor)==null?void 0:f.shape[2])||0,r=((M=A.tensor)==null?void 0:M.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let s={};s.resize=t0.image.resizeBilinear(A.tensor,[J0.inputs[0].shape?J0.inputs[0].shape[1]:0,J0.inputs[0].shape?J0.inputs[0].shape[2]:0],!1),t0.dispose(A.tensor),s.norm=t0.div(s.resize,H.tf255),s.res=J0.execute(s.norm),s.squeeze=t0.squeeze(s.res,0),s.squeeze.shape[2]===2?(s.softmax=t0.softmax(s.squeeze),[s.bg,s.fg]=t0.unstack(s.softmax,2),s.expand=t0.expandDims(s.fg,2),s.pad=t0.expandDims(s.expand,0),s.crop=t0.image.cropAndResize(s.pad,[[0,0,.5,.5]],[0],[n,r]),s.data=t0.squeeze(s.crop,0)):s.data=t0.image.resizeBilinear(s.squeeze,[r,n]);let a=Array.from(await s.data.data());if(T.node&&!T.Canvas&&typeof ImageData=="undefined")return o.debug&&b("canvas support missing"),Object.keys(s).forEach(h=>t0.dispose(s[h])),{data:a,canvas:null,alpha:null};let y=h0(n,r);t0.browser&&await t0.browser.toPixels(s.data,y);let c=y.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`);let i=c.getImageData(0,0,n,r),l=h0(n,r),x=l.getContext("2d");A.canvas&&x.drawImage(A.canvas,0,0),x.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(x.filter=`blur(${o.segmentation.blur}px)`),x.drawImage(y,0,0),x.globalCompositeOperation="source-over",x.filter="none";let d=x.getImageData(0,0,n,r);for(let h=0;ht0.dispose(s[h])),vo=!1,{data:a,canvas:l,alpha:y}}var Ro=class{constructor(){R(this,"ssrnetage",null);R(this,"gear",null);R(this,"blazeposedetect",null);R(this,"blazepose",null);R(this,"centernet",null);R(this,"efficientpose",null);R(this,"mobilefacenet",null);R(this,"emotion",null);R(this,"facedetect",null);R(this,"faceiris",null);R(this,"facemesh",null);R(this,"faceres",null);R(this,"ssrnetgender",null);R(this,"handpose",null);R(this,"handskeleton",null);R(this,"handtrack",null);R(this,"liveness",null);R(this,"movenet",null);R(this,"nanodet",null);R(this,"posenet",null);R(this,"segmentation",null);R(this,"antispoof",null)}};function wo(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Pr(e){var t,o,A,n,r,s,a,y,c,i,l,x,d,u,f,M,h,P,m,p,k,C,O,j,L,J,Z,q,x0,E;T.initial&&wo(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await oo(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await oo(e.config))),e.config.body.enabled&&!e.models.blazepose&&((s=(r=e.config.body)==null?void 0:r.modelPath)==null?void 0:s.includes("blazepose"))&&(e.models.blazepose=XA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=ZA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((y=(a=e.config.body)==null?void 0:a.modelPath)==null?void 0:y.includes("efficientpose"))&&(e.models.efficientpose=KA(e.config)),e.config.body.enabled&&!e.models.movenet&&((i=(c=e.config.body)==null?void 0:c.modelPath)==null?void 0:i.includes("movenet"))&&(e.models.movenet=sr(e.config)),e.config.body.enabled&&!e.models.posenet&&((x=(l=e.config.body)==null?void 0:l.modelPath)==null?void 0:x.includes("posenet"))&&(e.models.posenet=ur(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=OA(e.config)),e.config.face.enabled&&((d=e.config.face.antispoof)==null?void 0:d.enabled)&&!e.models.antispoof&&(e.models.antispoof=PA(e.config)),e.config.face.enabled&&((u=e.config.face.liveness)==null?void 0:u.enabled)&&!e.models.liveness&&(e.models.liveness=$n(e.config)),e.config.face.enabled&&((f=e.config.face.description)==null?void 0:f.enabled)&&!e.models.faceres&&(e.models.faceres=Pn(e.config)),e.config.face.enabled&&((M=e.config.face.emotion)==null?void 0:M.enabled)&&!e.models.emotion&&(e.models.emotion=en(e.config)),e.config.face.enabled&&((h=e.config.face.iris)==null?void 0:h.enabled)&&!e.models.faceiris&&(e.models.faceiris=cn(e.config)),e.config.face.enabled&&((P=e.config.face.mesh)==null?void 0:P.enabled)&&!e.models.facemesh&&(e.models.facemesh=pn(e.config)),e.config.face.enabled&&((m=e.config.face.gear)==null?void 0:m.enabled)&&!e.models.gear&&(e.models.gear=iA(e.config)),e.config.face.enabled&&((p=e.config.face.ssrnet)==null?void 0:p.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=dA(e.config)),e.config.face.enabled&&((k=e.config.face.ssrnet)==null?void 0:k.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=uA(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=sn(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((j=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:j.includes("handtrack"))&&(e.models.handtrack=Jn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((J=(L=e.config.hand.detector)==null?void 0:L.modelPath)==null?void 0:J.includes("handtrack"))&&(e.models.handskeleton=Yn(e.config)),e.config.object.enabled&&!e.models.centernet&&((q=(Z=e.config.object)==null?void 0:Z.modelPath)==null?void 0:q.includes("centernet"))&&(e.models.centernet=UA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((E=(x0=e.config.object)==null?void 0:x0.modelPath)==null?void 0:E.includes("nanodet"))&&(e.models.nanodet=lr(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=To(e.config));for await(let C0 of Object.keys(e.models))e.models[C0]&&typeof e.models[C0]!="undefined"&&(e.models[C0]=await e.models[C0])}async function Mr(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],r=A==null?void 0:A.executor;if(r&&r.graph.nodes)for(let a of Object.values(r.graph.nodes)){let y=a.op.toLowerCase();n.includes(y)||n.push(y)}else!r&&e.config.debug&&b("model signature not determined:",o);let s=[];for(let a of n)!t.includes(a)&&!e.env.kernels.includes(a)&&!e.env.kernels.includes(a.replace("_",""))&&!e.env.kernels.includes(a.replace("native",""))&&!e.env.kernels.includes(a.replace("v2",""))&&s.push(a);e.config.debug&&s.length>0&&b("model validation failed:",o,s)}}var $={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function us(){let e=$.gl;!e||($.extensions=e.getSupportedExtensions())}async function Tr(e){var t;if(e.config.backend==="humangl"&&($.name in s0.engine().registry&&(!$.gl||!$.gl.getParameter($.gl.VERSION))&&(b("error: humangl backend invalid context"),wo(e)),!s0.findBackend($.name))){try{$.canvas=await h0(100,100)}catch(A){b("error: cannot create canvas:",A);return}try{if($.gl=(t=$.canvas)==null?void 0:t.getContext("webgl2",$.webGLattr),!$.gl.getParameter($.gl.VERSION).includes("2.0")){b("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}$.canvas&&($.canvas.addEventListener("webglcontextlost",async n=>{throw b("error: humangl:",n.type),b("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),$.canvas.addEventListener("webglcontextrestored",n=>{b("error: humangl context restored:",n)}),$.canvas.addEventListener("webglcontextcreationerror",n=>{b("error: humangl context create:",n)}))}catch(A){b("error: cannot get WebGL context:",A);return}try{s0.setWebGLContext(2,$.gl)}catch(A){b("error: cannot set WebGL context:",A);return}try{let A=new s0.GPGPUContext($.gl);s0.registerBackend($.name,()=>new s0.MathBackendWebGL(A),$.priority)}catch(A){b("error: cannot register WebGL backend:",A);return}try{s0.getKernelsForBackend("webgl").forEach(n=>{let r={...n,backendName:$.name};s0.registerKernel(r)})}catch(A){b("error: cannot update WebGL backend registration:",A);return}let o=s0.backend().getGPGPUContext?s0.backend().getGPGPUContext().gl:null;if(o)b(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{b("error: no current gl context:",o,$.gl);return}try{s0.ENV.set("WEBGL_VERSION",2)}catch(A){b("error: cannot set WebGL backend flags:",A);return}us(),b("backend registered:",$.name)}}var S=V(F());function hs(){if(!T.kernels.includes("mod")){let e={kernelName:"Mod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.sub(t.inputs.a,S.mul(S.div(t.inputs.a,t.inputs.b),t.inputs.b)))};S.registerKernel(e),T.kernels.push("mod")}if(!T.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+S.mod(t.inputs.a,t.inputs.b))};S.registerKernel(e),T.kernels.push("floormod")}}async function _t(e,t=!1){if(e.state="backend",t||T.initial||e.config.backend&&e.config.backend.length>0&&S.getBackend()!==e.config.backend){let o=g();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&b("running inside web worker"),T.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&b("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),T.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&b(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),T.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")b("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&b("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Tr(e);let A=Object.keys(S.engine().registryFactory);if(e.config.debug&&b("available backends:",A),A.includes(e.config.backend)||(b(`error: backend ${e.config.backend} not found in registry`),e.config.backend=T.node?"tensorflow":"webgl",e.config.debug&&b(`override: setting backend ${e.config.backend}`)),e.config.debug&&b("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&b("wasm path:",e.config.wasmPath),typeof(S==null?void 0:S.setWasmPaths)!="undefined")await S.setWasmPaths(e.config.wasmPath,e.config.wasmPlatformFetch);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await S.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await S.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&b(`wasm execution: ${n?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&b("warning: wasm simd support is not enabled")}try{await S.setBackend(e.config.backend),await S.ready(),yA()}catch(n){return b("error: cannot set backend:",e.config.backend,n),!1}}if(S.getBackend()==="humangl"&&(S.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),S.ENV.set("WEBGL_CPU_FORWARD",!0),S.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),S.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(b("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),S.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),S.backend().getGPGPUContext)){let A=await S.backend().getGPGPUContext().gl;e.config.debug&&b(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}S.getBackend()==="webgpu",S.enableProdMode(),await S.ready(),e.performance.initBackend=Math.trunc(g()-o),e.config.backend=S.getBackend(),await T.updateBackend(),hs()}return!0}function Vt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&b("kernelFunc",o,t.backend)}};S.registerKernel(A)}T.kernels=S.getKernelsForBackend(S.getBackend()).map(o=>o.kernelName.toLowerCase())}var ae={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},ko=0,ze=e=>{if(!e)b("draw error: invalid canvas");else if(!e.getContext)b("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)b("draw error: cannot get canvas context");else return t}return null},Je=e=>Math.round(e*180/Math.PI);function Eo(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function ct(e,t,o,A,n,r){if(e.beginPath(),e.lineWidth=r.lineWidth,r.useCurves){let s=(t+t+A)/2,a=(o+o+n)/2;e.ellipse(s,a,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+r.roundRect,o),e.lineTo(t+A-r.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+r.roundRect),e.lineTo(t+A,o+n-r.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-r.roundRect,o+n),e.lineTo(t+r.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-r.roundRect),e.lineTo(t,o+r.roundRect),e.quadraticCurveTo(t,o,t+r.roundRect,o),e.closePath();e.stroke()}function kr(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function gs(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){kr(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&y[1].length>0){let c=a[1]>0?`#${a[1]}`:"",i=`${a[0]} ${c}: ${y[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(i,8,2+r*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(i,6,0+r*A.lineHeight),r+=1}}}}async function jo(e,t,o){var r,s,a,y,c;let A=c0(ae,o);if(!t||!e)return;let n=ze(e);if(!!n)for(let i of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&ct(n,i.box[0],i.box[1],i.box[2],i.box[3],A),A.drawLabels){let l=[];if(l.push(`face: ${Math.trunc(100*i.score)}%`),i.genderScore&&l.push(`${i.gender||""} ${Math.trunc(100*i.genderScore)}%`),i.age&&l.push(`age: ${i.age||""}`),i.iris&&l.push(`distance: ${i.iris}`),i.real&&l.push(`real: ${Math.trunc(100*i.real)}%`),i.live&&l.push(`live: ${Math.trunc(100*i.live)}%`),i.emotion&&i.emotion.length>0){let x=i.emotion.map(d=>`${Math.trunc(100*d.score)}% ${d.emotion}`);x.length>3&&(x.length=3),l.push(x.join(" "))}i.rotation&&i.rotation.angle&&i.rotation.gaze&&(i.rotation.angle.roll&&l.push(`roll: ${Je(i.rotation.angle.roll)}\xB0 yaw:${Je(i.rotation.angle.yaw)}\xB0 pitch:${Je(i.rotation.angle.pitch)}\xB0`),i.rotation.gaze.bearing&&l.push(`gaze: ${Je(i.rotation.gaze.bearing)}\xB0`)),l.length===0&&l.push("face"),n.fillStyle=A.color;for(let x=l.length-1;x>=0;x--){let d=Math.max(i.box[0],0),u=x*A.lineHeight+i.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l[x],d+5,u+16)),n.fillStyle=A.labelColor,n.fillText(l[x],d+4,u+15)}}if(n.lineWidth=2,i.mesh&&i.mesh.length>0){if(A.drawPoints)for(let l of i.mesh)Eo(n,l[0],l[1],l[2],A);if(A.drawPolygons){if(i.mesh.length>450)for(let l=0;li.mesh[d]);kr(n,x,A)}if(i.annotations&&i.annotations.leftEyeIris&&i.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.leftEyeIris[3][0]-i.annotations.leftEyeIris[1][0])/2,x=Math.abs(i.annotations.leftEyeIris[4][1]-i.annotations.leftEyeIris[2][1])/2;n.ellipse(i.annotations.leftEyeIris[0][0],i.annotations.leftEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(i.annotations&&i.annotations.rightEyeIris&&i.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.rightEyeIris[3][0]-i.annotations.rightEyeIris[1][0])/2,x=Math.abs(i.annotations.rightEyeIris[4][1]-i.annotations.rightEyeIris[2][1])/2;n.ellipse(i.annotations.rightEyeIris[0][0],i.annotations.rightEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((r=i.rotation)==null?void 0:r.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let l=i.box[0]+i.box[2]/2-i.box[3]*Je(i.rotation.angle.yaw)/90,x=i.box[1]+i.box[3]/2+i.box[2]*Je(i.rotation.angle.pitch)/90,d=new Path2D(` M ${i.box[0]+i.box[2]/2} ${i.box[1]} C ${l} ${i.box[1]}, diff --git a/dist/human.node.d.ts b/dist/human.node.d.ts index fca0ad10..121f5b21 100644 --- a/dist/human.node.d.ts +++ b/dist/human.node.d.ts @@ -167,6 +167,11 @@ export declare interface Config { * default: auto-detects to link to CDN `jsdelivr` when running in browser */ wasmPath: string; + /** Force WASM loader to use platform fetch + * + * default: auto-detects to link to CDN `jsdelivr` when running in browser + */ + wasmPlatformFetch: false; /** Print debug statements to console * * default: `true` diff --git a/dist/human.node.js b/dist/human.node.js index ca0db2cf..4b584c7c 100644 --- a/dist/human.node.js +++ b/dist/human.node.js @@ -4,7 +4,7 @@ author: ' */ -var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Jr=Object.getPrototypeOf,Yr=Object.prototype.hasOwnProperty;var Kr=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Ho=e=>$e(e,"__esModule",{value:!0});var Qr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mt=(e,t)=>{for(var o in t)$e(e,o,{get:t[o],enumerable:!0})},Fo=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ur(t))!Yr.call(e,n)&&(o||n!=="default")&&$e(e,n,{get:()=>t[n],enumerable:!(A=qr(t,n))||A.enumerable});return e},V=(e,t)=>Fo(Ho($e(e!=null?Dr(Jr(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),_r=(e=>(t,o)=>e&&e.get(t)||(o=Fo(Ho({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0);var R=(e,t,o)=>(Kr(e,typeof t!="symbol"?t+"":t,o),o),Vo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var et=(e,t,o)=>(Vo(e,t,"read from private field"),o?o.call(e):t.get(e)),tt=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ot=(e,t,o,A)=>(Vo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);var F=Qr((Gs,Uo)=>{var Xo=Object.defineProperty,$r=Object.getOwnPropertyDescriptor,e2=Object.getOwnPropertyNames,t2=Object.prototype.hasOwnProperty,o2=e=>Xo(e,"__esModule",{value:!0}),Do=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of e2(t))!t2.call(e,n)&&(o||n!=="default")&&Xo(e,n,{get:()=>t[n],enumerable:!(A=$r(t,n))||A.enumerable});return e},A2=(e=>(t,o)=>e&&e.get(t)||(o=Do(o2({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0),qo={};Do(qo,require("@tensorflow/tfjs-node"));Uo.exports=A2(qo)});var Is={};mt(Is,{Human:()=>Xr,default:()=>Xr,defaults:()=>le,env:()=>T});function b(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function Zo(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var g=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function A5(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")A5(e[n],t[n],n,A);else{let r=e&&typeof e[n]!="undefined";r||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let s=e&&typeof e[n]==typeof t[n];r&&!s&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&b("invalid configuration",A),A}function c0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let r=o[n],s=A[n];Array.isArray(r)&&Array.isArray(s)?o[n]=r.concat(...s):t(r)&&t(s)?o[n]=c0(r,s):o[n]=s}),o),{})}var le={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var d0=V(F());var W=V(F());var Jo=` +var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Ur=Object.getOwnPropertyNames;var Jr=Object.getPrototypeOf,Yr=Object.prototype.hasOwnProperty;var Kr=(e,t,o)=>t in e?$e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Ho=e=>$e(e,"__esModule",{value:!0});var Qr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mt=(e,t)=>{for(var o in t)$e(e,o,{get:t[o],enumerable:!0})},Fo=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ur(t))!Yr.call(e,n)&&(o||n!=="default")&&$e(e,n,{get:()=>t[n],enumerable:!(A=qr(t,n))||A.enumerable});return e},V=(e,t)=>Fo(Ho($e(e!=null?Dr(Jr(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),_r=(e=>(t,o)=>e&&e.get(t)||(o=Fo(Ho({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0);var R=(e,t,o)=>(Kr(e,typeof t!="symbol"?t+"":t,o),o),Vo=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)};var et=(e,t,o)=>(Vo(e,t,"read from private field"),o?o.call(e):t.get(e)),tt=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},ot=(e,t,o,A)=>(Vo(e,t,"write to private field"),A?A.call(e,o):t.set(e,o),o);var F=Qr((Gs,Uo)=>{var Xo=Object.defineProperty,$r=Object.getOwnPropertyDescriptor,e2=Object.getOwnPropertyNames,t2=Object.prototype.hasOwnProperty,o2=e=>Xo(e,"__esModule",{value:!0}),Do=(e,t,o,A)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of e2(t))!t2.call(e,n)&&(o||n!=="default")&&Xo(e,n,{get:()=>t[n],enumerable:!(A=$r(t,n))||A.enumerable});return e},A2=(e=>(t,o)=>e&&e.get(t)||(o=Do(o2({}),t,1),e&&e.set(t,o),o))(typeof WeakMap!="undefined"?new WeakMap:0),qo={};Do(qo,require("@tensorflow/tfjs-node"));Uo.exports=A2(qo)});var Is={};mt(Is,{Human:()=>Xr,default:()=>Xr,defaults:()=>le,env:()=>T});function b(...e){let t=new Date,o=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(o,"Human:",...e)}function Zo(e,t){let o=e.endsWith("/")?"":"/",n=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${o}${t}`;if(!n.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${n}`);return n}var g=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function A5(e,t,o="config",A=[]){for(let n of Object.keys(t))if(typeof t[n]=="object")A5(e[n],t[n],n,A);else{let r=e&&typeof e[n]!="undefined";r||A.push({reason:"unknown property",where:`${o}.${n} = ${t[n]}`});let s=e&&typeof e[n]==typeof t[n];r&&!s&&A.push({reason:"property type mismatch",where:`${o}.${n} = ${t[n]}`,expected:typeof e[n]})}return t.debug&&o==="config"&&A.length>0&&b("invalid configuration",A),A}function c0(...e){let t=o=>o&&typeof o=="object";return e.reduce((o,A)=>(Object.keys(A||{}).forEach(n=>{let r=o[n],s=A[n];Array.isArray(r)&&Array.isArray(s)?o[n]=r.concat(...s):t(r)&&t(s)?o[n]=c0(r,s):o[n]=s}),o),{})}var le={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var d0=V(F());var W=V(F());var Jo=` precision highp float; attribute vec2 pos; attribute vec2 uv; @@ -96,7 +96,7 @@ var Dr=Object.create;var $e=Object.defineProperty;var qr=Object.getOwnPropertyDe c31 * m[6] + c32 * m[7] + c33 * m[8]; gl_FragColor.a = c22.a; } -`;var n5=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,r)=>(o[r]=0,n))},eA=class{constructor(t,o,A){R(this,"uniform",{});R(this,"attribute",{});R(this,"gl");R(this,"id");R(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(b(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(b("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),r=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!r)){if(!this.id){b("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,r),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){b(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),n5(o,"attribute",this.attribute);for(let s in this.attribute)this.attribute[s]=this.gl.getAttribLocation(this.id,s);n5(o,"uniform",this.uniform),n5(A,"uniform",this.uniform);for(let s in this.uniform)this.uniform[s]=this.gl.getUniformLocation(this.id,s)}}};function tA(){let e=0,t=null,o=!1,A=-1,n=[null,null],r=[],s=null,a=null,y=h0(100,100),c={},i={INTERMEDIATE:1},l=y.getContext("webgl");if(this.gl=l,!l){b("filter: cannot get webgl context");return}function x(P,m){if(!(P===y.width&&m===y.height)){if(y.width=P,y.height=m,!s){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);s=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,s),l.bufferData(l.ARRAY_BUFFER,p,l.STATIC_DRAW),l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}l.viewport(0,0,y.width,y.height),n=[null,null]}}function d(P,m){let p=l.createFramebuffer();l.bindFramebuffer(l.FRAMEBUFFER,p);let k=l.createRenderbuffer();l.bindRenderbuffer(l.RENDERBUFFER,k);let C=l.createTexture();return l.bindTexture(l.TEXTURE_2D,C),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,P,m,0,l.RGBA,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,C,0),l.bindTexture(l.TEXTURE_2D,null),l.bindFramebuffer(l.FRAMEBUFFER,null),{fbo:p,texture:C}}function u(P){return n[P]=n[P]||d(y.width,y.height),n[P]}function f(P=0){if(!a)return;let m=null,p=null,k=!1;e===0?m=t:m=u(A).texture||null,e++,o&&!(P&i.INTERMEDIATE)?(p=null,k=e%2===0):(A=(A+1)%2,p=u(A).fbo||null),l.bindTexture(l.TEXTURE_2D,m),l.bindFramebuffer(l.FRAMEBUFFER,p),l.uniform1f(a.uniform.flipY,k?-1:1),l.drawArrays(l.TRIANGLES,0,6)}function M(P){if(c[P])return a=c[P],l.useProgram((a?a.id:null)||null),a;if(a=new eA(l,Jo,P),!a)return b("filter: could not get webgl program"),null;let m=Float32Array.BYTES_PER_ELEMENT,p=4*m;return l.enableVertexAttribArray(a.attribute.pos),l.vertexAttribPointer(a.attribute.pos,2,l.FLOAT,!1,p,0*m),l.enableVertexAttribArray(a.attribute.uv),l.vertexAttribPointer(a.attribute.uv,2,l.FLOAT,!1,p,2*m),c[P]=a,a}let h={colorMatrix:P=>{let m=new Float32Array(P);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let p=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?Ko:Yo,k=M(p);!k||(l.uniform1fv(k.uniform.m,m),f())},brightness:P=>{let m=(P||0)+1;h.colorMatrix([m,0,0,0,0,0,m,0,0,0,0,0,m,0,0,0,0,0,1,0])},saturation:P=>{let m=(P||0)*2/3+1,p=(m-1)*-.5;h.colorMatrix([m,p,p,0,0,p,m,p,0,0,p,p,m,0,0,0,0,0,1,0])},desaturate:()=>{h.saturation(-1)},contrast:P=>{let m=(P||0)+1,p=-128*(m-1);h.colorMatrix([m,0,0,0,p,0,m,0,0,p,0,0,m,0,p,0,0,0,1,0])},negative:()=>{h.contrast(-2)},hue:P=>{P=(P||0)/180*Math.PI;let m=Math.cos(P),p=Math.sin(P),k=.213,C=.715,O=.072;h.colorMatrix([k+m*(1-k)+p*-k,C+m*-C+p*-C,O+m*-O+p*(1-O),0,0,k+m*-k+p*.143,C+m*(1-C)+p*.14,O+m*-O+p*-.283,0,0,k+m*-k+p*-(1-k),C+m*-C+p*C,O+m*(1-O)+p*O,0,0,0,0,0,1,0])},desaturateLuminance:()=>{h.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{h.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{h.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{h.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{h.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{h.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{h.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{h.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:P=>{let m=new Float32Array(P),p=1/y.width,k=1/y.height,C=M($o);!C||(l.uniform1fv(C.uniform.m,m),l.uniform2f(C.uniform.px,p,k),f())},detectEdges:()=>{h.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{h.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{h.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:P=>{let m=P||1;h.convolution.call(this,[0,-1*m,0,-1*m,1+4*m,-1*m,0,-1*m,0])},emboss:P=>{let m=P||1;h.convolution.call(this,[-2*m,-1*m,0,-1*m,1,1*m,0,1*m,2*m])},blur:P=>{let m=P/7/y.width,p=P/7/y.height,k=M(_o);!k||(l.uniform2f(k.uniform.px,0,p),f(i.INTERMEDIATE),l.uniform2f(k.uniform.px,m,0),f())},pixelate:P=>{let m=P/y.width,p=P/y.height,k=M(Qo);!k||(l.uniform2f(k.uniform.size,m,p),f())}};this.add=function(P){let m=Array.prototype.slice.call(arguments,1),p=h[P];r.push({func:p,args:m})},this.reset=function(){r=[]},this.get=function(){return r},this.apply=function(P){x(P.width,P.height),e=0,t||(t=l.createTexture()),l.bindTexture(l.TEXTURE_2D,t),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,P);for(let m=0;md.data())),s=.99*Math.max(r[0][0],r[1][0],r[2][0]),a=[X.sub(o[0],A[0]),X.sub(o[1],A[1]),X.sub(o[2],A[2])],y=[X.sub(n[0],A[0]),X.sub(n[1],A[1]),X.sub(n[2],A[2])],c=[X.div(s,y[0]),X.div(s,y[1]),X.div(s,y[2])],i=[X.mul(a[0],c[0]),X.mul(a[1],c[1]),X.mul(a[2],c[2])],l=X.stack([i[0],i[1],i[2]],2),x=X.reshape(l,[1,t.shape[0],t.shape[1],3]);return X.dispose([...o,...A,...n,...a,...y,...c,...i,l,t]),x}var ut=2048,D=null,i0=null,Se=null,_,Q0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function h0(e,t){let o;if(T.browser)if(T.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof T.Canvas!="undefined"?o=new T.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function r5(e,t){let o=t||h0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function We(e,t,o=!0){if(!e)return t.debug&&b("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof W.Tensor)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof T.Canvas!="undefined"&&e instanceof T.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof W.Tensor){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=W.expandDims(e,0);else if(e.shape[2]===4){let n=W.slice3d(e,[0,0,0],[-1,-1,3]);A=W.expandDims(n,0),W.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=W.clone(e):e.shape[3]===4&&(A=W.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=W.cast(A,"float32");W.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?i0:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&b("input stream is not ready"),{tensor:null,canvas:D};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&b("cannot determine input dimensions"),{tensor:null,canvas:D};let r=A,s=n;if(r>ut&&(r=ut,s=Math.trunc(r*n/A)),s>ut&&(s=ut,r=Math.trunc(s*A/n)),(t.filter.width||0)>0?r=t.filter.width:(t.filter.height||0)>0&&(r=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?s=t.filter.height:(t.filter.width||0)>0&&(s=n*((t.filter.width||0)/A)),!r||!s)throw new Error("input error: cannot determine dimension");(!D||(D==null?void 0:D.width)!==r||(D==null?void 0:D.height)!==s)&&(D=h0(r,s));let a=D.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?a.putImageData(e,0,0):t.filter.flip&&typeof a.translate!="undefined"?(a.translate(A,0),a.scale(-1,1),a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),a.setTransform(1,0,0,1,0,0)):a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),(!i0||D.width!==i0.width||(D==null?void 0:D.height)!==(i0==null?void 0:i0.height))&&(i0=h0(D.width,D.height)),t.filter.enabled&&T.webgl.supported){if(_||(_=T.browser?new tA:null),T.filter=!!_,!_||!_.add)return t.debug&&b("input process error: cannot initialize filters"),{tensor:null,canvas:D};_.reset(),t.filter.brightness!==0&&_.add("brightness",t.filter.brightness),t.filter.contrast!==0&&_.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&_.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&_.add("blur",t.filter.blur),t.filter.saturation!==0&&_.add("saturation",t.filter.saturation),t.filter.hue!==0&&_.add("hue",t.filter.hue),t.filter.negative&&_.add("negative"),t.filter.sepia&&_.add("sepia"),t.filter.vintage&&_.add("brownie"),t.filter.sepia&&_.add("sepia"),t.filter.kodachrome&&_.add("kodachrome"),t.filter.technicolor&&_.add("technicolor"),t.filter.polaroid&&_.add("polaroid"),t.filter.pixelate!==0&&_.add("pixelate",t.filter.pixelate),_.get()>0?i0=_.apply(D):i0=_.draw(D)}else r5(D,i0),_&&(_=null),T.filter=!!_;if(!o)return{tensor:null,canvas:i0};if(!i0)throw new Error("canvas error: cannot create output");let y,c=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(T.browser&&W.browser)y=W.browser?W.browser.fromPixels(e):null;else{c=e.data.length/e.height/e.width;let x=new Uint8Array(e.data.buffer);y=W.tensor(x,[e.height,e.width,c],"int32")}else if((!Se||i0.width!==Se.width||i0.height!==Se.height)&&(Se=h0(i0.width,i0.height)),W.browser&&T.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?y=W.browser.fromPixels(i0):(Se=r5(i0),y=W.browser.fromPixels(Se));else{let u=r5(i0).getContext("2d").getImageData(0,0,r,s);c=u.data.length/r/s;let f=new Uint8Array(u.data.buffer);y=W.tensor(f,[r,s,c])}if(c===4){let x=W.slice3d(y,[0,0,0],[-1,-1,3]);W.dispose(y),y=x}if(!y)throw new Error("input error: cannot create tensor");let i=W.cast(y,"float32"),l=t.filter.equalization?await pt(i):W.expandDims(i,0);return W.dispose([y,i]),{tensor:l,canvas:t.filter.return?i0:null}}}async function oA(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!Q0.inputTensor)Q0.inputTensor=W.clone(t);else if(Q0.inputTensor.shape[1]!==t.shape[1]||Q0.inputTensor.shape[2]!==t.shape[2])W.dispose(Q0.inputTensor),Q0.inputTensor=W.clone(t);else{let A={};A.diff=W.sub(t,Q0.inputTensor),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;W.dispose([Q0.inputTensor,A.diff,A.squared,A.sum]),Q0.inputTensor=W.clone(t),o=r<=(e.cacheSensitivity||0)}return o}async function AA(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||b("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||b("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=W.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?W.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):W.clone(o),A.diff=W.sub(A.input1,A.input2),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return W.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),r}var nA=class{constructor(){R(this,"browser");R(this,"node");R(this,"worker");R(this,"platform","");R(this,"agent","");R(this,"backends",[]);R(this,"initial");R(this,"filter");R(this,"tfjs");R(this,"offscreen");R(this,"perfadd",!1);R(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});R(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});R(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});R(this,"cpu",{model:void 0,flags:[]});R(this,"kernels",[]);R(this,"Canvas");R(this,"Image");R(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:d0.version["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(d0.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&d0.getBackend()==="wasm"&&(this.wasm.simd=await d0.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await d0.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=h0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(d0.getBackend()==="webgl"||d0.getBackend()==="humangl")){let A=d0.backend().gpgpu!=="undefined"?await d0.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=d0.getKernelsForBackend(d0.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},T=new nA;var ht=V(F()),_0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function a2(e,t){return _0.debug&&b("load model fetch:",e,t),fetch(e,t)}function rA(e){_0.cacheModels=e.cacheModels,_0.verbose=e.debug,_0.modelBasePath=e.modelBasePath}async function G(e){let t=Zo(_0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await ht.io.listModels(),r=_0.cacheModels&&Object.keys(n).includes(A),s=typeof fetch=="undefined"?{}:{fetchFunc:(y,c)=>a2(y,c)},a=new ht.GraphModel(r?A:t,s);try{a.findIOHandler(),_0.debug&&b("model load handler:",a.handler);let y=await a.handler.load();a.loadSync(y),_0.verbose&&b("load model:",a.modelUrl)}catch(y){b("error loading model:",t,y)}if(_0.cacheModels&&!r)try{let y=await a.save(A);b("model saved:",A,y)}catch(y){b("error saving model:",t,y)}return a}var D0=V(F());var s5="2.6.2";var s0=V(F());var bt=V(F());var I0,a5=[],y2=["white","black","asian","indian","other"],x2=[15,23,28,35.5,45.5,55.5,65],sA=0,aA=0,i5=Number.MAX_SAFE_INTEGER;async function iA(e){return T.initial&&(I0=null),I0?e.debug&&b("cached model:",I0.modelUrl):I0=await G(e.face.gear),I0}async function l5(e,t,o,A){var s,a;if(!I0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=i5<(((s=t.face.gear)==null?void 0:s.skipFrames)||0),r=(((a=t.face.gear)==null?void 0:a.skipTime)||0)>g()-aA;return t.skipAllowed&&r&&n&&sA===A&&a5[o]?(i5++,a5[o]):(i5=0,new Promise(async y=>{var h,P;if(!(I0==null?void 0:I0.inputs[0].shape))return;let c={},i=[[0,.1,.9,.9]];c.resize=bt.image.cropAndResize(e,i,[0],[I0.inputs[0].shape[2],I0.inputs[0].shape[1]]);let l={age:0,gender:"unknown",genderScore:0,race:[]};((h=t.face.gear)==null?void 0:h.enabled)&&([c.age,c.gender,c.race]=I0.execute(c.resize,["age_output","gender_output","race_output"]));let x=await c.gender.data();l.gender=x[0]>x[1]?"male":"female",l.genderScore=Math.round(100*(x[0]>x[1]?x[0]:x[1]))/100;let d=await c.race.data();for(let m=0;m(((P=t.face.gear)==null?void 0:P.minConfidence)||.2)&&l.race.push({score:Math.round(100*d[m])/100,race:y2[m]});l.race.sort((m,p)=>p.score-m.score);let f=Array.from(await c.age.data()).map((m,p)=>[x2[p],m]).sort((m,p)=>p[1]-m[1]),M=f[0][0];for(let m=1;mbt.dispose(c[m])),a5[o]=l,sA=A,aA=g(),y(l)}))}var Ce=V(F());var ye=V(F()),H={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function yA(){H.tf255=ye.scalar(255,"float32"),H.tf1=ye.scalar(1,"float32"),H.tf2=ye.scalar(2,"float32"),H.tf05=ye.scalar(.5,"float32"),H.tf127=ye.scalar(127.5,"float32"),H.rgb=ye.tensor1d([.2989,.587,.114],"float32")}var T0,gt=[],xA=0,cA=0,y5=Number.MAX_SAFE_INTEGER;async function dA(e){return T.initial&&(T0=null),T0?e.debug&&b("cached model:",T0.modelUrl):T0=await G(e.face.ssrnet.modelPathAge),T0}async function x5(e,t,o,A){var s,a,y,c;if(!T0)return{age:0};let n=y5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-cA;return t.skipAllowed&&n&&r&&xA===A&&((y=gt[o])==null?void 0:y.age)&&((c=gt[o])==null?void 0:c.age)>0?(y5++,gt[o]):(y5=0,new Promise(async i=>{if(!(T0==null?void 0:T0.inputs)||!T0.inputs[0]||!T0.inputs[0].shape)return;let l={};l.resize=Ce.image.resizeBilinear(e,[T0.inputs[0].shape[2],T0.inputs[0].shape[1]],!1),l.enhance=Ce.mul(l.resize,H.tf255);let x={age:0};if(t.face.ssrnet.enabled&&(l.age=T0.execute(l.enhance)),l.age){let d=await l.age.data();x.age=Math.trunc(10*d[0])/10}Object.keys(l).forEach(d=>Ce.dispose(l[d])),gt[o]=x,xA=A,cA=g(),i(x)}))}var f0=V(F());var N0,Pt=[],mA=0,pA=0,c5=Number.MAX_SAFE_INTEGER,d5=[.2989,.587,.114];async function uA(e){return T.initial&&(N0=null),N0?e.debug&&b("cached model:",N0.modelUrl):N0=await G(e.face.ssrnet.modelPathGender),N0}async function f5(e,t,o,A){var s,a,y,c;if(!N0)return{gender:"unknown",genderScore:0};let n=c5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-pA;return t.skipAllowed&&n&&r&&mA===A&&((y=Pt[o])==null?void 0:y.gender)&&((c=Pt[o])==null?void 0:c.genderScore)>0?(c5++,Pt[o]):(c5=0,new Promise(async i=>{if(!(N0==null?void 0:N0.inputs[0].shape))return;let l={};l.resize=f0.image.resizeBilinear(e,[N0.inputs[0].shape[2],N0.inputs[0].shape[1]],!1),l.enhance=f0.tidy(()=>{let[u,f,M]=f0.split(l.resize,3,3),h=f0.mul(u,d5[0]),P=f0.mul(f,d5[1]),m=f0.mul(M,d5[2]),p=f0.addN([h,P,m]);return f0.mul(f0.sub(p,H.tf05),2)});let x={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(l.gender=N0.execute(l.enhance));let d=await l.gender.data();x.gender=d[0]>d[1]?"female":"male",x.genderScore=d[0]>d[1]?Math.trunc(100*d[0])/100:Math.trunc(100*d[1])/100,Object.keys(l).forEach(u=>f0.dispose(l[u])),Pt[o]=x,mA=A,pA=g(),i(x)}))}var vt=V(F());var m0,Mt=[],m5=Number.MAX_SAFE_INTEGER,bA=0,gA=0;async function PA(e){var t;return T.initial&&(m0=null),m0?e.debug&&b("cached model:",m0.modelUrl):m0=await G((t=e.face.antispoof)==null?void 0:t.modelPath),m0}async function p5(e,t,o,A){var s,a;if(!m0)return 0;let n=(((s=t.face.antispoof)==null?void 0:s.skipTime)||0)>g()-gA,r=m5<(((a=t.face.antispoof)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&bA===A&&Mt[o]?(m5++,Mt[o]):(m5=0,new Promise(async y=>{let c=vt.image.resizeBilinear(e,[(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[2]:0,(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[1]:0],!1),i=m0==null?void 0:m0.execute(c),l=(await i.data())[0];Mt[o]=Math.round(100*l)/100,bA=A,gA=g(),vt.dispose([c,i]),y(Mt[o])}))}var N=V(F());var $0=V(F());var L0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},u5={count:468,mouth:13,symmetryLine:[13,L0.midwayBetweenEyes[0]]},nt={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},h5=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],rt=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],Pe=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var d2=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],f2=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],m2=[33,133,362,263,1,78,308],aa=d2.map(e=>rt[e]),ia=f2.map(e=>rt[e]),la=m2.map(e=>rt[e]);var Oe=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Tt=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],M5=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],v5=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],RA=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},g5=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],r=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],s=$0.image.cropAndResize(t,[r],[0],o),a=$0.div(s,H.tf255);return $0.dispose(s),a},Rt=(e,t)=>{let o=Tt(e),A=Oe(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},wt=e=>{let t=Tt(e),o=Oe(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},wA=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},P5=[[1,0,0],[0,1,0],[0,0,1]],p2=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),u2=(e,t)=>p2(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var vA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Me=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],r=vA(t[0],t[1]),s=TA(r,n),a=vA(-t[0],-t[1]);return TA(s,a)},b2=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Me(t[0],o),-Me(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},g2=(e,t)=>[Me(e,t[0]),Me(e,t[1])];function EA(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[r[0]/n*(d[0]-n/2),r[1]/n*(d[1]-n/2),d[2]||0]),a=o&&o!==0&&Math.abs(o)>.2,y=a?kA(o,[0,0]):P5,c=a?s.map(d=>[...g2(d,y),d[2]]):s,i=a?b2(A):P5,l=Tt(t),x=[Me(l,i[0]),Me(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2]||0)])}function jA(e,t,o,A){let n=t.landmarks.length>=u5.count?u5.symmetryLine:nt.symmetryLine,r=0,s=P5,a;if(e&&T.kernels.includes("rotatewithoffset"))if(r=u2(t.landmarks[n[0]],t.landmarks[n[1]]),r&&r!==0&&Math.abs(r)>.2){let c=Tt(t),i=[c[0]/o.shape[2],c[1]/o.shape[1]],l=$0.image.rotateWithOffset(o,r,0,i);s=kA(-r,c),a=g5(t,l,[A,A]),$0.dispose(l)}else a=g5(t,o,[A,A]);else a=g5(t,o,[A,A]);return[r,s,a]}var P2=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},SA=(e,t)=>{let o=P2(e),A=Oe(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var WA=6,M2=1.2,q0,CA=null,xe=0,st=null,kt=()=>xe;async function OA(e){var t;return T.initial&&(q0=null),q0?e.debug&&b("cached model:",q0.modelUrl):q0=await G((t=e.face.detector)==null?void 0:t.modelPath),xe=q0.inputs[0].shape?q0.inputs[0].shape[2]:0,st=N.scalar(xe,"int32"),CA=N.tensor2d(EA(xe)),q0}function v2(e){let t={};t.boxStarts=N.slice(e,[0,1],[-1,2]),t.centers=N.add(t.boxStarts,CA),t.boxSizes=N.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=N.div(t.boxSizes,st),t.centersNormalized=N.div(t.centers,st),t.halfBoxSize=N.div(t.boxSizesNormalized,H.tf2),t.starts=N.sub(t.centersNormalized,t.halfBoxSize),t.ends=N.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=N.mul(t.starts,st),t.endNormalized=N.mul(t.ends,st);let o=N.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>N.dispose(t[A])),o}async function IA(e,t){var a,y,c,i;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=N.image.resizeBilinear(e,[xe,xe]),o.div=N.div(o.resized,H.tf127),o.normalized=N.sub(o.div,H.tf05);let A=q0==null?void 0:q0.execute(o.normalized);if(Array.isArray(A)){let l=A.sort((x,d)=>x.size-d.size);o.concat384=N.concat([l[0],l[2]],2),o.concat512=N.concat([l[1],l[3]],2),o.concat=N.concat([o.concat512,o.concat384],1),o.batch=N.squeeze(o.concat,0)}else o.batch=N.squeeze(A);N.dispose(A),o.boxes=v2(o.batch),o.logits=N.slice(o.batch,[0,0],[-1,1]),o.sigmoid=N.sigmoid(o.logits),o.scores=N.squeeze(o.sigmoid),o.nms=await N.image.nonMaxSuppressionAsync(o.boxes,o.scores,((a=t.face.detector)==null?void 0:a.maxDetected)||0,((y=t.face.detector)==null?void 0:y.iouThreshold)||0,((c=t.face.detector)==null?void 0:c.minConfidence)||0);let n=await o.nms.array(),r=[],s=await o.scores.data();for(let l=0;l(((i=t.face.detector)==null?void 0:i.minConfidence)||0)){let d={};d.bbox=N.slice(o.boxes,[n[l],0],[1,-1]),d.slice=N.slice(o.batch,[n[l],WA-1],[1,-1]),d.squeeze=N.squeeze(d.slice),d.landmarks=N.reshape(d.squeeze,[WA,-1]);let u=await d.bbox.data(),f={startPoint:[u[0],u[1]],endPoint:[u[2],u[3]],landmarks:await d.landmarks.array(),confidence:x},M=RA(f,[(e.shape[2]||0)/xe,(e.shape[1]||0)/xe]),h=Rt(M,t.face.scale||M2),P=wt(h);r.push(P),Object.keys(d).forEach(m=>N.dispose(d[m]))}}return Object.keys(o).forEach(l=>N.dispose(o[l])),r}var k0=V(F());var Et={};mt(Et,{connected:()=>w5,kpt:()=>R5});var R5=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],w5={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var R0=V(F()),LA=224,T2,R2=5,zt=[8,16,32,32,32];async function BA(){let e=[],t=0;for(;to.x)),y:R0.tensor1d(e.map(o=>o.y))}}function ee(e,t=[1,1]){let o=[e.map(a=>a[0]),e.map(a=>a[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[A[0],A[1],n[0]-A[0],n[1]-A[1]],s=[r[0]/t[0],r[1]/t[1],r[2]/t[0],r[3]/t[1]];return{box:r,boxRaw:s}}function GA(e,t=[1,1]){let o=[e.map(c=>c[0]),e.map(c=>c[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[(A[0]+n[0])/2,(A[1]+n[1])/2],s=Math.max(r[0]-A[0],r[1]-A[1],-r[0]+n[0],-r[1]+n[1]),a=[Math.trunc(r[0]-s),Math.trunc(r[1]-s),Math.trunc(2*s),Math.trunc(2*s)],y=[a[0]/t[0],a[1]/t[1],a[2]/t[0],a[3]/t[1]];return{box:a,boxRaw:y}}function jt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var VA={initial:!0},w0={detector:null,landmarks:null},Ie={detector:[224,224],landmarks:[256,256]},k5=Number.MAX_SAFE_INTEGER,k2={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},Wt=null,at,ce=[[0,0],[0,0],[0,0],[0,0]],HA=0,FA=e=>1-1/(1+Math.exp(e));async function ZA(e){if(VA.initial&&(w0.detector=null),!w0.detector&&e.body.detector&&e.body.detector.modelPath){w0.detector=await G(e.body.detector.modelPath);let t=Object.values(w0.detector.modelSignature.inputs);Ie.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&w0.detector&&b("cached model:",w0.detector.modelUrl);return await BA(),w0.detector}async function XA(e){if(VA.initial&&(w0.landmarks=null),w0.landmarks)e.debug&&b("cached model:",w0.landmarks.modelUrl);else{w0.landmarks=await G(e.body.modelPath);let t=Object.values(w0.landmarks.modelSignature.inputs);Ie.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return w0.landmarks}async function E2(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(at&&(o.cropped=k0.image.cropAndResize(e,[at],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],r=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];ce=[[0,0],n,r,[0,0]],o.pad=k0.pad(o.cropped||e,ce),o.resize=k0.image.resizeBilinear(o.pad,[t,t]),A=k0.div(o.resize,H.tf255)}else e.shape[1]!==t?(o.resize=k0.image.resizeBilinear(o.cropped||e,[t,t]),A=k0.div(o.resize,H.tf255)):A=k0.div(o.cropped||e,H.tf255);return Object.keys(o).forEach(n=>k0.dispose(o[n])),A}function z2(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+ce[2][0]+ce[2][1])/t[0]-ce[2][0]),Math.trunc(o.position[1]*(t[1]+ce[1][0]+ce[1][1])/t[1]-ce[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(at)for(let o of e)o.positionRaw=[o.positionRaw[0]+at[1],o.positionRaw[1]+at[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function j2(e){let t=e.find(a=>a.part==="leftPalm"),o=e.find(a=>a.part==="leftWrist"),A=e.find(a=>a.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(a=>a.part==="rightPalm"),r=e.find(a=>a.part==="rightWrist"),s=e.find(a=>a.part==="rightIndex");n.position[2]=((r.position[2]||0)+(s.position[2]||0))/2}async function S2(e,t,o){var u;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(u=w0.landmarks)==null?void 0:u.execute(e,k2.landmarks);let n=(await A.poseflag.data())[0],r=await A.ld.data(),s=await A.world.data();Object.keys(A).forEach(f=>k0.dispose(A[f]));let a=[],y=5;for(let f=0;ff.position),l=ee(i,[o[0],o[1]]),x={};for(let[f,M]of Object.entries(w5)){let h=[];for(let P=0;Pk.part===M[P]),p=c.find(k=>k.part===M[P+1]);m&&p&&h.push([m.position,p.position])}x[f]=h}return{id:0,score:Math.trunc(100*n)/100,box:l.box,boxRaw:l.boxRaw,keypoints:c,annotations:x}}async function E5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>g()-HA,n=k5<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&Wt!==null)k5++;else{let r={};r.landmarks=await E2(e,256),Wt=await S2(r.landmarks,t,o),Object.keys(r).forEach(s=>k0.dispose(r[s])),HA=g(),k5=0}return Wt?[Wt]:[]}var b0=V(F());var Ne=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var te,ve=0,z5=[],qA=0,j5=Number.MAX_SAFE_INTEGER;async function UA(e){if(T.initial&&(te=null),te)e.debug&&b("cached model:",te.modelUrl);else{te=await G(e.object.modelPath);let t=Object.values(te.modelSignature.inputs);ve=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return te}async function W2(e,t,o){if(!e)return[];let A={},n=[],r=await e.array();A.squeeze=b0.squeeze(e);let s=b0.split(A.squeeze,6,1);A.stack=b0.stack([s[1],s[0],s[3],s[2]],1),A.boxes=b0.squeeze(A.stack),A.scores=b0.squeeze(s[4]),A.classes=b0.squeeze(s[5]),b0.dispose([e,...s]),A.nms=await b0.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let a=await A.nms.data(),y=0;for(let c of Array.from(a)){let i=Math.trunc(100*r[0][c][4])/100,l=r[0][c][5],x=Ne[l].label,[d,u]=[r[0][c][0]/ve,r[0][c][1]/ve],f=[d,u,r[0][c][2]/ve-d,r[0][c][3]/ve-u],M=[Math.trunc(f[0]*t[0]),Math.trunc(f[1]*t[1]),Math.trunc(f[2]*t[0]),Math.trunc(f[3]*t[1])];n.push({id:y++,score:i,class:l,label:x,box:M,boxRaw:f})}return Object.keys(A).forEach(c=>b0.dispose(A[c])),n}async function S5(e,t){let o=(t.object.skipTime||0)>g()-qA,A=j5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&z5.length>0?(j5++,z5):(j5=0,new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=b0.image.resizeBilinear(e,[ve,ve]),a=t.object.enabled?te==null?void 0:te.execute(s,["tower_0/detections"]):null;qA=g(),b0.dispose(s);let y=await W2(a,r,t);z5=y,n(y)}))}var K=V(F());var Ct={};mt(Ct,{connected:()=>C5,kpt:()=>W5});var W5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],C5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var p0,YA=0,g0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},O5=Number.MAX_SAFE_INTEGER;async function KA(e){return T.initial&&(p0=null),p0?e.debug&&b("cached model:",p0.modelUrl):p0=await G(e.body.modelPath),p0}async function C2(e,t){let[o,A]=e.shape,n=K.reshape(e,[A*o]),r=K.max(n,0),s=(await r.data())[0];if(K.dispose([n,r]),s>t){let a=K.argMax(n,0),y=K.mod(a,o),c=(await y.data())[0],i=K.div(a,K.scalar(o,"int32")),l=(await i.data())[0];return K.dispose([y,i]),[c,l,s]}return[0,0,s]}async function I5(e,t){let o=(t.body.skipTime||0)>g()-YA,A=O5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(g0.keypoints).length>0?(O5++,[g0]):(O5=0,new Promise(async n=>{var l;let r=K.tidy(()=>{if(!(p0==null?void 0:p0.inputs[0].shape))return null;let x=K.image.resizeBilinear(e,[p0.inputs[0].shape[2],p0.inputs[0].shape[1]],!1),d=K.mul(x,H.tf2);return K.sub(d,H.tf1)}),s;if(t.body.enabled&&(s=p0==null?void 0:p0.execute(r)),YA=g(),K.dispose(r),s){g0.keypoints.length=0;let x=s.squeeze();K.dispose(s);let d=x.unstack(2);K.dispose(x);for(let u=0;u(((l=t.body)==null?void 0:l.minConfidence)||0)&&g0.keypoints.push({score:Math.round(100*h)/100,part:W5[u],positionRaw:[f/p0.inputs[0].shape[2],M/p0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*f/p0.inputs[0].shape[2]),Math.round(e.shape[1]*M/p0.inputs[0].shape[1])]})}d.forEach(u=>K.dispose(u))}g0.score=g0.keypoints.reduce((x,d)=>d.score>x?d.score:x,0);let a=g0.keypoints.map(x=>x.position[0]),y=g0.keypoints.map(x=>x.position[1]);g0.box=[Math.min(...a),Math.min(...y),Math.max(...a)-Math.min(...a),Math.max(...y)-Math.min(...y)];let c=g0.keypoints.map(x=>x.positionRaw[0]),i=g0.keypoints.map(x=>x.positionRaw[1]);g0.boxRaw=[Math.min(...c),Math.min(...i),Math.max(...c)-Math.min(...c),Math.max(...i)-Math.min(...i)];for(let[x,d]of Object.entries(C5)){let u=[];for(let f=0;fP.part===d[f]),h=g0.keypoints.find(P=>P.part===d[f+1]);M&&h&&M.score>(t.body.minConfidence||0)&&h.score>(t.body.minConfidence||0)&&u.push([M.position,h.position])}g0.annotations[x]=u}n([g0])}))}var B0=V(F());var O2=["angry","disgust","fear","happy","sad","surprise","neutral"],O0,Ot=[],_A=0,$A=0,N5=Number.MAX_SAFE_INTEGER;async function en(e){var t;return T.initial&&(O0=null),O0?e.debug&&b("cached model:",O0.modelUrl):O0=await G((t=e.face.emotion)==null?void 0:t.modelPath),O0}async function L5(e,t,o,A){var s,a;if(!O0)return[];let n=N5<(((s=t.face.emotion)==null?void 0:s.skipFrames)||0),r=(((a=t.face.emotion)==null?void 0:a.skipTime)||0)>g()-$A;return t.skipAllowed&&r&&n&&_A===A&&Ot[o]&&Ot[o].length>0?(N5++,Ot[o]):(N5=0,new Promise(async y=>{var i,l;let c=[];if((i=t.face.emotion)==null?void 0:i.enabled){let x={},d=(O0==null?void 0:O0.inputs[0].shape)?O0.inputs[0].shape[2]:0;x.resize=B0.image.resizeBilinear(e,[d,d],!1),x.channels=B0.mul(x.resize,H.rgb),x.grayscale=B0.sum(x.channels,3,!0),x.grayscaleSub=B0.sub(x.grayscale,H.tf05),x.grayscaleMul=B0.mul(x.grayscaleSub,H.tf2),x.emotion=O0==null?void 0:O0.execute(x.grayscaleMul),$A=g();let u=await x.emotion.data();for(let f=0;f(((l=t.face.emotion)==null?void 0:l.minConfidence)||0)&&c.push({score:Math.min(.99,Math.trunc(100*u[f])/100),emotion:O2[f]});c.sort((f,M)=>M.score-f.score),Object.keys(x).forEach(f=>B0.dispose(x[f]))}Ot[o]=c,_A=A,y(c)}))}var rn=V(F());var E0,B5=[],on=0,An=0,nn=Number.MAX_SAFE_INTEGER;async function sn(e){return T.initial&&(E0=null),E0?e.debug&&b("cached model:",E0.modelUrl):E0=await G(e.face.mobilefacenet.modelPath),E0}async function G5(e,t,o,A){var s,a;if(!E0)return[];let n=nn<(((s=t.face.embedding)==null?void 0:s.skipFrames)||0),r=(((a=t.face.embedding)==null?void 0:a.skipTime)||0)>g()-An;return t.skipAllowed&&r&&n&&on===A&&B5[o]?(nn++,B5[o]):new Promise(async y=>{var i;let c=[];if(((i=t.face.embedding)==null?void 0:i.enabled)&&(E0==null?void 0:E0.inputs[0].shape)){let l={};l.crop=rn.image.resizeBilinear(e,[E0.inputs[0].shape[2],E0.inputs[0].shape[1]],!1),l.data=E0==null?void 0:E0.execute(l.crop);let x=await l.data.data();c=Array.from(x)}B5[o]=c,on=A,An=g(),y(c)})}var He=V(F());var G0=V(F());var oe,de=0,I2=2.3,H5=L0.leftEyeLower0,F5=L0.rightEyeLower0,Le={leftBounds:[H5[0],H5[H5.length-1]],rightBounds:[F5[0],F5[F5.length-1]]},Be={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function cn(e){var t;return T.initial&&(oe=null),oe?e.debug&&b("cached model:",oe.modelUrl):oe=await G((t=e.face.iris)==null?void 0:t.modelPath),de=oe.inputs[0].shape?oe.inputs[0].shape[2]:0,de===-1&&(de=64),oe}function It(e,t,o,A){for(let n=0;n{let t=e[Le.leftBounds[0]][2],o=e[Le.rightBounds[0]][2];return t-o},ln=(e,t,o,A,n,r=!1)=>{let s=wt(Rt(wA([e[o],e[A]]),I2)),a=Oe(s),y=G0.image.cropAndResize(t,[[s.startPoint[1]/n,s.startPoint[0]/n,s.endPoint[1]/n,s.endPoint[0]/n]],[0],[de,de]);if(r&&T.kernels.includes("flipleftright")){let c=G0.image.flipLeftRight(y);G0.dispose(y),y=c}return{box:s,boxSize:a,crop:y}},yn=(e,t,o,A=!1)=>{let n=[];for(let r=0;r{let A=e[L0[`${o}EyeUpper0`][Be.upperCenter]][2],n=e[L0[`${o}EyeLower0`][Be.lowerCenter]][2],r=(A+n)/2;return t.map((s,a)=>{let y=r;return a===2?y=A:a===4&&(y=n),[s[0],s[1],y]})};async function dn(e,t,o,A){if(!oe)return o.debug&&b("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:r,crop:s}=ln(e,t,Le.leftBounds[0],Le.leftBounds[1],A,!0),{box:a,boxSize:y,crop:c}=ln(e,t,Le.rightBounds[0],Le.rightBounds[1],A,!0),i=G0.concat([s,c]);G0.dispose(s),G0.dispose(c);let l=oe.execute(i);G0.dispose(i);let x=await l.data();G0.dispose(l);let d=x.slice(0,Be.numCoordinates*3),{rawCoords:u,iris:f}=yn(d,n,r,!0),M=x.slice(Be.numCoordinates*3),{rawCoords:h,iris:P}=yn(M,a,y),m=N2(e);Math.abs(m)<30?(It(e,u,"left",null),It(e,h,"right",null)):m<1?It(e,u,"left",["EyeUpper0","EyeLower0"]):It(e,h,"right",["EyeUpper0","EyeLower0"]);let p=xn(e,f,"left"),k=xn(e,P,"right");return e.concat(p).concat(k)}var U0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},Ae=null,Ge=0;async function mn(e,t){var a,y,c,i,l,x,d,u,f;let o=(((a=t.face.detector)==null?void 0:a.skipTime)||0)>g()-U0.timestamp,A=U0.skipped<(((y=t.face.detector)==null?void 0:y.skipFrames)||0);!t.skipAllowed||!o||!A||U0.boxes.length===0?(U0.boxes=await IA(e,t),U0.timestamp=g(),U0.skipped=0):U0.skipped++;let n=[],r=[],s=0;for(let M=0;M[q[0]/(e.shape[2]||0),q[1]/(e.shape[1]||0),(q[2]||0)/Ge]);for(let q of Object.keys(L0))p.annotations[q]=L0[q].map(x0=>p.mesh[x0]);p.score=p.faceScore;let Z={...SA(p.mesh,h),confidence:h.confidence,landmarks:h.landmarks};p.box=M5(Z,e),p.boxRaw=v5(Z,e),r.push(Z)}}else{p.box=M5(h,e),p.boxRaw=v5(h,e),p.score=p.boxScore,p.mesh=h.landmarks.map(k=>[(h.startPoint[0]+h.endPoint[0])/2+(h.endPoint[0]+h.startPoint[0])*k[0]/kt(),(h.startPoint[1]+h.endPoint[1])/2+(h.endPoint[1]+h.startPoint[1])*k[1]/kt()]),p.meshRaw=p.mesh.map(k=>[k[0]/(e.shape[2]||0),k[1]/(e.shape[1]||0),(k[2]||0)/Ge]);for(let k of Object.keys(nt))p.annotations[k]=[p.mesh[nt[k]]]}p.score>(((f=t.face.detector)==null?void 0:f.minConfidence)||1)?n.push(p):He.dispose(p.tensor)}return U0.boxes=r,n}async function pn(e){var t;return T.initial&&(Ae=null),Ae?e.debug&&b("cached model:",Ae.modelUrl):Ae=await G((t=e.face.mesh)==null?void 0:t.modelPath),Ge=Ae.inputs[0].shape?Ae.inputs[0].shape[2]:0,Ae}var un=Pe,hn=rt;var H0=V(F());var z0,Nt=[],bn=0,gn=0,Z5=Number.MAX_SAFE_INTEGER;async function Pn(e){var t;return T.initial&&(z0=null),z0?e.debug&&b("cached model:",z0.modelUrl):z0=await G((t=e.face.description)==null?void 0:t.modelPath),z0}function X5(e){let t=e.image||e.tensor||e;if(!(z0==null?void 0:z0.inputs[0].shape))return t;let o=H0.image.resizeBilinear(t,[z0.inputs[0].shape[2],z0.inputs[0].shape[1]],!1),A=H0.mul(o,H.tf255);return H0.dispose(o),A}async function D5(e,t,o,A){var s,a,y,c;if(!z0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=Z5<(((s=t.face.description)==null?void 0:s.skipFrames)||0),r=(((a=t.face.description)==null?void 0:a.skipTime)||0)>g()-bn;return t.skipAllowed&&n&&r&&gn===A&&((y=Nt[o])==null?void 0:y.age)&&((c=Nt[o])==null?void 0:c.age)>0?(Z5++,Nt[o]):(Z5=0,new Promise(async i=>{var x,d;let l={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((x=t.face.description)==null?void 0:x.enabled){let u=X5(e),f=z0==null?void 0:z0.execute(u);bn=g(),H0.dispose(u);let h=await(await f.find(L=>L.shape[1]===1)).data(),P=Math.trunc(200*Math.abs(h[0]-.5))/100;P>(((d=t.face.description)==null?void 0:d.minConfidence)||0)&&(l.gender=h[0]<=.5?"female":"male",l.genderScore=Math.min(.99,P));let m=H0.argMax(f.find(L=>L.shape[1]===100),1),p=(await m.data())[0];H0.dispose(m);let C=await f.find(L=>L.shape[1]===100).data();l.age=Math.round(C[p-1]>C[p+1]?10*p-100*C[p-1]:10*p+100*C[p+1])/10;let O=f.find(L=>L.shape[1]===1024),j=O?await O.data():[];l.descriptor=Array.from(j),f.forEach(L=>H0.dispose(L))}Nt[o]=l,gn=A,i(l)}))}var B=V(F());var Tn=V(F());function Lt(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function it(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function Rn(e,t,o){let A=t.shape[1],n=t.shape[2],r=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return Tn.image.cropAndResize(t,r,[0],o)}function wn(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(r=>[r[0]*t[0],r[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function Bt(e,t=1.5){let o=it(e),A=Lt(e),n=[t*A[0]/2,t*A[1]/2],r=[o[0]-n[0],o[1]-n[1]],s=[o[0]+n[0],o[1]+n[1]];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function Gt(e){let t=it(e),o=Lt(e),n=Math.max(...o)/2,r=[t[0]-n,t[1]-n],s=[t[0]+n,t[1]+n];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function L2(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function kn(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return L2(o)}var Mn=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function fe(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=B.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=B.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=B.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=B.slice(t,[0,0],[-1,2]),o.boxSizes=B.slice(t,[0,2],[-1,2]),o.div=B.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=B.add(o.div,this.anchorsTensor),o.halfBoxSizes=B.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=B.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=B.mul(o.sub,this.inputSizeTensor),o.add=B.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=B.mul(o.add,this.inputSizeTensor);let A=B.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>B.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=B.reshape(t,[-1,7,2]),A.div=B.div(A.reshape,this.inputSizeTensor),A.landmarks=B.add(A.div,this.anchors[o]);let n=B.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(r=>B.dispose(A[r])),n}async predict(t,o){let A={};A.resize=B.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=B.div(A.resize,H.tf127),A.image=B.sub(A.div,H.tf1),A.batched=this.model.execute(A.image),A.predictions=B.squeeze(A.batched),A.slice=B.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=B.sigmoid(A.slice),A.scores=B.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=B.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await B.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let r=await A.nms.array(),s=[];for(let a of r){let y={};y.box=B.slice(A.norm,[a,0],[1,-1]),y.slice=B.slice(A.predictions,[a,5],[1,14]),y.norm=this.normalizeLandmarks(y.slice,a),y.palmLandmarks=B.reshape(y.norm,[-1,2]);let c=await y.box.data(),i=c.slice(0,2),l=c.slice(2,4),x=await y.palmLandmarks.array(),d={startPoint:i,endPoint:l,palmLandmarks:x,confidence:n[a]},u=wn(d,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);s.push(u),Object.keys(y).forEach(f=>B.dispose(y[f]))}return Object.keys(A).forEach(a=>B.dispose(A[a])),s}};var j0=V(F());var F2=5,Sn=1.65,Wn=[0,5,9,13,17,1,2],V2=0,Z2=2,Cn=0,K5=class{constructor(t,o){R(this,"handDetector");R(this,"handPoseModel");R(this,"inputSize");R(this,"storedBoxes");R(this,"skipped");R(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(s=>s[0]),A=t.map(s=>s[1]),n=[Math.min(...o),Math.min(...A)],r=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:r}}getBoxForPalmLandmarks(t,o){let A=t.map(r=>J5([...r,1],o)),n=this.calculateLandmarksBoundingBox(A);return Bt(Gt(n),F2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=Bt(Gt(o),Sn);A.palmLandmarks=[];for(let n=0;n[s[0]*(d[0]-this.inputSize/2),s[1]*(d[1]-this.inputSize/2),s[2]*d[2]]),y=U5(A,[0,0]),c=a.map(d=>[...J5(d,y),d[2]]),i=En(n),l=[...it(o),1],x=[fe(l,i[0]),fe(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2])])}async estimateHands(t,o){let A=!1,n,r=(o.hand.skipTime||0)>g()-Cn,s=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&r&&s&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let a=[];for(let y=0;y=o.hand.minConfidence/4){let k=j0.reshape(m,[-1,3]),C=await k.array();j0.dispose(m),j0.dispose(k);let O=this.transformRawCoords(C,f,i,u),j=this.getBoxForHandLandmarks(O);this.storedBoxes[y]={...j,confidence:p};let L={landmarks:O,confidence:p,boxConfidence:c.confidence,fingerConfidence:p,box:{topLeft:j.startPoint,bottomRight:j.endPoint}};a.push(L)}else this.storedBoxes[y]=null;j0.dispose(m)}else{let i=Bt(Gt(c),Sn),l={confidence:c.confidence,boxConfidence:c.confidence,fingerConfidence:0,box:{topLeft:i.startPoint,bottomRight:i.endPoint},landmarks:[]};a.push(l)}}return this.storedBoxes=this.storedBoxes.filter(y=>y!==null),this.detectedHands=a.length,a.length>o.hand.maxDetected&&(a.length=o.hand.maxDetected),a}};var P0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>P0.nameMapping[e],getPoints:e=>P0.pointsMapping[e]},me={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>me.nameMapping[e]},e0={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>e0.nameMapping[e]},Te=class{constructor(t){R(this,"name");R(this,"curls");R(this,"directions");R(this,"weights");R(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,r)=>n+r,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let r=t[n],s=this.curls[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}for(let n in o){let r=o[n],s=this.directions[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}return A/10}};var{thumb:F0,index:ne,middle:re,ring:Re,pinky:we}=P0,{none:V0,half:D2,full:Z0}=me,{verticalUp:Fe,verticalDown:_a,horizontalLeft:Q5,horizontalRight:q2,diagonalUpRight:U2,diagonalUpLeft:Ve,diagonalDownRight:$a,diagonalDownLeft:e1}=e0,pe=new Te("thumbs up");pe.curl(F0,V0,1);pe.direction(F0,Fe,1);pe.direction(F0,Ve,.25);pe.direction(F0,U2,.25);for(let e of[P0.index,P0.middle,P0.ring,P0.pinky])pe.curl(e,Z0,1),pe.direction(e,Q5,1),pe.direction(e,q2,1);var r0=new Te("victory");r0.curl(F0,D2,.5);r0.curl(F0,V0,.5);r0.direction(F0,Fe,1);r0.direction(F0,Ve,1);r0.curl(ne,V0,1);r0.direction(ne,Fe,.75);r0.direction(ne,Ve,1);r0.curl(re,V0,1);r0.direction(re,Fe,1);r0.direction(re,Ve,.75);r0.curl(Re,Z0,1);r0.direction(Re,Fe,.2);r0.direction(Re,Ve,1);r0.direction(Re,Q5,.2);r0.curl(we,Z0,1);r0.direction(we,Fe,.2);r0.direction(we,Ve,1);r0.direction(we,Q5,.2);r0.weight(ne,2);r0.weight(re,2);var ue=new Te("point");ue.curl(F0,Z0,1);ue.curl(ne,V0,.5);ue.curl(re,Z0,.5);ue.curl(Re,Z0,.5);ue.curl(we,Z0,.5);ue.weight(ne,2);ue.weight(re,2);var he=new Te("middle finger");he.curl(F0,V0,1);he.curl(ne,Z0,.5);he.curl(re,Z0,.5);he.curl(Re,Z0,.5);he.curl(we,Z0,.5);he.weight(ne,2);he.weight(re,2);var Ze=new Te("open palm");Ze.curl(F0,V0,.75);Ze.curl(ne,V0,.75);Ze.curl(re,V0,.75);Ze.curl(Re,V0,.75);Ze.curl(we,V0,.75);var On=[pe,r0,ue,he,Ze];var J2=.7,ke={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function In(e,t,o,A){let n=(t-A)/(e-o),r=Math.atan(n)*180/Math.PI;return r<=0?r=-r:r>0&&(r=180-r),r}function Ln(e,t){if(!e||!t)return[0,0];let o=In(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=In(e[1],e[2],t[1],t[2]);return[o,A]}function Nn(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function Y2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],r=t[0]-o[0],s=e[1]-t[1],a=e[1]-o[1],y=t[1]-o[1],c=e[2]-t[2],i=e[2]-o[2],l=t[2]-o[2],x=Math.sqrt(A*A+s*s+c*c),d=Math.sqrt(n*n+a*a+i*i),u=Math.sqrt(r*r+y*y+l*l),f=(u*u+x*x-d*d)/(2*u*x);f>1?f=1:f<-1&&(f=-1);let M=Math.acos(f);M=57.2958*M%180;let h;return M>ke.NO_CURL_START_LIMIT?h=me.none:M>ke.HALF_CURL_START_LIMIT?h=me.half:h=me.full,h}function Bn(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=e0.horizontalLeft:n=e0.horizontalRight:A===Math.abs(t)?t>0?n=e0.horizontalLeft:n=e0.horizontalRight:o>0?n=e0.horizontalLeft:n=e0.horizontalRight,n}function Gn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=e0.verticalDown:n=e0.verticalUp:A===Math.abs(t)?t<0?n=e0.verticalDown:n=e0.verticalUp:o<0?n=e0.verticalDown:n=e0.verticalUp,n}function K2(e,t,o,A,n,r,s,a){let y,c=Gn(e,t,o,A),i=Bn(n,r,s,a);return c===e0.verticalUp?i===e0.horizontalLeft?y=e0.diagonalUpLeft:y=e0.diagonalUpRight:i===e0.horizontalLeft?y=e0.diagonalDownLeft:y=e0.diagonalDownRight,y}function Q2(e,t,o,A){let n=e[0]-t[0],r=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],y=e[1]-o[1],c=t[1]-o[1],i=Math.max(Math.abs(n),Math.abs(r),Math.abs(s)),l=Math.max(Math.abs(a),Math.abs(y),Math.abs(c)),x=0,d=0,u=0,f=l/(i+1e-5);f>1.5?x+=ke.DISTANCE_VOTE_POWER:f>.66?d+=ke.DISTANCE_VOTE_POWER:u+=ke.DISTANCE_VOTE_POWER;let M=Math.sqrt(n*n+a*a),h=Math.sqrt(r*r+y*y),P=Math.sqrt(s*s+c*c),m=Math.max(M,h,P),p=e[0],k=e[1],C=o[0],O=o[1];m===M?(C=o[0],O=o[1]):m===P&&(p=t[0],k=t[1]);let J=Ln([p,k],[C,O]),Z=Nn(J,ke.TOTAL_ANGLE_VOTE_POWER);x+=Z[0],d+=Z[1],u+=Z[2];for(let x0 of A){let E=Nn(x0,ke.SINGLE_ANGLE_VOTE_POWER);x+=E[0],d+=E[1],u+=E[2]}let q;return x===Math.max(x,d,u)?q=Gn(y,a,c,l):u===Math.max(d,u)?q=Bn(r,n,s,i):q=K2(y,a,c,l,r,n,s,i),q}function Hn(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let r of P0.all){let s=P0.getPoints(r),a=[],y=[];for(let c of s){let i=e[c[0]],l=e[c[1]],x=Ln(i,l),d=x[0],u=x[1];a.push(d),y.push(u)}t.push(a),o.push(y)}for(let r of P0.all){let s=r===P0.thumb?1:0,a=P0.getPoints(r),y=e[a[s][0]],c=e[a[s+1][1]],i=e[a[3][1]],l=Y2(y,c,i),x=Q2(y,c,i,t[r].slice(s));A[r]=l,n[r]=x}return{curls:A,directions:n}}function Ht(e){if(!e||e.length===0)return null;let t=Hn(e),o={};for(let A of P0.all)o[P0.getName(A)]={curl:me.getName(t.curls[A]),direction:e0.getName(t.directions[A])};return o}function Fn(e){let t=[];if(!e||e.length===0)return t;let o=Hn(e);for(let A of On){let n=A.matchAgainst(o.curls,o.directions);n>=J2&&t.push({name:A.name,confidence:n})}return t}var Vn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Xe,De,Zn;async function $5(e,t){let o=await Zn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[l]);let s=o[n].landmarks,a=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],y=[0,0,0,0];if(s&&s.length>0){for(let i of s)i[0]a[2]&&(a[2]=i[0]),i[1]>a[3]&&(a[3]=i[1]);a[2]-=a[0],a[3]-=a[1],y=[a[0]/(e.shape[2]||0),a[1]/(e.shape[1]||0),a[2]/(e.shape[2]||0),a[3]/(e.shape[1]||0)]}else a=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],y=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let c=Ht(s);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:a,boxRaw:y,keypoints:s,annotations:r,landmarks:c})}return A}async function eo(e){var o,A;T.initial&&(Xe=null,De=null),!Xe||!De?[Xe,De]=await Promise.all([e.hand.enabled?G((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?G((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&b("cached model:",Xe.modelUrl),e.debug&&b("cached model:",De.modelUrl));let t=new Y5(Xe);return Zn=new K5(t,De),[Xe,De]}var Y=V(F());var l0=[null,null],_2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],be=[[0,0],[0,0]],$2=["hand","fist","pinch","point","face","tip","pinchtip"],Dn=4,qn=1.6,es=512,ts=1.4,Ft=Number.MAX_SAFE_INTEGER,to=0,se=[0,0],o0={boxes:[],hands:[]},Un={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function Jn(e){var t;if(T.initial&&(l0[0]=null),l0[0])e.debug&&b("cached model:",l0[0].modelUrl);else{Vt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),l0[0]=await G((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values(l0[0].modelSignature.inputs);be[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[0]}async function Yn(e){var t;if(T.initial&&(l0[1]=null),l0[1])e.debug&&b("cached model:",l0[1].modelUrl);else{l0[1]=await G((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values(l0[1].modelSignature.inputs);be[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[1]}async function os(e,t){let o=[];if(!e||!l0[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),r=Math.min(Math.round((e.shape[1]||0)/8)*8,es),s=Math.round(r*n/8)*8;A.resize=Y.image.resizeBilinear(e,[r,s]),A.cast=Y.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await l0[0].executeAsync(A.cast,_2),A.boxes=Y.squeeze(A.rawBoxes,[0,2]),A.scores=Y.squeeze(A.rawScores,[0]);let a=Y.unstack(A.scores,1);Y.dispose(a[Dn]),a.splice(Dn,1),A.filtered=Y.stack(a,1),Y.dispose(a),A.max=Y.max(A.filtered,1),A.argmax=Y.argMax(A.filtered,1);let y=0;A.nms=await Y.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let c=await A.nms.data(),i=await A.max.data(),l=await A.argmax.data();for(let x of Array.from(c)){let d=Y.slice(A.boxes,x,1),u=await d.data();Y.dispose(d);let f=[u[1],u[0],u[3]-u[1],u[2]-u[0]],M=jt(f,ts),h=[Math.trunc(f[0]*se[0]),Math.trunc(f[1]*se[1]),Math.trunc(f[2]*se[0]),Math.trunc(f[3]*se[1])],P=i[x],m=$2[l[x]],p={id:y++,score:P,box:h,boxRaw:M,label:m};o.push(p)}return Object.keys(A).forEach(x=>Y.dispose(A[x])),o.sort((x,d)=>d.score-x.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function oo(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&l0[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},r=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Y.image.cropAndResize(e,[r],[0],[be[1][0],be[1][1]],"bilinear"),n.div=Y.div(n.crop,H.tf255),[n.score,n.keypoints]=l0[1].execute(n.div,["Identity_1","Identity"]);let s=(await n.score.data())[0],a=(100-Math.trunc(100/(1+Math.exp(s))))/100;if(a>=(o.hand.minConfidence||0)){A.fingerScore=a,n.reshaped=Y.reshape(n.keypoints,[-1,3]);let i=(await n.reshaped.array()).map(l=>[l[0]/be[1][1],l[1]/be[1][0],l[2]||0]).map(l=>[l[0]*t.boxRaw[2],l[1]*t.boxRaw[3],l[2]||0]);A.keypoints=i.map(l=>[se[0]*(l[0]+t.boxRaw[0]),se[1]*(l[1]+t.boxRaw[1]),l[2]||0]),A.landmarks=Ht(A.keypoints);for(let l of Object.keys(Un))A.annotations[l]=Un[l].map(x=>A.landmarks&&A.keypoints[x]?A.keypoints[x]:null)}Object.keys(n).forEach(y=>Y.dispose(n[y]))}return A}async function Ao(e,t){var n,r;if(!l0[0]||!l0[1]||!((n=l0[0])==null?void 0:n.inputs[0].shape)||!((r=l0[1])==null?void 0:r.inputs[0].shape))return[];se=[e.shape[2]||0,e.shape[1]||0],Ft++;let o=(t.hand.skipTime||0)>g()-to,A=Ft<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?o0.hands:new Promise(async s=>{let a=3*(t.hand.skipTime||0)>g()-to,y=Ft<3*(t.hand.skipFrames||0);t.skipAllowed&&o0.hands.length===t.hand.maxDetected?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):t.skipAllowed&&a&&y&&o0.hands.length>0?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):(o0.boxes=await os(e,t),to=g(),o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))),Ft=0);let c=[...o0.boxes];if(o0.boxes.length=0,t.cacheSensitivity>0)for(let i=0;i.05&&l.box[3]/(e.shape[1]||1)>.05&&o0.hands[i].fingerScore&&o0.hands[i].fingerScore>(t.hand.minConfidence||0)){let x=jt(l.box,qn),d=jt(l.boxRaw,qn);o0.boxes.push({...c[i],box:x,boxRaw:d})}}for(let i=0;ig()-_n,r=no<(((a=t.face.liveness)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&Qn===A&&Zt[o]?(no++,Zt[o]):(no=0,new Promise(async y=>{let c=Xt.image.resizeBilinear(e,[(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[2]:0,(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[1]:0],!1),i=u0==null?void 0:u0.execute(c),l=(await i.data())[0];Zt[o]=Math.round(100*l)/100,Qn=A,_n=g(),Xt.dispose([c,i]),y(Zt[o])}))}var rr=V(F());var lt={};mt(lt,{connected:()=>qt,horizontal:()=>so,kpt:()=>Dt,relative:()=>io,vertical:()=>ao});var Dt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],so=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],ao=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],io=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],qt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var ge=V(F()),tr=.005,S0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function lo(e){for(let t of so){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]c&&c.part===t[0]),n=e.keypoints.findIndex(c=>c&&c.part===t[1]),r=e.keypoints.findIndex(c=>c&&c.part===o[0]),s=e.keypoints.findIndex(c=>c&&c.part===o[1]);if(!e.keypoints[r]||!e.keypoints[s])continue;let a=e.keypoints[A]?[Math.abs(e.keypoints[r].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0])]:[0,0],y=e.keypoints[n]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[r].position[0]-e.keypoints[n].position[0])]:[0,0];if(a[0]>a[1]||y[0]>y[1]){let c=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=c}}}function or(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=ge.pad(e,S0.padding),o.resize=ge.image.resizeBilinear(o.pad,[t,t]);let A=ge.cast(o.resize,"int32");return Object.keys(o).forEach(n=>ge.dispose(o[n])),A}function nr(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+S0.padding[2][0]+S0.padding[2][1])/t[0]-S0.padding[2][0],A.position[1]*(t[1]+S0.padding[1][0]+S0.padding[1][1])/t[1]-S0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=ee(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var W0,Ut=0,yo=Number.MAX_SAFE_INTEGER,Ee={boxes:[],bodies:[],last:0};async function sr(e){return T.initial&&(W0=null),W0?e.debug&&b("cached model:",W0.modelUrl):(Vt(["size"],e),W0=await G(e.body.modelPath)),Ut=W0.inputs[0].shape?W0.inputs[0].shape[2]:0,Ut<64&&(Ut=256),W0}async function ns(e,t,o){let A=e[0][0],n=[],r=0;for(let i=0;it.body.minConfidence){let l=[A[i][1],A[i][0]];n.push({score:Math.round(100*r)/100,part:Dt[i],positionRaw:l,position:[Math.round((o.shape[2]||0)*l[0]),Math.round((o.shape[1]||0)*l[1])]})}r=n.reduce((i,l)=>l.score>i?l.score:i,0);let s=[],a=ee(n.map(i=>i.position),[o.shape[2],o.shape[1]]),y={};for(let[i,l]of Object.entries(qt)){let x=[];for(let d=0;dM.part===l[d]),f=n.find(M=>M.part===l[d+1]);u&&f&&u.score>(t.body.minConfidence||0)&&f.score>(t.body.minConfidence||0)&&x.push([u.position,f.position])}y[i]=x}let c={id:0,score:r,box:a.box,boxRaw:a.boxRaw,keypoints:n,annotations:y};return lo(c),s.push(c),s}async function rs(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let a=[];for(let l=0;l<17;l++){let x=r[3*l+2];if(x>t.body.minConfidence){let d=[r[3*l+1],r[3*l+0]];a.push({part:Dt[l],score:Math.round(100*x)/100,positionRaw:d,position:[Math.round((o.shape[2]||0)*d[0]),Math.round((o.shape[1]||0)*d[1])]})}}let y=ee(a.map(l=>l.position),[o.shape[2],o.shape[1]]),c={};for(let[l,x]of Object.entries(qt)){let d=[];for(let u=0;uh.part===x[u]),M=a.find(h=>h.part===x[u+1]);f&&M&&f.score>(t.body.minConfidence||0)&&M.score>(t.body.minConfidence||0)&&d.push([f.position,M.position])}c[l]=d}let i={id:n,score:s,box:y.box,boxRaw:y.boxRaw,keypoints:[...a],annotations:c};lo(i),A.push(i)}}return A.sort((n,r)=>r.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function xo(e,t){if(!W0||!(W0==null?void 0:W0.inputs[0].shape))return[];t.skipAllowed||(Ee.boxes.length=0),yo++;let o=(t.body.skipTime||0)>g()-Ee.last,A=yo<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ee.bodies:new Promise(async n=>{let r={};yo=0,r.input=Ar(e,Ut),r.res=W0==null?void 0:W0.execute(r.input),Ee.last=g();let s=await r.res.array();Ee.bodies=r.res.shape[2]===17?await ns(s,t,e):await rs(s,t,e);for(let a of Ee.bodies)nr(a,[e.shape[2]||1,e.shape[1]||1]),or(a.keypoints);Object.keys(r).forEach(a=>rr.dispose(r[a])),n(Ee.bodies)})}var M0=V(F());var qe,Jt=[],ir=0,co=Number.MAX_SAFE_INTEGER,Kt=0,Yt=2.5;async function lr(e){if(!qe||T.initial){qe=await G(e.object.modelPath);let t=Object.values(qe.modelSignature.inputs);Kt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&b("cached model:",qe.modelUrl);return qe}async function ss(e,t,o){let A=0,n=[];for(let y of[1,2,4])M0.tidy(async()=>{let c=y*13,i=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)===Ne.length)),l=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)(o.object.minConfidence||0)&&M!==61){let P=(.5+Math.trunc(f%c))/c,m=(.5+Math.trunc(f/c))/c,p=d[f].map(q=>q*(c/y/Kt)),[k,C]=[P-Yt/y*p[0],m-Yt/y*p[1]],[O,j]=[P+Yt/y*p[2]-k,m+Yt/y*p[3]-C],L=[k,C,O,j];L=L.map(q=>Math.max(0,Math.min(q,1)));let J=[L[0]*t[0],L[1]*t[1],L[2]*t[0],L[3]*t[1]],Z={id:A++,score:Math.round(100*h)/100,class:M+1,label:Ne[M].label,box:J.map(q=>Math.trunc(q)),boxRaw:L};n.push(Z)}}});e.forEach(y=>M0.dispose(y));let r=n.map(y=>[y.boxRaw[1],y.boxRaw[0],y.boxRaw[3],y.boxRaw[2]]),s=n.map(y=>y.score),a=[];if(r&&r.length>0){let y=await M0.image.nonMaxSuppressionAsync(r,s,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);a=await y.data(),M0.dispose(y)}return n=n.filter((y,c)=>a.includes(c)).sort((y,c)=>c.score-y.score),n}async function fo(e,t){let o=(t.object.skipTime||0)>g()-ir,A=co<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&Jt.length>0?(co++,Jt):(co=0,!T.kernels.includes("mod")||!T.kernels.includes("sparsetodense")?Jt:new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=M0.image.resizeBilinear(e,[Kt,Kt],!1),a=M0.div(s,H.tf255),y=a.transpose([0,3,1,2]);M0.dispose(a),M0.dispose(s);let c;t.object.enabled&&(c=qe.execute(y)),ir=g(),M0.dispose(y);let i=await ss(c,r,t);Jt=i,n(i)}))}var v0=V(F());var xt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],as=xt.length,yt=xt.reduce((e,t,o)=>(e[t]=o,e),{}),is=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],T1=is.map(([e,t])=>[yt[e],yt[t]]),xr=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function cr(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:r},{position:{x:s,y:a}})=>({maxX:Math.max(o,s),maxY:Math.max(A,a),minX:Math.min(n,s),minY:Math.min(r,a)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function dr(e,[t,o],[A,n]){let r=t/A,s=o/n,a=(c,i)=>({id:i,score:c.score,boxRaw:[c.box[0]/n,c.box[1]/A,c.box[2]/n,c.box[3]/A],box:[Math.trunc(c.box[0]*s),Math.trunc(c.box[1]*r),Math.trunc(c.box[2]*s),Math.trunc(c.box[3]*r)],keypoints:c.keypoints.map(({score:l,part:x,position:d})=>({score:l,part:x,position:[Math.trunc(d.x*s),Math.trunc(d.y*r)],positionRaw:[d.x/A,d.y/A]})),annotations:{}});return e.map((c,i)=>a(c,i))}var mo=class{constructor(t,o){R(this,"priorityQueue");R(this,"numberOfElements");R(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function fr(e,t,o,A){let n=o-e,r=A-t;return n*n+r*r}function bo(e,t){return{x:e.x+t.x,y:e.y+t.y}}var X0,ys=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Qt=1,Ue=16,xs=50**2;function mr(e,t,o,A,n,r,s=2){let a=h=>({y:r.get(h.y,h.x,e),x:r.get(h.y,h.x,r.shape[2]/2+e)}),y=(h,P,m)=>({y:ho(Math.round(h.y/Ue),0,P-1),x:ho(Math.round(h.x/Ue),0,m-1)}),[c,i]=A.shape,l=y(t.position,c,i),x=a(l),u=bo(t.position,x);for(let h=0;h[yt[x],yt[d]]),s=r.map(([,x])=>x),a=r.map(([x])=>x),y=t.shape[2],c=s.length,i=new Array(y),l=uo(e.part,Ue,o);i[e.part.id]={score:e.score,part:xt[e.part.id],position:l};for(let x=c-1;x>=0;--x){let d=s[x],u=a[x];i[d]&&!i[u]&&(i[u]=mr(x,i[d],u,t,o,n))}for(let x=0;xt){a=!1;break}if(!a)break}return a}function fs(e,t){let[o,A,n]=t.shape,r=new mo(o*A*n,({score:s})=>s);for(let s=0;s{var s;let r=(s=n[A])==null?void 0:s.position;return r?fr(o,t,r.y,r.x)<=xs:!1})}function ms(e,t){return t.reduce((A,{position:n,score:r},s)=>(pr(e,n,s)||(A+=r),A),0)/t.length}function ps(e,t,o,A,n,r){let s=[],a=fs(r,t);for(;s.lengthd.score>r);let l=ms(s,i),x=cr(i);l>r&&s.push({keypoints:i,box:x,score:Math.round(100*l)/100})}return s}async function go(e,t){let o=v0.tidy(()=>{if(!X0.inputs[0].shape)return[];let s=v0.image.resizeBilinear(e,[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]),a=v0.sub(v0.div(v0.cast(s,"float32"),127.5),1),c=X0.execute(a,ys).map(i=>v0.squeeze(i,[0]));return c[1]=v0.sigmoid(c[1]),c}),A=await Promise.all(o.map(s=>s.buffer()));for(let s of o)v0.dispose(s);let n=await ps(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return X0.inputs[0].shape?dr(n,[e.shape[1],e.shape[2]],[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]):[]}async function ur(e){return!X0||T.initial?X0=await G(e.body.modelPath):e.debug&&b("cached model:",X0.modelUrl),X0}var t0=V(F());var J0,Po=!1;async function Mo(e){return!J0||T.initial?J0=await G(e.segmentation.modelPath):e.debug&&b("cached model:",J0.modelUrl),J0}async function br(e,t,o){var f,M;if(Po)return{data:[],canvas:null,alpha:null};Po=!0,J0||await Mo(o);let A=await We(e,o),n=((f=A.tensor)==null?void 0:f.shape[2])||0,r=((M=A.tensor)==null?void 0:M.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let s={};s.resize=t0.image.resizeBilinear(A.tensor,[J0.inputs[0].shape?J0.inputs[0].shape[1]:0,J0.inputs[0].shape?J0.inputs[0].shape[2]:0],!1),t0.dispose(A.tensor),s.norm=t0.div(s.resize,H.tf255),s.res=J0.execute(s.norm),s.squeeze=t0.squeeze(s.res,0),s.squeeze.shape[2]===2?(s.softmax=t0.softmax(s.squeeze),[s.bg,s.fg]=t0.unstack(s.softmax,2),s.expand=t0.expandDims(s.fg,2),s.pad=t0.expandDims(s.expand,0),s.crop=t0.image.cropAndResize(s.pad,[[0,0,.5,.5]],[0],[n,r]),s.data=t0.squeeze(s.crop,0)):s.data=t0.image.resizeBilinear(s.squeeze,[r,n]);let a=Array.from(await s.data.data());if(T.node&&!T.Canvas&&typeof ImageData=="undefined")return o.debug&&b("canvas support missing"),Object.keys(s).forEach(h=>t0.dispose(s[h])),{data:a,canvas:null,alpha:null};let y=h0(n,r);t0.browser&&await t0.browser.toPixels(s.data,y);let c=y.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`);let i=c.getImageData(0,0,n,r),l=h0(n,r),x=l.getContext("2d");A.canvas&&x.drawImage(A.canvas,0,0),x.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(x.filter=`blur(${o.segmentation.blur}px)`),x.drawImage(y,0,0),x.globalCompositeOperation="source-over",x.filter="none";let d=x.getImageData(0,0,n,r);for(let h=0;ht0.dispose(s[h])),Po=!1,{data:a,canvas:l,alpha:y}}var vo=class{constructor(){R(this,"ssrnetage",null);R(this,"gear",null);R(this,"blazeposedetect",null);R(this,"blazepose",null);R(this,"centernet",null);R(this,"efficientpose",null);R(this,"mobilefacenet",null);R(this,"emotion",null);R(this,"facedetect",null);R(this,"faceiris",null);R(this,"facemesh",null);R(this,"faceres",null);R(this,"ssrnetgender",null);R(this,"handpose",null);R(this,"handskeleton",null);R(this,"handtrack",null);R(this,"liveness",null);R(this,"movenet",null);R(this,"nanodet",null);R(this,"posenet",null);R(this,"segmentation",null);R(this,"antispoof",null)}};function To(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Pr(e){var t,o,A,n,r,s,a,y,c,i,l,x,d,u,f,M,h,P,m,p,k,C,O,j,L,J,Z,q,x0,E;T.initial&&To(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config))),e.config.body.enabled&&!e.models.blazepose&&((s=(r=e.config.body)==null?void 0:r.modelPath)==null?void 0:s.includes("blazepose"))&&(e.models.blazepose=XA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=ZA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((y=(a=e.config.body)==null?void 0:a.modelPath)==null?void 0:y.includes("efficientpose"))&&(e.models.efficientpose=KA(e.config)),e.config.body.enabled&&!e.models.movenet&&((i=(c=e.config.body)==null?void 0:c.modelPath)==null?void 0:i.includes("movenet"))&&(e.models.movenet=sr(e.config)),e.config.body.enabled&&!e.models.posenet&&((x=(l=e.config.body)==null?void 0:l.modelPath)==null?void 0:x.includes("posenet"))&&(e.models.posenet=ur(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=OA(e.config)),e.config.face.enabled&&((d=e.config.face.antispoof)==null?void 0:d.enabled)&&!e.models.antispoof&&(e.models.antispoof=PA(e.config)),e.config.face.enabled&&((u=e.config.face.liveness)==null?void 0:u.enabled)&&!e.models.liveness&&(e.models.liveness=$n(e.config)),e.config.face.enabled&&((f=e.config.face.description)==null?void 0:f.enabled)&&!e.models.faceres&&(e.models.faceres=Pn(e.config)),e.config.face.enabled&&((M=e.config.face.emotion)==null?void 0:M.enabled)&&!e.models.emotion&&(e.models.emotion=en(e.config)),e.config.face.enabled&&((h=e.config.face.iris)==null?void 0:h.enabled)&&!e.models.faceiris&&(e.models.faceiris=cn(e.config)),e.config.face.enabled&&((P=e.config.face.mesh)==null?void 0:P.enabled)&&!e.models.facemesh&&(e.models.facemesh=pn(e.config)),e.config.face.enabled&&((m=e.config.face.gear)==null?void 0:m.enabled)&&!e.models.gear&&(e.models.gear=iA(e.config)),e.config.face.enabled&&((p=e.config.face.ssrnet)==null?void 0:p.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=dA(e.config)),e.config.face.enabled&&((k=e.config.face.ssrnet)==null?void 0:k.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=uA(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=sn(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((j=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:j.includes("handtrack"))&&(e.models.handtrack=Jn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((J=(L=e.config.hand.detector)==null?void 0:L.modelPath)==null?void 0:J.includes("handtrack"))&&(e.models.handskeleton=Yn(e.config)),e.config.object.enabled&&!e.models.centernet&&((q=(Z=e.config.object)==null?void 0:Z.modelPath)==null?void 0:q.includes("centernet"))&&(e.models.centernet=UA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((E=(x0=e.config.object)==null?void 0:x0.modelPath)==null?void 0:E.includes("nanodet"))&&(e.models.nanodet=lr(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=Mo(e.config));for await(let C0 of Object.keys(e.models))e.models[C0]&&typeof e.models[C0]!="undefined"&&(e.models[C0]=await e.models[C0])}async function Mr(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],r=A==null?void 0:A.executor;if(r&&r.graph.nodes)for(let a of Object.values(r.graph.nodes)){let y=a.op.toLowerCase();n.includes(y)||n.push(y)}else!r&&e.config.debug&&b("model signature not determined:",o);let s=[];for(let a of n)!t.includes(a)&&!e.env.kernels.includes(a)&&!e.env.kernels.includes(a.replace("_",""))&&!e.env.kernels.includes(a.replace("native",""))&&!e.env.kernels.includes(a.replace("v2",""))&&s.push(a);e.config.debug&&s.length>0&&b("model validation failed:",o,s)}}var $={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function us(){let e=$.gl;!e||($.extensions=e.getSupportedExtensions())}async function Tr(e){var t;if(e.config.backend==="humangl"&&($.name in s0.engine().registry&&(!$.gl||!$.gl.getParameter($.gl.VERSION))&&(b("error: humangl backend invalid context"),To(e)),!s0.findBackend($.name))){try{$.canvas=await h0(100,100)}catch(A){b("error: cannot create canvas:",A);return}try{if($.gl=(t=$.canvas)==null?void 0:t.getContext("webgl2",$.webGLattr),!$.gl.getParameter($.gl.VERSION).includes("2.0")){b("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}$.canvas&&($.canvas.addEventListener("webglcontextlost",async n=>{throw b("error: humangl:",n.type),b("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),$.canvas.addEventListener("webglcontextrestored",n=>{b("error: humangl context restored:",n)}),$.canvas.addEventListener("webglcontextcreationerror",n=>{b("error: humangl context create:",n)}))}catch(A){b("error: cannot get WebGL context:",A);return}try{s0.setWebGLContext(2,$.gl)}catch(A){b("error: cannot set WebGL context:",A);return}try{let A=new s0.GPGPUContext($.gl);s0.registerBackend($.name,()=>new s0.MathBackendWebGL(A),$.priority)}catch(A){b("error: cannot register WebGL backend:",A);return}try{s0.getKernelsForBackend("webgl").forEach(n=>{let r={...n,backendName:$.name};s0.registerKernel(r)})}catch(A){b("error: cannot update WebGL backend registration:",A);return}let o=s0.backend().getGPGPUContext?s0.backend().getGPGPUContext().gl:null;if(o)b(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{b("error: no current gl context:",o,$.gl);return}try{s0.ENV.set("WEBGL_VERSION",2)}catch(A){b("error: cannot set WebGL backend flags:",A);return}us(),b("backend registered:",$.name)}}var S=V(F());function hs(){if(!T.kernels.includes("mod")){let e={kernelName:"Mod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.sub(t.inputs.a,S.mul(S.div(t.inputs.a,t.inputs.b),t.inputs.b)))};S.registerKernel(e),T.kernels.push("mod")}if(!T.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+S.mod(t.inputs.a,t.inputs.b))};S.registerKernel(e),T.kernels.push("floormod")}}async function _t(e,t=!1){if(e.state="backend",t||T.initial||e.config.backend&&e.config.backend.length>0&&S.getBackend()!==e.config.backend){let o=g();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&b("running inside web worker"),T.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&b("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),T.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&b(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),T.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")b("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&b("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Tr(e);let A=Object.keys(S.engine().registryFactory);if(e.config.debug&&b("available backends:",A),A.includes(e.config.backend)||(b(`error: backend ${e.config.backend} not found in registry`),e.config.backend=T.node?"tensorflow":"webgl",e.config.debug&&b(`override: setting backend ${e.config.backend}`)),e.config.debug&&b("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&b("wasm path:",e.config.wasmPath),typeof(S==null?void 0:S.setWasmPaths)!="undefined")await S.setWasmPaths(e.config.wasmPath);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await S.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await S.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&b(`wasm execution: ${n?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&b("warning: wasm simd support is not enabled")}try{await S.setBackend(e.config.backend),await S.ready(),yA()}catch(n){return b("error: cannot set backend:",e.config.backend,n),!1}}if(S.getBackend()==="humangl"&&(S.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),S.ENV.set("WEBGL_CPU_FORWARD",!0),S.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),S.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(b("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),S.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),S.backend().getGPGPUContext)){let A=await S.backend().getGPGPUContext().gl;e.config.debug&&b(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}S.getBackend()==="webgpu",S.enableProdMode(),await S.ready(),e.performance.initBackend=Math.trunc(g()-o),e.config.backend=S.getBackend(),await T.updateBackend(),hs()}return!0}function Vt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&b("kernelFunc",o,t.backend)}};S.registerKernel(A)}T.kernels=S.getKernelsForBackend(S.getBackend()).map(o=>o.kernelName.toLowerCase())}var ae={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},Ro=0,ze=e=>{if(!e)b("draw error: invalid canvas");else if(!e.getContext)b("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)b("draw error: cannot get canvas context");else return t}return null},Je=e=>Math.round(e*180/Math.PI);function wo(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function ct(e,t,o,A,n,r){if(e.beginPath(),e.lineWidth=r.lineWidth,r.useCurves){let s=(t+t+A)/2,a=(o+o+n)/2;e.ellipse(s,a,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+r.roundRect,o),e.lineTo(t+A-r.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+r.roundRect),e.lineTo(t+A,o+n-r.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-r.roundRect,o+n),e.lineTo(t+r.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-r.roundRect),e.lineTo(t,o+r.roundRect),e.quadraticCurveTo(t,o,t+r.roundRect,o),e.closePath();e.stroke()}function kr(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function gs(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){kr(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&y[1].length>0){let c=a[1]>0?`#${a[1]}`:"",i=`${a[0]} ${c}: ${y[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(i,8,2+r*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(i,6,0+r*A.lineHeight),r+=1}}}}async function Eo(e,t,o){var r,s,a,y,c;let A=c0(ae,o);if(!t||!e)return;let n=ze(e);if(!!n)for(let i of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&ct(n,i.box[0],i.box[1],i.box[2],i.box[3],A),A.drawLabels){let l=[];if(l.push(`face: ${Math.trunc(100*i.score)}%`),i.genderScore&&l.push(`${i.gender||""} ${Math.trunc(100*i.genderScore)}%`),i.age&&l.push(`age: ${i.age||""}`),i.iris&&l.push(`distance: ${i.iris}`),i.real&&l.push(`real: ${Math.trunc(100*i.real)}%`),i.live&&l.push(`live: ${Math.trunc(100*i.live)}%`),i.emotion&&i.emotion.length>0){let x=i.emotion.map(d=>`${Math.trunc(100*d.score)}% ${d.emotion}`);x.length>3&&(x.length=3),l.push(x.join(" "))}i.rotation&&i.rotation.angle&&i.rotation.gaze&&(i.rotation.angle.roll&&l.push(`roll: ${Je(i.rotation.angle.roll)}\xB0 yaw:${Je(i.rotation.angle.yaw)}\xB0 pitch:${Je(i.rotation.angle.pitch)}\xB0`),i.rotation.gaze.bearing&&l.push(`gaze: ${Je(i.rotation.gaze.bearing)}\xB0`)),l.length===0&&l.push("face"),n.fillStyle=A.color;for(let x=l.length-1;x>=0;x--){let d=Math.max(i.box[0],0),u=x*A.lineHeight+i.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l[x],d+5,u+16)),n.fillStyle=A.labelColor,n.fillText(l[x],d+4,u+15)}}if(n.lineWidth=2,i.mesh&&i.mesh.length>0){if(A.drawPoints)for(let l of i.mesh)wo(n,l[0],l[1],l[2],A);if(A.drawPolygons){if(i.mesh.length>450)for(let l=0;li.mesh[d]);kr(n,x,A)}if(i.annotations&&i.annotations.leftEyeIris&&i.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.leftEyeIris[3][0]-i.annotations.leftEyeIris[1][0])/2,x=Math.abs(i.annotations.leftEyeIris[4][1]-i.annotations.leftEyeIris[2][1])/2;n.ellipse(i.annotations.leftEyeIris[0][0],i.annotations.leftEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(i.annotations&&i.annotations.rightEyeIris&&i.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.rightEyeIris[3][0]-i.annotations.rightEyeIris[1][0])/2,x=Math.abs(i.annotations.rightEyeIris[4][1]-i.annotations.rightEyeIris[2][1])/2;n.ellipse(i.annotations.rightEyeIris[0][0],i.annotations.rightEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((r=i.rotation)==null?void 0:r.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let l=i.box[0]+i.box[2]/2-i.box[3]*Je(i.rotation.angle.yaw)/90,x=i.box[1]+i.box[3]/2+i.box[2]*Je(i.rotation.angle.pitch)/90,d=new Path2D(` +`;var n5=(e,t,o)=>{let A=new RegExp("\\b"+t+" \\w+ (\\w+)","ig");e.replace(A,(n,r)=>(o[r]=0,n))},eA=class{constructor(t,o,A){R(this,"uniform",{});R(this,"attribute",{});R(this,"gl");R(this,"id");R(this,"compile",(t,o)=>{let A=this.gl.createShader(o);return A?(this.gl.shaderSource(A,t),this.gl.compileShader(A),this.gl.getShaderParameter(A,this.gl.COMPILE_STATUS)?A:(b(`filter: gl compile failed: ${this.gl.getShaderInfoLog(A)}`),null)):(b("filter: could not create shader"),null)});this.gl=t;let n=this.compile(o,this.gl.VERTEX_SHADER),r=this.compile(A,this.gl.FRAGMENT_SHADER);if(this.id=this.gl.createProgram(),!(!n||!r)){if(!this.id){b("filter: could not create webgl program");return}if(this.gl.attachShader(this.id,n),this.gl.attachShader(this.id,r),this.gl.linkProgram(this.id),!this.gl.getProgramParameter(this.id,this.gl.LINK_STATUS)){b(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id)}`);return}this.gl.useProgram(this.id),n5(o,"attribute",this.attribute);for(let s in this.attribute)this.attribute[s]=this.gl.getAttribLocation(this.id,s);n5(o,"uniform",this.uniform),n5(A,"uniform",this.uniform);for(let s in this.uniform)this.uniform[s]=this.gl.getUniformLocation(this.id,s)}}};function tA(){let e=0,t=null,o=!1,A=-1,n=[null,null],r=[],s=null,a=null,y=h0(100,100),c={},i={INTERMEDIATE:1},l=y.getContext("webgl");if(this.gl=l,!l){b("filter: cannot get webgl context");return}function x(P,m){if(!(P===y.width&&m===y.height)){if(y.width=P,y.height=m,!s){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);s=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,s),l.bufferData(l.ARRAY_BUFFER,p,l.STATIC_DRAW),l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}l.viewport(0,0,y.width,y.height),n=[null,null]}}function d(P,m){let p=l.createFramebuffer();l.bindFramebuffer(l.FRAMEBUFFER,p);let k=l.createRenderbuffer();l.bindRenderbuffer(l.RENDERBUFFER,k);let C=l.createTexture();return l.bindTexture(l.TEXTURE_2D,C),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,P,m,0,l.RGBA,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,C,0),l.bindTexture(l.TEXTURE_2D,null),l.bindFramebuffer(l.FRAMEBUFFER,null),{fbo:p,texture:C}}function u(P){return n[P]=n[P]||d(y.width,y.height),n[P]}function f(P=0){if(!a)return;let m=null,p=null,k=!1;e===0?m=t:m=u(A).texture||null,e++,o&&!(P&i.INTERMEDIATE)?(p=null,k=e%2===0):(A=(A+1)%2,p=u(A).fbo||null),l.bindTexture(l.TEXTURE_2D,m),l.bindFramebuffer(l.FRAMEBUFFER,p),l.uniform1f(a.uniform.flipY,k?-1:1),l.drawArrays(l.TRIANGLES,0,6)}function M(P){if(c[P])return a=c[P],l.useProgram((a?a.id:null)||null),a;if(a=new eA(l,Jo,P),!a)return b("filter: could not get webgl program"),null;let m=Float32Array.BYTES_PER_ELEMENT,p=4*m;return l.enableVertexAttribArray(a.attribute.pos),l.vertexAttribPointer(a.attribute.pos,2,l.FLOAT,!1,p,0*m),l.enableVertexAttribArray(a.attribute.uv),l.vertexAttribPointer(a.attribute.uv,2,l.FLOAT,!1,p,2*m),c[P]=a,a}let h={colorMatrix:P=>{let m=new Float32Array(P);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let p=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?Ko:Yo,k=M(p);!k||(l.uniform1fv(k.uniform.m,m),f())},brightness:P=>{let m=(P||0)+1;h.colorMatrix([m,0,0,0,0,0,m,0,0,0,0,0,m,0,0,0,0,0,1,0])},saturation:P=>{let m=(P||0)*2/3+1,p=(m-1)*-.5;h.colorMatrix([m,p,p,0,0,p,m,p,0,0,p,p,m,0,0,0,0,0,1,0])},desaturate:()=>{h.saturation(-1)},contrast:P=>{let m=(P||0)+1,p=-128*(m-1);h.colorMatrix([m,0,0,0,p,0,m,0,0,p,0,0,m,0,p,0,0,0,1,0])},negative:()=>{h.contrast(-2)},hue:P=>{P=(P||0)/180*Math.PI;let m=Math.cos(P),p=Math.sin(P),k=.213,C=.715,O=.072;h.colorMatrix([k+m*(1-k)+p*-k,C+m*-C+p*-C,O+m*-O+p*(1-O),0,0,k+m*-k+p*.143,C+m*(1-C)+p*.14,O+m*-O+p*-.283,0,0,k+m*-k+p*-(1-k),C+m*-C+p*C,O+m*(1-O)+p*O,0,0,0,0,0,1,0])},desaturateLuminance:()=>{h.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},sepia:()=>{h.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},brownie:()=>{h.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},vintagePinhole:()=>{h.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},kodachrome:()=>{h.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},technicolor:()=>{h.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},polaroid:()=>{h.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},shiftToBGR:()=>{h.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},convolution:P=>{let m=new Float32Array(P),p=1/y.width,k=1/y.height,C=M($o);!C||(l.uniform1fv(C.uniform.m,m),l.uniform2f(C.uniform.px,p,k),f())},detectEdges:()=>{h.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},sobelX:()=>{h.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},sobelY:()=>{h.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},sharpen:P=>{let m=P||1;h.convolution.call(this,[0,-1*m,0,-1*m,1+4*m,-1*m,0,-1*m,0])},emboss:P=>{let m=P||1;h.convolution.call(this,[-2*m,-1*m,0,-1*m,1,1*m,0,1*m,2*m])},blur:P=>{let m=P/7/y.width,p=P/7/y.height,k=M(_o);!k||(l.uniform2f(k.uniform.px,0,p),f(i.INTERMEDIATE),l.uniform2f(k.uniform.px,m,0),f())},pixelate:P=>{let m=P/y.width,p=P/y.height,k=M(Qo);!k||(l.uniform2f(k.uniform.size,m,p),f())}};this.add=function(P){let m=Array.prototype.slice.call(arguments,1),p=h[P];r.push({func:p,args:m})},this.reset=function(){r=[]},this.get=function(){return r},this.apply=function(P){x(P.width,P.height),e=0,t||(t=l.createTexture()),l.bindTexture(l.TEXTURE_2D,t),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,P);for(let m=0;md.data())),s=.99*Math.max(r[0][0],r[1][0],r[2][0]),a=[X.sub(o[0],A[0]),X.sub(o[1],A[1]),X.sub(o[2],A[2])],y=[X.sub(n[0],A[0]),X.sub(n[1],A[1]),X.sub(n[2],A[2])],c=[X.div(s,y[0]),X.div(s,y[1]),X.div(s,y[2])],i=[X.mul(a[0],c[0]),X.mul(a[1],c[1]),X.mul(a[2],c[2])],l=X.stack([i[0],i[1],i[2]],2),x=X.reshape(l,[1,t.shape[0],t.shape[1],3]);return X.dispose([...o,...A,...n,...a,...y,...c,...i,l,t]),x}var ut=2048,D=null,i0=null,Se=null,_,Q0={inputSum:0,cacheDiff:1,sumMethod:0,inputTensor:void 0};function h0(e,t){let o;if(T.browser)if(T.worker){if(typeof OffscreenCanvas=="undefined")throw new Error("canvas error: attempted to run in web worker but OffscreenCanvas is not supported");o=new OffscreenCanvas(e,t)}else{if(typeof document=="undefined")throw new Error("canvas error: attempted to run in browser but DOM is not defined");o=document.createElement("canvas"),o.width=e,o.height=t}else typeof T.Canvas!="undefined"?o=new T.Canvas(e,t):typeof globalThis.Canvas!="undefined"&&(o=new globalThis.Canvas(e,t));return o}function r5(e,t){let o=t||h0(e.width,e.height);return o.getContext("2d").drawImage(e,0,0),o}async function We(e,t,o=!0){if(!e)return t.debug&&b("input error: input is missing"),{tensor:null,canvas:null};if(!(e instanceof W.Tensor)&&!(typeof Image!="undefined"&&e instanceof Image)&&!(typeof T.Canvas!="undefined"&&e instanceof T.Canvas)&&!(typeof globalThis.Canvas!="undefined"&&e instanceof globalThis.Canvas)&&!(typeof ImageData!="undefined"&&e instanceof ImageData)&&!(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)&&!(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)&&!(typeof HTMLMediaElement!="undefined"&&e instanceof HTMLMediaElement)&&!(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)&&!(typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas))throw new Error("input error: type is not recognized");if(e instanceof W.Tensor){let A=null;if(e.isDisposedInternal)throw new Error("input error: attempted to use tensor but it is disposed");if(!e.shape)throw new Error("input error: attempted to use tensor without a shape");if(e.shape.length===3){if(e.shape[2]===3)A=W.expandDims(e,0);else if(e.shape[2]===4){let n=W.slice3d(e,[0,0,0],[-1,-1,3]);A=W.expandDims(n,0),W.dispose(n)}}else e.shape.length===4&&(e.shape[3]===3?A=W.clone(e):e.shape[3]===4&&(A=W.slice4d(e,[0,0,0,0],[-1,-1,-1,3])));if(A==null||A.shape.length!==4||A.shape[0]!==1||A.shape[3]!==3)throw new Error(`input error: attempted to use tensor with unrecognized shape: ${e.shape}`);if(A.dtype==="int32"){let n=W.cast(A,"float32");W.dispose(A),A=n}return{tensor:A,canvas:t.filter.return?i0:null}}else{if(typeof e.readyState!="undefined"&&e.readyState<=2)return t.debug&&b("input stream is not ready"),{tensor:null,canvas:D};let A=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,n=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;if(!A||!n)return t.debug&&b("cannot determine input dimensions"),{tensor:null,canvas:D};let r=A,s=n;if(r>ut&&(r=ut,s=Math.trunc(r*n/A)),s>ut&&(s=ut,r=Math.trunc(s*A/n)),(t.filter.width||0)>0?r=t.filter.width:(t.filter.height||0)>0&&(r=A*((t.filter.height||0)/n)),(t.filter.height||0)>0?s=t.filter.height:(t.filter.width||0)>0&&(s=n*((t.filter.width||0)/A)),!r||!s)throw new Error("input error: cannot determine dimension");(!D||(D==null?void 0:D.width)!==r||(D==null?void 0:D.height)!==s)&&(D=h0(r,s));let a=D.getContext("2d");if(typeof ImageData!="undefined"&&e instanceof ImageData?a.putImageData(e,0,0):t.filter.flip&&typeof a.translate!="undefined"?(a.translate(A,0),a.scale(-1,1),a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),a.setTransform(1,0,0,1,0,0)):a.drawImage(e,0,0,A,n,0,0,D==null?void 0:D.width,D==null?void 0:D.height),(!i0||D.width!==i0.width||(D==null?void 0:D.height)!==(i0==null?void 0:i0.height))&&(i0=h0(D.width,D.height)),t.filter.enabled&&T.webgl.supported){if(_||(_=T.browser?new tA:null),T.filter=!!_,!_||!_.add)return t.debug&&b("input process error: cannot initialize filters"),{tensor:null,canvas:D};_.reset(),t.filter.brightness!==0&&_.add("brightness",t.filter.brightness),t.filter.contrast!==0&&_.add("contrast",t.filter.contrast),t.filter.sharpness!==0&&_.add("sharpen",t.filter.sharpness),t.filter.blur!==0&&_.add("blur",t.filter.blur),t.filter.saturation!==0&&_.add("saturation",t.filter.saturation),t.filter.hue!==0&&_.add("hue",t.filter.hue),t.filter.negative&&_.add("negative"),t.filter.sepia&&_.add("sepia"),t.filter.vintage&&_.add("brownie"),t.filter.sepia&&_.add("sepia"),t.filter.kodachrome&&_.add("kodachrome"),t.filter.technicolor&&_.add("technicolor"),t.filter.polaroid&&_.add("polaroid"),t.filter.pixelate!==0&&_.add("pixelate",t.filter.pixelate),_.get()>0?i0=_.apply(D):i0=_.draw(D)}else r5(D,i0),_&&(_=null),T.filter=!!_;if(!o)return{tensor:null,canvas:i0};if(!i0)throw new Error("canvas error: cannot create output");let y,c=3;if(typeof ImageData!="undefined"&&e instanceof ImageData||e.data&&e.width&&e.height)if(T.browser&&W.browser)y=W.browser?W.browser.fromPixels(e):null;else{c=e.data.length/e.height/e.width;let x=new Uint8Array(e.data.buffer);y=W.tensor(x,[e.height,e.width,c],"int32")}else if((!Se||i0.width!==Se.width||i0.height!==Se.height)&&(Se=h0(i0.width,i0.height)),W.browser&&T.browser)t.backend==="webgl"||t.backend==="humangl"||t.backend==="webgpu"?y=W.browser.fromPixels(i0):(Se=r5(i0),y=W.browser.fromPixels(Se));else{let u=r5(i0).getContext("2d").getImageData(0,0,r,s);c=u.data.length/r/s;let f=new Uint8Array(u.data.buffer);y=W.tensor(f,[r,s,c])}if(c===4){let x=W.slice3d(y,[0,0,0],[-1,-1,3]);W.dispose(y),y=x}if(!y)throw new Error("input error: cannot create tensor");let i=W.cast(y,"float32"),l=t.filter.equalization?await pt(i):W.expandDims(i,0);return W.dispose([y,i]),{tensor:l,canvas:t.filter.return?i0:null}}}async function oA(e,t){let o=!1;if(e.cacheSensitivity===0||!t.shape||t.shape.length!==4||t.shape[1]>2048||t.shape[2]>2048)return o;if(!Q0.inputTensor)Q0.inputTensor=W.clone(t);else if(Q0.inputTensor.shape[1]!==t.shape[1]||Q0.inputTensor.shape[2]!==t.shape[2])W.dispose(Q0.inputTensor),Q0.inputTensor=W.clone(t);else{let A={};A.diff=W.sub(t,Q0.inputTensor),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;W.dispose([Q0.inputTensor,A.diff,A.squared,A.sum]),Q0.inputTensor=W.clone(t),o=r<=(e.cacheSensitivity||0)}return o}async function AA(e,t,o){let A={};if(!t||!o||t.shape.length!==4||t.shape.length!==o.shape.length)return e.debug||b("invalid input tensor or tensor shapes do not match:",t.shape,o.shape),0;if(t.shape[0]!==1||o.shape[0]!==1||t.shape[3]!==3||o.shape[3]!==3)return e.debug||b("input tensors must be of shape [1, height, width, 3]:",t.shape,o.shape),0;A.input1=W.clone(t),A.input2=t.shape[1]!==o.shape[1]||t.shape[2]!==o.shape[2]?W.image.resizeBilinear(o,[t.shape[1],t.shape[2]]):W.clone(o),A.diff=W.sub(A.input1,A.input2),A.squared=W.mul(A.diff,A.diff),A.sum=W.sum(A.squared);let r=(await A.sum.data())[0]/(t.shape[1]||1)/(t.shape[2]||1)/255/3;return W.dispose([A.input1,A.input2,A.diff,A.squared,A.sum]),r}var nA=class{constructor(){R(this,"browser");R(this,"node");R(this,"worker");R(this,"platform","");R(this,"agent","");R(this,"backends",[]);R(this,"initial");R(this,"filter");R(this,"tfjs");R(this,"offscreen");R(this,"perfadd",!1);R(this,"wasm",{supported:void 0,backend:void 0,simd:void 0,multithread:void 0});R(this,"webgl",{supported:void 0,backend:void 0,version:void 0,renderer:void 0});R(this,"webgpu",{supported:void 0,backend:void 0,adapter:void 0});R(this,"cpu",{model:void 0,flags:[]});R(this,"kernels",[]);R(this,"Canvas");R(this,"Image");R(this,"ImageData");if(this.browser=typeof navigator!="undefined",this.node=typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined",this.tfjs={version:d0.version["tfjs-core"]},this.offscreen=typeof OffscreenCanvas!="undefined",this.initial=!0,this.worker=this.browser&&this.offscreen?typeof WorkerGlobalScope!="undefined":void 0,typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);if(t&&t[0]){let o=t[0].match(/\(([^()]+)\)/g);this.platform=o&&o[0]?o[0].replace(/\(|\)/g,""):"",this.agent=navigator.userAgent.replace(t[0],""),this.platform[1]&&(this.agent=this.agent.replace(t[1],"")),this.agent=this.agent.replace(/ /g," ")}}else typeof process!="undefined"&&(this.platform=`${process.platform} ${process.arch}`,this.agent=`NodeJS ${process.version}`)}async updateBackend(){this.backends=Object.keys(d0.engine().registryFactory),this.wasm.supported=typeof WebAssembly!="undefined",this.wasm.backend=this.backends.includes("wasm"),this.wasm.supported&&this.wasm.backend&&d0.getBackend()==="wasm"&&(this.wasm.simd=await d0.env().getAsync("WASM_HAS_SIMD_SUPPORT"),this.wasm.multithread=await d0.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"));let t=h0(100,100),o=t?t.getContext("webgl2"):void 0;if(this.webgl.supported=typeof o!="undefined",this.webgl.backend=this.backends.includes("webgl"),this.webgl.supported&&this.webgl.backend&&(d0.getBackend()==="webgl"||d0.getBackend()==="humangl")){let A=d0.backend().gpgpu!=="undefined"?await d0.backend().getGPGPUContext().gl:null;A&&(this.webgl.version=A.getParameter(A.VERSION),this.webgl.renderer=A.getParameter(A.RENDERER))}this.webgpu.supported=this.browser&&typeof navigator.gpu!="undefined",this.webgpu.backend=this.backends.includes("webgpu");try{this.webgpu.supported&&(this.webgpu.adapter=(await navigator.gpu.requestAdapter()).name)}catch(A){this.webgpu.supported=!1}try{this.kernels=d0.getKernelsForBackend(d0.getBackend()).map(A=>A.kernelName.toLowerCase())}catch(A){}}async updateCPU(){let t={model:"",flags:[]};this.node&&this.platform.startsWith("linux"),this.cpu?this.cpu=t:Object.defineProperty(this,"cpu",{value:t})}},T=new nA;var ht=V(F()),_0={cacheModels:!1,verbose:!0,debug:!1,modelBasePath:""};async function a2(e,t){return _0.debug&&b("load model fetch:",e,t),fetch(e,t)}function rA(e){_0.cacheModels=e.cacheModels,_0.verbose=e.debug,_0.modelBasePath=e.modelBasePath}async function G(e){let t=Zo(_0.modelBasePath,e||""),o=t.split("/"),A="indexeddb://"+o[o.length-1].replace(".json",""),n=await ht.io.listModels(),r=_0.cacheModels&&Object.keys(n).includes(A),s=typeof fetch=="undefined"?{}:{fetchFunc:(y,c)=>a2(y,c)},a=new ht.GraphModel(r?A:t,s);try{a.findIOHandler(),_0.debug&&b("model load handler:",a.handler);let y=await a.handler.load();a.loadSync(y),_0.verbose&&b("load model:",a.modelUrl)}catch(y){b("error loading model:",t,y)}if(_0.cacheModels&&!r)try{let y=await a.save(A);b("model saved:",A,y)}catch(y){b("error saving model:",t,y)}return a}var D0=V(F());var s5="2.6.3";var s0=V(F());var bt=V(F());var I0,a5=[],y2=["white","black","asian","indian","other"],x2=[15,23,28,35.5,45.5,55.5,65],sA=0,aA=0,i5=Number.MAX_SAFE_INTEGER;async function iA(e){return T.initial&&(I0=null),I0?e.debug&&b("cached model:",I0.modelUrl):I0=await G(e.face.gear),I0}async function l5(e,t,o,A){var s,a;if(!I0)return{age:0,gender:"unknown",genderScore:0,race:[]};let n=i5<(((s=t.face.gear)==null?void 0:s.skipFrames)||0),r=(((a=t.face.gear)==null?void 0:a.skipTime)||0)>g()-aA;return t.skipAllowed&&r&&n&&sA===A&&a5[o]?(i5++,a5[o]):(i5=0,new Promise(async y=>{var h,P;if(!(I0==null?void 0:I0.inputs[0].shape))return;let c={},i=[[0,.1,.9,.9]];c.resize=bt.image.cropAndResize(e,i,[0],[I0.inputs[0].shape[2],I0.inputs[0].shape[1]]);let l={age:0,gender:"unknown",genderScore:0,race:[]};((h=t.face.gear)==null?void 0:h.enabled)&&([c.age,c.gender,c.race]=I0.execute(c.resize,["age_output","gender_output","race_output"]));let x=await c.gender.data();l.gender=x[0]>x[1]?"male":"female",l.genderScore=Math.round(100*(x[0]>x[1]?x[0]:x[1]))/100;let d=await c.race.data();for(let m=0;m(((P=t.face.gear)==null?void 0:P.minConfidence)||.2)&&l.race.push({score:Math.round(100*d[m])/100,race:y2[m]});l.race.sort((m,p)=>p.score-m.score);let f=Array.from(await c.age.data()).map((m,p)=>[x2[p],m]).sort((m,p)=>p[1]-m[1]),M=f[0][0];for(let m=1;mbt.dispose(c[m])),a5[o]=l,sA=A,aA=g(),y(l)}))}var Ce=V(F());var ye=V(F()),H={tf255:255,tf1:1,tf2:2,tf05:.5,tf127:127.5,rgb:[.2989,.587,.114]};function yA(){H.tf255=ye.scalar(255,"float32"),H.tf1=ye.scalar(1,"float32"),H.tf2=ye.scalar(2,"float32"),H.tf05=ye.scalar(.5,"float32"),H.tf127=ye.scalar(127.5,"float32"),H.rgb=ye.tensor1d([.2989,.587,.114],"float32")}var T0,gt=[],xA=0,cA=0,y5=Number.MAX_SAFE_INTEGER;async function dA(e){return T.initial&&(T0=null),T0?e.debug&&b("cached model:",T0.modelUrl):T0=await G(e.face.ssrnet.modelPathAge),T0}async function x5(e,t,o,A){var s,a,y,c;if(!T0)return{age:0};let n=y5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-cA;return t.skipAllowed&&n&&r&&xA===A&&((y=gt[o])==null?void 0:y.age)&&((c=gt[o])==null?void 0:c.age)>0?(y5++,gt[o]):(y5=0,new Promise(async i=>{if(!(T0==null?void 0:T0.inputs)||!T0.inputs[0]||!T0.inputs[0].shape)return;let l={};l.resize=Ce.image.resizeBilinear(e,[T0.inputs[0].shape[2],T0.inputs[0].shape[1]],!1),l.enhance=Ce.mul(l.resize,H.tf255);let x={age:0};if(t.face.ssrnet.enabled&&(l.age=T0.execute(l.enhance)),l.age){let d=await l.age.data();x.age=Math.trunc(10*d[0])/10}Object.keys(l).forEach(d=>Ce.dispose(l[d])),gt[o]=x,xA=A,cA=g(),i(x)}))}var f0=V(F());var N0,Pt=[],mA=0,pA=0,c5=Number.MAX_SAFE_INTEGER,d5=[.2989,.587,.114];async function uA(e){return T.initial&&(N0=null),N0?e.debug&&b("cached model:",N0.modelUrl):N0=await G(e.face.ssrnet.modelPathGender),N0}async function f5(e,t,o,A){var s,a,y,c;if(!N0)return{gender:"unknown",genderScore:0};let n=c5<(((s=t.face.ssrnet)==null?void 0:s.skipFrames)||0),r=(((a=t.face.ssrnet)==null?void 0:a.skipTime)||0)>g()-pA;return t.skipAllowed&&n&&r&&mA===A&&((y=Pt[o])==null?void 0:y.gender)&&((c=Pt[o])==null?void 0:c.genderScore)>0?(c5++,Pt[o]):(c5=0,new Promise(async i=>{if(!(N0==null?void 0:N0.inputs[0].shape))return;let l={};l.resize=f0.image.resizeBilinear(e,[N0.inputs[0].shape[2],N0.inputs[0].shape[1]],!1),l.enhance=f0.tidy(()=>{let[u,f,M]=f0.split(l.resize,3,3),h=f0.mul(u,d5[0]),P=f0.mul(f,d5[1]),m=f0.mul(M,d5[2]),p=f0.addN([h,P,m]);return f0.mul(f0.sub(p,H.tf05),2)});let x={gender:"unknown",genderScore:0};t.face.ssrnet.enabled&&(l.gender=N0.execute(l.enhance));let d=await l.gender.data();x.gender=d[0]>d[1]?"female":"male",x.genderScore=d[0]>d[1]?Math.trunc(100*d[0])/100:Math.trunc(100*d[1])/100,Object.keys(l).forEach(u=>f0.dispose(l[u])),Pt[o]=x,mA=A,pA=g(),i(x)}))}var vt=V(F());var m0,Mt=[],m5=Number.MAX_SAFE_INTEGER,bA=0,gA=0;async function PA(e){var t;return T.initial&&(m0=null),m0?e.debug&&b("cached model:",m0.modelUrl):m0=await G((t=e.face.antispoof)==null?void 0:t.modelPath),m0}async function p5(e,t,o,A){var s,a;if(!m0)return 0;let n=(((s=t.face.antispoof)==null?void 0:s.skipTime)||0)>g()-gA,r=m5<(((a=t.face.antispoof)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&bA===A&&Mt[o]?(m5++,Mt[o]):(m5=0,new Promise(async y=>{let c=vt.image.resizeBilinear(e,[(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[2]:0,(m0==null?void 0:m0.inputs[0].shape)?m0.inputs[0].shape[1]:0],!1),i=m0==null?void 0:m0.execute(c),l=(await i.data())[0];Mt[o]=Math.round(100*l)/100,bA=A,gA=g(),vt.dispose([c,i]),y(Mt[o])}))}var N=V(F());var $0=V(F());var L0={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},u5={count:468,mouth:13,symmetryLine:[13,L0.midwayBetweenEyes[0]]},nt={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},h5=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]}],rt=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],Pe=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255];var d2=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],f2=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],m2=[33,133,362,263,1,78,308],aa=d2.map(e=>rt[e]),ia=f2.map(e=>rt[e]),la=m2.map(e=>rt[e]);var Oe=e=>[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])],Tt=e=>[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2,1],M5=(e,t)=>e?[Math.trunc(Math.max(0,e.startPoint[0])),Math.trunc(Math.max(0,e.startPoint[1])),Math.trunc(Math.min(t.shape[2]||0,e.endPoint[0])-Math.max(0,e.startPoint[0])),Math.trunc(Math.min(t.shape[1]||0,e.endPoint[1])-Math.max(0,e.startPoint[1]))]:[0,0,0,0],v5=(e,t)=>e?[e.startPoint[0]/(t.shape[2]||0),e.startPoint[1]/(t.shape[1]||0),(e.endPoint[0]-e.startPoint[0])/(t.shape[2]||0),(e.endPoint[1]-e.startPoint[1])/(t.shape[1]||0)]:[0,0,0,0],RA=(e,t)=>{let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:o,endPoint:A,landmarks:e.landmarks,confidence:e.confidence}},g5=(e,t,o)=>{let A=t.shape[1],n=t.shape[2],r=[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n],s=$0.image.cropAndResize(t,[r],[0],o),a=$0.div(s,H.tf255);return $0.dispose(s),a},Rt=(e,t)=>{let o=Tt(e),A=Oe(e),n=[t*A[0]/2,t*A[1]/2];return{startPoint:[o[0]-n[0],o[1]-n[1]],endPoint:[o[0]+n[0],o[1]+n[1]],landmarks:e.landmarks,confidence:e.confidence}},wt=e=>{let t=Tt(e),o=Oe(e),A=Math.max(...o)/2;return{startPoint:[Math.round(t[0]-A),Math.round(t[1]-A)],endPoint:[Math.round(t[0]+A),Math.round(t[1]+A)],landmarks:e.landmarks,confidence:e.confidence}},wA=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return{startPoint:[Math.min(...t),Math.min(...o)],endPoint:[Math.max(...t),Math.max(...o)],landmarks:e}},P5=[[1,0,0],[0,1,0],[0,0,1]],p2=e=>e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI)),u2=(e,t)=>p2(Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]));var vA=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]],Me=(e,t)=>{let o=0;for(let A=0;A{let o=[];for(let A=0;A{let o=[],A=e.length;for(let n=0;n{let o=Math.cos(e),A=Math.sin(e),n=[[o,-A,0],[A,o,0],[0,0,1]],r=vA(t[0],t[1]),s=TA(r,n),a=vA(-t[0],-t[1]);return TA(s,a)},b2=e=>{let t=[[e[0][0],e[1][0]],[e[0][1],e[1][1]]],o=[e[0][2],e[1][2]],A=[-Me(t[0],o),-Me(t[1],o)];return[t[0].concat(A[0]),t[1].concat(A[1]),[0,0,1]]},g2=(e,t)=>[Me(e,t[0]),Me(e,t[1])];function EA(e){let t={strides:[e/16,e/8],anchors:[2,6]},o=[];for(let A=0;A[r[0]/n*(d[0]-n/2),r[1]/n*(d[1]-n/2),d[2]||0]),a=o&&o!==0&&Math.abs(o)>.2,y=a?kA(o,[0,0]):P5,c=a?s.map(d=>[...g2(d,y),d[2]]):s,i=a?b2(A):P5,l=Tt(t),x=[Me(l,i[0]),Me(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2]||0)])}function jA(e,t,o,A){let n=t.landmarks.length>=u5.count?u5.symmetryLine:nt.symmetryLine,r=0,s=P5,a;if(e&&T.kernels.includes("rotatewithoffset"))if(r=u2(t.landmarks[n[0]],t.landmarks[n[1]]),r&&r!==0&&Math.abs(r)>.2){let c=Tt(t),i=[c[0]/o.shape[2],c[1]/o.shape[1]],l=$0.image.rotateWithOffset(o,r,0,i);s=kA(-r,c),a=g5(t,l,[A,A]),$0.dispose(l)}else a=g5(t,o,[A,A]);else a=g5(t,o,[A,A]);return[r,s,a]}var P2=e=>{let t=e.map(A=>A[0]),o=e.map(A=>A[1]);return[Math.min(...t)+(Math.max(...t)-Math.min(...t))/2,Math.min(...o)+(Math.max(...o)-Math.min(...o))/2]},SA=(e,t)=>{let o=P2(e),A=Oe(t);return{startPoint:[o[0]-A[0]/2,o[1]-A[1]/2],endPoint:[o[0]+A[0]/2,o[1]+A[1]/2]}};var WA=6,M2=1.2,q0,CA=null,xe=0,st=null,kt=()=>xe;async function OA(e){var t;return T.initial&&(q0=null),q0?e.debug&&b("cached model:",q0.modelUrl):q0=await G((t=e.face.detector)==null?void 0:t.modelPath),xe=q0.inputs[0].shape?q0.inputs[0].shape[2]:0,st=N.scalar(xe,"int32"),CA=N.tensor2d(EA(xe)),q0}function v2(e){let t={};t.boxStarts=N.slice(e,[0,1],[-1,2]),t.centers=N.add(t.boxStarts,CA),t.boxSizes=N.slice(e,[0,3],[-1,2]),t.boxSizesNormalized=N.div(t.boxSizes,st),t.centersNormalized=N.div(t.centers,st),t.halfBoxSize=N.div(t.boxSizesNormalized,H.tf2),t.starts=N.sub(t.centersNormalized,t.halfBoxSize),t.ends=N.add(t.centersNormalized,t.halfBoxSize),t.startNormalized=N.mul(t.starts,st),t.endNormalized=N.mul(t.ends,st);let o=N.concat2d([t.startNormalized,t.endNormalized],1);return Object.keys(t).forEach(A=>N.dispose(t[A])),o}async function IA(e,t){var a,y,c,i;if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return[];let o={};o.resized=N.image.resizeBilinear(e,[xe,xe]),o.div=N.div(o.resized,H.tf127),o.normalized=N.sub(o.div,H.tf05);let A=q0==null?void 0:q0.execute(o.normalized);if(Array.isArray(A)){let l=A.sort((x,d)=>x.size-d.size);o.concat384=N.concat([l[0],l[2]],2),o.concat512=N.concat([l[1],l[3]],2),o.concat=N.concat([o.concat512,o.concat384],1),o.batch=N.squeeze(o.concat,0)}else o.batch=N.squeeze(A);N.dispose(A),o.boxes=v2(o.batch),o.logits=N.slice(o.batch,[0,0],[-1,1]),o.sigmoid=N.sigmoid(o.logits),o.scores=N.squeeze(o.sigmoid),o.nms=await N.image.nonMaxSuppressionAsync(o.boxes,o.scores,((a=t.face.detector)==null?void 0:a.maxDetected)||0,((y=t.face.detector)==null?void 0:y.iouThreshold)||0,((c=t.face.detector)==null?void 0:c.minConfidence)||0);let n=await o.nms.array(),r=[],s=await o.scores.data();for(let l=0;l(((i=t.face.detector)==null?void 0:i.minConfidence)||0)){let d={};d.bbox=N.slice(o.boxes,[n[l],0],[1,-1]),d.slice=N.slice(o.batch,[n[l],WA-1],[1,-1]),d.squeeze=N.squeeze(d.slice),d.landmarks=N.reshape(d.squeeze,[WA,-1]);let u=await d.bbox.data(),f={startPoint:[u[0],u[1]],endPoint:[u[2],u[3]],landmarks:await d.landmarks.array(),confidence:x},M=RA(f,[(e.shape[2]||0)/xe,(e.shape[1]||0)/xe]),h=Rt(M,t.face.scale||M2),P=wt(h);r.push(P),Object.keys(d).forEach(m=>N.dispose(d[m]))}}return Object.keys(o).forEach(l=>N.dispose(o[l])),r}var k0=V(F());var Et={};mt(Et,{connected:()=>w5,kpt:()=>R5});var R5=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPinky","rightPinky","leftIndex","rightIndex","leftThumb","rightThumb","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","bodyCenter","bodyTop","leftPalm","leftHand","rightPalm","rightHand"],w5={shoulders:["leftShoulder","rightShoulder"],hips:["rightHip","leftHip"],mouth:["leftMouth","rightMouth"],leftLegUpper:["leftHip","leftKnee"],leftLegLower:["leftKnee","leftAnkle"],leftFoot:["leftAnkle","leftHeel","leftFoot"],leftTorso:["leftShoulder","leftHip"],leftArmUpper:["leftShoulder","leftElbow"],leftArmLower:["leftElbow","leftWrist"],leftHand:["leftWrist","leftPalm"],leftHandPinky:["leftPalm","leftPinky"],leftHandIndex:["leftPalm","leftIndex"],leftHandThumb:["leftPalm","leftThumb"],leftEyeOutline:["leftEyeInside","leftEyeOutside"],rightLegUpper:["rightHip","rightKnee"],rightLegLower:["rightKnee","rightAnkle"],rightFoot:["rightAnkle","rightHeel","rightFoot"],rightTorso:["rightShoulder","rightHip"],rightArmUpper:["rightShoulder","rightElbow"],rightArmLower:["rightElbow","rightWrist"],rightHand:["rightWrist","rightPalm"],rightHandPinky:["rightPalm","rightPinky"],rightHandIndex:["rightPalm","rightIndex"],rightHandThumb:["rightPalm","rightThumb"],rightEyeOutline:["rightEyeInside","rightEyeOutside"]};var R0=V(F()),LA=224,T2,R2=5,zt=[8,16,32,32,32];async function BA(){let e=[],t=0;for(;to.x)),y:R0.tensor1d(e.map(o=>o.y))}}function ee(e,t=[1,1]){let o=[e.map(a=>a[0]),e.map(a=>a[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[A[0],A[1],n[0]-A[0],n[1]-A[1]],s=[r[0]/t[0],r[1]/t[1],r[2]/t[0],r[3]/t[1]];return{box:r,boxRaw:s}}function GA(e,t=[1,1]){let o=[e.map(c=>c[0]),e.map(c=>c[1])],A=[Math.min(...o[0]),Math.min(...o[1])],n=[Math.max(...o[0]),Math.max(...o[1])],r=[(A[0]+n[0])/2,(A[1]+n[1])/2],s=Math.max(r[0]-A[0],r[1]-A[1],-r[0]+n[0],-r[1]+n[1]),a=[Math.trunc(r[0]-s),Math.trunc(r[1]-s),Math.trunc(2*s),Math.trunc(2*s)],y=[a[0]/t[0],a[1]/t[1],a[2]/t[0],a[3]/t[1]];return{box:a,boxRaw:y}}function jt(e,t){let o=[e[2]*t,e[3]*t];return[e[0]-(o[0]-e[2])/2,e[1]-(o[1]-e[3])/2,o[0],o[1]]}var VA={initial:!0},w0={detector:null,landmarks:null},Ie={detector:[224,224],landmarks:[256,256]},k5=Number.MAX_SAFE_INTEGER,k2={landmarks:["ld_3d","activation_segmentation","activation_heatmap","world_3d","output_poseflag"],detector:[]},Wt=null,at,ce=[[0,0],[0,0],[0,0],[0,0]],HA=0,FA=e=>1-1/(1+Math.exp(e));async function ZA(e){if(VA.initial&&(w0.detector=null),!w0.detector&&e.body.detector&&e.body.detector.modelPath){w0.detector=await G(e.body.detector.modelPath);let t=Object.values(w0.detector.modelSignature.inputs);Ie.detector[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.detector[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&w0.detector&&b("cached model:",w0.detector.modelUrl);return await BA(),w0.detector}async function XA(e){if(VA.initial&&(w0.landmarks=null),w0.landmarks)e.debug&&b("cached model:",w0.landmarks.modelUrl);else{w0.landmarks=await G(e.body.modelPath);let t=Object.values(w0.landmarks.modelSignature.inputs);Ie.landmarks[0]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[1].size):0,Ie.landmarks[1]=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return w0.landmarks}async function E2(e,t){let o={};if(!e.shape||!e.shape[1]||!e.shape[2])return e;let A;if(at&&(o.cropped=k0.image.cropAndResize(e,[at],[0],[e.shape[1],e.shape[2]])),e.shape[1]!==e.shape[2]){let n=[e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],r=[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0];ce=[[0,0],n,r,[0,0]],o.pad=k0.pad(o.cropped||e,ce),o.resize=k0.image.resizeBilinear(o.pad,[t,t]),A=k0.div(o.resize,H.tf255)}else e.shape[1]!==t?(o.resize=k0.image.resizeBilinear(o.cropped||e,[t,t]),A=k0.div(o.resize,H.tf255)):A=k0.div(o.cropped||e,H.tf255);return Object.keys(o).forEach(n=>k0.dispose(o[n])),A}function z2(e,t){for(let o of e)o.position=[Math.trunc(o.position[0]*(t[0]+ce[2][0]+ce[2][1])/t[0]-ce[2][0]),Math.trunc(o.position[1]*(t[1]+ce[1][0]+ce[1][1])/t[1]-ce[1][0]),o.position[2]],o.positionRaw=[o.position[0]/t[0],o.position[1]/t[1],2*o.position[2]/(t[0]+t[1])];if(at)for(let o of e)o.positionRaw=[o.positionRaw[0]+at[1],o.positionRaw[1]+at[0],o.positionRaw[2]],o.position=[Math.trunc(o.positionRaw[0]*t[0]),Math.trunc(o.positionRaw[1]*t[1]),o.positionRaw[2]];return e}async function j2(e){let t=e.find(a=>a.part==="leftPalm"),o=e.find(a=>a.part==="leftWrist"),A=e.find(a=>a.part==="leftIndex");t.position[2]=((o.position[2]||0)+(A.position[2]||0))/2;let n=e.find(a=>a.part==="rightPalm"),r=e.find(a=>a.part==="rightWrist"),s=e.find(a=>a.part==="rightIndex");n.position[2]=((r.position[2]||0)+(s.position[2]||0))/2}async function S2(e,t,o){var u;let A={};[A.ld,A.segmentation,A.heatmap,A.world,A.poseflag]=(u=w0.landmarks)==null?void 0:u.execute(e,k2.landmarks);let n=(await A.poseflag.data())[0],r=await A.ld.data(),s=await A.world.data();Object.keys(A).forEach(f=>k0.dispose(A[f]));let a=[],y=5;for(let f=0;ff.position),l=ee(i,[o[0],o[1]]),x={};for(let[f,M]of Object.entries(w5)){let h=[];for(let P=0;Pk.part===M[P]),p=c.find(k=>k.part===M[P+1]);m&&p&&h.push([m.position,p.position])}x[f]=h}return{id:0,score:Math.trunc(100*n)/100,box:l.box,boxRaw:l.boxRaw,keypoints:c,annotations:x}}async function E5(e,t){let o=[e.shape[2]||0,e.shape[1]||0],A=(t.body.skipTime||0)>g()-HA,n=k5<(t.body.skipFrames||0);if(t.skipAllowed&&A&&n&&Wt!==null)k5++;else{let r={};r.landmarks=await E2(e,256),Wt=await S2(r.landmarks,t,o),Object.keys(r).forEach(s=>k0.dispose(r[s])),HA=g(),k5=0}return Wt?[Wt]:[]}var b0=V(F());var Ne=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var te,ve=0,z5=[],qA=0,j5=Number.MAX_SAFE_INTEGER;async function UA(e){if(T.initial&&(te=null),te)e.debug&&b("cached model:",te.modelUrl);else{te=await G(e.object.modelPath);let t=Object.values(te.modelSignature.inputs);ve=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}return te}async function W2(e,t,o){if(!e)return[];let A={},n=[],r=await e.array();A.squeeze=b0.squeeze(e);let s=b0.split(A.squeeze,6,1);A.stack=b0.stack([s[1],s[0],s[3],s[2]],1),A.boxes=b0.squeeze(A.stack),A.scores=b0.squeeze(s[4]),A.classes=b0.squeeze(s[5]),b0.dispose([e,...s]),A.nms=await b0.image.nonMaxSuppressionAsync(A.boxes,A.scores,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence||0);let a=await A.nms.data(),y=0;for(let c of Array.from(a)){let i=Math.trunc(100*r[0][c][4])/100,l=r[0][c][5],x=Ne[l].label,[d,u]=[r[0][c][0]/ve,r[0][c][1]/ve],f=[d,u,r[0][c][2]/ve-d,r[0][c][3]/ve-u],M=[Math.trunc(f[0]*t[0]),Math.trunc(f[1]*t[1]),Math.trunc(f[2]*t[0]),Math.trunc(f[3]*t[1])];n.push({id:y++,score:i,class:l,label:x,box:M,boxRaw:f})}return Object.keys(A).forEach(c=>b0.dispose(A[c])),n}async function S5(e,t){let o=(t.object.skipTime||0)>g()-qA,A=j5<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&z5.length>0?(j5++,z5):(j5=0,new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=b0.image.resizeBilinear(e,[ve,ve]),a=t.object.enabled?te==null?void 0:te.execute(s,["tower_0/detections"]):null;qA=g(),b0.dispose(s);let y=await W2(a,r,t);z5=y,n(y)}))}var K=V(F());var Ct={};mt(Ct,{connected:()=>C5,kpt:()=>W5});var W5=["head","neck","rightShoulder","rightElbow","rightWrist","chest","leftShoulder","leftElbow","leftWrist","bodyCenter","rightHip","rightKnee","rightAnkle","leftHip","leftKnee","leftAnkle"],C5={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var p0,YA=0,g0={id:0,keypoints:[],box:[0,0,0,0],boxRaw:[0,0,0,0],score:0,annotations:{}},O5=Number.MAX_SAFE_INTEGER;async function KA(e){return T.initial&&(p0=null),p0?e.debug&&b("cached model:",p0.modelUrl):p0=await G(e.body.modelPath),p0}async function C2(e,t){let[o,A]=e.shape,n=K.reshape(e,[A*o]),r=K.max(n,0),s=(await r.data())[0];if(K.dispose([n,r]),s>t){let a=K.argMax(n,0),y=K.mod(a,o),c=(await y.data())[0],i=K.div(a,K.scalar(o,"int32")),l=(await i.data())[0];return K.dispose([y,i]),[c,l,s]}return[0,0,s]}async function I5(e,t){let o=(t.body.skipTime||0)>g()-YA,A=O5<(t.body.skipFrames||0);return t.skipAllowed&&o&&A&&Object.keys(g0.keypoints).length>0?(O5++,[g0]):(O5=0,new Promise(async n=>{var l;let r=K.tidy(()=>{if(!(p0==null?void 0:p0.inputs[0].shape))return null;let x=K.image.resizeBilinear(e,[p0.inputs[0].shape[2],p0.inputs[0].shape[1]],!1),d=K.mul(x,H.tf2);return K.sub(d,H.tf1)}),s;if(t.body.enabled&&(s=p0==null?void 0:p0.execute(r)),YA=g(),K.dispose(r),s){g0.keypoints.length=0;let x=s.squeeze();K.dispose(s);let d=x.unstack(2);K.dispose(x);for(let u=0;u(((l=t.body)==null?void 0:l.minConfidence)||0)&&g0.keypoints.push({score:Math.round(100*h)/100,part:W5[u],positionRaw:[f/p0.inputs[0].shape[2],M/p0.inputs[0].shape[1]],position:[Math.round(e.shape[2]*f/p0.inputs[0].shape[2]),Math.round(e.shape[1]*M/p0.inputs[0].shape[1])]})}d.forEach(u=>K.dispose(u))}g0.score=g0.keypoints.reduce((x,d)=>d.score>x?d.score:x,0);let a=g0.keypoints.map(x=>x.position[0]),y=g0.keypoints.map(x=>x.position[1]);g0.box=[Math.min(...a),Math.min(...y),Math.max(...a)-Math.min(...a),Math.max(...y)-Math.min(...y)];let c=g0.keypoints.map(x=>x.positionRaw[0]),i=g0.keypoints.map(x=>x.positionRaw[1]);g0.boxRaw=[Math.min(...c),Math.min(...i),Math.max(...c)-Math.min(...c),Math.max(...i)-Math.min(...i)];for(let[x,d]of Object.entries(C5)){let u=[];for(let f=0;fP.part===d[f]),h=g0.keypoints.find(P=>P.part===d[f+1]);M&&h&&M.score>(t.body.minConfidence||0)&&h.score>(t.body.minConfidence||0)&&u.push([M.position,h.position])}g0.annotations[x]=u}n([g0])}))}var B0=V(F());var O2=["angry","disgust","fear","happy","sad","surprise","neutral"],O0,Ot=[],_A=0,$A=0,N5=Number.MAX_SAFE_INTEGER;async function en(e){var t;return T.initial&&(O0=null),O0?e.debug&&b("cached model:",O0.modelUrl):O0=await G((t=e.face.emotion)==null?void 0:t.modelPath),O0}async function L5(e,t,o,A){var s,a;if(!O0)return[];let n=N5<(((s=t.face.emotion)==null?void 0:s.skipFrames)||0),r=(((a=t.face.emotion)==null?void 0:a.skipTime)||0)>g()-$A;return t.skipAllowed&&r&&n&&_A===A&&Ot[o]&&Ot[o].length>0?(N5++,Ot[o]):(N5=0,new Promise(async y=>{var i,l;let c=[];if((i=t.face.emotion)==null?void 0:i.enabled){let x={},d=(O0==null?void 0:O0.inputs[0].shape)?O0.inputs[0].shape[2]:0;x.resize=B0.image.resizeBilinear(e,[d,d],!1),x.channels=B0.mul(x.resize,H.rgb),x.grayscale=B0.sum(x.channels,3,!0),x.grayscaleSub=B0.sub(x.grayscale,H.tf05),x.grayscaleMul=B0.mul(x.grayscaleSub,H.tf2),x.emotion=O0==null?void 0:O0.execute(x.grayscaleMul),$A=g();let u=await x.emotion.data();for(let f=0;f(((l=t.face.emotion)==null?void 0:l.minConfidence)||0)&&c.push({score:Math.min(.99,Math.trunc(100*u[f])/100),emotion:O2[f]});c.sort((f,M)=>M.score-f.score),Object.keys(x).forEach(f=>B0.dispose(x[f]))}Ot[o]=c,_A=A,y(c)}))}var rn=V(F());var E0,B5=[],on=0,An=0,nn=Number.MAX_SAFE_INTEGER;async function sn(e){return T.initial&&(E0=null),E0?e.debug&&b("cached model:",E0.modelUrl):E0=await G(e.face.mobilefacenet.modelPath),E0}async function G5(e,t,o,A){var s,a;if(!E0)return[];let n=nn<(((s=t.face.embedding)==null?void 0:s.skipFrames)||0),r=(((a=t.face.embedding)==null?void 0:a.skipTime)||0)>g()-An;return t.skipAllowed&&r&&n&&on===A&&B5[o]?(nn++,B5[o]):new Promise(async y=>{var i;let c=[];if(((i=t.face.embedding)==null?void 0:i.enabled)&&(E0==null?void 0:E0.inputs[0].shape)){let l={};l.crop=rn.image.resizeBilinear(e,[E0.inputs[0].shape[2],E0.inputs[0].shape[1]],!1),l.data=E0==null?void 0:E0.execute(l.crop);let x=await l.data.data();c=Array.from(x)}B5[o]=c,on=A,An=g(),y(c)})}var He=V(F());var G0=V(F());var oe,de=0,I2=2.3,H5=L0.leftEyeLower0,F5=L0.rightEyeLower0,Le={leftBounds:[H5[0],H5[H5.length-1]],rightBounds:[F5[0],F5[F5.length-1]]},Be={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};async function cn(e){var t;return T.initial&&(oe=null),oe?e.debug&&b("cached model:",oe.modelUrl):oe=await G((t=e.face.iris)==null?void 0:t.modelPath),de=oe.inputs[0].shape?oe.inputs[0].shape[2]:0,de===-1&&(de=64),oe}function It(e,t,o,A){for(let n=0;n{let t=e[Le.leftBounds[0]][2],o=e[Le.rightBounds[0]][2];return t-o},ln=(e,t,o,A,n,r=!1)=>{let s=wt(Rt(wA([e[o],e[A]]),I2)),a=Oe(s),y=G0.image.cropAndResize(t,[[s.startPoint[1]/n,s.startPoint[0]/n,s.endPoint[1]/n,s.endPoint[0]/n]],[0],[de,de]);if(r&&T.kernels.includes("flipleftright")){let c=G0.image.flipLeftRight(y);G0.dispose(y),y=c}return{box:s,boxSize:a,crop:y}},yn=(e,t,o,A=!1)=>{let n=[];for(let r=0;r{let A=e[L0[`${o}EyeUpper0`][Be.upperCenter]][2],n=e[L0[`${o}EyeLower0`][Be.lowerCenter]][2],r=(A+n)/2;return t.map((s,a)=>{let y=r;return a===2?y=A:a===4&&(y=n),[s[0],s[1],y]})};async function dn(e,t,o,A){if(!oe)return o.debug&&b("face mesh iris detection requested, but model is not loaded"),e;let{box:n,boxSize:r,crop:s}=ln(e,t,Le.leftBounds[0],Le.leftBounds[1],A,!0),{box:a,boxSize:y,crop:c}=ln(e,t,Le.rightBounds[0],Le.rightBounds[1],A,!0),i=G0.concat([s,c]);G0.dispose(s),G0.dispose(c);let l=oe.execute(i);G0.dispose(i);let x=await l.data();G0.dispose(l);let d=x.slice(0,Be.numCoordinates*3),{rawCoords:u,iris:f}=yn(d,n,r,!0),M=x.slice(Be.numCoordinates*3),{rawCoords:h,iris:P}=yn(M,a,y),m=N2(e);Math.abs(m)<30?(It(e,u,"left",null),It(e,h,"right",null)):m<1?It(e,u,"left",["EyeUpper0","EyeLower0"]):It(e,h,"right",["EyeUpper0","EyeLower0"]);let p=xn(e,f,"left"),k=xn(e,P,"right");return e.concat(p).concat(k)}var U0={boxes:[],skipped:Number.MAX_SAFE_INTEGER,timestamp:0},Ae=null,Ge=0;async function mn(e,t){var a,y,c,i,l,x,d,u,f;let o=(((a=t.face.detector)==null?void 0:a.skipTime)||0)>g()-U0.timestamp,A=U0.skipped<(((y=t.face.detector)==null?void 0:y.skipFrames)||0);!t.skipAllowed||!o||!A||U0.boxes.length===0?(U0.boxes=await IA(e,t),U0.timestamp=g(),U0.skipped=0):U0.skipped++;let n=[],r=[],s=0;for(let M=0;M[q[0]/(e.shape[2]||0),q[1]/(e.shape[1]||0),(q[2]||0)/Ge]);for(let q of Object.keys(L0))p.annotations[q]=L0[q].map(x0=>p.mesh[x0]);p.score=p.faceScore;let Z={...SA(p.mesh,h),confidence:h.confidence,landmarks:h.landmarks};p.box=M5(Z,e),p.boxRaw=v5(Z,e),r.push(Z)}}else{p.box=M5(h,e),p.boxRaw=v5(h,e),p.score=p.boxScore,p.mesh=h.landmarks.map(k=>[(h.startPoint[0]+h.endPoint[0])/2+(h.endPoint[0]+h.startPoint[0])*k[0]/kt(),(h.startPoint[1]+h.endPoint[1])/2+(h.endPoint[1]+h.startPoint[1])*k[1]/kt()]),p.meshRaw=p.mesh.map(k=>[k[0]/(e.shape[2]||0),k[1]/(e.shape[1]||0),(k[2]||0)/Ge]);for(let k of Object.keys(nt))p.annotations[k]=[p.mesh[nt[k]]]}p.score>(((f=t.face.detector)==null?void 0:f.minConfidence)||1)?n.push(p):He.dispose(p.tensor)}return U0.boxes=r,n}async function pn(e){var t;return T.initial&&(Ae=null),Ae?e.debug&&b("cached model:",Ae.modelUrl):Ae=await G((t=e.face.mesh)==null?void 0:t.modelPath),Ge=Ae.inputs[0].shape?Ae.inputs[0].shape[2]:0,Ae}var un=Pe,hn=rt;var H0=V(F());var z0,Nt=[],bn=0,gn=0,Z5=Number.MAX_SAFE_INTEGER;async function Pn(e){var t;return T.initial&&(z0=null),z0?e.debug&&b("cached model:",z0.modelUrl):z0=await G((t=e.face.description)==null?void 0:t.modelPath),z0}function X5(e){let t=e.image||e.tensor||e;if(!(z0==null?void 0:z0.inputs[0].shape))return t;let o=H0.image.resizeBilinear(t,[z0.inputs[0].shape[2],z0.inputs[0].shape[1]],!1),A=H0.mul(o,H.tf255);return H0.dispose(o),A}async function D5(e,t,o,A){var s,a,y,c;if(!z0)return{age:0,gender:"unknown",genderScore:0,descriptor:[]};let n=Z5<(((s=t.face.description)==null?void 0:s.skipFrames)||0),r=(((a=t.face.description)==null?void 0:a.skipTime)||0)>g()-bn;return t.skipAllowed&&n&&r&&gn===A&&((y=Nt[o])==null?void 0:y.age)&&((c=Nt[o])==null?void 0:c.age)>0?(Z5++,Nt[o]):(Z5=0,new Promise(async i=>{var x,d;let l={age:0,gender:"unknown",genderScore:0,descriptor:[]};if((x=t.face.description)==null?void 0:x.enabled){let u=X5(e),f=z0==null?void 0:z0.execute(u);bn=g(),H0.dispose(u);let h=await(await f.find(L=>L.shape[1]===1)).data(),P=Math.trunc(200*Math.abs(h[0]-.5))/100;P>(((d=t.face.description)==null?void 0:d.minConfidence)||0)&&(l.gender=h[0]<=.5?"female":"male",l.genderScore=Math.min(.99,P));let m=H0.argMax(f.find(L=>L.shape[1]===100),1),p=(await m.data())[0];H0.dispose(m);let C=await f.find(L=>L.shape[1]===100).data();l.age=Math.round(C[p-1]>C[p+1]?10*p-100*C[p-1]:10*p+100*C[p+1])/10;let O=f.find(L=>L.shape[1]===1024),j=O?await O.data():[];l.descriptor=Array.from(j),f.forEach(L=>H0.dispose(L))}Nt[o]=l,gn=A,i(l)}))}var B=V(F());var Tn=V(F());function Lt(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function it(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function Rn(e,t,o){let A=t.shape[1],n=t.shape[2],r=[[e.startPoint[1]/A,e.startPoint[0]/n,e.endPoint[1]/A,e.endPoint[0]/n]];return Tn.image.cropAndResize(t,r,[0],o)}function wn(e,t){let o=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],A=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],n=e.palmLandmarks.map(r=>[r[0]*t[0],r[1]*t[1]]);return{startPoint:o,endPoint:A,palmLandmarks:n,confidence:e.confidence}}function Bt(e,t=1.5){let o=it(e),A=Lt(e),n=[t*A[0]/2,t*A[1]/2],r=[o[0]-n[0],o[1]-n[1]],s=[o[0]+n[0],o[1]+n[1]];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function Gt(e){let t=it(e),o=Lt(e),n=Math.max(...o)/2,r=[t[0]-n,t[1]-n],s=[t[0]+n,t[1]+n];return{startPoint:r,endPoint:s,palmLandmarks:e.palmLandmarks}}function L2(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function kn(e,t){let o=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return L2(o)}var Mn=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function fe(e,t){let o=0;for(let A=0;A[o.x,o.y]),this.anchorsTensor=B.tensor2d(this.anchors),this.inputSize=this.model&&this.model.inputs&&this.model.inputs[0].shape?this.model.inputs[0].shape[2]:0,this.inputSizeTensor=B.tensor1d([this.inputSize,this.inputSize]),this.doubleInputSizeTensor=B.tensor1d([this.inputSize*2,this.inputSize*2])}normalizeBoxes(t){let o={};o.boxOffsets=B.slice(t,[0,0],[-1,2]),o.boxSizes=B.slice(t,[0,2],[-1,2]),o.div=B.div(o.boxOffsets,this.inputSizeTensor),o.boxCenterPoints=B.add(o.div,this.anchorsTensor),o.halfBoxSizes=B.div(o.boxSizes,this.doubleInputSizeTensor),o.sub=B.sub(o.boxCenterPoints,o.halfBoxSizes),o.startPoints=B.mul(o.sub,this.inputSizeTensor),o.add=B.add(o.boxCenterPoints,o.halfBoxSizes),o.endPoints=B.mul(o.add,this.inputSizeTensor);let A=B.concat2d([o.startPoints,o.endPoints],1);return Object.keys(o).forEach(n=>B.dispose(o[n])),A}normalizeLandmarks(t,o){let A={};A.reshape=B.reshape(t,[-1,7,2]),A.div=B.div(A.reshape,this.inputSizeTensor),A.landmarks=B.add(A.div,this.anchors[o]);let n=B.mul(A.landmarks,this.inputSizeTensor);return Object.keys(A).forEach(r=>B.dispose(A[r])),n}async predict(t,o){let A={};A.resize=B.image.resizeBilinear(t,[this.inputSize,this.inputSize]),A.div=B.div(A.resize,H.tf127),A.image=B.sub(A.div,H.tf1),A.batched=this.model.execute(A.image),A.predictions=B.squeeze(A.batched),A.slice=B.slice(A.predictions,[0,0],[-1,1]),A.sigmoid=B.sigmoid(A.slice),A.scores=B.squeeze(A.sigmoid);let n=await A.scores.data();A.boxes=B.slice(A.predictions,[0,1],[-1,4]),A.norm=this.normalizeBoxes(A.boxes),A.nms=await B.image.nonMaxSuppressionAsync(A.norm,A.scores,3*o.hand.maxDetected,o.hand.iouThreshold,o.hand.minConfidence);let r=await A.nms.array(),s=[];for(let a of r){let y={};y.box=B.slice(A.norm,[a,0],[1,-1]),y.slice=B.slice(A.predictions,[a,5],[1,14]),y.norm=this.normalizeLandmarks(y.slice,a),y.palmLandmarks=B.reshape(y.norm,[-1,2]);let c=await y.box.data(),i=c.slice(0,2),l=c.slice(2,4),x=await y.palmLandmarks.array(),d={startPoint:i,endPoint:l,palmLandmarks:x,confidence:n[a]},u=wn(d,[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]);s.push(u),Object.keys(y).forEach(f=>B.dispose(y[f]))}return Object.keys(A).forEach(a=>B.dispose(A[a])),s}};var j0=V(F());var F2=5,Sn=1.65,Wn=[0,5,9,13,17,1,2],V2=0,Z2=2,Cn=0,K5=class{constructor(t,o){R(this,"handDetector");R(this,"handPoseModel");R(this,"inputSize");R(this,"storedBoxes");R(this,"skipped");R(this,"detectedHands");this.handDetector=t,this.handPoseModel=o,this.inputSize=this.handPoseModel&&this.handPoseModel.inputs[0].shape?this.handPoseModel.inputs[0].shape[2]:0,this.storedBoxes=[],this.skipped=Number.MAX_SAFE_INTEGER,this.detectedHands=0}calculateLandmarksBoundingBox(t){let o=t.map(s=>s[0]),A=t.map(s=>s[1]),n=[Math.min(...o),Math.min(...A)],r=[Math.max(...o),Math.max(...A)];return{startPoint:n,endPoint:r}}getBoxForPalmLandmarks(t,o){let A=t.map(r=>J5([...r,1],o)),n=this.calculateLandmarksBoundingBox(A);return Bt(Gt(n),F2)}getBoxForHandLandmarks(t){let o=this.calculateLandmarksBoundingBox(t),A=Bt(Gt(o),Sn);A.palmLandmarks=[];for(let n=0;n[s[0]*(d[0]-this.inputSize/2),s[1]*(d[1]-this.inputSize/2),s[2]*d[2]]),y=U5(A,[0,0]),c=a.map(d=>[...J5(d,y),d[2]]),i=En(n),l=[...it(o),1],x=[fe(l,i[0]),fe(l,i[1])];return c.map(d=>[Math.trunc(d[0]+x[0]),Math.trunc(d[1]+x[1]),Math.trunc(d[2])])}async estimateHands(t,o){let A=!1,n,r=(o.hand.skipTime||0)>g()-Cn,s=this.skipped<(o.hand.skipFrames||0);o.skipAllowed&&r&&s&&(n=await this.handDetector.predict(t,o),this.skipped=0),o.skipAllowed&&this.skipped++,n&&n.length>0&&(n.length!==this.detectedHands&&this.detectedHands!==o.hand.maxDetected||!o.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...n],this.storedBoxes.length>0&&(A=!0));let a=[];for(let y=0;y=o.hand.minConfidence/4){let k=j0.reshape(m,[-1,3]),C=await k.array();j0.dispose(m),j0.dispose(k);let O=this.transformRawCoords(C,f,i,u),j=this.getBoxForHandLandmarks(O);this.storedBoxes[y]={...j,confidence:p};let L={landmarks:O,confidence:p,boxConfidence:c.confidence,fingerConfidence:p,box:{topLeft:j.startPoint,bottomRight:j.endPoint}};a.push(L)}else this.storedBoxes[y]=null;j0.dispose(m)}else{let i=Bt(Gt(c),Sn),l={confidence:c.confidence,boxConfidence:c.confidence,fingerConfidence:0,box:{topLeft:i.startPoint,bottomRight:i.endPoint},landmarks:[]};a.push(l)}}return this.storedBoxes=this.storedBoxes.filter(y=>y!==null),this.detectedHands=a.length,a.length>o.hand.maxDetected&&(a.length=o.hand.maxDetected),a}};var P0={thumb:0,index:1,middle:2,ring:3,pinky:4,all:[0,1,2,3,4],nameMapping:{0:"thumb",1:"index",2:"middle",3:"ring",4:"pinky"},pointsMapping:{0:[[0,1],[1,2],[2,3],[3,4]],1:[[0,5],[5,6],[6,7],[7,8]],2:[[0,9],[9,10],[10,11],[11,12]],3:[[0,13],[13,14],[14,15],[15,16]],4:[[0,17],[17,18],[18,19],[19,20]]},getName:e=>P0.nameMapping[e],getPoints:e=>P0.pointsMapping[e]},me={none:0,half:1,full:2,nameMapping:{0:"none",1:"half",2:"full"},getName:e=>me.nameMapping[e]},e0={verticalUp:0,verticalDown:1,horizontalLeft:2,horizontalRight:3,diagonalUpRight:4,diagonalUpLeft:5,diagonalDownRight:6,diagonalDownLeft:7,nameMapping:{0:"verticalUp",1:"verticalDown",2:"horizontalLeft",3:"horizontalRight",4:"diagonalUpRight",5:"diagonalUpLeft",6:"diagonalDownRight",7:"diagonalDownLeft"},getName:e=>e0.nameMapping[e]},Te=class{constructor(t){R(this,"name");R(this,"curls");R(this,"directions");R(this,"weights");R(this,"weightsRelative");this.name=t,this.curls={},this.directions={},this.weights=[1,1,1,1,1],this.weightsRelative=[1,1,1,1,1]}curl(t,o,A){typeof this.curls[t]=="undefined"&&(this.curls[t]=[]),this.curls[t].push([o,A])}direction(t,o,A){this.directions[t]||(this.directions[t]=[]),this.directions[t].push([o,A])}weight(t,o){this.weights[t]=o;let A=this.weights.reduce((n,r)=>n+r,0);this.weightsRelative=this.weights.map(n=>n*5/A)}matchAgainst(t,o){let A=0;for(let n in t){let r=t[n],s=this.curls[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}for(let n in o){let r=o[n],s=this.directions[n];if(typeof s=="undefined"){A+=this.weightsRelative[n];continue}for(let[a,y]of s)if(r===a){A+=y*this.weightsRelative[n];break}}return A/10}};var{thumb:F0,index:ne,middle:re,ring:Re,pinky:we}=P0,{none:V0,half:D2,full:Z0}=me,{verticalUp:Fe,verticalDown:_a,horizontalLeft:Q5,horizontalRight:q2,diagonalUpRight:U2,diagonalUpLeft:Ve,diagonalDownRight:$a,diagonalDownLeft:e1}=e0,pe=new Te("thumbs up");pe.curl(F0,V0,1);pe.direction(F0,Fe,1);pe.direction(F0,Ve,.25);pe.direction(F0,U2,.25);for(let e of[P0.index,P0.middle,P0.ring,P0.pinky])pe.curl(e,Z0,1),pe.direction(e,Q5,1),pe.direction(e,q2,1);var r0=new Te("victory");r0.curl(F0,D2,.5);r0.curl(F0,V0,.5);r0.direction(F0,Fe,1);r0.direction(F0,Ve,1);r0.curl(ne,V0,1);r0.direction(ne,Fe,.75);r0.direction(ne,Ve,1);r0.curl(re,V0,1);r0.direction(re,Fe,1);r0.direction(re,Ve,.75);r0.curl(Re,Z0,1);r0.direction(Re,Fe,.2);r0.direction(Re,Ve,1);r0.direction(Re,Q5,.2);r0.curl(we,Z0,1);r0.direction(we,Fe,.2);r0.direction(we,Ve,1);r0.direction(we,Q5,.2);r0.weight(ne,2);r0.weight(re,2);var ue=new Te("point");ue.curl(F0,Z0,1);ue.curl(ne,V0,.5);ue.curl(re,Z0,.5);ue.curl(Re,Z0,.5);ue.curl(we,Z0,.5);ue.weight(ne,2);ue.weight(re,2);var he=new Te("middle finger");he.curl(F0,V0,1);he.curl(ne,Z0,.5);he.curl(re,Z0,.5);he.curl(Re,Z0,.5);he.curl(we,Z0,.5);he.weight(ne,2);he.weight(re,2);var Ze=new Te("open palm");Ze.curl(F0,V0,.75);Ze.curl(ne,V0,.75);Ze.curl(re,V0,.75);Ze.curl(Re,V0,.75);Ze.curl(we,V0,.75);var On=[pe,r0,ue,he,Ze];var J2=.7,ke={HALF_CURL_START_LIMIT:60,NO_CURL_START_LIMIT:130,DISTANCE_VOTE_POWER:1.1,SINGLE_ANGLE_VOTE_POWER:.9,TOTAL_ANGLE_VOTE_POWER:1.6};function In(e,t,o,A){let n=(t-A)/(e-o),r=Math.atan(n)*180/Math.PI;return r<=0?r=-r:r>0&&(r=180-r),r}function Ln(e,t){if(!e||!t)return[0,0];let o=In(e[0],e[1],t[0],t[1]);if(e.length===2)return o;let A=In(e[1],e[2],t[1],t[2]);return[o,A]}function Nn(e,t=1){let o=0,A=0,n=0;return e>=75&&e<=105?o=1*t:e>=25&&e<=155?A=1*t:n=1*t,[o,A,n]}function Y2(e,t,o){let A=e[0]-t[0],n=e[0]-o[0],r=t[0]-o[0],s=e[1]-t[1],a=e[1]-o[1],y=t[1]-o[1],c=e[2]-t[2],i=e[2]-o[2],l=t[2]-o[2],x=Math.sqrt(A*A+s*s+c*c),d=Math.sqrt(n*n+a*a+i*i),u=Math.sqrt(r*r+y*y+l*l),f=(u*u+x*x-d*d)/(2*u*x);f>1?f=1:f<-1&&(f=-1);let M=Math.acos(f);M=57.2958*M%180;let h;return M>ke.NO_CURL_START_LIMIT?h=me.none:M>ke.HALF_CURL_START_LIMIT?h=me.half:h=me.full,h}function Bn(e,t,o,A){let n;return A===Math.abs(e)?e>0?n=e0.horizontalLeft:n=e0.horizontalRight:A===Math.abs(t)?t>0?n=e0.horizontalLeft:n=e0.horizontalRight:o>0?n=e0.horizontalLeft:n=e0.horizontalRight,n}function Gn(e,t,o,A){let n;return A===Math.abs(e)?e<0?n=e0.verticalDown:n=e0.verticalUp:A===Math.abs(t)?t<0?n=e0.verticalDown:n=e0.verticalUp:o<0?n=e0.verticalDown:n=e0.verticalUp,n}function K2(e,t,o,A,n,r,s,a){let y,c=Gn(e,t,o,A),i=Bn(n,r,s,a);return c===e0.verticalUp?i===e0.horizontalLeft?y=e0.diagonalUpLeft:y=e0.diagonalUpRight:i===e0.horizontalLeft?y=e0.diagonalDownLeft:y=e0.diagonalDownRight,y}function Q2(e,t,o,A){let n=e[0]-t[0],r=e[0]-o[0],s=t[0]-o[0],a=e[1]-t[1],y=e[1]-o[1],c=t[1]-o[1],i=Math.max(Math.abs(n),Math.abs(r),Math.abs(s)),l=Math.max(Math.abs(a),Math.abs(y),Math.abs(c)),x=0,d=0,u=0,f=l/(i+1e-5);f>1.5?x+=ke.DISTANCE_VOTE_POWER:f>.66?d+=ke.DISTANCE_VOTE_POWER:u+=ke.DISTANCE_VOTE_POWER;let M=Math.sqrt(n*n+a*a),h=Math.sqrt(r*r+y*y),P=Math.sqrt(s*s+c*c),m=Math.max(M,h,P),p=e[0],k=e[1],C=o[0],O=o[1];m===M?(C=o[0],O=o[1]):m===P&&(p=t[0],k=t[1]);let J=Ln([p,k],[C,O]),Z=Nn(J,ke.TOTAL_ANGLE_VOTE_POWER);x+=Z[0],d+=Z[1],u+=Z[2];for(let x0 of A){let E=Nn(x0,ke.SINGLE_ANGLE_VOTE_POWER);x+=E[0],d+=E[1],u+=E[2]}let q;return x===Math.max(x,d,u)?q=Gn(y,a,c,l):u===Math.max(d,u)?q=Bn(r,n,s,i):q=K2(y,a,c,l,r,n,s,i),q}function Hn(e){let t=[],o=[],A=[],n=[];if(!e)return{curls:A,directions:n};for(let r of P0.all){let s=P0.getPoints(r),a=[],y=[];for(let c of s){let i=e[c[0]],l=e[c[1]],x=Ln(i,l),d=x[0],u=x[1];a.push(d),y.push(u)}t.push(a),o.push(y)}for(let r of P0.all){let s=r===P0.thumb?1:0,a=P0.getPoints(r),y=e[a[s][0]],c=e[a[s+1][1]],i=e[a[3][1]],l=Y2(y,c,i),x=Q2(y,c,i,t[r].slice(s));A[r]=l,n[r]=x}return{curls:A,directions:n}}function Ht(e){if(!e||e.length===0)return null;let t=Hn(e),o={};for(let A of P0.all)o[P0.getName(A)]={curl:me.getName(t.curls[A]),direction:e0.getName(t.directions[A])};return o}function Fn(e){let t=[];if(!e||e.length===0)return t;let o=Hn(e);for(let A of On){let n=A.matchAgainst(o.curls,o.directions);n>=J2&&t.push({name:A.name,confidence:n})}return t}var Vn={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],palm:[0]},Xe,De,Zn;async function $5(e,t){let o=await Zn.estimateHands(e,t);if(!o)return[];let A=[];for(let n=0;no[n].landmarks[l]);let s=o[n].landmarks,a=[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,0,0],y=[0,0,0,0];if(s&&s.length>0){for(let i of s)i[0]a[2]&&(a[2]=i[0]),i[1]>a[3]&&(a[3]=i[1]);a[2]-=a[0],a[3]-=a[1],y=[a[0]/(e.shape[2]||0),a[1]/(e.shape[1]||0),a[2]/(e.shape[2]||0),a[3]/(e.shape[1]||0)]}else a=o[n].box?[Math.trunc(Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.max(0,o[n].box.topLeft[1])),Math.trunc(Math.min(e.shape[2]||0,o[n].box.bottomRight[0])-Math.max(0,o[n].box.topLeft[0])),Math.trunc(Math.min(e.shape[1]||0,o[n].box.bottomRight[1])-Math.max(0,o[n].box.topLeft[1]))]:[0,0,0,0],y=[o[n].box.topLeft[0]/(e.shape[2]||0),o[n].box.topLeft[1]/(e.shape[1]||0),(o[n].box.bottomRight[0]-o[n].box.topLeft[0])/(e.shape[2]||0),(o[n].box.bottomRight[1]-o[n].box.topLeft[1])/(e.shape[1]||0)];let c=Ht(s);A.push({id:n,score:Math.round(100*o[n].confidence)/100,boxScore:Math.round(100*o[n].boxConfidence)/100,fingerScore:Math.round(100*o[n].fingerConfidence)/100,label:"hand",box:a,boxRaw:y,keypoints:s,annotations:r,landmarks:c})}return A}async function eo(e){var o,A;T.initial&&(Xe=null,De=null),!Xe||!De?[Xe,De]=await Promise.all([e.hand.enabled?G((o=e.hand.detector)==null?void 0:o.modelPath):null,e.hand.landmarks?G((A=e.hand.skeleton)==null?void 0:A.modelPath):null]):(e.debug&&b("cached model:",Xe.modelUrl),e.debug&&b("cached model:",De.modelUrl));let t=new Y5(Xe);return Zn=new K5(t,De),[Xe,De]}var Y=V(F());var l0=[null,null],_2=["StatefulPartitionedCall/Postprocessor/Slice","StatefulPartitionedCall/Postprocessor/ExpandDims_1"],be=[[0,0],[0,0]],$2=["hand","fist","pinch","point","face","tip","pinchtip"],Dn=4,qn=1.6,es=512,ts=1.4,Ft=Number.MAX_SAFE_INTEGER,to=0,se=[0,0],o0={boxes:[],hands:[]},Un={thumb:[1,2,3,4],index:[5,6,7,8],middle:[9,10,11,12],ring:[13,14,15,16],pinky:[17,18,19,20],base:[0],palm:[0,17,13,9,5,1,0]};async function Jn(e){var t;if(T.initial&&(l0[0]=null),l0[0])e.debug&&b("cached model:",l0[0].modelUrl);else{Vt(["tensorlistreserve","enter","tensorlistfromtensor","merge","loopcond","switch","exit","tensorliststack","nextiteration","tensorlistsetitem","tensorlistgetitem","reciprocal","shape","split","where"],e),l0[0]=await G((t=e.hand.detector)==null?void 0:t.modelPath);let o=Object.values(l0[0].modelSignature.inputs);be[0][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[0][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[0]}async function Yn(e){var t;if(T.initial&&(l0[1]=null),l0[1])e.debug&&b("cached model:",l0[1].modelUrl);else{l0[1]=await G((t=e.hand.skeleton)==null?void 0:t.modelPath);let o=Object.values(l0[1].modelSignature.inputs);be[1][0]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[1].size):0,be[1][1]=Array.isArray(o)?parseInt(o[0].tensorShape.dim[2].size):0}return l0[1]}async function os(e,t){let o=[];if(!e||!l0[0])return o;let A={},n=(e.shape[2]||1)/(e.shape[1]||1),r=Math.min(Math.round((e.shape[1]||0)/8)*8,es),s=Math.round(r*n/8)*8;A.resize=Y.image.resizeBilinear(e,[r,s]),A.cast=Y.cast(A.resize,"int32"),[A.rawScores,A.rawBoxes]=await l0[0].executeAsync(A.cast,_2),A.boxes=Y.squeeze(A.rawBoxes,[0,2]),A.scores=Y.squeeze(A.rawScores,[0]);let a=Y.unstack(A.scores,1);Y.dispose(a[Dn]),a.splice(Dn,1),A.filtered=Y.stack(a,1),Y.dispose(a),A.max=Y.max(A.filtered,1),A.argmax=Y.argMax(A.filtered,1);let y=0;A.nms=await Y.image.nonMaxSuppressionAsync(A.boxes,A.max,(t.hand.maxDetected||0)+1,t.hand.iouThreshold||0,t.hand.minConfidence||1);let c=await A.nms.data(),i=await A.max.data(),l=await A.argmax.data();for(let x of Array.from(c)){let d=Y.slice(A.boxes,x,1),u=await d.data();Y.dispose(d);let f=[u[1],u[0],u[3]-u[1],u[2]-u[0]],M=jt(f,ts),h=[Math.trunc(f[0]*se[0]),Math.trunc(f[1]*se[1]),Math.trunc(f[2]*se[0]),Math.trunc(f[3]*se[1])],P=i[x],m=$2[l[x]],p={id:y++,score:P,box:h,boxRaw:M,label:m};o.push(p)}return Object.keys(A).forEach(x=>Y.dispose(A[x])),o.sort((x,d)=>d.score-x.score),o.length>(t.hand.maxDetected||1)&&(o.length=t.hand.maxDetected||1),o}async function oo(e,t,o){let A={id:t.id,score:Math.round(100*t.score)/100,boxScore:Math.round(100*t.score)/100,fingerScore:0,box:t.box,boxRaw:t.boxRaw,label:t.label,keypoints:[],landmarks:{},annotations:{}};if(e&&l0[1]&&o.hand.landmarks&&t.score>(o.hand.minConfidence||0)){let n={},r=[t.boxRaw[1],t.boxRaw[0],t.boxRaw[3]+t.boxRaw[1],t.boxRaw[2]+t.boxRaw[0]];n.crop=Y.image.cropAndResize(e,[r],[0],[be[1][0],be[1][1]],"bilinear"),n.div=Y.div(n.crop,H.tf255),[n.score,n.keypoints]=l0[1].execute(n.div,["Identity_1","Identity"]);let s=(await n.score.data())[0],a=(100-Math.trunc(100/(1+Math.exp(s))))/100;if(a>=(o.hand.minConfidence||0)){A.fingerScore=a,n.reshaped=Y.reshape(n.keypoints,[-1,3]);let i=(await n.reshaped.array()).map(l=>[l[0]/be[1][1],l[1]/be[1][0],l[2]||0]).map(l=>[l[0]*t.boxRaw[2],l[1]*t.boxRaw[3],l[2]||0]);A.keypoints=i.map(l=>[se[0]*(l[0]+t.boxRaw[0]),se[1]*(l[1]+t.boxRaw[1]),l[2]||0]),A.landmarks=Ht(A.keypoints);for(let l of Object.keys(Un))A.annotations[l]=Un[l].map(x=>A.landmarks&&A.keypoints[x]?A.keypoints[x]:null)}Object.keys(n).forEach(y=>Y.dispose(n[y]))}return A}async function Ao(e,t){var n,r;if(!l0[0]||!l0[1]||!((n=l0[0])==null?void 0:n.inputs[0].shape)||!((r=l0[1])==null?void 0:r.inputs[0].shape))return[];se=[e.shape[2]||0,e.shape[1]||0],Ft++;let o=(t.hand.skipTime||0)>g()-to,A=Ft<(t.hand.skipFrames||0);return t.skipAllowed&&o&&A?o0.hands:new Promise(async s=>{let a=3*(t.hand.skipTime||0)>g()-to,y=Ft<3*(t.hand.skipFrames||0);t.skipAllowed&&o0.hands.length===t.hand.maxDetected?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):t.skipAllowed&&a&&y&&o0.hands.length>0?o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))):(o0.boxes=await os(e,t),to=g(),o0.hands=await Promise.all(o0.boxes.map(i=>oo(e,i,t))),Ft=0);let c=[...o0.boxes];if(o0.boxes.length=0,t.cacheSensitivity>0)for(let i=0;i.05&&l.box[3]/(e.shape[1]||1)>.05&&o0.hands[i].fingerScore&&o0.hands[i].fingerScore>(t.hand.minConfidence||0)){let x=jt(l.box,qn),d=jt(l.boxRaw,qn);o0.boxes.push({...c[i],box:x,boxRaw:d})}}for(let i=0;ig()-_n,r=no<(((a=t.face.liveness)==null?void 0:a.skipFrames)||0);return t.skipAllowed&&n&&r&&Qn===A&&Zt[o]?(no++,Zt[o]):(no=0,new Promise(async y=>{let c=Xt.image.resizeBilinear(e,[(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[2]:0,(u0==null?void 0:u0.inputs[0].shape)?u0.inputs[0].shape[1]:0],!1),i=u0==null?void 0:u0.execute(c),l=(await i.data())[0];Zt[o]=Math.round(100*l)/100,Qn=A,_n=g(),Xt.dispose([c,i]),y(Zt[o])}))}var rr=V(F());var lt={};mt(lt,{connected:()=>qt,horizontal:()=>so,kpt:()=>Dt,relative:()=>io,vertical:()=>ao});var Dt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],so=[["leftEye","rightEye"],["leftEar","rightEar"],["leftShoulder","rightShoulder"],["leftElbow","rightElbow"],["leftWrist","rightWrist"],["leftHip","rightHip"],["leftKnee","rightKnee"],["leftAnkle","rightAnkle"]],ao=[["leftKnee","leftShoulder"],["rightKnee","rightShoulder"],["leftAnkle","leftKnee"],["rightAnkle","rightKnee"]],io=[[["leftHip","rightHip"],["leftShoulder","rightShoulder"]],[["leftElbow","rightElbow"],["leftShoulder","rightShoulder"]]],qt={leftLeg:["leftHip","leftKnee","leftAnkle"],rightLeg:["rightHip","rightKnee","rightAnkle"],torso:["leftShoulder","rightShoulder","rightHip","leftHip","leftShoulder"],leftArm:["leftShoulder","leftElbow","leftWrist"],rightArm:["rightShoulder","rightElbow","rightWrist"],head:[]};var ge=V(F()),tr=.005,S0={keypoints:[],padding:[[0,0],[0,0],[0,0],[0,0]]};function lo(e){for(let t of so){let o=e.keypoints.findIndex(n=>n.part===t[0]),A=e.keypoints.findIndex(n=>n.part===t[1]);if(e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[0]n&&n.part===t[0]),A=e.keypoints.findIndex(n=>n&&n.part===t[1]);e.keypoints[o]&&e.keypoints[A]&&e.keypoints[o].position[1]c&&c.part===t[0]),n=e.keypoints.findIndex(c=>c&&c.part===t[1]),r=e.keypoints.findIndex(c=>c&&c.part===o[0]),s=e.keypoints.findIndex(c=>c&&c.part===o[1]);if(!e.keypoints[r]||!e.keypoints[s])continue;let a=e.keypoints[A]?[Math.abs(e.keypoints[r].position[0]-e.keypoints[A].position[0]),Math.abs(e.keypoints[s].position[0]-e.keypoints[A].position[0])]:[0,0],y=e.keypoints[n]?[Math.abs(e.keypoints[s].position[0]-e.keypoints[n].position[0]),Math.abs(e.keypoints[r].position[0]-e.keypoints[n].position[0])]:[0,0];if(a[0]>a[1]||y[0]>y[1]){let c=e.keypoints[A];e.keypoints[A]=e.keypoints[n],e.keypoints[n]=c}}}function or(e){for(let t=0;te.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0,e.shape[2]>e.shape[1]?Math.trunc((e.shape[2]-e.shape[1])/2):0],[e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0,e.shape[1]>e.shape[2]?Math.trunc((e.shape[1]-e.shape[2])/2):0],[0,0]],o.pad=ge.pad(e,S0.padding),o.resize=ge.image.resizeBilinear(o.pad,[t,t]);let A=ge.cast(o.resize,"int32");return Object.keys(o).forEach(n=>ge.dispose(o[n])),A}function nr(e,t){e.keypoints=e.keypoints.filter(A=>A&&A.position);for(let A of e.keypoints)A.position=[A.position[0]*(t[0]+S0.padding[2][0]+S0.padding[2][1])/t[0]-S0.padding[2][0],A.position[1]*(t[1]+S0.padding[1][0]+S0.padding[1][1])/t[1]-S0.padding[1][0]],A.positionRaw=[A.position[0]/t[0],A.position[1]/t[1]];let o=ee(e.keypoints.map(A=>A.position),t);return e.box=o.box,e.boxRaw=o.boxRaw,e}var W0,Ut=0,yo=Number.MAX_SAFE_INTEGER,Ee={boxes:[],bodies:[],last:0};async function sr(e){return T.initial&&(W0=null),W0?e.debug&&b("cached model:",W0.modelUrl):(Vt(["size"],e),W0=await G(e.body.modelPath)),Ut=W0.inputs[0].shape?W0.inputs[0].shape[2]:0,Ut<64&&(Ut=256),W0}async function ns(e,t,o){let A=e[0][0],n=[],r=0;for(let i=0;it.body.minConfidence){let l=[A[i][1],A[i][0]];n.push({score:Math.round(100*r)/100,part:Dt[i],positionRaw:l,position:[Math.round((o.shape[2]||0)*l[0]),Math.round((o.shape[1]||0)*l[1])]})}r=n.reduce((i,l)=>l.score>i?l.score:i,0);let s=[],a=ee(n.map(i=>i.position),[o.shape[2],o.shape[1]]),y={};for(let[i,l]of Object.entries(qt)){let x=[];for(let d=0;dM.part===l[d]),f=n.find(M=>M.part===l[d+1]);u&&f&&u.score>(t.body.minConfidence||0)&&f.score>(t.body.minConfidence||0)&&x.push([u.position,f.position])}y[i]=x}let c={id:0,score:r,box:a.box,boxRaw:a.boxRaw,keypoints:n,annotations:y};return lo(c),s.push(c),s}async function rs(e,t,o){let A=[];for(let n=0;nt.body.minConfidence){let a=[];for(let l=0;l<17;l++){let x=r[3*l+2];if(x>t.body.minConfidence){let d=[r[3*l+1],r[3*l+0]];a.push({part:Dt[l],score:Math.round(100*x)/100,positionRaw:d,position:[Math.round((o.shape[2]||0)*d[0]),Math.round((o.shape[1]||0)*d[1])]})}}let y=ee(a.map(l=>l.position),[o.shape[2],o.shape[1]]),c={};for(let[l,x]of Object.entries(qt)){let d=[];for(let u=0;uh.part===x[u]),M=a.find(h=>h.part===x[u+1]);f&&M&&f.score>(t.body.minConfidence||0)&&M.score>(t.body.minConfidence||0)&&d.push([f.position,M.position])}c[l]=d}let i={id:n,score:s,box:y.box,boxRaw:y.boxRaw,keypoints:[...a],annotations:c};lo(i),A.push(i)}}return A.sort((n,r)=>r.score-n.score),A.length>t.body.maxDetected&&(A.length=t.body.maxDetected),A}async function xo(e,t){if(!W0||!(W0==null?void 0:W0.inputs[0].shape))return[];t.skipAllowed||(Ee.boxes.length=0),yo++;let o=(t.body.skipTime||0)>g()-Ee.last,A=yo<(t.body.skipFrames||0);return t.skipAllowed&&o&&A?Ee.bodies:new Promise(async n=>{let r={};yo=0,r.input=Ar(e,Ut),r.res=W0==null?void 0:W0.execute(r.input),Ee.last=g();let s=await r.res.array();Ee.bodies=r.res.shape[2]===17?await ns(s,t,e):await rs(s,t,e);for(let a of Ee.bodies)nr(a,[e.shape[2]||1,e.shape[1]||1]),or(a.keypoints);Object.keys(r).forEach(a=>rr.dispose(r[a])),n(Ee.bodies)})}var M0=V(F());var qe,Jt=[],ir=0,co=Number.MAX_SAFE_INTEGER,Kt=0,Yt=2.5;async function lr(e){if(!qe||T.initial){qe=await G(e.object.modelPath);let t=Object.values(qe.modelSignature.inputs);Kt=Array.isArray(t)?parseInt(t[0].tensorShape.dim[2].size):0}else e.debug&&b("cached model:",qe.modelUrl);return qe}async function ss(e,t,o){let A=0,n=[];for(let y of[1,2,4])M0.tidy(async()=>{let c=y*13,i=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)===Ne.length)),l=M0.squeeze(e.find(f=>f.shape[1]===c**2&&(f.shape[2]||0)(o.object.minConfidence||0)&&M!==61){let P=(.5+Math.trunc(f%c))/c,m=(.5+Math.trunc(f/c))/c,p=d[f].map(q=>q*(c/y/Kt)),[k,C]=[P-Yt/y*p[0],m-Yt/y*p[1]],[O,j]=[P+Yt/y*p[2]-k,m+Yt/y*p[3]-C],L=[k,C,O,j];L=L.map(q=>Math.max(0,Math.min(q,1)));let J=[L[0]*t[0],L[1]*t[1],L[2]*t[0],L[3]*t[1]],Z={id:A++,score:Math.round(100*h)/100,class:M+1,label:Ne[M].label,box:J.map(q=>Math.trunc(q)),boxRaw:L};n.push(Z)}}});e.forEach(y=>M0.dispose(y));let r=n.map(y=>[y.boxRaw[1],y.boxRaw[0],y.boxRaw[3],y.boxRaw[2]]),s=n.map(y=>y.score),a=[];if(r&&r.length>0){let y=await M0.image.nonMaxSuppressionAsync(r,s,o.object.maxDetected,o.object.iouThreshold,o.object.minConfidence);a=await y.data(),M0.dispose(y)}return n=n.filter((y,c)=>a.includes(c)).sort((y,c)=>c.score-y.score),n}async function fo(e,t){let o=(t.object.skipTime||0)>g()-ir,A=co<(t.object.skipFrames||0);return t.skipAllowed&&o&&A&&Jt.length>0?(co++,Jt):(co=0,!T.kernels.includes("mod")||!T.kernels.includes("sparsetodense")?Jt:new Promise(async n=>{let r=[e.shape[2]||0,e.shape[1]||0],s=M0.image.resizeBilinear(e,[Kt,Kt],!1),a=M0.div(s,H.tf255),y=a.transpose([0,3,1,2]);M0.dispose(a),M0.dispose(s);let c;t.object.enabled&&(c=qe.execute(y)),ir=g(),M0.dispose(y);let i=await ss(c,r,t);Jt=i,n(i)}))}var v0=V(F());var xt=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],as=xt.length,yt=xt.reduce((e,t,o)=>(e[t]=o,e),{}),is=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],T1=is.map(([e,t])=>[yt[e],yt[t]]),xr=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];function cr(e){let t=e.reduce(({maxX:o,maxY:A,minX:n,minY:r},{position:{x:s,y:a}})=>({maxX:Math.max(o,s),maxY:Math.max(A,a),minX:Math.min(n,s),minY:Math.min(r,a)}),{maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY,minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY});return[t.minX,t.minY,t.maxX-t.minX,t.maxY-t.minY]}function dr(e,[t,o],[A,n]){let r=t/A,s=o/n,a=(c,i)=>({id:i,score:c.score,boxRaw:[c.box[0]/n,c.box[1]/A,c.box[2]/n,c.box[3]/A],box:[Math.trunc(c.box[0]*s),Math.trunc(c.box[1]*r),Math.trunc(c.box[2]*s),Math.trunc(c.box[3]*r)],keypoints:c.keypoints.map(({score:l,part:x,position:d})=>({score:l,part:x,position:[Math.trunc(d.x*s),Math.trunc(d.y*r)],positionRaw:[d.x/A,d.y/A]})),annotations:{}});return e.map((c,i)=>a(c,i))}var mo=class{constructor(t,o){R(this,"priorityQueue");R(this,"numberOfElements");R(this,"getElementValue");this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=o}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(Math.floor(t/2),t);)this.exchange(t,Math.floor(t/2)),t=Math.floor(t/2)}sink(t){for(;2*t<=this.numberOfElements;){let o=2*t;if(oo?o:e}function fr(e,t,o,A){let n=o-e,r=A-t;return n*n+r*r}function bo(e,t){return{x:e.x+t.x,y:e.y+t.y}}var X0,ys=["MobilenetV1/offset_2/BiasAdd","MobilenetV1/heatmap_2/BiasAdd","MobilenetV1/displacement_fwd_2/BiasAdd","MobilenetV1/displacement_bwd_2/BiasAdd"],Qt=1,Ue=16,xs=50**2;function mr(e,t,o,A,n,r,s=2){let a=h=>({y:r.get(h.y,h.x,e),x:r.get(h.y,h.x,r.shape[2]/2+e)}),y=(h,P,m)=>({y:ho(Math.round(h.y/Ue),0,P-1),x:ho(Math.round(h.x/Ue),0,m-1)}),[c,i]=A.shape,l=y(t.position,c,i),x=a(l),u=bo(t.position,x);for(let h=0;h[yt[x],yt[d]]),s=r.map(([,x])=>x),a=r.map(([x])=>x),y=t.shape[2],c=s.length,i=new Array(y),l=uo(e.part,Ue,o);i[e.part.id]={score:e.score,part:xt[e.part.id],position:l};for(let x=c-1;x>=0;--x){let d=s[x],u=a[x];i[d]&&!i[u]&&(i[u]=mr(x,i[d],u,t,o,n))}for(let x=0;xt){a=!1;break}if(!a)break}return a}function fs(e,t){let[o,A,n]=t.shape,r=new mo(o*A*n,({score:s})=>s);for(let s=0;s{var s;let r=(s=n[A])==null?void 0:s.position;return r?fr(o,t,r.y,r.x)<=xs:!1})}function ms(e,t){return t.reduce((A,{position:n,score:r},s)=>(pr(e,n,s)||(A+=r),A),0)/t.length}function ps(e,t,o,A,n,r){let s=[],a=fs(r,t);for(;s.lengthd.score>r);let l=ms(s,i),x=cr(i);l>r&&s.push({keypoints:i,box:x,score:Math.round(100*l)/100})}return s}async function go(e,t){let o=v0.tidy(()=>{if(!X0.inputs[0].shape)return[];let s=v0.image.resizeBilinear(e,[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]),a=v0.sub(v0.div(v0.cast(s,"float32"),127.5),1),c=X0.execute(a,ys).map(i=>v0.squeeze(i,[0]));return c[1]=v0.sigmoid(c[1]),c}),A=await Promise.all(o.map(s=>s.buffer()));for(let s of o)v0.dispose(s);let n=await ps(A[0],A[1],A[2],A[3],t.body.maxDetected,t.body.minConfidence);return X0.inputs[0].shape?dr(n,[e.shape[1],e.shape[2]],[X0.inputs[0].shape[2],X0.inputs[0].shape[1]]):[]}async function ur(e){return!X0||T.initial?X0=await G(e.body.modelPath):e.debug&&b("cached model:",X0.modelUrl),X0}var t0=V(F());var J0,Po=!1;async function Mo(e){return!J0||T.initial?J0=await G(e.segmentation.modelPath):e.debug&&b("cached model:",J0.modelUrl),J0}async function br(e,t,o){var f,M;if(Po)return{data:[],canvas:null,alpha:null};Po=!0,J0||await Mo(o);let A=await We(e,o),n=((f=A.tensor)==null?void 0:f.shape[2])||0,r=((M=A.tensor)==null?void 0:M.shape[1])||0;if(!A.tensor)return{data:[],canvas:null,alpha:null};let s={};s.resize=t0.image.resizeBilinear(A.tensor,[J0.inputs[0].shape?J0.inputs[0].shape[1]:0,J0.inputs[0].shape?J0.inputs[0].shape[2]:0],!1),t0.dispose(A.tensor),s.norm=t0.div(s.resize,H.tf255),s.res=J0.execute(s.norm),s.squeeze=t0.squeeze(s.res,0),s.squeeze.shape[2]===2?(s.softmax=t0.softmax(s.squeeze),[s.bg,s.fg]=t0.unstack(s.softmax,2),s.expand=t0.expandDims(s.fg,2),s.pad=t0.expandDims(s.expand,0),s.crop=t0.image.cropAndResize(s.pad,[[0,0,.5,.5]],[0],[n,r]),s.data=t0.squeeze(s.crop,0)):s.data=t0.image.resizeBilinear(s.squeeze,[r,n]);let a=Array.from(await s.data.data());if(T.node&&!T.Canvas&&typeof ImageData=="undefined")return o.debug&&b("canvas support missing"),Object.keys(s).forEach(h=>t0.dispose(s[h])),{data:a,canvas:null,alpha:null};let y=h0(n,r);t0.browser&&await t0.browser.toPixels(s.data,y);let c=y.getContext("2d");o.segmentation.blur&&o.segmentation.blur>0&&(c.filter=`blur(${o.segmentation.blur}px)`);let i=c.getImageData(0,0,n,r),l=h0(n,r),x=l.getContext("2d");A.canvas&&x.drawImage(A.canvas,0,0),x.globalCompositeOperation="darken",o.segmentation.blur&&o.segmentation.blur>0&&(x.filter=`blur(${o.segmentation.blur}px)`),x.drawImage(y,0,0),x.globalCompositeOperation="source-over",x.filter="none";let d=x.getImageData(0,0,n,r);for(let h=0;ht0.dispose(s[h])),Po=!1,{data:a,canvas:l,alpha:y}}var vo=class{constructor(){R(this,"ssrnetage",null);R(this,"gear",null);R(this,"blazeposedetect",null);R(this,"blazepose",null);R(this,"centernet",null);R(this,"efficientpose",null);R(this,"mobilefacenet",null);R(this,"emotion",null);R(this,"facedetect",null);R(this,"faceiris",null);R(this,"facemesh",null);R(this,"faceres",null);R(this,"ssrnetgender",null);R(this,"handpose",null);R(this,"handskeleton",null);R(this,"handtrack",null);R(this,"liveness",null);R(this,"movenet",null);R(this,"nanodet",null);R(this,"posenet",null);R(this,"segmentation",null);R(this,"antispoof",null)}};function To(e){for(let t of Object.keys(e.models))e.models[t]=null}async function Pr(e){var t,o,A,n,r,s,a,y,c,i,l,x,d,u,f,M,h,P,m,p,k,C,O,j,L,J,Z,q,x0,E;T.initial&&To(e),e.config.hand.enabled&&(!e.models.handpose&&((o=(t=e.config.hand.detector)==null?void 0:t.modelPath)==null?void 0:o.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config)),!e.models.handskeleton&&e.config.hand.landmarks&&((n=(A=e.config.hand.detector)==null?void 0:A.modelPath)==null?void 0:n.includes("handdetect"))&&([e.models.handpose,e.models.handskeleton]=await eo(e.config))),e.config.body.enabled&&!e.models.blazepose&&((s=(r=e.config.body)==null?void 0:r.modelPath)==null?void 0:s.includes("blazepose"))&&(e.models.blazepose=XA(e.config)),e.config.body.enabled&&!e.models.blazeposedetect&&e.config.body.detector&&e.config.body.detector.modelPath&&(e.models.blazeposedetect=ZA(e.config)),e.config.body.enabled&&!e.models.efficientpose&&((y=(a=e.config.body)==null?void 0:a.modelPath)==null?void 0:y.includes("efficientpose"))&&(e.models.efficientpose=KA(e.config)),e.config.body.enabled&&!e.models.movenet&&((i=(c=e.config.body)==null?void 0:c.modelPath)==null?void 0:i.includes("movenet"))&&(e.models.movenet=sr(e.config)),e.config.body.enabled&&!e.models.posenet&&((x=(l=e.config.body)==null?void 0:l.modelPath)==null?void 0:x.includes("posenet"))&&(e.models.posenet=ur(e.config)),e.config.face.enabled&&!e.models.facedetect&&(e.models.facedetect=OA(e.config)),e.config.face.enabled&&((d=e.config.face.antispoof)==null?void 0:d.enabled)&&!e.models.antispoof&&(e.models.antispoof=PA(e.config)),e.config.face.enabled&&((u=e.config.face.liveness)==null?void 0:u.enabled)&&!e.models.liveness&&(e.models.liveness=$n(e.config)),e.config.face.enabled&&((f=e.config.face.description)==null?void 0:f.enabled)&&!e.models.faceres&&(e.models.faceres=Pn(e.config)),e.config.face.enabled&&((M=e.config.face.emotion)==null?void 0:M.enabled)&&!e.models.emotion&&(e.models.emotion=en(e.config)),e.config.face.enabled&&((h=e.config.face.iris)==null?void 0:h.enabled)&&!e.models.faceiris&&(e.models.faceiris=cn(e.config)),e.config.face.enabled&&((P=e.config.face.mesh)==null?void 0:P.enabled)&&!e.models.facemesh&&(e.models.facemesh=pn(e.config)),e.config.face.enabled&&((m=e.config.face.gear)==null?void 0:m.enabled)&&!e.models.gear&&(e.models.gear=iA(e.config)),e.config.face.enabled&&((p=e.config.face.ssrnet)==null?void 0:p.enabled)&&!e.models.ssrnetage&&(e.models.ssrnetage=dA(e.config)),e.config.face.enabled&&((k=e.config.face.ssrnet)==null?void 0:k.enabled)&&!e.models.ssrnetgender&&(e.models.ssrnetgender=uA(e.config)),e.config.face.enabled&&((C=e.config.face.mobilefacenet)==null?void 0:C.enabled)&&!e.models.mobilefacenet&&(e.models.mobilefacenet=sn(e.config)),e.config.hand.enabled&&!e.models.handtrack&&((j=(O=e.config.hand.detector)==null?void 0:O.modelPath)==null?void 0:j.includes("handtrack"))&&(e.models.handtrack=Jn(e.config)),e.config.hand.enabled&&e.config.hand.landmarks&&!e.models.handskeleton&&((J=(L=e.config.hand.detector)==null?void 0:L.modelPath)==null?void 0:J.includes("handtrack"))&&(e.models.handskeleton=Yn(e.config)),e.config.object.enabled&&!e.models.centernet&&((q=(Z=e.config.object)==null?void 0:Z.modelPath)==null?void 0:q.includes("centernet"))&&(e.models.centernet=UA(e.config)),e.config.object.enabled&&!e.models.nanodet&&((E=(x0=e.config.object)==null?void 0:x0.modelPath)==null?void 0:E.includes("nanodet"))&&(e.models.nanodet=lr(e.config)),e.config.segmentation.enabled&&!e.models.segmentation&&(e.models.segmentation=Mo(e.config));for await(let C0 of Object.keys(e.models))e.models[C0]&&typeof e.models[C0]!="undefined"&&(e.models[C0]=await e.models[C0])}async function Mr(e){let t=["const","placeholder","noop","pad","squeeze","add","sub","mul","div"];for(let o of Object.keys(e.models)){let A=e.models[o];if(!A)continue;let n=[],r=A==null?void 0:A.executor;if(r&&r.graph.nodes)for(let a of Object.values(r.graph.nodes)){let y=a.op.toLowerCase();n.includes(y)||n.push(y)}else!r&&e.config.debug&&b("model signature not determined:",o);let s=[];for(let a of n)!t.includes(a)&&!e.env.kernels.includes(a)&&!e.env.kernels.includes(a.replace("_",""))&&!e.env.kernels.includes(a.replace("native",""))&&!e.env.kernels.includes(a.replace("v2",""))&&s.push(a);e.config.debug&&s.length>0&&b("model validation failed:",o,s)}}var $={name:"humangl",priority:999,canvas:null,gl:null,extensions:[],webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function us(){let e=$.gl;!e||($.extensions=e.getSupportedExtensions())}async function Tr(e){var t;if(e.config.backend==="humangl"&&($.name in s0.engine().registry&&(!$.gl||!$.gl.getParameter($.gl.VERSION))&&(b("error: humangl backend invalid context"),To(e)),!s0.findBackend($.name))){try{$.canvas=await h0(100,100)}catch(A){b("error: cannot create canvas:",A);return}try{if($.gl=(t=$.canvas)==null?void 0:t.getContext("webgl2",$.webGLattr),!$.gl.getParameter($.gl.VERSION).includes("2.0")){b("override: using fallback webgl backend as webgl 2.0 is not detected"),e.config.backend="webgl";return}$.canvas&&($.canvas.addEventListener("webglcontextlost",async n=>{throw b("error: humangl:",n.type),b("possible browser memory leak using webgl or conflict with multiple backend registrations"),e.emit("error"),new Error("backend error: webgl context lost")}),$.canvas.addEventListener("webglcontextrestored",n=>{b("error: humangl context restored:",n)}),$.canvas.addEventListener("webglcontextcreationerror",n=>{b("error: humangl context create:",n)}))}catch(A){b("error: cannot get WebGL context:",A);return}try{s0.setWebGLContext(2,$.gl)}catch(A){b("error: cannot set WebGL context:",A);return}try{let A=new s0.GPGPUContext($.gl);s0.registerBackend($.name,()=>new s0.MathBackendWebGL(A),$.priority)}catch(A){b("error: cannot register WebGL backend:",A);return}try{s0.getKernelsForBackend("webgl").forEach(n=>{let r={...n,backendName:$.name};s0.registerKernel(r)})}catch(A){b("error: cannot update WebGL backend registration:",A);return}let o=s0.backend().getGPGPUContext?s0.backend().getGPGPUContext().gl:null;if(o)b(`humangl webgl version:${o.getParameter(o.VERSION)} renderer:${o.getParameter(o.RENDERER)}`);else{b("error: no current gl context:",o,$.gl);return}try{s0.ENV.set("WEBGL_VERSION",2)}catch(A){b("error: cannot set WebGL backend flags:",A);return}us(),b("backend registered:",$.name)}}var S=V(F());function hs(){if(!T.kernels.includes("mod")){let e={kernelName:"Mod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.sub(t.inputs.a,S.mul(S.div(t.inputs.a,t.inputs.b),t.inputs.b)))};S.registerKernel(e),T.kernels.push("mod")}if(!T.kernels.includes("floormod")){let e={kernelName:"FloorMod",backendName:S.getBackend(),kernelFunc:t=>S.tidy(()=>S.floorDiv(t.inputs.a/t.inputs.b)*t.inputs.b+S.mod(t.inputs.a,t.inputs.b))};S.registerKernel(e),T.kernels.push("floormod")}}async function _t(e,t=!1){if(e.state="backend",t||T.initial||e.config.backend&&e.config.backend.length>0&&S.getBackend()!==e.config.backend){let o=g();if(e.config.backend&&e.config.backend.length>0){if(typeof window=="undefined"&&typeof WorkerGlobalScope!="undefined"&&e.config.debug&&e.config.debug&&b("running inside web worker"),T.browser&&e.config.backend==="tensorflow"&&(e.config.debug&&b("override: backend set to tensorflow while running in browser"),e.config.backend="humangl"),T.node&&(e.config.backend==="webgl"||e.config.backend==="humangl")&&(e.config.debug&&b(`override: backend set to ${e.config.backend} while running in nodejs`),e.config.backend="tensorflow"),T.browser&&e.config.backend==="webgpu")if(typeof navigator=="undefined"||typeof navigator.gpu=="undefined")b("override: backend set to webgpu but browser does not support webgpu"),e.config.backend="humangl";else{let n=await navigator.gpu.requestAdapter();e.config.debug&&b("enumerated webgpu adapter:",n)}e.config.backend==="humangl"&&await Tr(e);let A=Object.keys(S.engine().registryFactory);if(e.config.debug&&b("available backends:",A),A.includes(e.config.backend)||(b(`error: backend ${e.config.backend} not found in registry`),e.config.backend=T.node?"tensorflow":"webgl",e.config.debug&&b(`override: setting backend ${e.config.backend}`)),e.config.debug&&b("setting backend:",e.config.backend),e.config.backend==="wasm"){if(e.config.debug&&b("wasm path:",e.config.wasmPath),typeof(S==null?void 0:S.setWasmPaths)!="undefined")await S.setWasmPaths(e.config.wasmPath,e.config.wasmPlatformFetch);else throw new Error("backend error: attempting to use wasm backend but wasm path is not set");let n=await S.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await S.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");e.config.debug&&b(`wasm execution: ${n?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),e.config.debug&&!n&&b("warning: wasm simd support is not enabled")}try{await S.setBackend(e.config.backend),await S.ready(),yA()}catch(n){return b("error: cannot set backend:",e.config.backend,n),!1}}if(S.getBackend()==="humangl"&&(S.ENV.set("CHECK_COMPUTATION_FOR_ERRORS",!1),S.ENV.set("WEBGL_CPU_FORWARD",!0),S.ENV.set("WEBGL_USE_SHAPES_UNIFORMS",!0),S.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD",256),typeof e.config.deallocate!="undefined"&&e.config.deallocate&&(b("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",!0),S.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",0)),S.backend().getGPGPUContext)){let A=await S.backend().getGPGPUContext().gl;e.config.debug&&b(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}S.getBackend()==="webgpu",S.enableProdMode(),await S.ready(),e.performance.initBackend=Math.trunc(g()-o),e.config.backend=S.getBackend(),await T.updateBackend(),hs()}return!0}function Vt(e,t){for(let o of e){let A={kernelName:o,backendName:t.backend,kernelFunc:()=>{t.debug&&b("kernelFunc",o,t.backend)}};S.registerKernel(A)}T.kernels=S.getKernelsForBackend(S.getBackend()).map(o=>o.kernelName.toLowerCase())}var ae={color:"rgba(173, 216, 230, 0.6)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:18,lineWidth:4,pointSize:2,roundRect:8,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawGestures:!0,drawPolygons:!0,drawGaze:!0,fillPolygons:!1,useDepth:!0,useCurves:!1},Ro=0,ze=e=>{if(!e)b("draw error: invalid canvas");else if(!e.getContext)b("draw error: canvas context not defined");else{let t=e.getContext("2d");if(!t)b("draw error: cannot get canvas context");else return t}return null},Je=e=>Math.round(e*180/Math.PI);function wo(e,t,o,A,n){A=A||0,e.fillStyle=n.useDepth&&A?`rgba(${127.5+2*A}, ${127.5-2*A}, 255, 0.3)`:n.color,e.beginPath(),e.arc(t,o,n.pointSize,0,2*Math.PI),e.fill()}function ct(e,t,o,A,n,r){if(e.beginPath(),e.lineWidth=r.lineWidth,r.useCurves){let s=(t+t+A)/2,a=(o+o+n)/2;e.ellipse(s,a,A/2,n/2,0,0,2*Math.PI)}else e.moveTo(t+r.roundRect,o),e.lineTo(t+A-r.roundRect,o),e.quadraticCurveTo(t+A,o,t+A,o+r.roundRect),e.lineTo(t+A,o+n-r.roundRect),e.quadraticCurveTo(t+A,o+n,t+A-r.roundRect,o+n),e.lineTo(t+r.roundRect,o+n),e.quadraticCurveTo(t,o+n,t,o+n-r.roundRect),e.lineTo(t,o+r.roundRect),e.quadraticCurveTo(t,o,t+r.roundRect,o),e.closePath();e.stroke()}function kr(e,t,o){if(!(t.length<2)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let A of t){let n=A[2]||0;e.strokeStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.fillStyle=o.useDepth&&n!==0?`rgba(${127.5+2*n}, ${127.5-2*n}, 255, 0.3)`:o.color,e.lineTo(A[0],Math.round(A[1]))}e.stroke(),o.fillPolygons&&(e.closePath(),e.fill())}}function gs(e,t,o){if(!(t.length<2)){if(e.lineWidth=o.lineWidth,!o.useCurves||t.length<=2){kr(e,t,o);return}e.moveTo(t[0][0],t[0][1]);for(let A=0;A1&&y[1].length>0){let c=a[1]>0?`#${a[1]}`:"",i=`${a[0]} ${c}: ${y[1]}`;A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(i,8,2+r*A.lineHeight)),n.fillStyle=A.labelColor,n.fillText(i,6,0+r*A.lineHeight),r+=1}}}}async function Eo(e,t,o){var r,s,a,y,c;let A=c0(ae,o);if(!t||!e)return;let n=ze(e);if(!!n)for(let i of t){if(n.font=A.font,n.strokeStyle=A.color,n.fillStyle=A.color,A.drawBoxes&&ct(n,i.box[0],i.box[1],i.box[2],i.box[3],A),A.drawLabels){let l=[];if(l.push(`face: ${Math.trunc(100*i.score)}%`),i.genderScore&&l.push(`${i.gender||""} ${Math.trunc(100*i.genderScore)}%`),i.age&&l.push(`age: ${i.age||""}`),i.iris&&l.push(`distance: ${i.iris}`),i.real&&l.push(`real: ${Math.trunc(100*i.real)}%`),i.live&&l.push(`live: ${Math.trunc(100*i.live)}%`),i.emotion&&i.emotion.length>0){let x=i.emotion.map(d=>`${Math.trunc(100*d.score)}% ${d.emotion}`);x.length>3&&(x.length=3),l.push(x.join(" "))}i.rotation&&i.rotation.angle&&i.rotation.gaze&&(i.rotation.angle.roll&&l.push(`roll: ${Je(i.rotation.angle.roll)}\xB0 yaw:${Je(i.rotation.angle.yaw)}\xB0 pitch:${Je(i.rotation.angle.pitch)}\xB0`),i.rotation.gaze.bearing&&l.push(`gaze: ${Je(i.rotation.gaze.bearing)}\xB0`)),l.length===0&&l.push("face"),n.fillStyle=A.color;for(let x=l.length-1;x>=0;x--){let d=Math.max(i.box[0],0),u=x*A.lineHeight+i.box[1];A.shadowColor&&A.shadowColor!==""&&(n.fillStyle=A.shadowColor,n.fillText(l[x],d+5,u+16)),n.fillStyle=A.labelColor,n.fillText(l[x],d+4,u+15)}}if(n.lineWidth=2,i.mesh&&i.mesh.length>0){if(A.drawPoints)for(let l of i.mesh)wo(n,l[0],l[1],l[2],A);if(A.drawPolygons){if(i.mesh.length>450)for(let l=0;li.mesh[d]);kr(n,x,A)}if(i.annotations&&i.annotations.leftEyeIris&&i.annotations.leftEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.leftEyeIris[3][0]-i.annotations.leftEyeIris[1][0])/2,x=Math.abs(i.annotations.leftEyeIris[4][1]-i.annotations.leftEyeIris[2][1])/2;n.ellipse(i.annotations.leftEyeIris[0][0],i.annotations.leftEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(i.annotations&&i.annotations.rightEyeIris&&i.annotations.rightEyeIris[0]){n.strokeStyle=A.useDepth?"rgba(255, 200, 255, 0.3)":A.color,n.beginPath();let l=Math.abs(i.annotations.rightEyeIris[3][0]-i.annotations.rightEyeIris[1][0])/2,x=Math.abs(i.annotations.rightEyeIris[4][1]-i.annotations.rightEyeIris[2][1])/2;n.ellipse(i.annotations.rightEyeIris[0][0],i.annotations.rightEyeIris[0][1],l,x,0,0,2*Math.PI),n.stroke(),A.fillPolygons&&(n.fillStyle=A.useDepth?"rgba(255, 255, 200, 0.3)":A.color,n.fill())}if(A.drawGaze&&((r=i.rotation)==null?void 0:r.angle)&&typeof Path2D!="undefined"){n.strokeStyle="pink";let l=i.box[0]+i.box[2]/2-i.box[3]*Je(i.rotation.angle.yaw)/90,x=i.box[1]+i.box[3]/2+i.box[2]*Je(i.rotation.angle.pitch)/90,d=new Path2D(` M ${i.box[0]+i.box[2]/2} ${i.box[1]} C ${l} ${i.box[1]}, diff --git a/src/config.ts b/src/config.ts index 9b938a1e..0dd778b2 100644 --- a/src/config.ts +++ b/src/config.ts @@ -221,6 +221,12 @@ export interface Config { */ wasmPath: string, + /** Force WASM loader to use platform fetch + * + * default: auto-detects to link to CDN `jsdelivr` when running in browser + */ + wasmPlatformFetch: false, + /** Print debug statements to console * * default: `true` @@ -295,6 +301,7 @@ const config: Config = { modelBasePath: '', cacheModels: true, wasmPath: '', + wasmPlatformFetch: false, debug: true, async: true, warmup: 'full', diff --git a/src/tfjs/backend.ts b/src/tfjs/backend.ts index 57dede6a..a55dfc3b 100644 --- a/src/tfjs/backend.ts +++ b/src/tfjs/backend.ts @@ -77,7 +77,7 @@ export async function check(instance: Human, force = false) { // customize wasm if (instance.config.backend === 'wasm') { if (instance.config.debug) log('wasm path:', instance.config.wasmPath); - if (typeof tf?.setWasmPaths !== 'undefined') await tf.setWasmPaths(instance.config.wasmPath); + if (typeof tf?.setWasmPaths !== 'undefined') await tf.setWasmPaths(instance.config.wasmPath, instance.config.wasmPlatformFetch); else throw new Error('backend error: attempting to use wasm backend but wasm path is not set'); const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT'); const mt = await tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT'); diff --git a/typedoc/assets/search.js b/typedoc/assets/search.js index be743a13..4eff4c5c 100644 --- a/typedoc/assets/search.js +++ b/typedoc/assets/search.js @@ -1 +1 @@ -window.searchData = JSON.parse("{\"kinds\":{\"4\":\"Namespace\",\"8\":\"Enumeration\",\"16\":\"Enumeration member\",\"32\":\"Variable\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"4194304\":\"Type alias\",\"16777216\":\"Reference\"},\"rows\":[{\"id\":0,\"kind\":128,\"name\":\"Human\",\"url\":\"classes/Human.html\",\"classes\":\"tsd-kind-class\"},{\"id\":1,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Human.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":2,\"kind\":1024,\"name\":\"version\",\"url\":\"classes/Human.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":3,\"kind\":1024,\"name\":\"config\",\"url\":\"classes/Human.html#config\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":4,\"kind\":1024,\"name\":\"result\",\"url\":\"classes/Human.html#result\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":5,\"kind\":1024,\"name\":\"state\",\"url\":\"classes/Human.html#state\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":6,\"kind\":1024,\"name\":\"process\",\"url\":\"classes/Human.html#process\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":7,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-11\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":8,\"kind\":1024,\"name\":\"tensor\",\"url\":\"classes/Human.html#__type-11.tensor\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":9,\"kind\":1024,\"name\":\"canvas\",\"url\":\"classes/Human.html#__type-11.canvas-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":10,\"kind\":1024,\"name\":\"tf\",\"url\":\"classes/Human.html#tf\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":11,\"kind\":1024,\"name\":\"env\",\"url\":\"classes/Human.html#env\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":12,\"kind\":1024,\"name\":\"draw\",\"url\":\"classes/Human.html#draw\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":13,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":14,\"kind\":1024,\"name\":\"canvas\",\"url\":\"classes/Human.html#__type-1.canvas\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":15,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-4\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":16,\"kind\":1024,\"name\":\"face\",\"url\":\"classes/Human.html#__type-1.face\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":17,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-5\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":18,\"kind\":1024,\"name\":\"body\",\"url\":\"classes/Human.html#__type-1.body\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":19,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":20,\"kind\":1024,\"name\":\"hand\",\"url\":\"classes/Human.html#__type-1.hand\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":21,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-7\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":22,\"kind\":1024,\"name\":\"gesture\",\"url\":\"classes/Human.html#__type-1.gesture\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":23,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-6\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":24,\"kind\":1024,\"name\":\"object\",\"url\":\"classes/Human.html#__type-1.object\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":25,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-8\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":26,\"kind\":1024,\"name\":\"person\",\"url\":\"classes/Human.html#__type-1.person\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":27,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-9\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":28,\"kind\":1024,\"name\":\"all\",\"url\":\"classes/Human.html#__type-1.all\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":29,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":30,\"kind\":1024,\"name\":\"options\",\"url\":\"classes/Human.html#__type-1.options\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":31,\"kind\":1024,\"name\":\"events\",\"url\":\"classes/Human.html#events\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":32,\"kind\":1024,\"name\":\"faceTriangulation\",\"url\":\"classes/Human.html#faceTriangulation\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":33,\"kind\":1024,\"name\":\"faceUVMap\",\"url\":\"classes/Human.html#faceUVMap\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":34,\"kind\":1024,\"name\":\"performance\",\"url\":\"classes/Human.html#performance\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":35,\"kind\":1024,\"name\":\"gl\",\"url\":\"classes/Human.html#gl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":36,\"kind\":2048,\"name\":\"analyze\",\"url\":\"classes/Human.html#analyze\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":37,\"kind\":2048,\"name\":\"reset\",\"url\":\"classes/Human.html#reset\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":38,\"kind\":2048,\"name\":\"validate\",\"url\":\"classes/Human.html#validate\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":39,\"kind\":1024,\"name\":\"similarity\",\"url\":\"classes/Human.html#similarity\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":40,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-12\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":41,\"kind\":1024,\"name\":\"distance\",\"url\":\"classes/Human.html#distance\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":42,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":43,\"kind\":1024,\"name\":\"match\",\"url\":\"classes/Human.html#match\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":44,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-10\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":45,\"kind\":2048,\"name\":\"now\",\"url\":\"classes/Human.html#now\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":46,\"kind\":2048,\"name\":\"image\",\"url\":\"classes/Human.html#image\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":47,\"kind\":2048,\"name\":\"segmentation\",\"url\":\"classes/Human.html#segmentation\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":48,\"kind\":2048,\"name\":\"enhance\",\"url\":\"classes/Human.html#enhance\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":49,\"kind\":2048,\"name\":\"compare\",\"url\":\"classes/Human.html#compare\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":50,\"kind\":2048,\"name\":\"init\",\"url\":\"classes/Human.html#init\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":51,\"kind\":2048,\"name\":\"load\",\"url\":\"classes/Human.html#load\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":52,\"kind\":2048,\"name\":\"emit\",\"url\":\"classes/Human.html#emit\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":53,\"kind\":2048,\"name\":\"next\",\"url\":\"classes/Human.html#next\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":54,\"kind\":2048,\"name\":\"warmup\",\"url\":\"classes/Human.html#warmup\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":55,\"kind\":2048,\"name\":\"profile\",\"url\":\"classes/Human.html#profile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":56,\"kind\":2048,\"name\":\"detect\",\"url\":\"classes/Human.html#detect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":57,\"kind\":16777216,\"name\":\"default\",\"url\":\"index.html#default\",\"classes\":\"tsd-kind-reference\"},{\"id\":58,\"kind\":128,\"name\":\"Tensor\",\"url\":\"classes/Tensor.html\",\"classes\":\"tsd-kind-class tsd-has-type-parameter\"},{\"id\":59,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Tensor.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":60,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Tensor.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":61,\"kind\":1024,\"name\":\"dataId\",\"url\":\"classes/Tensor.html#dataId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":62,\"kind\":1024,\"name\":\"shape\",\"url\":\"classes/Tensor.html#shape\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":63,\"kind\":1024,\"name\":\"size\",\"url\":\"classes/Tensor.html#size\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":64,\"kind\":1024,\"name\":\"dtype\",\"url\":\"classes/Tensor.html#dtype\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":65,\"kind\":1024,\"name\":\"rankType\",\"url\":\"classes/Tensor.html#rankType\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":66,\"kind\":1024,\"name\":\"kept\",\"url\":\"classes/Tensor.html#kept\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":67,\"kind\":1024,\"name\":\"scopeId\",\"url\":\"classes/Tensor.html#scopeId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":68,\"kind\":1024,\"name\":\"strides\",\"url\":\"classes/Tensor.html#strides\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":69,\"kind\":1024,\"name\":\"rank\",\"url\":\"classes/Tensor.html#rank\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":70,\"kind\":2048,\"name\":\"buffer\",\"url\":\"classes/Tensor.html#buffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":71,\"kind\":2048,\"name\":\"bufferSync\",\"url\":\"classes/Tensor.html#bufferSync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":72,\"kind\":2048,\"name\":\"array\",\"url\":\"classes/Tensor.html#array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":73,\"kind\":2048,\"name\":\"arraySync\",\"url\":\"classes/Tensor.html#arraySync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":74,\"kind\":2048,\"name\":\"data\",\"url\":\"classes/Tensor.html#data\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":75,\"kind\":2048,\"name\":\"dataToGPU\",\"url\":\"classes/Tensor.html#dataToGPU\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":76,\"kind\":2048,\"name\":\"dataSync\",\"url\":\"classes/Tensor.html#dataSync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":77,\"kind\":2048,\"name\":\"bytes\",\"url\":\"classes/Tensor.html#bytes\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":78,\"kind\":2048,\"name\":\"dispose\",\"url\":\"classes/Tensor.html#dispose\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":79,\"kind\":1024,\"name\":\"isDisposed\",\"url\":\"classes/Tensor.html#isDisposed\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":80,\"kind\":2048,\"name\":\"throwIfDisposed\",\"url\":\"classes/Tensor.html#throwIfDisposed\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":81,\"kind\":2048,\"name\":\"print\",\"url\":\"classes/Tensor.html#print\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":82,\"kind\":2048,\"name\":\"clone\",\"url\":\"classes/Tensor.html#clone\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":83,\"kind\":2048,\"name\":\"toString\",\"url\":\"classes/Tensor.html#toString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":84,\"kind\":2048,\"name\":\"variable\",\"url\":\"classes/Tensor.html#variable\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":85,\"kind\":4,\"name\":\"Tensor\",\"url\":\"modules/Tensor.html\",\"classes\":\"tsd-kind-namespace\"},{\"id\":86,\"kind\":4194304,\"name\":\"TensorLike\",\"url\":\"index.html#TensorLike\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":87,\"kind\":128,\"name\":\"GraphModel\",\"url\":\"classes/GraphModel.html\",\"classes\":\"tsd-kind-class\"},{\"id\":88,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/GraphModel.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":89,\"kind\":1024,\"name\":\"modelVersion\",\"url\":\"classes/GraphModel.html#modelVersion\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":90,\"kind\":1024,\"name\":\"inputNodes\",\"url\":\"classes/GraphModel.html#inputNodes\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":91,\"kind\":1024,\"name\":\"outputNodes\",\"url\":\"classes/GraphModel.html#outputNodes\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":92,\"kind\":1024,\"name\":\"inputs\",\"url\":\"classes/GraphModel.html#inputs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":93,\"kind\":1024,\"name\":\"outputs\",\"url\":\"classes/GraphModel.html#outputs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":94,\"kind\":1024,\"name\":\"weights\",\"url\":\"classes/GraphModel.html#weights\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":95,\"kind\":1024,\"name\":\"metadata\",\"url\":\"classes/GraphModel.html#metadata\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":96,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/GraphModel.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":97,\"kind\":1024,\"name\":\"modelSignature\",\"url\":\"classes/GraphModel.html#modelSignature\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":98,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/GraphModel.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":99,\"kind\":2048,\"name\":\"load\",\"url\":\"classes/GraphModel.html#load\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":100,\"kind\":2048,\"name\":\"loadSync\",\"url\":\"classes/GraphModel.html#loadSync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":101,\"kind\":2048,\"name\":\"save\",\"url\":\"classes/GraphModel.html#save\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":102,\"kind\":2048,\"name\":\"predict\",\"url\":\"classes/GraphModel.html#predict\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":103,\"kind\":2048,\"name\":\"execute\",\"url\":\"classes/GraphModel.html#execute\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":104,\"kind\":2048,\"name\":\"executeAsync\",\"url\":\"classes/GraphModel.html#executeAsync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":105,\"kind\":2048,\"name\":\"getIntermediateTensors\",\"url\":\"classes/GraphModel.html#getIntermediateTensors\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":106,\"kind\":2048,\"name\":\"disposeIntermediateTensors\",\"url\":\"classes/GraphModel.html#disposeIntermediateTensors\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":107,\"kind\":2048,\"name\":\"dispose\",\"url\":\"classes/GraphModel.html#dispose\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":108,\"kind\":8,\"name\":\"Rank\",\"url\":\"enums/Rank.html\",\"classes\":\"tsd-kind-enum\"},{\"id\":109,\"kind\":16,\"name\":\"R0\",\"url\":\"enums/Rank.html#R0\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":110,\"kind\":16,\"name\":\"R1\",\"url\":\"enums/Rank.html#R1\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":111,\"kind\":16,\"name\":\"R2\",\"url\":\"enums/Rank.html#R2\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":112,\"kind\":16,\"name\":\"R3\",\"url\":\"enums/Rank.html#R3\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":113,\"kind\":16,\"name\":\"R4\",\"url\":\"enums/Rank.html#R4\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":114,\"kind\":16,\"name\":\"R5\",\"url\":\"enums/Rank.html#R5\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":115,\"kind\":16,\"name\":\"R6\",\"url\":\"enums/Rank.html#R6\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":116,\"kind\":4194304,\"name\":\"DrawOptions\",\"url\":\"index.html#DrawOptions\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":117,\"kind\":65536,\"name\":\"__type\",\"url\":\"index.html#DrawOptions.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"DrawOptions\"},{\"id\":118,\"kind\":1024,\"name\":\"color\",\"url\":\"index.html#DrawOptions.__type.color\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":119,\"kind\":1024,\"name\":\"labelColor\",\"url\":\"index.html#DrawOptions.__type.labelColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":120,\"kind\":1024,\"name\":\"shadowColor\",\"url\":\"index.html#DrawOptions.__type.shadowColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":121,\"kind\":1024,\"name\":\"font\",\"url\":\"index.html#DrawOptions.__type.font\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":122,\"kind\":1024,\"name\":\"lineHeight\",\"url\":\"index.html#DrawOptions.__type.lineHeight\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":123,\"kind\":1024,\"name\":\"lineWidth\",\"url\":\"index.html#DrawOptions.__type.lineWidth\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":124,\"kind\":1024,\"name\":\"pointSize\",\"url\":\"index.html#DrawOptions.__type.pointSize\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":125,\"kind\":1024,\"name\":\"roundRect\",\"url\":\"index.html#DrawOptions.__type.roundRect\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":126,\"kind\":1024,\"name\":\"drawPoints\",\"url\":\"index.html#DrawOptions.__type.drawPoints\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":127,\"kind\":1024,\"name\":\"drawLabels\",\"url\":\"index.html#DrawOptions.__type.drawLabels\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":128,\"kind\":1024,\"name\":\"drawGestures\",\"url\":\"index.html#DrawOptions.__type.drawGestures\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":129,\"kind\":1024,\"name\":\"drawBoxes\",\"url\":\"index.html#DrawOptions.__type.drawBoxes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":130,\"kind\":1024,\"name\":\"drawPolygons\",\"url\":\"index.html#DrawOptions.__type.drawPolygons\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":131,\"kind\":1024,\"name\":\"drawGaze\",\"url\":\"index.html#DrawOptions.__type.drawGaze\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":132,\"kind\":1024,\"name\":\"fillPolygons\",\"url\":\"index.html#DrawOptions.__type.fillPolygons\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":133,\"kind\":1024,\"name\":\"useDepth\",\"url\":\"index.html#DrawOptions.__type.useDepth\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":134,\"kind\":1024,\"name\":\"useCurves\",\"url\":\"index.html#DrawOptions.__type.useCurves\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":135,\"kind\":4194304,\"name\":\"Descriptor\",\"url\":\"index.html#Descriptor\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":136,\"kind\":4194304,\"name\":\"Box\",\"url\":\"index.html#Box\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":137,\"kind\":4194304,\"name\":\"Point\",\"url\":\"index.html#Point\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":138,\"kind\":128,\"name\":\"Models\",\"url\":\"classes/Models.html\",\"classes\":\"tsd-kind-class\"},{\"id\":139,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Models.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":140,\"kind\":1024,\"name\":\"ssrnetage\",\"url\":\"classes/Models.html#ssrnetage\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":141,\"kind\":1024,\"name\":\"gear\",\"url\":\"classes/Models.html#gear\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":142,\"kind\":1024,\"name\":\"blazeposedetect\",\"url\":\"classes/Models.html#blazeposedetect\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":143,\"kind\":1024,\"name\":\"blazepose\",\"url\":\"classes/Models.html#blazepose\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":144,\"kind\":1024,\"name\":\"centernet\",\"url\":\"classes/Models.html#centernet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":145,\"kind\":1024,\"name\":\"efficientpose\",\"url\":\"classes/Models.html#efficientpose\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":146,\"kind\":1024,\"name\":\"mobilefacenet\",\"url\":\"classes/Models.html#mobilefacenet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":147,\"kind\":1024,\"name\":\"emotion\",\"url\":\"classes/Models.html#emotion\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":148,\"kind\":1024,\"name\":\"facedetect\",\"url\":\"classes/Models.html#facedetect\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":149,\"kind\":1024,\"name\":\"faceiris\",\"url\":\"classes/Models.html#faceiris\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":150,\"kind\":1024,\"name\":\"facemesh\",\"url\":\"classes/Models.html#facemesh\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":151,\"kind\":1024,\"name\":\"faceres\",\"url\":\"classes/Models.html#faceres\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":152,\"kind\":1024,\"name\":\"ssrnetgender\",\"url\":\"classes/Models.html#ssrnetgender\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":153,\"kind\":1024,\"name\":\"handpose\",\"url\":\"classes/Models.html#handpose\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":154,\"kind\":1024,\"name\":\"handskeleton\",\"url\":\"classes/Models.html#handskeleton\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":155,\"kind\":1024,\"name\":\"handtrack\",\"url\":\"classes/Models.html#handtrack\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":156,\"kind\":1024,\"name\":\"liveness\",\"url\":\"classes/Models.html#liveness\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":157,\"kind\":1024,\"name\":\"movenet\",\"url\":\"classes/Models.html#movenet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":158,\"kind\":1024,\"name\":\"nanodet\",\"url\":\"classes/Models.html#nanodet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":159,\"kind\":1024,\"name\":\"posenet\",\"url\":\"classes/Models.html#posenet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":160,\"kind\":1024,\"name\":\"segmentation\",\"url\":\"classes/Models.html#segmentation\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":161,\"kind\":1024,\"name\":\"antispoof\",\"url\":\"classes/Models.html#antispoof\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":162,\"kind\":128,\"name\":\"Env\",\"url\":\"classes/Env.html\",\"classes\":\"tsd-kind-class\"},{\"id\":163,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Env.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":164,\"kind\":1024,\"name\":\"browser\",\"url\":\"classes/Env.html#browser\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":165,\"kind\":1024,\"name\":\"node\",\"url\":\"classes/Env.html#node\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":166,\"kind\":1024,\"name\":\"worker\",\"url\":\"classes/Env.html#worker\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":167,\"kind\":1024,\"name\":\"platform\",\"url\":\"classes/Env.html#platform\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":168,\"kind\":1024,\"name\":\"agent\",\"url\":\"classes/Env.html#agent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":169,\"kind\":1024,\"name\":\"backends\",\"url\":\"classes/Env.html#backends\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":170,\"kind\":1024,\"name\":\"initial\",\"url\":\"classes/Env.html#initial\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":171,\"kind\":1024,\"name\":\"filter\",\"url\":\"classes/Env.html#filter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":172,\"kind\":1024,\"name\":\"tfjs\",\"url\":\"classes/Env.html#tfjs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":173,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":174,\"kind\":1024,\"name\":\"version\",\"url\":\"classes/Env.html#__type-1.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":175,\"kind\":1024,\"name\":\"offscreen\",\"url\":\"classes/Env.html#offscreen\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":176,\"kind\":1024,\"name\":\"perfadd\",\"url\":\"classes/Env.html#perfadd\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":177,\"kind\":1024,\"name\":\"wasm\",\"url\":\"classes/Env.html#wasm\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":178,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":179,\"kind\":1024,\"name\":\"supported\",\"url\":\"classes/Env.html#__type-2.supported\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":180,\"kind\":1024,\"name\":\"backend\",\"url\":\"classes/Env.html#__type-2.backend\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":181,\"kind\":1024,\"name\":\"simd\",\"url\":\"classes/Env.html#__type-2.simd\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":182,\"kind\":1024,\"name\":\"multithread\",\"url\":\"classes/Env.html#__type-2.multithread\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":183,\"kind\":1024,\"name\":\"webgl\",\"url\":\"classes/Env.html#webgl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":184,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":185,\"kind\":1024,\"name\":\"supported\",\"url\":\"classes/Env.html#__type-3.supported-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":186,\"kind\":1024,\"name\":\"backend\",\"url\":\"classes/Env.html#__type-3.backend-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":187,\"kind\":1024,\"name\":\"version\",\"url\":\"classes/Env.html#__type-3.version-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":188,\"kind\":1024,\"name\":\"renderer\",\"url\":\"classes/Env.html#__type-3.renderer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":189,\"kind\":1024,\"name\":\"webgpu\",\"url\":\"classes/Env.html#webgpu\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":190,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-4\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":191,\"kind\":1024,\"name\":\"supported\",\"url\":\"classes/Env.html#__type-4.supported-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":192,\"kind\":1024,\"name\":\"backend\",\"url\":\"classes/Env.html#__type-4.backend-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":193,\"kind\":1024,\"name\":\"adapter\",\"url\":\"classes/Env.html#__type-4.adapter\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":194,\"kind\":1024,\"name\":\"cpu\",\"url\":\"classes/Env.html#cpu\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":195,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":196,\"kind\":1024,\"name\":\"model\",\"url\":\"classes/Env.html#__type.model\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":197,\"kind\":1024,\"name\":\"flags\",\"url\":\"classes/Env.html#__type.flags\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":198,\"kind\":1024,\"name\":\"kernels\",\"url\":\"classes/Env.html#kernels\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":199,\"kind\":1024,\"name\":\"Canvas\",\"url\":\"classes/Env.html#Canvas\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":200,\"kind\":1024,\"name\":\"Image\",\"url\":\"classes/Env.html#Image\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":201,\"kind\":1024,\"name\":\"ImageData\",\"url\":\"classes/Env.html#ImageData\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":202,\"kind\":2048,\"name\":\"updateBackend\",\"url\":\"classes/Env.html#updateBackend\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":203,\"kind\":2048,\"name\":\"updateCPU\",\"url\":\"classes/Env.html#updateCPU\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":204,\"kind\":4194304,\"name\":\"FaceGesture\",\"url\":\"index.html#FaceGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":205,\"kind\":4194304,\"name\":\"BodyGesture\",\"url\":\"index.html#BodyGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":206,\"kind\":4194304,\"name\":\"HandGesture\",\"url\":\"index.html#HandGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":207,\"kind\":4194304,\"name\":\"IrisGesture\",\"url\":\"index.html#IrisGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":208,\"kind\":4194304,\"name\":\"Emotion\",\"url\":\"index.html#Emotion\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":209,\"kind\":4194304,\"name\":\"Finger\",\"url\":\"index.html#Finger\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":210,\"kind\":4194304,\"name\":\"FingerCurl\",\"url\":\"index.html#FingerCurl\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":211,\"kind\":4194304,\"name\":\"FingerDirection\",\"url\":\"index.html#FingerDirection\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":212,\"kind\":4194304,\"name\":\"HandType\",\"url\":\"index.html#HandType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":213,\"kind\":4194304,\"name\":\"Gender\",\"url\":\"index.html#Gender\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":214,\"kind\":4194304,\"name\":\"Race\",\"url\":\"index.html#Race\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":215,\"kind\":4194304,\"name\":\"FaceLandmark\",\"url\":\"index.html#FaceLandmark\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":216,\"kind\":4194304,\"name\":\"BodyLandmark\",\"url\":\"index.html#BodyLandmark\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":217,\"kind\":4194304,\"name\":\"BodyAnnotation\",\"url\":\"index.html#BodyAnnotation\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":218,\"kind\":4194304,\"name\":\"ObjectType\",\"url\":\"index.html#ObjectType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":219,\"kind\":32,\"name\":\"env\",\"url\":\"index.html#env\",\"classes\":\"tsd-kind-variable\"},{\"id\":220,\"kind\":4194304,\"name\":\"Events\",\"url\":\"index.html#Events\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":221,\"kind\":4194304,\"name\":\"AnyCanvas\",\"url\":\"index.html#AnyCanvas\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":222,\"kind\":4194304,\"name\":\"AnyImage\",\"url\":\"index.html#AnyImage\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":223,\"kind\":4194304,\"name\":\"AnyVideo\",\"url\":\"index.html#AnyVideo\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":224,\"kind\":4194304,\"name\":\"ImageObjects\",\"url\":\"index.html#ImageObjects\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":225,\"kind\":4194304,\"name\":\"ExternalCanvas\",\"url\":\"index.html#ExternalCanvas\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":226,\"kind\":4194304,\"name\":\"Input\",\"url\":\"index.html#Input\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":227,\"kind\":256,\"name\":\"GenericConfig\",\"url\":\"interfaces/GenericConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":228,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/GenericConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":229,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/GenericConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":230,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/GenericConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":231,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/GenericConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":232,\"kind\":256,\"name\":\"FaceDetectorConfig\",\"url\":\"interfaces/FaceDetectorConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":233,\"kind\":1024,\"name\":\"rotation\",\"url\":\"interfaces/FaceDetectorConfig.html#rotation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":234,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/FaceDetectorConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":235,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/FaceDetectorConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":236,\"kind\":1024,\"name\":\"iouThreshold\",\"url\":\"interfaces/FaceDetectorConfig.html#iouThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":237,\"kind\":1024,\"name\":\"mask\",\"url\":\"interfaces/FaceDetectorConfig.html#mask\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":238,\"kind\":1024,\"name\":\"return\",\"url\":\"interfaces/FaceDetectorConfig.html#return\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":239,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceDetectorConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":240,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceDetectorConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":241,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceDetectorConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":242,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceDetectorConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":243,\"kind\":256,\"name\":\"FaceMeshConfig\",\"url\":\"interfaces/FaceMeshConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":244,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceMeshConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":245,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceMeshConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":246,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceMeshConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":247,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceMeshConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":248,\"kind\":256,\"name\":\"FaceIrisConfig\",\"url\":\"interfaces/FaceIrisConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":249,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceIrisConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":250,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceIrisConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":251,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceIrisConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":252,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceIrisConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":253,\"kind\":256,\"name\":\"FaceDescriptionConfig\",\"url\":\"interfaces/FaceDescriptionConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":254,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/FaceDescriptionConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":255,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceDescriptionConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":256,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceDescriptionConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":257,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceDescriptionConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":258,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceDescriptionConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":259,\"kind\":256,\"name\":\"FaceEmotionConfig\",\"url\":\"interfaces/FaceEmotionConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":260,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/FaceEmotionConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceEmotionConfig\"},{\"id\":261,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceEmotionConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":262,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceEmotionConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":263,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceEmotionConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":264,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceEmotionConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":265,\"kind\":256,\"name\":\"FaceAntiSpoofConfig\",\"url\":\"interfaces/FaceAntiSpoofConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":266,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":267,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":268,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":269,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":270,\"kind\":256,\"name\":\"FaceLivenessConfig\",\"url\":\"interfaces/FaceLivenessConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":271,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceLivenessConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":272,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceLivenessConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":273,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceLivenessConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":274,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceLivenessConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":275,\"kind\":256,\"name\":\"FaceConfig\",\"url\":\"interfaces/FaceConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":276,\"kind\":1024,\"name\":\"detector\",\"url\":\"interfaces/FaceConfig.html#detector\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":277,\"kind\":1024,\"name\":\"mesh\",\"url\":\"interfaces/FaceConfig.html#mesh\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":278,\"kind\":1024,\"name\":\"iris\",\"url\":\"interfaces/FaceConfig.html#iris\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":279,\"kind\":1024,\"name\":\"description\",\"url\":\"interfaces/FaceConfig.html#description\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":280,\"kind\":1024,\"name\":\"emotion\",\"url\":\"interfaces/FaceConfig.html#emotion\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":281,\"kind\":1024,\"name\":\"antispoof\",\"url\":\"interfaces/FaceConfig.html#antispoof\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":282,\"kind\":1024,\"name\":\"liveness\",\"url\":\"interfaces/FaceConfig.html#liveness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":283,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":284,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":285,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":286,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":287,\"kind\":256,\"name\":\"BodyConfig\",\"url\":\"interfaces/BodyConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":288,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/BodyConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyConfig\"},{\"id\":289,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/BodyConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyConfig\"},{\"id\":290,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/BodyConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":291,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/BodyConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":292,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/BodyConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":293,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/BodyConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":294,\"kind\":256,\"name\":\"HandConfig\",\"url\":\"interfaces/HandConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":295,\"kind\":1024,\"name\":\"rotation\",\"url\":\"interfaces/HandConfig.html#rotation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":296,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/HandConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":297,\"kind\":1024,\"name\":\"iouThreshold\",\"url\":\"interfaces/HandConfig.html#iouThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":298,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/HandConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":299,\"kind\":1024,\"name\":\"landmarks\",\"url\":\"interfaces/HandConfig.html#landmarks\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":300,\"kind\":1024,\"name\":\"detector\",\"url\":\"interfaces/HandConfig.html#detector\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":301,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/HandConfig.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":302,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/HandConfig.html#__type.modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"HandConfig.__type\"},{\"id\":303,\"kind\":1024,\"name\":\"skeleton\",\"url\":\"interfaces/HandConfig.html#skeleton\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":304,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/HandConfig.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":305,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/HandConfig.html#__type-1.modelPath-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"HandConfig.__type\"},{\"id\":306,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/HandConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":307,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/HandConfig.html#modelPath-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":308,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/HandConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":309,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/HandConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":310,\"kind\":256,\"name\":\"ObjectConfig\",\"url\":\"interfaces/ObjectConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":311,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/ObjectConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectConfig\"},{\"id\":312,\"kind\":1024,\"name\":\"iouThreshold\",\"url\":\"interfaces/ObjectConfig.html#iouThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectConfig\"},{\"id\":313,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/ObjectConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectConfig\"},{\"id\":314,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/ObjectConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":315,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/ObjectConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":316,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/ObjectConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":317,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/ObjectConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":318,\"kind\":256,\"name\":\"SegmentationConfig\",\"url\":\"interfaces/SegmentationConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":319,\"kind\":1024,\"name\":\"blur\",\"url\":\"interfaces/SegmentationConfig.html#blur\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"SegmentationConfig\"},{\"id\":320,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/SegmentationConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":321,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/SegmentationConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":322,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/SegmentationConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":323,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/SegmentationConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":324,\"kind\":256,\"name\":\"FilterConfig\",\"url\":\"interfaces/FilterConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":325,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FilterConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":326,\"kind\":1024,\"name\":\"equalization\",\"url\":\"interfaces/FilterConfig.html#equalization\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":327,\"kind\":1024,\"name\":\"width\",\"url\":\"interfaces/FilterConfig.html#width\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":328,\"kind\":1024,\"name\":\"height\",\"url\":\"interfaces/FilterConfig.html#height\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":329,\"kind\":1024,\"name\":\"return\",\"url\":\"interfaces/FilterConfig.html#return\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":330,\"kind\":1024,\"name\":\"flip\",\"url\":\"interfaces/FilterConfig.html#flip\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":331,\"kind\":1024,\"name\":\"brightness\",\"url\":\"interfaces/FilterConfig.html#brightness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":332,\"kind\":1024,\"name\":\"contrast\",\"url\":\"interfaces/FilterConfig.html#contrast\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":333,\"kind\":1024,\"name\":\"sharpness\",\"url\":\"interfaces/FilterConfig.html#sharpness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":334,\"kind\":1024,\"name\":\"blur\",\"url\":\"interfaces/FilterConfig.html#blur\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":335,\"kind\":1024,\"name\":\"saturation\",\"url\":\"interfaces/FilterConfig.html#saturation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":336,\"kind\":1024,\"name\":\"hue\",\"url\":\"interfaces/FilterConfig.html#hue\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":337,\"kind\":1024,\"name\":\"negative\",\"url\":\"interfaces/FilterConfig.html#negative\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":338,\"kind\":1024,\"name\":\"sepia\",\"url\":\"interfaces/FilterConfig.html#sepia\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":339,\"kind\":1024,\"name\":\"vintage\",\"url\":\"interfaces/FilterConfig.html#vintage\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":340,\"kind\":1024,\"name\":\"kodachrome\",\"url\":\"interfaces/FilterConfig.html#kodachrome\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":341,\"kind\":1024,\"name\":\"technicolor\",\"url\":\"interfaces/FilterConfig.html#technicolor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":342,\"kind\":1024,\"name\":\"polaroid\",\"url\":\"interfaces/FilterConfig.html#polaroid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":343,\"kind\":1024,\"name\":\"pixelate\",\"url\":\"interfaces/FilterConfig.html#pixelate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":344,\"kind\":256,\"name\":\"GestureConfig\",\"url\":\"interfaces/GestureConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":345,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/GestureConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GestureConfig\"},{\"id\":346,\"kind\":4194304,\"name\":\"BackendType\",\"url\":\"index.html#BackendType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":347,\"kind\":4194304,\"name\":\"WarmupType\",\"url\":\"index.html#WarmupType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":348,\"kind\":256,\"name\":\"Config\",\"url\":\"interfaces/Config.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":349,\"kind\":1024,\"name\":\"backend\",\"url\":\"interfaces/Config.html#backend\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":350,\"kind\":1024,\"name\":\"wasmPath\",\"url\":\"interfaces/Config.html#wasmPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":351,\"kind\":1024,\"name\":\"debug\",\"url\":\"interfaces/Config.html#debug\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":352,\"kind\":1024,\"name\":\"async\",\"url\":\"interfaces/Config.html#async\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":353,\"kind\":1024,\"name\":\"warmup\",\"url\":\"interfaces/Config.html#warmup\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":354,\"kind\":1024,\"name\":\"modelBasePath\",\"url\":\"interfaces/Config.html#modelBasePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":355,\"kind\":1024,\"name\":\"cacheModels\",\"url\":\"interfaces/Config.html#cacheModels\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":356,\"kind\":1024,\"name\":\"cacheSensitivity\",\"url\":\"interfaces/Config.html#cacheSensitivity\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":357,\"kind\":1024,\"name\":\"deallocate\",\"url\":\"interfaces/Config.html#deallocate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":358,\"kind\":1024,\"name\":\"skipAllowed\",\"url\":\"interfaces/Config.html#skipAllowed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":359,\"kind\":1024,\"name\":\"filter\",\"url\":\"interfaces/Config.html#filter\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":360,\"kind\":1024,\"name\":\"gesture\",\"url\":\"interfaces/Config.html#gesture\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":361,\"kind\":1024,\"name\":\"face\",\"url\":\"interfaces/Config.html#face\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":362,\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/Config.html#body\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":363,\"kind\":1024,\"name\":\"hand\",\"url\":\"interfaces/Config.html#hand\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":364,\"kind\":1024,\"name\":\"object\",\"url\":\"interfaces/Config.html#object\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":365,\"kind\":1024,\"name\":\"segmentation\",\"url\":\"interfaces/Config.html#segmentation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":366,\"kind\":32,\"name\":\"defaults\",\"url\":\"index.html#defaults\",\"classes\":\"tsd-kind-variable\"},{\"id\":367,\"kind\":256,\"name\":\"FaceResult\",\"url\":\"interfaces/FaceResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":368,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/FaceResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":369,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/FaceResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":370,\"kind\":1024,\"name\":\"boxScore\",\"url\":\"interfaces/FaceResult.html#boxScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":371,\"kind\":1024,\"name\":\"faceScore\",\"url\":\"interfaces/FaceResult.html#faceScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":372,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/FaceResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":373,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/FaceResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":374,\"kind\":1024,\"name\":\"mesh\",\"url\":\"interfaces/FaceResult.html#mesh\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":375,\"kind\":1024,\"name\":\"meshRaw\",\"url\":\"interfaces/FaceResult.html#meshRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":376,\"kind\":1024,\"name\":\"annotations\",\"url\":\"interfaces/FaceResult.html#annotations\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":377,\"kind\":1024,\"name\":\"age\",\"url\":\"interfaces/FaceResult.html#age\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":378,\"kind\":1024,\"name\":\"gender\",\"url\":\"interfaces/FaceResult.html#gender\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":379,\"kind\":1024,\"name\":\"genderScore\",\"url\":\"interfaces/FaceResult.html#genderScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":380,\"kind\":1024,\"name\":\"emotion\",\"url\":\"interfaces/FaceResult.html#emotion\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":381,\"kind\":1024,\"name\":\"race\",\"url\":\"interfaces/FaceResult.html#race\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":382,\"kind\":1024,\"name\":\"embedding\",\"url\":\"interfaces/FaceResult.html#embedding\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":383,\"kind\":1024,\"name\":\"iris\",\"url\":\"interfaces/FaceResult.html#iris\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":384,\"kind\":1024,\"name\":\"real\",\"url\":\"interfaces/FaceResult.html#real\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":385,\"kind\":1024,\"name\":\"live\",\"url\":\"interfaces/FaceResult.html#live\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":386,\"kind\":1024,\"name\":\"rotation\",\"url\":\"interfaces/FaceResult.html#rotation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":387,\"kind\":1024,\"name\":\"tensor\",\"url\":\"interfaces/FaceResult.html#tensor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":388,\"kind\":4194304,\"name\":\"BodyLandmarkPoseNet\",\"url\":\"index.html#BodyLandmarkPoseNet\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":389,\"kind\":4194304,\"name\":\"BodyLandmarkMoveNet\",\"url\":\"index.html#BodyLandmarkMoveNet\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":390,\"kind\":4194304,\"name\":\"BodyLandmarkEfficientNet\",\"url\":\"index.html#BodyLandmarkEfficientNet\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":391,\"kind\":4194304,\"name\":\"BodyLandmarkBlazePose\",\"url\":\"index.html#BodyLandmarkBlazePose\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":392,\"kind\":4194304,\"name\":\"BodyAnnotationBlazePose\",\"url\":\"index.html#BodyAnnotationBlazePose\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":393,\"kind\":4194304,\"name\":\"BodyAnnotationEfficientPose\",\"url\":\"index.html#BodyAnnotationEfficientPose\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":394,\"kind\":256,\"name\":\"BodyKeypoint\",\"url\":\"interfaces/BodyKeypoint.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":395,\"kind\":1024,\"name\":\"part\",\"url\":\"interfaces/BodyKeypoint.html#part\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":396,\"kind\":1024,\"name\":\"position\",\"url\":\"interfaces/BodyKeypoint.html#position\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":397,\"kind\":1024,\"name\":\"positionRaw\",\"url\":\"interfaces/BodyKeypoint.html#positionRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":398,\"kind\":1024,\"name\":\"distance\",\"url\":\"interfaces/BodyKeypoint.html#distance\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":399,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/BodyKeypoint.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":400,\"kind\":256,\"name\":\"BodyResult\",\"url\":\"interfaces/BodyResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":401,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/BodyResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":402,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/BodyResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":403,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/BodyResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":404,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/BodyResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":405,\"kind\":1024,\"name\":\"keypoints\",\"url\":\"interfaces/BodyResult.html#keypoints\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":406,\"kind\":1024,\"name\":\"annotations\",\"url\":\"interfaces/BodyResult.html#annotations\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":407,\"kind\":256,\"name\":\"HandResult\",\"url\":\"interfaces/HandResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":408,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/HandResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":409,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/HandResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":410,\"kind\":1024,\"name\":\"boxScore\",\"url\":\"interfaces/HandResult.html#boxScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":411,\"kind\":1024,\"name\":\"fingerScore\",\"url\":\"interfaces/HandResult.html#fingerScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":412,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/HandResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":413,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/HandResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":414,\"kind\":1024,\"name\":\"keypoints\",\"url\":\"interfaces/HandResult.html#keypoints\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":415,\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/HandResult.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":416,\"kind\":1024,\"name\":\"annotations\",\"url\":\"interfaces/HandResult.html#annotations\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":417,\"kind\":1024,\"name\":\"landmarks\",\"url\":\"interfaces/HandResult.html#landmarks\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":418,\"kind\":256,\"name\":\"ObjectResult\",\"url\":\"interfaces/ObjectResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":419,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/ObjectResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":420,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/ObjectResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":421,\"kind\":1024,\"name\":\"class\",\"url\":\"interfaces/ObjectResult.html#class\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":422,\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/ObjectResult.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":423,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/ObjectResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":424,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/ObjectResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":425,\"kind\":4194304,\"name\":\"GestureResult\",\"url\":\"index.html#GestureResult\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":426,\"kind\":256,\"name\":\"PersonResult\",\"url\":\"interfaces/PersonResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":427,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/PersonResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":428,\"kind\":1024,\"name\":\"face\",\"url\":\"interfaces/PersonResult.html#face\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":429,\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/PersonResult.html#body\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":430,\"kind\":1024,\"name\":\"hands\",\"url\":\"interfaces/PersonResult.html#hands\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":431,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/PersonResult.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":432,\"kind\":1024,\"name\":\"left\",\"url\":\"interfaces/PersonResult.html#__type.left\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PersonResult.__type\"},{\"id\":433,\"kind\":1024,\"name\":\"right\",\"url\":\"interfaces/PersonResult.html#__type.right\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PersonResult.__type\"},{\"id\":434,\"kind\":1024,\"name\":\"gestures\",\"url\":\"interfaces/PersonResult.html#gestures\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":435,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/PersonResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":436,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/PersonResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":437,\"kind\":256,\"name\":\"Result\",\"url\":\"interfaces/Result.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":438,\"kind\":1024,\"name\":\"face\",\"url\":\"interfaces/Result.html#face\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":439,\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/Result.html#body\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":440,\"kind\":1024,\"name\":\"hand\",\"url\":\"interfaces/Result.html#hand\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":441,\"kind\":1024,\"name\":\"gesture\",\"url\":\"interfaces/Result.html#gesture\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":442,\"kind\":1024,\"name\":\"object\",\"url\":\"interfaces/Result.html#object\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":443,\"kind\":1024,\"name\":\"performance\",\"url\":\"interfaces/Result.html#performance\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":444,\"kind\":1024,\"name\":\"canvas\",\"url\":\"interfaces/Result.html#canvas\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":445,\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/Result.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":446,\"kind\":1024,\"name\":\"persons\",\"url\":\"interfaces/Result.html#persons\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":447,\"kind\":1024,\"name\":\"error\",\"url\":\"interfaces/Result.html#error\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,24.564]],[\"parent/0\",[]],[\"name/1\",[1,44.023]],[\"parent/1\",[0,2.286]],[\"name/2\",[2,48.543]],[\"parent/2\",[0,2.286]],[\"name/3\",[3,31.366]],[\"parent/3\",[0,2.286]],[\"name/4\",[4,35.813]],[\"parent/4\",[0,2.286]],[\"name/5\",[5,57.016]],[\"parent/5\",[0,2.286]],[\"name/6\",[6,57.016]],[\"parent/6\",[0,2.286]],[\"name/7\",[7,29.083]],[\"parent/7\",[0,2.286]],[\"name/8\",[8,26.893]],[\"parent/8\",[9,2.919]],[\"name/9\",[10,46.029]],[\"parent/9\",[9,2.919]],[\"name/10\",[11,57.016]],[\"parent/10\",[0,2.286]],[\"name/11\",[12,26.893]],[\"parent/11\",[0,2.286]],[\"name/12\",[13,57.016]],[\"parent/12\",[0,2.286]],[\"name/13\",[7,29.083]],[\"parent/13\",[0,2.286]],[\"name/14\",[10,46.029]],[\"parent/14\",[9,2.919]],[\"name/15\",[7,29.083]],[\"parent/15\",[9,2.919]],[\"name/16\",[14,46.029]],[\"parent/16\",[9,2.919]],[\"name/17\",[7,29.083]],[\"parent/17\",[9,2.919]],[\"name/18\",[15,46.029]],[\"parent/18\",[9,2.919]],[\"name/19\",[7,29.083]],[\"parent/19\",[9,2.919]],[\"name/20\",[16,48.543]],[\"parent/20\",[9,2.919]],[\"name/21\",[7,29.083]],[\"parent/21\",[9,2.919]],[\"name/22\",[17,48.543]],[\"parent/22\",[9,2.919]],[\"name/23\",[7,29.083]],[\"parent/23\",[9,2.919]],[\"name/24\",[18,48.543]],[\"parent/24\",[9,2.919]],[\"name/25\",[7,29.083]],[\"parent/25\",[9,2.919]],[\"name/26\",[19,57.016]],[\"parent/26\",[9,2.919]],[\"name/27\",[7,29.083]],[\"parent/27\",[9,2.919]],[\"name/28\",[20,57.016]],[\"parent/28\",[9,2.919]],[\"name/29\",[7,29.083]],[\"parent/29\",[9,2.919]],[\"name/30\",[21,57.016]],[\"parent/30\",[9,2.919]],[\"name/31\",[22,51.907]],[\"parent/31\",[0,2.286]],[\"name/32\",[23,57.016]],[\"parent/32\",[0,2.286]],[\"name/33\",[24,57.016]],[\"parent/33\",[0,2.286]],[\"name/34\",[25,51.907]],[\"parent/34\",[0,2.286]],[\"name/35\",[26,57.016]],[\"parent/35\",[0,2.286]],[\"name/36\",[27,57.016]],[\"parent/36\",[0,2.286]],[\"name/37\",[28,57.016]],[\"parent/37\",[0,2.286]],[\"name/38\",[29,57.016]],[\"parent/38\",[0,2.286]],[\"name/39\",[30,57.016]],[\"parent/39\",[0,2.286]],[\"name/40\",[7,29.083]],[\"parent/40\",[0,2.286]],[\"name/41\",[31,51.907]],[\"parent/41\",[0,2.286]],[\"name/42\",[7,29.083]],[\"parent/42\",[0,2.286]],[\"name/43\",[32,57.016]],[\"parent/43\",[0,2.286]],[\"name/44\",[7,29.083]],[\"parent/44\",[0,2.286]],[\"name/45\",[33,57.016]],[\"parent/45\",[0,2.286]],[\"name/46\",[34,51.907]],[\"parent/46\",[0,2.286]],[\"name/47\",[35,48.543]],[\"parent/47\",[0,2.286]],[\"name/48\",[36,57.016]],[\"parent/48\",[0,2.286]],[\"name/49\",[37,57.016]],[\"parent/49\",[0,2.286]],[\"name/50\",[38,57.016]],[\"parent/50\",[0,2.286]],[\"name/51\",[39,51.907]],[\"parent/51\",[0,2.286]],[\"name/52\",[40,57.016]],[\"parent/52\",[0,2.286]],[\"name/53\",[41,57.016]],[\"parent/53\",[0,2.286]],[\"name/54\",[42,51.907]],[\"parent/54\",[0,2.286]],[\"name/55\",[43,57.016]],[\"parent/55\",[0,2.286]],[\"name/56\",[44,57.016]],[\"parent/56\",[0,2.286]],[\"name/57\",[45,57.016]],[\"parent/57\",[]],[\"name/58\",[8,26.893]],[\"parent/58\",[]],[\"name/59\",[1,44.023]],[\"parent/59\",[8,2.503]],[\"name/60\",[46,42.352]],[\"parent/60\",[8,2.503]],[\"name/61\",[47,57.016]],[\"parent/61\",[8,2.503]],[\"name/62\",[48,57.016]],[\"parent/62\",[8,2.503]],[\"name/63\",[49,57.016]],[\"parent/63\",[8,2.503]],[\"name/64\",[50,57.016]],[\"parent/64\",[8,2.503]],[\"name/65\",[51,57.016]],[\"parent/65\",[8,2.503]],[\"name/66\",[52,57.016]],[\"parent/66\",[8,2.503]],[\"name/67\",[53,57.016]],[\"parent/67\",[8,2.503]],[\"name/68\",[54,57.016]],[\"parent/68\",[8,2.503]],[\"name/69\",[55,38.557]],[\"parent/69\",[8,2.503]],[\"name/70\",[56,57.016]],[\"parent/70\",[8,2.503]],[\"name/71\",[57,57.016]],[\"parent/71\",[8,2.503]],[\"name/72\",[58,57.016]],[\"parent/72\",[8,2.503]],[\"name/73\",[59,57.016]],[\"parent/73\",[8,2.503]],[\"name/74\",[60,57.016]],[\"parent/74\",[8,2.503]],[\"name/75\",[61,57.016]],[\"parent/75\",[8,2.503]],[\"name/76\",[62,57.016]],[\"parent/76\",[8,2.503]],[\"name/77\",[63,57.016]],[\"parent/77\",[8,2.503]],[\"name/78\",[64,51.907]],[\"parent/78\",[8,2.503]],[\"name/79\",[65,57.016]],[\"parent/79\",[8,2.503]],[\"name/80\",[66,57.016]],[\"parent/80\",[8,2.503]],[\"name/81\",[67,57.016]],[\"parent/81\",[8,2.503]],[\"name/82\",[68,57.016]],[\"parent/82\",[8,2.503]],[\"name/83\",[69,57.016]],[\"parent/83\",[8,2.503]],[\"name/84\",[70,57.016]],[\"parent/84\",[8,2.503]],[\"name/85\",[8,26.893]],[\"parent/85\",[]],[\"name/86\",[71,57.016]],[\"parent/86\",[]],[\"name/87\",[72,30.39]],[\"parent/87\",[]],[\"name/88\",[1,44.023]],[\"parent/88\",[72,2.828]],[\"name/89\",[73,57.016]],[\"parent/89\",[72,2.828]],[\"name/90\",[74,57.016]],[\"parent/90\",[72,2.828]],[\"name/91\",[75,57.016]],[\"parent/91\",[72,2.828]],[\"name/92\",[76,57.016]],[\"parent/92\",[72,2.828]],[\"name/93\",[77,57.016]],[\"parent/93\",[72,2.828]],[\"name/94\",[78,57.016]],[\"parent/94\",[72,2.828]],[\"name/95\",[79,57.016]],[\"parent/95\",[72,2.828]],[\"name/96\",[7,29.083]],[\"parent/96\",[72,2.828]],[\"name/97\",[80,57.016]],[\"parent/97\",[72,2.828]],[\"name/98\",[7,29.083]],[\"parent/98\",[72,2.828]],[\"name/99\",[39,51.907]],[\"parent/99\",[72,2.828]],[\"name/100\",[81,57.016]],[\"parent/100\",[72,2.828]],[\"name/101\",[82,57.016]],[\"parent/101\",[72,2.828]],[\"name/102\",[83,57.016]],[\"parent/102\",[72,2.828]],[\"name/103\",[84,57.016]],[\"parent/103\",[72,2.828]],[\"name/104\",[85,57.016]],[\"parent/104\",[72,2.828]],[\"name/105\",[86,57.016]],[\"parent/105\",[72,2.828]],[\"name/106\",[87,57.016]],[\"parent/106\",[72,2.828]],[\"name/107\",[64,51.907]],[\"parent/107\",[72,2.828]],[\"name/108\",[55,38.557]],[\"parent/108\",[]],[\"name/109\",[88,57.016]],[\"parent/109\",[55,3.588]],[\"name/110\",[89,57.016]],[\"parent/110\",[55,3.588]],[\"name/111\",[90,57.016]],[\"parent/111\",[55,3.588]],[\"name/112\",[91,57.016]],[\"parent/112\",[55,3.588]],[\"name/113\",[92,57.016]],[\"parent/113\",[55,3.588]],[\"name/114\",[93,57.016]],[\"parent/114\",[55,3.588]],[\"name/115\",[94,57.016]],[\"parent/115\",[55,3.588]],[\"name/116\",[95,51.907]],[\"parent/116\",[]],[\"name/117\",[7,29.083]],[\"parent/117\",[95,4.831]],[\"name/118\",[96,57.016]],[\"parent/118\",[97,3.02]],[\"name/119\",[98,57.016]],[\"parent/119\",[97,3.02]],[\"name/120\",[99,57.016]],[\"parent/120\",[97,3.02]],[\"name/121\",[100,57.016]],[\"parent/121\",[97,3.02]],[\"name/122\",[101,57.016]],[\"parent/122\",[97,3.02]],[\"name/123\",[102,57.016]],[\"parent/123\",[97,3.02]],[\"name/124\",[103,57.016]],[\"parent/124\",[97,3.02]],[\"name/125\",[104,57.016]],[\"parent/125\",[97,3.02]],[\"name/126\",[105,57.016]],[\"parent/126\",[97,3.02]],[\"name/127\",[106,57.016]],[\"parent/127\",[97,3.02]],[\"name/128\",[107,57.016]],[\"parent/128\",[97,3.02]],[\"name/129\",[108,57.016]],[\"parent/129\",[97,3.02]],[\"name/130\",[109,57.016]],[\"parent/130\",[97,3.02]],[\"name/131\",[110,57.016]],[\"parent/131\",[97,3.02]],[\"name/132\",[111,57.016]],[\"parent/132\",[97,3.02]],[\"name/133\",[112,57.016]],[\"parent/133\",[97,3.02]],[\"name/134\",[113,57.016]],[\"parent/134\",[97,3.02]],[\"name/135\",[114,57.016]],[\"parent/135\",[]],[\"name/136\",[115,42.352]],[\"parent/136\",[]],[\"name/137\",[116,57.016]],[\"parent/137\",[]],[\"name/138\",[117,29.083]],[\"parent/138\",[]],[\"name/139\",[1,44.023]],[\"parent/139\",[117,2.707]],[\"name/140\",[118,57.016]],[\"parent/140\",[117,2.707]],[\"name/141\",[119,57.016]],[\"parent/141\",[117,2.707]],[\"name/142\",[120,57.016]],[\"parent/142\",[117,2.707]],[\"name/143\",[121,57.016]],[\"parent/143\",[117,2.707]],[\"name/144\",[122,57.016]],[\"parent/144\",[117,2.707]],[\"name/145\",[123,57.016]],[\"parent/145\",[117,2.707]],[\"name/146\",[124,57.016]],[\"parent/146\",[117,2.707]],[\"name/147\",[125,46.029]],[\"parent/147\",[117,2.707]],[\"name/148\",[126,57.016]],[\"parent/148\",[117,2.707]],[\"name/149\",[127,57.016]],[\"parent/149\",[117,2.707]],[\"name/150\",[128,57.016]],[\"parent/150\",[117,2.707]],[\"name/151\",[129,57.016]],[\"parent/151\",[117,2.707]],[\"name/152\",[130,57.016]],[\"parent/152\",[117,2.707]],[\"name/153\",[131,57.016]],[\"parent/153\",[117,2.707]],[\"name/154\",[132,57.016]],[\"parent/154\",[117,2.707]],[\"name/155\",[133,57.016]],[\"parent/155\",[117,2.707]],[\"name/156\",[134,51.907]],[\"parent/156\",[117,2.707]],[\"name/157\",[135,57.016]],[\"parent/157\",[117,2.707]],[\"name/158\",[136,57.016]],[\"parent/158\",[117,2.707]],[\"name/159\",[137,57.016]],[\"parent/159\",[117,2.707]],[\"name/160\",[35,48.543]],[\"parent/160\",[117,2.707]],[\"name/161\",[138,51.907]],[\"parent/161\",[117,2.707]],[\"name/162\",[12,26.893]],[\"parent/162\",[]],[\"name/163\",[1,44.023]],[\"parent/163\",[12,2.503]],[\"name/164\",[139,57.016]],[\"parent/164\",[12,2.503]],[\"name/165\",[140,57.016]],[\"parent/165\",[12,2.503]],[\"name/166\",[141,57.016]],[\"parent/166\",[12,2.503]],[\"name/167\",[142,57.016]],[\"parent/167\",[12,2.503]],[\"name/168\",[143,57.016]],[\"parent/168\",[12,2.503]],[\"name/169\",[144,57.016]],[\"parent/169\",[12,2.503]],[\"name/170\",[145,57.016]],[\"parent/170\",[12,2.503]],[\"name/171\",[146,51.907]],[\"parent/171\",[12,2.503]],[\"name/172\",[147,57.016]],[\"parent/172\",[12,2.503]],[\"name/173\",[7,29.083]],[\"parent/173\",[12,2.503]],[\"name/174\",[2,48.543]],[\"parent/174\",[148,3.195]],[\"name/175\",[149,57.016]],[\"parent/175\",[12,2.503]],[\"name/176\",[150,57.016]],[\"parent/176\",[12,2.503]],[\"name/177\",[151,57.016]],[\"parent/177\",[12,2.503]],[\"name/178\",[7,29.083]],[\"parent/178\",[12,2.503]],[\"name/179\",[152,48.543]],[\"parent/179\",[148,3.195]],[\"name/180\",[153,46.029]],[\"parent/180\",[148,3.195]],[\"name/181\",[154,57.016]],[\"parent/181\",[148,3.195]],[\"name/182\",[155,57.016]],[\"parent/182\",[148,3.195]],[\"name/183\",[156,57.016]],[\"parent/183\",[12,2.503]],[\"name/184\",[7,29.083]],[\"parent/184\",[12,2.503]],[\"name/185\",[152,48.543]],[\"parent/185\",[148,3.195]],[\"name/186\",[153,46.029]],[\"parent/186\",[148,3.195]],[\"name/187\",[2,48.543]],[\"parent/187\",[148,3.195]],[\"name/188\",[157,57.016]],[\"parent/188\",[148,3.195]],[\"name/189\",[158,57.016]],[\"parent/189\",[12,2.503]],[\"name/190\",[7,29.083]],[\"parent/190\",[12,2.503]],[\"name/191\",[152,48.543]],[\"parent/191\",[148,3.195]],[\"name/192\",[153,46.029]],[\"parent/192\",[148,3.195]],[\"name/193\",[159,57.016]],[\"parent/193\",[148,3.195]],[\"name/194\",[160,57.016]],[\"parent/194\",[12,2.503]],[\"name/195\",[7,29.083]],[\"parent/195\",[12,2.503]],[\"name/196\",[161,57.016]],[\"parent/196\",[148,3.195]],[\"name/197\",[162,57.016]],[\"parent/197\",[148,3.195]],[\"name/198\",[163,57.016]],[\"parent/198\",[12,2.503]],[\"name/199\",[10,46.029]],[\"parent/199\",[12,2.503]],[\"name/200\",[34,51.907]],[\"parent/200\",[12,2.503]],[\"name/201\",[164,57.016]],[\"parent/201\",[12,2.503]],[\"name/202\",[165,57.016]],[\"parent/202\",[12,2.503]],[\"name/203\",[166,57.016]],[\"parent/203\",[12,2.503]],[\"name/204\",[167,57.016]],[\"parent/204\",[]],[\"name/205\",[168,57.016]],[\"parent/205\",[]],[\"name/206\",[169,57.016]],[\"parent/206\",[]],[\"name/207\",[170,57.016]],[\"parent/207\",[]],[\"name/208\",[125,46.029]],[\"parent/208\",[]],[\"name/209\",[171,57.016]],[\"parent/209\",[]],[\"name/210\",[172,57.016]],[\"parent/210\",[]],[\"name/211\",[173,57.016]],[\"parent/211\",[]],[\"name/212\",[174,57.016]],[\"parent/212\",[]],[\"name/213\",[175,51.907]],[\"parent/213\",[]],[\"name/214\",[176,51.907]],[\"parent/214\",[]],[\"name/215\",[177,57.016]],[\"parent/215\",[]],[\"name/216\",[178,57.016]],[\"parent/216\",[]],[\"name/217\",[179,57.016]],[\"parent/217\",[]],[\"name/218\",[180,57.016]],[\"parent/218\",[]],[\"name/219\",[12,26.893]],[\"parent/219\",[]],[\"name/220\",[22,51.907]],[\"parent/220\",[]],[\"name/221\",[181,57.016]],[\"parent/221\",[]],[\"name/222\",[182,57.016]],[\"parent/222\",[]],[\"name/223\",[183,57.016]],[\"parent/223\",[]],[\"name/224\",[184,57.016]],[\"parent/224\",[]],[\"name/225\",[185,57.016]],[\"parent/225\",[]],[\"name/226\",[186,57.016]],[\"parent/226\",[]],[\"name/227\",[187,44.023]],[\"parent/227\",[]],[\"name/228\",[188,33.662]],[\"parent/228\",[187,4.097]],[\"name/229\",[189,33.662]],[\"parent/229\",[187,4.097]],[\"name/230\",[190,35.043]],[\"parent/230\",[187,4.097]],[\"name/231\",[191,35.043]],[\"parent/231\",[187,4.097]],[\"name/232\",[192,36.647]],[\"parent/232\",[]],[\"name/233\",[193,48.543]],[\"parent/233\",[192,3.411]],[\"name/234\",[194,46.029]],[\"parent/234\",[192,3.411]],[\"name/235\",[195,42.352]],[\"parent/235\",[192,3.411]],[\"name/236\",[196,48.543]],[\"parent/236\",[192,3.411]],[\"name/237\",[197,57.016]],[\"parent/237\",[192,3.411]],[\"name/238\",[198,51.907]],[\"parent/238\",[192,3.411]],[\"name/239\",[188,33.662]],[\"parent/239\",[192,3.411]],[\"name/240\",[189,33.662]],[\"parent/240\",[192,3.411]],[\"name/241\",[190,35.043]],[\"parent/241\",[192,3.411]],[\"name/242\",[191,35.043]],[\"parent/242\",[192,3.411]],[\"name/243\",[199,44.023]],[\"parent/243\",[]],[\"name/244\",[188,33.662]],[\"parent/244\",[199,4.097]],[\"name/245\",[189,33.662]],[\"parent/245\",[199,4.097]],[\"name/246\",[190,35.043]],[\"parent/246\",[199,4.097]],[\"name/247\",[191,35.043]],[\"parent/247\",[199,4.097]],[\"name/248\",[200,44.023]],[\"parent/248\",[]],[\"name/249\",[188,33.662]],[\"parent/249\",[200,4.097]],[\"name/250\",[189,33.662]],[\"parent/250\",[200,4.097]],[\"name/251\",[190,35.043]],[\"parent/251\",[200,4.097]],[\"name/252\",[191,35.043]],[\"parent/252\",[200,4.097]],[\"name/253\",[201,42.352]],[\"parent/253\",[]],[\"name/254\",[195,42.352]],[\"parent/254\",[201,3.942]],[\"name/255\",[188,33.662]],[\"parent/255\",[201,3.942]],[\"name/256\",[189,33.662]],[\"parent/256\",[201,3.942]],[\"name/257\",[190,35.043]],[\"parent/257\",[201,3.942]],[\"name/258\",[191,35.043]],[\"parent/258\",[201,3.942]],[\"name/259\",[202,42.352]],[\"parent/259\",[]],[\"name/260\",[195,42.352]],[\"parent/260\",[202,3.942]],[\"name/261\",[188,33.662]],[\"parent/261\",[202,3.942]],[\"name/262\",[189,33.662]],[\"parent/262\",[202,3.942]],[\"name/263\",[190,35.043]],[\"parent/263\",[202,3.942]],[\"name/264\",[191,35.043]],[\"parent/264\",[202,3.942]],[\"name/265\",[203,44.023]],[\"parent/265\",[]],[\"name/266\",[188,33.662]],[\"parent/266\",[203,4.097]],[\"name/267\",[189,33.662]],[\"parent/267\",[203,4.097]],[\"name/268\",[190,35.043]],[\"parent/268\",[203,4.097]],[\"name/269\",[191,35.043]],[\"parent/269\",[203,4.097]],[\"name/270\",[204,44.023]],[\"parent/270\",[]],[\"name/271\",[188,33.662]],[\"parent/271\",[204,4.097]],[\"name/272\",[189,33.662]],[\"parent/272\",[204,4.097]],[\"name/273\",[190,35.043]],[\"parent/273\",[204,4.097]],[\"name/274\",[191,35.043]],[\"parent/274\",[204,4.097]],[\"name/275\",[205,35.813]],[\"parent/275\",[]],[\"name/276\",[206,51.907]],[\"parent/276\",[205,3.333]],[\"name/277\",[207,51.907]],[\"parent/277\",[205,3.333]],[\"name/278\",[208,51.907]],[\"parent/278\",[205,3.333]],[\"name/279\",[209,57.016]],[\"parent/279\",[205,3.333]],[\"name/280\",[125,46.029]],[\"parent/280\",[205,3.333]],[\"name/281\",[138,51.907]],[\"parent/281\",[205,3.333]],[\"name/282\",[134,51.907]],[\"parent/282\",[205,3.333]],[\"name/283\",[188,33.662]],[\"parent/283\",[205,3.333]],[\"name/284\",[189,33.662]],[\"parent/284\",[205,3.333]],[\"name/285\",[190,35.043]],[\"parent/285\",[205,3.333]],[\"name/286\",[191,35.043]],[\"parent/286\",[205,3.333]],[\"name/287\",[210,40.921]],[\"parent/287\",[]],[\"name/288\",[194,46.029]],[\"parent/288\",[210,3.808]],[\"name/289\",[195,42.352]],[\"parent/289\",[210,3.808]],[\"name/290\",[188,33.662]],[\"parent/290\",[210,3.808]],[\"name/291\",[189,33.662]],[\"parent/291\",[210,3.808]],[\"name/292\",[190,35.043]],[\"parent/292\",[210,3.808]],[\"name/293\",[191,35.043]],[\"parent/293\",[210,3.808]],[\"name/294\",[211,34.329]],[\"parent/294\",[]],[\"name/295\",[193,48.543]],[\"parent/295\",[211,3.195]],[\"name/296\",[195,42.352]],[\"parent/296\",[211,3.195]],[\"name/297\",[196,48.543]],[\"parent/297\",[211,3.195]],[\"name/298\",[194,46.029]],[\"parent/298\",[211,3.195]],[\"name/299\",[212,51.907]],[\"parent/299\",[211,3.195]],[\"name/300\",[206,51.907]],[\"parent/300\",[211,3.195]],[\"name/301\",[7,29.083]],[\"parent/301\",[211,3.195]],[\"name/302\",[189,33.662]],[\"parent/302\",[213,4.831]],[\"name/303\",[214,57.016]],[\"parent/303\",[211,3.195]],[\"name/304\",[7,29.083]],[\"parent/304\",[211,3.195]],[\"name/305\",[189,33.662]],[\"parent/305\",[213,4.831]],[\"name/306\",[188,33.662]],[\"parent/306\",[211,3.195]],[\"name/307\",[189,33.662]],[\"parent/307\",[211,3.195]],[\"name/308\",[190,35.043]],[\"parent/308\",[211,3.195]],[\"name/309\",[191,35.043]],[\"parent/309\",[211,3.195]],[\"name/310\",[215,39.67]],[\"parent/310\",[]],[\"name/311\",[195,42.352]],[\"parent/311\",[215,3.692]],[\"name/312\",[196,48.543]],[\"parent/312\",[215,3.692]],[\"name/313\",[194,46.029]],[\"parent/313\",[215,3.692]],[\"name/314\",[188,33.662]],[\"parent/314\",[215,3.692]],[\"name/315\",[189,33.662]],[\"parent/315\",[215,3.692]],[\"name/316\",[190,35.043]],[\"parent/316\",[215,3.692]],[\"name/317\",[191,35.043]],[\"parent/317\",[215,3.692]],[\"name/318\",[216,42.352]],[\"parent/318\",[]],[\"name/319\",[217,51.907]],[\"parent/319\",[216,3.942]],[\"name/320\",[188,33.662]],[\"parent/320\",[216,3.942]],[\"name/321\",[189,33.662]],[\"parent/321\",[216,3.942]],[\"name/322\",[190,35.043]],[\"parent/322\",[216,3.942]],[\"name/323\",[191,35.043]],[\"parent/323\",[216,3.942]],[\"name/324\",[218,30.866]],[\"parent/324\",[]],[\"name/325\",[188,33.662]],[\"parent/325\",[218,2.873]],[\"name/326\",[219,57.016]],[\"parent/326\",[218,2.873]],[\"name/327\",[220,57.016]],[\"parent/327\",[218,2.873]],[\"name/328\",[221,57.016]],[\"parent/328\",[218,2.873]],[\"name/329\",[198,51.907]],[\"parent/329\",[218,2.873]],[\"name/330\",[222,57.016]],[\"parent/330\",[218,2.873]],[\"name/331\",[223,57.016]],[\"parent/331\",[218,2.873]],[\"name/332\",[224,57.016]],[\"parent/332\",[218,2.873]],[\"name/333\",[225,57.016]],[\"parent/333\",[218,2.873]],[\"name/334\",[217,51.907]],[\"parent/334\",[218,2.873]],[\"name/335\",[226,57.016]],[\"parent/335\",[218,2.873]],[\"name/336\",[227,57.016]],[\"parent/336\",[218,2.873]],[\"name/337\",[228,57.016]],[\"parent/337\",[218,2.873]],[\"name/338\",[229,57.016]],[\"parent/338\",[218,2.873]],[\"name/339\",[230,57.016]],[\"parent/339\",[218,2.873]],[\"name/340\",[231,57.016]],[\"parent/340\",[218,2.873]],[\"name/341\",[232,57.016]],[\"parent/341\",[218,2.873]],[\"name/342\",[233,57.016]],[\"parent/342\",[218,2.873]],[\"name/343\",[234,57.016]],[\"parent/343\",[218,2.873]],[\"name/344\",[235,51.907]],[\"parent/344\",[]],[\"name/345\",[188,33.662]],[\"parent/345\",[235,4.831]],[\"name/346\",[236,57.016]],[\"parent/346\",[]],[\"name/347\",[237,57.016]],[\"parent/347\",[]],[\"name/348\",[3,31.366]],[\"parent/348\",[]],[\"name/349\",[153,46.029]],[\"parent/349\",[3,2.919]],[\"name/350\",[238,57.016]],[\"parent/350\",[3,2.919]],[\"name/351\",[239,57.016]],[\"parent/351\",[3,2.919]],[\"name/352\",[240,57.016]],[\"parent/352\",[3,2.919]],[\"name/353\",[42,51.907]],[\"parent/353\",[3,2.919]],[\"name/354\",[241,57.016]],[\"parent/354\",[3,2.919]],[\"name/355\",[242,57.016]],[\"parent/355\",[3,2.919]],[\"name/356\",[243,57.016]],[\"parent/356\",[3,2.919]],[\"name/357\",[244,57.016]],[\"parent/357\",[3,2.919]],[\"name/358\",[245,57.016]],[\"parent/358\",[3,2.919]],[\"name/359\",[146,51.907]],[\"parent/359\",[3,2.919]],[\"name/360\",[17,48.543]],[\"parent/360\",[3,2.919]],[\"name/361\",[14,46.029]],[\"parent/361\",[3,2.919]],[\"name/362\",[15,46.029]],[\"parent/362\",[3,2.919]],[\"name/363\",[16,48.543]],[\"parent/363\",[3,2.919]],[\"name/364\",[18,48.543]],[\"parent/364\",[3,2.919]],[\"name/365\",[35,48.543]],[\"parent/365\",[3,2.919]],[\"name/366\",[246,57.016]],[\"parent/366\",[]],[\"name/367\",[247,30.39]],[\"parent/367\",[]],[\"name/368\",[46,42.352]],[\"parent/368\",[247,2.828]],[\"name/369\",[248,44.023]],[\"parent/369\",[247,2.828]],[\"name/370\",[249,51.907]],[\"parent/370\",[247,2.828]],[\"name/371\",[250,57.016]],[\"parent/371\",[247,2.828]],[\"name/372\",[115,42.352]],[\"parent/372\",[247,2.828]],[\"name/373\",[251,44.023]],[\"parent/373\",[247,2.828]],[\"name/374\",[207,51.907]],[\"parent/374\",[247,2.828]],[\"name/375\",[252,57.016]],[\"parent/375\",[247,2.828]],[\"name/376\",[253,48.543]],[\"parent/376\",[247,2.828]],[\"name/377\",[254,57.016]],[\"parent/377\",[247,2.828]],[\"name/378\",[175,51.907]],[\"parent/378\",[247,2.828]],[\"name/379\",[255,57.016]],[\"parent/379\",[247,2.828]],[\"name/380\",[125,46.029]],[\"parent/380\",[247,2.828]],[\"name/381\",[176,51.907]],[\"parent/381\",[247,2.828]],[\"name/382\",[256,57.016]],[\"parent/382\",[247,2.828]],[\"name/383\",[208,51.907]],[\"parent/383\",[247,2.828]],[\"name/384\",[257,57.016]],[\"parent/384\",[247,2.828]],[\"name/385\",[258,57.016]],[\"parent/385\",[247,2.828]],[\"name/386\",[193,48.543]],[\"parent/386\",[247,2.828]],[\"name/387\",[8,26.893]],[\"parent/387\",[247,2.828]],[\"name/388\",[259,57.016]],[\"parent/388\",[]],[\"name/389\",[260,57.016]],[\"parent/389\",[]],[\"name/390\",[261,57.016]],[\"parent/390\",[]],[\"name/391\",[262,57.016]],[\"parent/391\",[]],[\"name/392\",[263,57.016]],[\"parent/392\",[]],[\"name/393\",[264,57.016]],[\"parent/393\",[]],[\"name/394\",[265,42.352]],[\"parent/394\",[]],[\"name/395\",[266,57.016]],[\"parent/395\",[265,3.942]],[\"name/396\",[267,57.016]],[\"parent/396\",[265,3.942]],[\"name/397\",[268,57.016]],[\"parent/397\",[265,3.942]],[\"name/398\",[31,51.907]],[\"parent/398\",[265,3.942]],[\"name/399\",[248,44.023]],[\"parent/399\",[265,3.942]],[\"name/400\",[269,40.921]],[\"parent/400\",[]],[\"name/401\",[46,42.352]],[\"parent/401\",[269,3.808]],[\"name/402\",[248,44.023]],[\"parent/402\",[269,3.808]],[\"name/403\",[115,42.352]],[\"parent/403\",[269,3.808]],[\"name/404\",[251,44.023]],[\"parent/404\",[269,3.808]],[\"name/405\",[270,51.907]],[\"parent/405\",[269,3.808]],[\"name/406\",[253,48.543]],[\"parent/406\",[269,3.808]],[\"name/407\",[271,36.647]],[\"parent/407\",[]],[\"name/408\",[46,42.352]],[\"parent/408\",[271,3.411]],[\"name/409\",[248,44.023]],[\"parent/409\",[271,3.411]],[\"name/410\",[249,51.907]],[\"parent/410\",[271,3.411]],[\"name/411\",[272,57.016]],[\"parent/411\",[271,3.411]],[\"name/412\",[115,42.352]],[\"parent/412\",[271,3.411]],[\"name/413\",[251,44.023]],[\"parent/413\",[271,3.411]],[\"name/414\",[270,51.907]],[\"parent/414\",[271,3.411]],[\"name/415\",[273,51.907]],[\"parent/415\",[271,3.411]],[\"name/416\",[253,48.543]],[\"parent/416\",[271,3.411]],[\"name/417\",[212,51.907]],[\"parent/417\",[271,3.411]],[\"name/418\",[274,40.921]],[\"parent/418\",[]],[\"name/419\",[46,42.352]],[\"parent/419\",[274,3.808]],[\"name/420\",[248,44.023]],[\"parent/420\",[274,3.808]],[\"name/421\",[275,57.016]],[\"parent/421\",[274,3.808]],[\"name/422\",[273,51.907]],[\"parent/422\",[274,3.808]],[\"name/423\",[115,42.352]],[\"parent/423\",[274,3.808]],[\"name/424\",[251,44.023]],[\"parent/424\",[274,3.808]],[\"name/425\",[276,57.016]],[\"parent/425\",[]],[\"name/426\",[277,38.557]],[\"parent/426\",[]],[\"name/427\",[46,42.352]],[\"parent/427\",[277,3.588]],[\"name/428\",[14,46.029]],[\"parent/428\",[277,3.588]],[\"name/429\",[15,46.029]],[\"parent/429\",[277,3.588]],[\"name/430\",[278,57.016]],[\"parent/430\",[277,3.588]],[\"name/431\",[7,29.083]],[\"parent/431\",[277,3.588]],[\"name/432\",[279,57.016]],[\"parent/432\",[280,4.831]],[\"name/433\",[281,57.016]],[\"parent/433\",[280,4.831]],[\"name/434\",[282,57.016]],[\"parent/434\",[277,3.588]],[\"name/435\",[115,42.352]],[\"parent/435\",[277,3.588]],[\"name/436\",[251,44.023]],[\"parent/436\",[277,3.588]],[\"name/437\",[4,35.813]],[\"parent/437\",[]],[\"name/438\",[14,46.029]],[\"parent/438\",[4,3.333]],[\"name/439\",[15,46.029]],[\"parent/439\",[4,3.333]],[\"name/440\",[16,48.543]],[\"parent/440\",[4,3.333]],[\"name/441\",[17,48.543]],[\"parent/441\",[4,3.333]],[\"name/442\",[18,48.543]],[\"parent/442\",[4,3.333]],[\"name/443\",[25,51.907]],[\"parent/443\",[4,3.333]],[\"name/444\",[10,46.029]],[\"parent/444\",[4,3.333]],[\"name/445\",[283,57.016]],[\"parent/445\",[4,3.333]],[\"name/446\",[284,57.016]],[\"parent/446\",[4,3.333]],[\"name/447\",[285,57.016]],[\"parent/447\",[4,3.333]]],\"invertedIndex\":[[\"__type\",{\"_index\":7,\"name\":{\"7\":{},\"13\":{},\"15\":{},\"17\":{},\"19\":{},\"21\":{},\"23\":{},\"25\":{},\"27\":{},\"29\":{},\"40\":{},\"42\":{},\"44\":{},\"96\":{},\"98\":{},\"117\":{},\"173\":{},\"178\":{},\"184\":{},\"190\":{},\"195\":{},\"301\":{},\"304\":{},\"431\":{}},\"parent\":{}}],[\"adapter\",{\"_index\":159,\"name\":{\"193\":{}},\"parent\":{}}],[\"age\",{\"_index\":254,\"name\":{\"377\":{}},\"parent\":{}}],[\"agent\",{\"_index\":143,\"name\":{\"168\":{}},\"parent\":{}}],[\"all\",{\"_index\":20,\"name\":{\"28\":{}},\"parent\":{}}],[\"analyze\",{\"_index\":27,\"name\":{\"36\":{}},\"parent\":{}}],[\"annotations\",{\"_index\":253,\"name\":{\"376\":{},\"406\":{},\"416\":{}},\"parent\":{}}],[\"antispoof\",{\"_index\":138,\"name\":{\"161\":{},\"281\":{}},\"parent\":{}}],[\"anycanvas\",{\"_index\":181,\"name\":{\"221\":{}},\"parent\":{}}],[\"anyimage\",{\"_index\":182,\"name\":{\"222\":{}},\"parent\":{}}],[\"anyvideo\",{\"_index\":183,\"name\":{\"223\":{}},\"parent\":{}}],[\"array\",{\"_index\":58,\"name\":{\"72\":{}},\"parent\":{}}],[\"arraysync\",{\"_index\":59,\"name\":{\"73\":{}},\"parent\":{}}],[\"async\",{\"_index\":240,\"name\":{\"352\":{}},\"parent\":{}}],[\"backend\",{\"_index\":153,\"name\":{\"180\":{},\"186\":{},\"192\":{},\"349\":{}},\"parent\":{}}],[\"backends\",{\"_index\":144,\"name\":{\"169\":{}},\"parent\":{}}],[\"backendtype\",{\"_index\":236,\"name\":{\"346\":{}},\"parent\":{}}],[\"blazepose\",{\"_index\":121,\"name\":{\"143\":{}},\"parent\":{}}],[\"blazeposedetect\",{\"_index\":120,\"name\":{\"142\":{}},\"parent\":{}}],[\"blur\",{\"_index\":217,\"name\":{\"319\":{},\"334\":{}},\"parent\":{}}],[\"body\",{\"_index\":15,\"name\":{\"18\":{},\"362\":{},\"429\":{},\"439\":{}},\"parent\":{}}],[\"bodyannotation\",{\"_index\":179,\"name\":{\"217\":{}},\"parent\":{}}],[\"bodyannotationblazepose\",{\"_index\":263,\"name\":{\"392\":{}},\"parent\":{}}],[\"bodyannotationefficientpose\",{\"_index\":264,\"name\":{\"393\":{}},\"parent\":{}}],[\"bodyconfig\",{\"_index\":210,\"name\":{\"287\":{}},\"parent\":{\"288\":{},\"289\":{},\"290\":{},\"291\":{},\"292\":{},\"293\":{}}}],[\"bodygesture\",{\"_index\":168,\"name\":{\"205\":{}},\"parent\":{}}],[\"bodykeypoint\",{\"_index\":265,\"name\":{\"394\":{}},\"parent\":{\"395\":{},\"396\":{},\"397\":{},\"398\":{},\"399\":{}}}],[\"bodylandmark\",{\"_index\":178,\"name\":{\"216\":{}},\"parent\":{}}],[\"bodylandmarkblazepose\",{\"_index\":262,\"name\":{\"391\":{}},\"parent\":{}}],[\"bodylandmarkefficientnet\",{\"_index\":261,\"name\":{\"390\":{}},\"parent\":{}}],[\"bodylandmarkmovenet\",{\"_index\":260,\"name\":{\"389\":{}},\"parent\":{}}],[\"bodylandmarkposenet\",{\"_index\":259,\"name\":{\"388\":{}},\"parent\":{}}],[\"bodyresult\",{\"_index\":269,\"name\":{\"400\":{}},\"parent\":{\"401\":{},\"402\":{},\"403\":{},\"404\":{},\"405\":{},\"406\":{}}}],[\"box\",{\"_index\":115,\"name\":{\"136\":{},\"372\":{},\"403\":{},\"412\":{},\"423\":{},\"435\":{}},\"parent\":{}}],[\"boxraw\",{\"_index\":251,\"name\":{\"373\":{},\"404\":{},\"413\":{},\"424\":{},\"436\":{}},\"parent\":{}}],[\"boxscore\",{\"_index\":249,\"name\":{\"370\":{},\"410\":{}},\"parent\":{}}],[\"brightness\",{\"_index\":223,\"name\":{\"331\":{}},\"parent\":{}}],[\"browser\",{\"_index\":139,\"name\":{\"164\":{}},\"parent\":{}}],[\"buffer\",{\"_index\":56,\"name\":{\"70\":{}},\"parent\":{}}],[\"buffersync\",{\"_index\":57,\"name\":{\"71\":{}},\"parent\":{}}],[\"bytes\",{\"_index\":63,\"name\":{\"77\":{}},\"parent\":{}}],[\"cachemodels\",{\"_index\":242,\"name\":{\"355\":{}},\"parent\":{}}],[\"cachesensitivity\",{\"_index\":243,\"name\":{\"356\":{}},\"parent\":{}}],[\"canvas\",{\"_index\":10,\"name\":{\"9\":{},\"14\":{},\"199\":{},\"444\":{}},\"parent\":{}}],[\"centernet\",{\"_index\":122,\"name\":{\"144\":{}},\"parent\":{}}],[\"class\",{\"_index\":275,\"name\":{\"421\":{}},\"parent\":{}}],[\"clone\",{\"_index\":68,\"name\":{\"82\":{}},\"parent\":{}}],[\"color\",{\"_index\":96,\"name\":{\"118\":{}},\"parent\":{}}],[\"compare\",{\"_index\":37,\"name\":{\"49\":{}},\"parent\":{}}],[\"config\",{\"_index\":3,\"name\":{\"3\":{},\"348\":{}},\"parent\":{\"349\":{},\"350\":{},\"351\":{},\"352\":{},\"353\":{},\"354\":{},\"355\":{},\"356\":{},\"357\":{},\"358\":{},\"359\":{},\"360\":{},\"361\":{},\"362\":{},\"363\":{},\"364\":{},\"365\":{}}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{},\"59\":{},\"88\":{},\"139\":{},\"163\":{}},\"parent\":{}}],[\"contrast\",{\"_index\":224,\"name\":{\"332\":{}},\"parent\":{}}],[\"cpu\",{\"_index\":160,\"name\":{\"194\":{}},\"parent\":{}}],[\"data\",{\"_index\":60,\"name\":{\"74\":{}},\"parent\":{}}],[\"dataid\",{\"_index\":47,\"name\":{\"61\":{}},\"parent\":{}}],[\"datasync\",{\"_index\":62,\"name\":{\"76\":{}},\"parent\":{}}],[\"datatogpu\",{\"_index\":61,\"name\":{\"75\":{}},\"parent\":{}}],[\"deallocate\",{\"_index\":244,\"name\":{\"357\":{}},\"parent\":{}}],[\"debug\",{\"_index\":239,\"name\":{\"351\":{}},\"parent\":{}}],[\"default\",{\"_index\":45,\"name\":{\"57\":{}},\"parent\":{}}],[\"defaults\",{\"_index\":246,\"name\":{\"366\":{}},\"parent\":{}}],[\"description\",{\"_index\":209,\"name\":{\"279\":{}},\"parent\":{}}],[\"descriptor\",{\"_index\":114,\"name\":{\"135\":{}},\"parent\":{}}],[\"detect\",{\"_index\":44,\"name\":{\"56\":{}},\"parent\":{}}],[\"detector\",{\"_index\":206,\"name\":{\"276\":{},\"300\":{}},\"parent\":{}}],[\"dispose\",{\"_index\":64,\"name\":{\"78\":{},\"107\":{}},\"parent\":{}}],[\"disposeintermediatetensors\",{\"_index\":87,\"name\":{\"106\":{}},\"parent\":{}}],[\"distance\",{\"_index\":31,\"name\":{\"41\":{},\"398\":{}},\"parent\":{}}],[\"draw\",{\"_index\":13,\"name\":{\"12\":{}},\"parent\":{}}],[\"drawboxes\",{\"_index\":108,\"name\":{\"129\":{}},\"parent\":{}}],[\"drawgaze\",{\"_index\":110,\"name\":{\"131\":{}},\"parent\":{}}],[\"drawgestures\",{\"_index\":107,\"name\":{\"128\":{}},\"parent\":{}}],[\"drawlabels\",{\"_index\":106,\"name\":{\"127\":{}},\"parent\":{}}],[\"drawoptions\",{\"_index\":95,\"name\":{\"116\":{}},\"parent\":{\"117\":{}}}],[\"drawoptions.__type\",{\"_index\":97,\"name\":{},\"parent\":{\"118\":{},\"119\":{},\"120\":{},\"121\":{},\"122\":{},\"123\":{},\"124\":{},\"125\":{},\"126\":{},\"127\":{},\"128\":{},\"129\":{},\"130\":{},\"131\":{},\"132\":{},\"133\":{},\"134\":{}}}],[\"drawpoints\",{\"_index\":105,\"name\":{\"126\":{}},\"parent\":{}}],[\"drawpolygons\",{\"_index\":109,\"name\":{\"130\":{}},\"parent\":{}}],[\"dtype\",{\"_index\":50,\"name\":{\"64\":{}},\"parent\":{}}],[\"efficientpose\",{\"_index\":123,\"name\":{\"145\":{}},\"parent\":{}}],[\"embedding\",{\"_index\":256,\"name\":{\"382\":{}},\"parent\":{}}],[\"emit\",{\"_index\":40,\"name\":{\"52\":{}},\"parent\":{}}],[\"emotion\",{\"_index\":125,\"name\":{\"147\":{},\"208\":{},\"280\":{},\"380\":{}},\"parent\":{}}],[\"enabled\",{\"_index\":188,\"name\":{\"228\":{},\"239\":{},\"244\":{},\"249\":{},\"255\":{},\"261\":{},\"266\":{},\"271\":{},\"283\":{},\"290\":{},\"306\":{},\"314\":{},\"320\":{},\"325\":{},\"345\":{}},\"parent\":{}}],[\"enhance\",{\"_index\":36,\"name\":{\"48\":{}},\"parent\":{}}],[\"env\",{\"_index\":12,\"name\":{\"11\":{},\"162\":{},\"219\":{}},\"parent\":{\"163\":{},\"164\":{},\"165\":{},\"166\":{},\"167\":{},\"168\":{},\"169\":{},\"170\":{},\"171\":{},\"172\":{},\"173\":{},\"175\":{},\"176\":{},\"177\":{},\"178\":{},\"183\":{},\"184\":{},\"189\":{},\"190\":{},\"194\":{},\"195\":{},\"198\":{},\"199\":{},\"200\":{},\"201\":{},\"202\":{},\"203\":{}}}],[\"env.__type\",{\"_index\":148,\"name\":{},\"parent\":{\"174\":{},\"179\":{},\"180\":{},\"181\":{},\"182\":{},\"185\":{},\"186\":{},\"187\":{},\"188\":{},\"191\":{},\"192\":{},\"193\":{},\"196\":{},\"197\":{}}}],[\"equalization\",{\"_index\":219,\"name\":{\"326\":{}},\"parent\":{}}],[\"error\",{\"_index\":285,\"name\":{\"447\":{}},\"parent\":{}}],[\"events\",{\"_index\":22,\"name\":{\"31\":{},\"220\":{}},\"parent\":{}}],[\"execute\",{\"_index\":84,\"name\":{\"103\":{}},\"parent\":{}}],[\"executeasync\",{\"_index\":85,\"name\":{\"104\":{}},\"parent\":{}}],[\"externalcanvas\",{\"_index\":185,\"name\":{\"225\":{}},\"parent\":{}}],[\"face\",{\"_index\":14,\"name\":{\"16\":{},\"361\":{},\"428\":{},\"438\":{}},\"parent\":{}}],[\"faceantispoofconfig\",{\"_index\":203,\"name\":{\"265\":{}},\"parent\":{\"266\":{},\"267\":{},\"268\":{},\"269\":{}}}],[\"faceconfig\",{\"_index\":205,\"name\":{\"275\":{}},\"parent\":{\"276\":{},\"277\":{},\"278\":{},\"279\":{},\"280\":{},\"281\":{},\"282\":{},\"283\":{},\"284\":{},\"285\":{},\"286\":{}}}],[\"facedescriptionconfig\",{\"_index\":201,\"name\":{\"253\":{}},\"parent\":{\"254\":{},\"255\":{},\"256\":{},\"257\":{},\"258\":{}}}],[\"facedetect\",{\"_index\":126,\"name\":{\"148\":{}},\"parent\":{}}],[\"facedetectorconfig\",{\"_index\":192,\"name\":{\"232\":{}},\"parent\":{\"233\":{},\"234\":{},\"235\":{},\"236\":{},\"237\":{},\"238\":{},\"239\":{},\"240\":{},\"241\":{},\"242\":{}}}],[\"faceemotionconfig\",{\"_index\":202,\"name\":{\"259\":{}},\"parent\":{\"260\":{},\"261\":{},\"262\":{},\"263\":{},\"264\":{}}}],[\"facegesture\",{\"_index\":167,\"name\":{\"204\":{}},\"parent\":{}}],[\"faceiris\",{\"_index\":127,\"name\":{\"149\":{}},\"parent\":{}}],[\"faceirisconfig\",{\"_index\":200,\"name\":{\"248\":{}},\"parent\":{\"249\":{},\"250\":{},\"251\":{},\"252\":{}}}],[\"facelandmark\",{\"_index\":177,\"name\":{\"215\":{}},\"parent\":{}}],[\"facelivenessconfig\",{\"_index\":204,\"name\":{\"270\":{}},\"parent\":{\"271\":{},\"272\":{},\"273\":{},\"274\":{}}}],[\"facemesh\",{\"_index\":128,\"name\":{\"150\":{}},\"parent\":{}}],[\"facemeshconfig\",{\"_index\":199,\"name\":{\"243\":{}},\"parent\":{\"244\":{},\"245\":{},\"246\":{},\"247\":{}}}],[\"faceres\",{\"_index\":129,\"name\":{\"151\":{}},\"parent\":{}}],[\"faceresult\",{\"_index\":247,\"name\":{\"367\":{}},\"parent\":{\"368\":{},\"369\":{},\"370\":{},\"371\":{},\"372\":{},\"373\":{},\"374\":{},\"375\":{},\"376\":{},\"377\":{},\"378\":{},\"379\":{},\"380\":{},\"381\":{},\"382\":{},\"383\":{},\"384\":{},\"385\":{},\"386\":{},\"387\":{}}}],[\"facescore\",{\"_index\":250,\"name\":{\"371\":{}},\"parent\":{}}],[\"facetriangulation\",{\"_index\":23,\"name\":{\"32\":{}},\"parent\":{}}],[\"faceuvmap\",{\"_index\":24,\"name\":{\"33\":{}},\"parent\":{}}],[\"fillpolygons\",{\"_index\":111,\"name\":{\"132\":{}},\"parent\":{}}],[\"filter\",{\"_index\":146,\"name\":{\"171\":{},\"359\":{}},\"parent\":{}}],[\"filterconfig\",{\"_index\":218,\"name\":{\"324\":{}},\"parent\":{\"325\":{},\"326\":{},\"327\":{},\"328\":{},\"329\":{},\"330\":{},\"331\":{},\"332\":{},\"333\":{},\"334\":{},\"335\":{},\"336\":{},\"337\":{},\"338\":{},\"339\":{},\"340\":{},\"341\":{},\"342\":{},\"343\":{}}}],[\"finger\",{\"_index\":171,\"name\":{\"209\":{}},\"parent\":{}}],[\"fingercurl\",{\"_index\":172,\"name\":{\"210\":{}},\"parent\":{}}],[\"fingerdirection\",{\"_index\":173,\"name\":{\"211\":{}},\"parent\":{}}],[\"fingerscore\",{\"_index\":272,\"name\":{\"411\":{}},\"parent\":{}}],[\"flags\",{\"_index\":162,\"name\":{\"197\":{}},\"parent\":{}}],[\"flip\",{\"_index\":222,\"name\":{\"330\":{}},\"parent\":{}}],[\"font\",{\"_index\":100,\"name\":{\"121\":{}},\"parent\":{}}],[\"gear\",{\"_index\":119,\"name\":{\"141\":{}},\"parent\":{}}],[\"gender\",{\"_index\":175,\"name\":{\"213\":{},\"378\":{}},\"parent\":{}}],[\"genderscore\",{\"_index\":255,\"name\":{\"379\":{}},\"parent\":{}}],[\"genericconfig\",{\"_index\":187,\"name\":{\"227\":{}},\"parent\":{\"228\":{},\"229\":{},\"230\":{},\"231\":{}}}],[\"gesture\",{\"_index\":17,\"name\":{\"22\":{},\"360\":{},\"441\":{}},\"parent\":{}}],[\"gestureconfig\",{\"_index\":235,\"name\":{\"344\":{}},\"parent\":{\"345\":{}}}],[\"gestureresult\",{\"_index\":276,\"name\":{\"425\":{}},\"parent\":{}}],[\"gestures\",{\"_index\":282,\"name\":{\"434\":{}},\"parent\":{}}],[\"getintermediatetensors\",{\"_index\":86,\"name\":{\"105\":{}},\"parent\":{}}],[\"gl\",{\"_index\":26,\"name\":{\"35\":{}},\"parent\":{}}],[\"graphmodel\",{\"_index\":72,\"name\":{\"87\":{}},\"parent\":{\"88\":{},\"89\":{},\"90\":{},\"91\":{},\"92\":{},\"93\":{},\"94\":{},\"95\":{},\"96\":{},\"97\":{},\"98\":{},\"99\":{},\"100\":{},\"101\":{},\"102\":{},\"103\":{},\"104\":{},\"105\":{},\"106\":{},\"107\":{}}}],[\"hand\",{\"_index\":16,\"name\":{\"20\":{},\"363\":{},\"440\":{}},\"parent\":{}}],[\"handconfig\",{\"_index\":211,\"name\":{\"294\":{}},\"parent\":{\"295\":{},\"296\":{},\"297\":{},\"298\":{},\"299\":{},\"300\":{},\"301\":{},\"303\":{},\"304\":{},\"306\":{},\"307\":{},\"308\":{},\"309\":{}}}],[\"handconfig.__type\",{\"_index\":213,\"name\":{},\"parent\":{\"302\":{},\"305\":{}}}],[\"handgesture\",{\"_index\":169,\"name\":{\"206\":{}},\"parent\":{}}],[\"handpose\",{\"_index\":131,\"name\":{\"153\":{}},\"parent\":{}}],[\"handresult\",{\"_index\":271,\"name\":{\"407\":{}},\"parent\":{\"408\":{},\"409\":{},\"410\":{},\"411\":{},\"412\":{},\"413\":{},\"414\":{},\"415\":{},\"416\":{},\"417\":{}}}],[\"hands\",{\"_index\":278,\"name\":{\"430\":{}},\"parent\":{}}],[\"handskeleton\",{\"_index\":132,\"name\":{\"154\":{}},\"parent\":{}}],[\"handtrack\",{\"_index\":133,\"name\":{\"155\":{}},\"parent\":{}}],[\"handtype\",{\"_index\":174,\"name\":{\"212\":{}},\"parent\":{}}],[\"height\",{\"_index\":221,\"name\":{\"328\":{}},\"parent\":{}}],[\"hue\",{\"_index\":227,\"name\":{\"336\":{}},\"parent\":{}}],[\"human\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{\"1\":{},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{},\"50\":{},\"51\":{},\"52\":{},\"53\":{},\"54\":{},\"55\":{},\"56\":{}}}],[\"human.__type\",{\"_index\":9,\"name\":{},\"parent\":{\"8\":{},\"9\":{},\"14\":{},\"15\":{},\"16\":{},\"17\":{},\"18\":{},\"19\":{},\"20\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{},\"25\":{},\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{}}}],[\"id\",{\"_index\":46,\"name\":{\"60\":{},\"368\":{},\"401\":{},\"408\":{},\"419\":{},\"427\":{}},\"parent\":{}}],[\"image\",{\"_index\":34,\"name\":{\"46\":{},\"200\":{}},\"parent\":{}}],[\"imagedata\",{\"_index\":164,\"name\":{\"201\":{}},\"parent\":{}}],[\"imageobjects\",{\"_index\":184,\"name\":{\"224\":{}},\"parent\":{}}],[\"init\",{\"_index\":38,\"name\":{\"50\":{}},\"parent\":{}}],[\"initial\",{\"_index\":145,\"name\":{\"170\":{}},\"parent\":{}}],[\"input\",{\"_index\":186,\"name\":{\"226\":{}},\"parent\":{}}],[\"inputnodes\",{\"_index\":74,\"name\":{\"90\":{}},\"parent\":{}}],[\"inputs\",{\"_index\":76,\"name\":{\"92\":{}},\"parent\":{}}],[\"iouthreshold\",{\"_index\":196,\"name\":{\"236\":{},\"297\":{},\"312\":{}},\"parent\":{}}],[\"iris\",{\"_index\":208,\"name\":{\"278\":{},\"383\":{}},\"parent\":{}}],[\"irisgesture\",{\"_index\":170,\"name\":{\"207\":{}},\"parent\":{}}],[\"isdisposed\",{\"_index\":65,\"name\":{\"79\":{}},\"parent\":{}}],[\"kept\",{\"_index\":52,\"name\":{\"66\":{}},\"parent\":{}}],[\"kernels\",{\"_index\":163,\"name\":{\"198\":{}},\"parent\":{}}],[\"keypoints\",{\"_index\":270,\"name\":{\"405\":{},\"414\":{}},\"parent\":{}}],[\"kodachrome\",{\"_index\":231,\"name\":{\"340\":{}},\"parent\":{}}],[\"label\",{\"_index\":273,\"name\":{\"415\":{},\"422\":{}},\"parent\":{}}],[\"labelcolor\",{\"_index\":98,\"name\":{\"119\":{}},\"parent\":{}}],[\"landmarks\",{\"_index\":212,\"name\":{\"299\":{},\"417\":{}},\"parent\":{}}],[\"left\",{\"_index\":279,\"name\":{\"432\":{}},\"parent\":{}}],[\"lineheight\",{\"_index\":101,\"name\":{\"122\":{}},\"parent\":{}}],[\"linewidth\",{\"_index\":102,\"name\":{\"123\":{}},\"parent\":{}}],[\"live\",{\"_index\":258,\"name\":{\"385\":{}},\"parent\":{}}],[\"liveness\",{\"_index\":134,\"name\":{\"156\":{},\"282\":{}},\"parent\":{}}],[\"load\",{\"_index\":39,\"name\":{\"51\":{},\"99\":{}},\"parent\":{}}],[\"loadsync\",{\"_index\":81,\"name\":{\"100\":{}},\"parent\":{}}],[\"mask\",{\"_index\":197,\"name\":{\"237\":{}},\"parent\":{}}],[\"match\",{\"_index\":32,\"name\":{\"43\":{}},\"parent\":{}}],[\"maxdetected\",{\"_index\":194,\"name\":{\"234\":{},\"288\":{},\"298\":{},\"313\":{}},\"parent\":{}}],[\"mesh\",{\"_index\":207,\"name\":{\"277\":{},\"374\":{}},\"parent\":{}}],[\"meshraw\",{\"_index\":252,\"name\":{\"375\":{}},\"parent\":{}}],[\"metadata\",{\"_index\":79,\"name\":{\"95\":{}},\"parent\":{}}],[\"minconfidence\",{\"_index\":195,\"name\":{\"235\":{},\"254\":{},\"260\":{},\"289\":{},\"296\":{},\"311\":{}},\"parent\":{}}],[\"mobilefacenet\",{\"_index\":124,\"name\":{\"146\":{}},\"parent\":{}}],[\"model\",{\"_index\":161,\"name\":{\"196\":{}},\"parent\":{}}],[\"modelbasepath\",{\"_index\":241,\"name\":{\"354\":{}},\"parent\":{}}],[\"modelpath\",{\"_index\":189,\"name\":{\"229\":{},\"240\":{},\"245\":{},\"250\":{},\"256\":{},\"262\":{},\"267\":{},\"272\":{},\"284\":{},\"291\":{},\"302\":{},\"305\":{},\"307\":{},\"315\":{},\"321\":{}},\"parent\":{}}],[\"models\",{\"_index\":117,\"name\":{\"138\":{}},\"parent\":{\"139\":{},\"140\":{},\"141\":{},\"142\":{},\"143\":{},\"144\":{},\"145\":{},\"146\":{},\"147\":{},\"148\":{},\"149\":{},\"150\":{},\"151\":{},\"152\":{},\"153\":{},\"154\":{},\"155\":{},\"156\":{},\"157\":{},\"158\":{},\"159\":{},\"160\":{},\"161\":{}}}],[\"modelsignature\",{\"_index\":80,\"name\":{\"97\":{}},\"parent\":{}}],[\"modelversion\",{\"_index\":73,\"name\":{\"89\":{}},\"parent\":{}}],[\"movenet\",{\"_index\":135,\"name\":{\"157\":{}},\"parent\":{}}],[\"multithread\",{\"_index\":155,\"name\":{\"182\":{}},\"parent\":{}}],[\"nanodet\",{\"_index\":136,\"name\":{\"158\":{}},\"parent\":{}}],[\"negative\",{\"_index\":228,\"name\":{\"337\":{}},\"parent\":{}}],[\"next\",{\"_index\":41,\"name\":{\"53\":{}},\"parent\":{}}],[\"node\",{\"_index\":140,\"name\":{\"165\":{}},\"parent\":{}}],[\"now\",{\"_index\":33,\"name\":{\"45\":{}},\"parent\":{}}],[\"object\",{\"_index\":18,\"name\":{\"24\":{},\"364\":{},\"442\":{}},\"parent\":{}}],[\"objectconfig\",{\"_index\":215,\"name\":{\"310\":{}},\"parent\":{\"311\":{},\"312\":{},\"313\":{},\"314\":{},\"315\":{},\"316\":{},\"317\":{}}}],[\"objectresult\",{\"_index\":274,\"name\":{\"418\":{}},\"parent\":{\"419\":{},\"420\":{},\"421\":{},\"422\":{},\"423\":{},\"424\":{}}}],[\"objecttype\",{\"_index\":180,\"name\":{\"218\":{}},\"parent\":{}}],[\"offscreen\",{\"_index\":149,\"name\":{\"175\":{}},\"parent\":{}}],[\"options\",{\"_index\":21,\"name\":{\"30\":{}},\"parent\":{}}],[\"outputnodes\",{\"_index\":75,\"name\":{\"91\":{}},\"parent\":{}}],[\"outputs\",{\"_index\":77,\"name\":{\"93\":{}},\"parent\":{}}],[\"part\",{\"_index\":266,\"name\":{\"395\":{}},\"parent\":{}}],[\"perfadd\",{\"_index\":150,\"name\":{\"176\":{}},\"parent\":{}}],[\"performance\",{\"_index\":25,\"name\":{\"34\":{},\"443\":{}},\"parent\":{}}],[\"person\",{\"_index\":19,\"name\":{\"26\":{}},\"parent\":{}}],[\"personresult\",{\"_index\":277,\"name\":{\"426\":{}},\"parent\":{\"427\":{},\"428\":{},\"429\":{},\"430\":{},\"431\":{},\"434\":{},\"435\":{},\"436\":{}}}],[\"personresult.__type\",{\"_index\":280,\"name\":{},\"parent\":{\"432\":{},\"433\":{}}}],[\"persons\",{\"_index\":284,\"name\":{\"446\":{}},\"parent\":{}}],[\"pixelate\",{\"_index\":234,\"name\":{\"343\":{}},\"parent\":{}}],[\"platform\",{\"_index\":142,\"name\":{\"167\":{}},\"parent\":{}}],[\"point\",{\"_index\":116,\"name\":{\"137\":{}},\"parent\":{}}],[\"pointsize\",{\"_index\":103,\"name\":{\"124\":{}},\"parent\":{}}],[\"polaroid\",{\"_index\":233,\"name\":{\"342\":{}},\"parent\":{}}],[\"posenet\",{\"_index\":137,\"name\":{\"159\":{}},\"parent\":{}}],[\"position\",{\"_index\":267,\"name\":{\"396\":{}},\"parent\":{}}],[\"positionraw\",{\"_index\":268,\"name\":{\"397\":{}},\"parent\":{}}],[\"predict\",{\"_index\":83,\"name\":{\"102\":{}},\"parent\":{}}],[\"print\",{\"_index\":67,\"name\":{\"81\":{}},\"parent\":{}}],[\"process\",{\"_index\":6,\"name\":{\"6\":{}},\"parent\":{}}],[\"profile\",{\"_index\":43,\"name\":{\"55\":{}},\"parent\":{}}],[\"r0\",{\"_index\":88,\"name\":{\"109\":{}},\"parent\":{}}],[\"r1\",{\"_index\":89,\"name\":{\"110\":{}},\"parent\":{}}],[\"r2\",{\"_index\":90,\"name\":{\"111\":{}},\"parent\":{}}],[\"r3\",{\"_index\":91,\"name\":{\"112\":{}},\"parent\":{}}],[\"r4\",{\"_index\":92,\"name\":{\"113\":{}},\"parent\":{}}],[\"r5\",{\"_index\":93,\"name\":{\"114\":{}},\"parent\":{}}],[\"r6\",{\"_index\":94,\"name\":{\"115\":{}},\"parent\":{}}],[\"race\",{\"_index\":176,\"name\":{\"214\":{},\"381\":{}},\"parent\":{}}],[\"rank\",{\"_index\":55,\"name\":{\"69\":{},\"108\":{}},\"parent\":{\"109\":{},\"110\":{},\"111\":{},\"112\":{},\"113\":{},\"114\":{},\"115\":{}}}],[\"ranktype\",{\"_index\":51,\"name\":{\"65\":{}},\"parent\":{}}],[\"real\",{\"_index\":257,\"name\":{\"384\":{}},\"parent\":{}}],[\"renderer\",{\"_index\":157,\"name\":{\"188\":{}},\"parent\":{}}],[\"reset\",{\"_index\":28,\"name\":{\"37\":{}},\"parent\":{}}],[\"result\",{\"_index\":4,\"name\":{\"4\":{},\"437\":{}},\"parent\":{\"438\":{},\"439\":{},\"440\":{},\"441\":{},\"442\":{},\"443\":{},\"444\":{},\"445\":{},\"446\":{},\"447\":{}}}],[\"return\",{\"_index\":198,\"name\":{\"238\":{},\"329\":{}},\"parent\":{}}],[\"right\",{\"_index\":281,\"name\":{\"433\":{}},\"parent\":{}}],[\"rotation\",{\"_index\":193,\"name\":{\"233\":{},\"295\":{},\"386\":{}},\"parent\":{}}],[\"roundrect\",{\"_index\":104,\"name\":{\"125\":{}},\"parent\":{}}],[\"saturation\",{\"_index\":226,\"name\":{\"335\":{}},\"parent\":{}}],[\"save\",{\"_index\":82,\"name\":{\"101\":{}},\"parent\":{}}],[\"scopeid\",{\"_index\":53,\"name\":{\"67\":{}},\"parent\":{}}],[\"score\",{\"_index\":248,\"name\":{\"369\":{},\"399\":{},\"402\":{},\"409\":{},\"420\":{}},\"parent\":{}}],[\"segmentation\",{\"_index\":35,\"name\":{\"47\":{},\"160\":{},\"365\":{}},\"parent\":{}}],[\"segmentationconfig\",{\"_index\":216,\"name\":{\"318\":{}},\"parent\":{\"319\":{},\"320\":{},\"321\":{},\"322\":{},\"323\":{}}}],[\"sepia\",{\"_index\":229,\"name\":{\"338\":{}},\"parent\":{}}],[\"shadowcolor\",{\"_index\":99,\"name\":{\"120\":{}},\"parent\":{}}],[\"shape\",{\"_index\":48,\"name\":{\"62\":{}},\"parent\":{}}],[\"sharpness\",{\"_index\":225,\"name\":{\"333\":{}},\"parent\":{}}],[\"simd\",{\"_index\":154,\"name\":{\"181\":{}},\"parent\":{}}],[\"similarity\",{\"_index\":30,\"name\":{\"39\":{}},\"parent\":{}}],[\"size\",{\"_index\":49,\"name\":{\"63\":{}},\"parent\":{}}],[\"skeleton\",{\"_index\":214,\"name\":{\"303\":{}},\"parent\":{}}],[\"skipallowed\",{\"_index\":245,\"name\":{\"358\":{}},\"parent\":{}}],[\"skipframes\",{\"_index\":190,\"name\":{\"230\":{},\"241\":{},\"246\":{},\"251\":{},\"257\":{},\"263\":{},\"268\":{},\"273\":{},\"285\":{},\"292\":{},\"308\":{},\"316\":{},\"322\":{}},\"parent\":{}}],[\"skiptime\",{\"_index\":191,\"name\":{\"231\":{},\"242\":{},\"247\":{},\"252\":{},\"258\":{},\"264\":{},\"269\":{},\"274\":{},\"286\":{},\"293\":{},\"309\":{},\"317\":{},\"323\":{}},\"parent\":{}}],[\"ssrnetage\",{\"_index\":118,\"name\":{\"140\":{}},\"parent\":{}}],[\"ssrnetgender\",{\"_index\":130,\"name\":{\"152\":{}},\"parent\":{}}],[\"state\",{\"_index\":5,\"name\":{\"5\":{}},\"parent\":{}}],[\"strides\",{\"_index\":54,\"name\":{\"68\":{}},\"parent\":{}}],[\"supported\",{\"_index\":152,\"name\":{\"179\":{},\"185\":{},\"191\":{}},\"parent\":{}}],[\"technicolor\",{\"_index\":232,\"name\":{\"341\":{}},\"parent\":{}}],[\"tensor\",{\"_index\":8,\"name\":{\"8\":{},\"58\":{},\"85\":{},\"387\":{}},\"parent\":{\"59\":{},\"60\":{},\"61\":{},\"62\":{},\"63\":{},\"64\":{},\"65\":{},\"66\":{},\"67\":{},\"68\":{},\"69\":{},\"70\":{},\"71\":{},\"72\":{},\"73\":{},\"74\":{},\"75\":{},\"76\":{},\"77\":{},\"78\":{},\"79\":{},\"80\":{},\"81\":{},\"82\":{},\"83\":{},\"84\":{}}}],[\"tensorlike\",{\"_index\":71,\"name\":{\"86\":{}},\"parent\":{}}],[\"tf\",{\"_index\":11,\"name\":{\"10\":{}},\"parent\":{}}],[\"tfjs\",{\"_index\":147,\"name\":{\"172\":{}},\"parent\":{}}],[\"throwifdisposed\",{\"_index\":66,\"name\":{\"80\":{}},\"parent\":{}}],[\"timestamp\",{\"_index\":283,\"name\":{\"445\":{}},\"parent\":{}}],[\"tostring\",{\"_index\":69,\"name\":{\"83\":{}},\"parent\":{}}],[\"updatebackend\",{\"_index\":165,\"name\":{\"202\":{}},\"parent\":{}}],[\"updatecpu\",{\"_index\":166,\"name\":{\"203\":{}},\"parent\":{}}],[\"usecurves\",{\"_index\":113,\"name\":{\"134\":{}},\"parent\":{}}],[\"usedepth\",{\"_index\":112,\"name\":{\"133\":{}},\"parent\":{}}],[\"validate\",{\"_index\":29,\"name\":{\"38\":{}},\"parent\":{}}],[\"variable\",{\"_index\":70,\"name\":{\"84\":{}},\"parent\":{}}],[\"version\",{\"_index\":2,\"name\":{\"2\":{},\"174\":{},\"187\":{}},\"parent\":{}}],[\"vintage\",{\"_index\":230,\"name\":{\"339\":{}},\"parent\":{}}],[\"warmup\",{\"_index\":42,\"name\":{\"54\":{},\"353\":{}},\"parent\":{}}],[\"warmuptype\",{\"_index\":237,\"name\":{\"347\":{}},\"parent\":{}}],[\"wasm\",{\"_index\":151,\"name\":{\"177\":{}},\"parent\":{}}],[\"wasmpath\",{\"_index\":238,\"name\":{\"350\":{}},\"parent\":{}}],[\"webgl\",{\"_index\":156,\"name\":{\"183\":{}},\"parent\":{}}],[\"webgpu\",{\"_index\":158,\"name\":{\"189\":{}},\"parent\":{}}],[\"weights\",{\"_index\":78,\"name\":{\"94\":{}},\"parent\":{}}],[\"width\",{\"_index\":220,\"name\":{\"327\":{}},\"parent\":{}}],[\"worker\",{\"_index\":141,\"name\":{\"166\":{}},\"parent\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file +window.searchData = JSON.parse("{\"kinds\":{\"4\":\"Namespace\",\"8\":\"Enumeration\",\"16\":\"Enumeration member\",\"32\":\"Variable\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"4194304\":\"Type alias\",\"16777216\":\"Reference\"},\"rows\":[{\"id\":0,\"kind\":128,\"name\":\"Human\",\"url\":\"classes/Human.html\",\"classes\":\"tsd-kind-class\"},{\"id\":1,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Human.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":2,\"kind\":1024,\"name\":\"version\",\"url\":\"classes/Human.html#version\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":3,\"kind\":1024,\"name\":\"config\",\"url\":\"classes/Human.html#config\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":4,\"kind\":1024,\"name\":\"result\",\"url\":\"classes/Human.html#result\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":5,\"kind\":1024,\"name\":\"state\",\"url\":\"classes/Human.html#state\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":6,\"kind\":1024,\"name\":\"process\",\"url\":\"classes/Human.html#process\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":7,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-11\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":8,\"kind\":1024,\"name\":\"tensor\",\"url\":\"classes/Human.html#__type-11.tensor\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":9,\"kind\":1024,\"name\":\"canvas\",\"url\":\"classes/Human.html#__type-11.canvas-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":10,\"kind\":1024,\"name\":\"tf\",\"url\":\"classes/Human.html#tf\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":11,\"kind\":1024,\"name\":\"env\",\"url\":\"classes/Human.html#env\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":12,\"kind\":1024,\"name\":\"draw\",\"url\":\"classes/Human.html#draw\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":13,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":14,\"kind\":1024,\"name\":\"canvas\",\"url\":\"classes/Human.html#__type-1.canvas\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":15,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-4\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":16,\"kind\":1024,\"name\":\"face\",\"url\":\"classes/Human.html#__type-1.face\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":17,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-5\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":18,\"kind\":1024,\"name\":\"body\",\"url\":\"classes/Human.html#__type-1.body\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":19,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":20,\"kind\":1024,\"name\":\"hand\",\"url\":\"classes/Human.html#__type-1.hand\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":21,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-7\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":22,\"kind\":1024,\"name\":\"gesture\",\"url\":\"classes/Human.html#__type-1.gesture\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":23,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-6\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":24,\"kind\":1024,\"name\":\"object\",\"url\":\"classes/Human.html#__type-1.object\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":25,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-8\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":26,\"kind\":1024,\"name\":\"person\",\"url\":\"classes/Human.html#__type-1.person\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":27,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-9\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":28,\"kind\":1024,\"name\":\"all\",\"url\":\"classes/Human.html#__type-1.all\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":29,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-1.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":30,\"kind\":1024,\"name\":\"options\",\"url\":\"classes/Human.html#__type-1.options\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Human.__type\"},{\"id\":31,\"kind\":1024,\"name\":\"events\",\"url\":\"classes/Human.html#events\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":32,\"kind\":1024,\"name\":\"faceTriangulation\",\"url\":\"classes/Human.html#faceTriangulation\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":33,\"kind\":1024,\"name\":\"faceUVMap\",\"url\":\"classes/Human.html#faceUVMap\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":34,\"kind\":1024,\"name\":\"performance\",\"url\":\"classes/Human.html#performance\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":35,\"kind\":1024,\"name\":\"gl\",\"url\":\"classes/Human.html#gl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":36,\"kind\":2048,\"name\":\"analyze\",\"url\":\"classes/Human.html#analyze\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":37,\"kind\":2048,\"name\":\"reset\",\"url\":\"classes/Human.html#reset\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":38,\"kind\":2048,\"name\":\"validate\",\"url\":\"classes/Human.html#validate\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":39,\"kind\":1024,\"name\":\"similarity\",\"url\":\"classes/Human.html#similarity\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":40,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-12\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":41,\"kind\":1024,\"name\":\"distance\",\"url\":\"classes/Human.html#distance\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":42,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":43,\"kind\":1024,\"name\":\"match\",\"url\":\"classes/Human.html#match\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":44,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Human.html#__type-10\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":45,\"kind\":2048,\"name\":\"now\",\"url\":\"classes/Human.html#now\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":46,\"kind\":2048,\"name\":\"image\",\"url\":\"classes/Human.html#image\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":47,\"kind\":2048,\"name\":\"segmentation\",\"url\":\"classes/Human.html#segmentation\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":48,\"kind\":2048,\"name\":\"enhance\",\"url\":\"classes/Human.html#enhance\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":49,\"kind\":2048,\"name\":\"compare\",\"url\":\"classes/Human.html#compare\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":50,\"kind\":2048,\"name\":\"init\",\"url\":\"classes/Human.html#init\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":51,\"kind\":2048,\"name\":\"load\",\"url\":\"classes/Human.html#load\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":52,\"kind\":2048,\"name\":\"emit\",\"url\":\"classes/Human.html#emit\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":53,\"kind\":2048,\"name\":\"next\",\"url\":\"classes/Human.html#next\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":54,\"kind\":2048,\"name\":\"warmup\",\"url\":\"classes/Human.html#warmup\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":55,\"kind\":2048,\"name\":\"profile\",\"url\":\"classes/Human.html#profile\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":56,\"kind\":2048,\"name\":\"detect\",\"url\":\"classes/Human.html#detect\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Human\"},{\"id\":57,\"kind\":16777216,\"name\":\"default\",\"url\":\"index.html#default\",\"classes\":\"tsd-kind-reference\"},{\"id\":58,\"kind\":128,\"name\":\"Tensor\",\"url\":\"classes/Tensor.html\",\"classes\":\"tsd-kind-class tsd-has-type-parameter\"},{\"id\":59,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Tensor.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":60,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Tensor.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":61,\"kind\":1024,\"name\":\"dataId\",\"url\":\"classes/Tensor.html#dataId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":62,\"kind\":1024,\"name\":\"shape\",\"url\":\"classes/Tensor.html#shape\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":63,\"kind\":1024,\"name\":\"size\",\"url\":\"classes/Tensor.html#size\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":64,\"kind\":1024,\"name\":\"dtype\",\"url\":\"classes/Tensor.html#dtype\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":65,\"kind\":1024,\"name\":\"rankType\",\"url\":\"classes/Tensor.html#rankType\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":66,\"kind\":1024,\"name\":\"kept\",\"url\":\"classes/Tensor.html#kept\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":67,\"kind\":1024,\"name\":\"scopeId\",\"url\":\"classes/Tensor.html#scopeId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":68,\"kind\":1024,\"name\":\"strides\",\"url\":\"classes/Tensor.html#strides\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":69,\"kind\":1024,\"name\":\"rank\",\"url\":\"classes/Tensor.html#rank\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":70,\"kind\":2048,\"name\":\"buffer\",\"url\":\"classes/Tensor.html#buffer\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":71,\"kind\":2048,\"name\":\"bufferSync\",\"url\":\"classes/Tensor.html#bufferSync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":72,\"kind\":2048,\"name\":\"array\",\"url\":\"classes/Tensor.html#array\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":73,\"kind\":2048,\"name\":\"arraySync\",\"url\":\"classes/Tensor.html#arraySync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":74,\"kind\":2048,\"name\":\"data\",\"url\":\"classes/Tensor.html#data\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":75,\"kind\":2048,\"name\":\"dataToGPU\",\"url\":\"classes/Tensor.html#dataToGPU\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":76,\"kind\":2048,\"name\":\"dataSync\",\"url\":\"classes/Tensor.html#dataSync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":77,\"kind\":2048,\"name\":\"bytes\",\"url\":\"classes/Tensor.html#bytes\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":78,\"kind\":2048,\"name\":\"dispose\",\"url\":\"classes/Tensor.html#dispose\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":79,\"kind\":1024,\"name\":\"isDisposed\",\"url\":\"classes/Tensor.html#isDisposed\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":80,\"kind\":2048,\"name\":\"throwIfDisposed\",\"url\":\"classes/Tensor.html#throwIfDisposed\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":81,\"kind\":2048,\"name\":\"print\",\"url\":\"classes/Tensor.html#print\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":82,\"kind\":2048,\"name\":\"clone\",\"url\":\"classes/Tensor.html#clone\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Tensor\"},{\"id\":83,\"kind\":2048,\"name\":\"toString\",\"url\":\"classes/Tensor.html#toString\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":84,\"kind\":2048,\"name\":\"variable\",\"url\":\"classes/Tensor.html#variable\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Tensor\"},{\"id\":85,\"kind\":4,\"name\":\"Tensor\",\"url\":\"modules/Tensor.html\",\"classes\":\"tsd-kind-namespace\"},{\"id\":86,\"kind\":4194304,\"name\":\"TensorLike\",\"url\":\"index.html#TensorLike\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":87,\"kind\":128,\"name\":\"GraphModel\",\"url\":\"classes/GraphModel.html\",\"classes\":\"tsd-kind-class\"},{\"id\":88,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/GraphModel.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":89,\"kind\":1024,\"name\":\"modelVersion\",\"url\":\"classes/GraphModel.html#modelVersion\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":90,\"kind\":1024,\"name\":\"inputNodes\",\"url\":\"classes/GraphModel.html#inputNodes\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":91,\"kind\":1024,\"name\":\"outputNodes\",\"url\":\"classes/GraphModel.html#outputNodes\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":92,\"kind\":1024,\"name\":\"inputs\",\"url\":\"classes/GraphModel.html#inputs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":93,\"kind\":1024,\"name\":\"outputs\",\"url\":\"classes/GraphModel.html#outputs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":94,\"kind\":1024,\"name\":\"weights\",\"url\":\"classes/GraphModel.html#weights\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":95,\"kind\":1024,\"name\":\"metadata\",\"url\":\"classes/GraphModel.html#metadata\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":96,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/GraphModel.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":97,\"kind\":1024,\"name\":\"modelSignature\",\"url\":\"classes/GraphModel.html#modelSignature\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":98,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/GraphModel.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":99,\"kind\":2048,\"name\":\"load\",\"url\":\"classes/GraphModel.html#load\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":100,\"kind\":2048,\"name\":\"loadSync\",\"url\":\"classes/GraphModel.html#loadSync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":101,\"kind\":2048,\"name\":\"save\",\"url\":\"classes/GraphModel.html#save\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":102,\"kind\":2048,\"name\":\"predict\",\"url\":\"classes/GraphModel.html#predict\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":103,\"kind\":2048,\"name\":\"execute\",\"url\":\"classes/GraphModel.html#execute\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":104,\"kind\":2048,\"name\":\"executeAsync\",\"url\":\"classes/GraphModel.html#executeAsync\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":105,\"kind\":2048,\"name\":\"getIntermediateTensors\",\"url\":\"classes/GraphModel.html#getIntermediateTensors\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":106,\"kind\":2048,\"name\":\"disposeIntermediateTensors\",\"url\":\"classes/GraphModel.html#disposeIntermediateTensors\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":107,\"kind\":2048,\"name\":\"dispose\",\"url\":\"classes/GraphModel.html#dispose\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"GraphModel\"},{\"id\":108,\"kind\":8,\"name\":\"Rank\",\"url\":\"enums/Rank.html\",\"classes\":\"tsd-kind-enum\"},{\"id\":109,\"kind\":16,\"name\":\"R0\",\"url\":\"enums/Rank.html#R0\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":110,\"kind\":16,\"name\":\"R1\",\"url\":\"enums/Rank.html#R1\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":111,\"kind\":16,\"name\":\"R2\",\"url\":\"enums/Rank.html#R2\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":112,\"kind\":16,\"name\":\"R3\",\"url\":\"enums/Rank.html#R3\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":113,\"kind\":16,\"name\":\"R4\",\"url\":\"enums/Rank.html#R4\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":114,\"kind\":16,\"name\":\"R5\",\"url\":\"enums/Rank.html#R5\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":115,\"kind\":16,\"name\":\"R6\",\"url\":\"enums/Rank.html#R6\",\"classes\":\"tsd-kind-enum-member tsd-parent-kind-enum\",\"parent\":\"Rank\"},{\"id\":116,\"kind\":4194304,\"name\":\"DrawOptions\",\"url\":\"index.html#DrawOptions\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":117,\"kind\":65536,\"name\":\"__type\",\"url\":\"index.html#DrawOptions.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"DrawOptions\"},{\"id\":118,\"kind\":1024,\"name\":\"color\",\"url\":\"index.html#DrawOptions.__type.color\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":119,\"kind\":1024,\"name\":\"labelColor\",\"url\":\"index.html#DrawOptions.__type.labelColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":120,\"kind\":1024,\"name\":\"shadowColor\",\"url\":\"index.html#DrawOptions.__type.shadowColor\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":121,\"kind\":1024,\"name\":\"font\",\"url\":\"index.html#DrawOptions.__type.font\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":122,\"kind\":1024,\"name\":\"lineHeight\",\"url\":\"index.html#DrawOptions.__type.lineHeight\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":123,\"kind\":1024,\"name\":\"lineWidth\",\"url\":\"index.html#DrawOptions.__type.lineWidth\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":124,\"kind\":1024,\"name\":\"pointSize\",\"url\":\"index.html#DrawOptions.__type.pointSize\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":125,\"kind\":1024,\"name\":\"roundRect\",\"url\":\"index.html#DrawOptions.__type.roundRect\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":126,\"kind\":1024,\"name\":\"drawPoints\",\"url\":\"index.html#DrawOptions.__type.drawPoints\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":127,\"kind\":1024,\"name\":\"drawLabels\",\"url\":\"index.html#DrawOptions.__type.drawLabels\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":128,\"kind\":1024,\"name\":\"drawGestures\",\"url\":\"index.html#DrawOptions.__type.drawGestures\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":129,\"kind\":1024,\"name\":\"drawBoxes\",\"url\":\"index.html#DrawOptions.__type.drawBoxes\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":130,\"kind\":1024,\"name\":\"drawPolygons\",\"url\":\"index.html#DrawOptions.__type.drawPolygons\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":131,\"kind\":1024,\"name\":\"drawGaze\",\"url\":\"index.html#DrawOptions.__type.drawGaze\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":132,\"kind\":1024,\"name\":\"fillPolygons\",\"url\":\"index.html#DrawOptions.__type.fillPolygons\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":133,\"kind\":1024,\"name\":\"useDepth\",\"url\":\"index.html#DrawOptions.__type.useDepth\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":134,\"kind\":1024,\"name\":\"useCurves\",\"url\":\"index.html#DrawOptions.__type.useCurves\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"DrawOptions.__type\"},{\"id\":135,\"kind\":4194304,\"name\":\"Descriptor\",\"url\":\"index.html#Descriptor\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":136,\"kind\":4194304,\"name\":\"Box\",\"url\":\"index.html#Box\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":137,\"kind\":4194304,\"name\":\"Point\",\"url\":\"index.html#Point\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":138,\"kind\":128,\"name\":\"Models\",\"url\":\"classes/Models.html\",\"classes\":\"tsd-kind-class\"},{\"id\":139,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Models.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":140,\"kind\":1024,\"name\":\"ssrnetage\",\"url\":\"classes/Models.html#ssrnetage\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":141,\"kind\":1024,\"name\":\"gear\",\"url\":\"classes/Models.html#gear\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":142,\"kind\":1024,\"name\":\"blazeposedetect\",\"url\":\"classes/Models.html#blazeposedetect\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":143,\"kind\":1024,\"name\":\"blazepose\",\"url\":\"classes/Models.html#blazepose\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":144,\"kind\":1024,\"name\":\"centernet\",\"url\":\"classes/Models.html#centernet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":145,\"kind\":1024,\"name\":\"efficientpose\",\"url\":\"classes/Models.html#efficientpose\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":146,\"kind\":1024,\"name\":\"mobilefacenet\",\"url\":\"classes/Models.html#mobilefacenet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":147,\"kind\":1024,\"name\":\"emotion\",\"url\":\"classes/Models.html#emotion\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":148,\"kind\":1024,\"name\":\"facedetect\",\"url\":\"classes/Models.html#facedetect\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":149,\"kind\":1024,\"name\":\"faceiris\",\"url\":\"classes/Models.html#faceiris\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":150,\"kind\":1024,\"name\":\"facemesh\",\"url\":\"classes/Models.html#facemesh\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":151,\"kind\":1024,\"name\":\"faceres\",\"url\":\"classes/Models.html#faceres\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":152,\"kind\":1024,\"name\":\"ssrnetgender\",\"url\":\"classes/Models.html#ssrnetgender\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":153,\"kind\":1024,\"name\":\"handpose\",\"url\":\"classes/Models.html#handpose\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":154,\"kind\":1024,\"name\":\"handskeleton\",\"url\":\"classes/Models.html#handskeleton\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":155,\"kind\":1024,\"name\":\"handtrack\",\"url\":\"classes/Models.html#handtrack\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":156,\"kind\":1024,\"name\":\"liveness\",\"url\":\"classes/Models.html#liveness\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":157,\"kind\":1024,\"name\":\"movenet\",\"url\":\"classes/Models.html#movenet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":158,\"kind\":1024,\"name\":\"nanodet\",\"url\":\"classes/Models.html#nanodet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":159,\"kind\":1024,\"name\":\"posenet\",\"url\":\"classes/Models.html#posenet\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":160,\"kind\":1024,\"name\":\"segmentation\",\"url\":\"classes/Models.html#segmentation\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":161,\"kind\":1024,\"name\":\"antispoof\",\"url\":\"classes/Models.html#antispoof\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Models\"},{\"id\":162,\"kind\":128,\"name\":\"Env\",\"url\":\"classes/Env.html\",\"classes\":\"tsd-kind-class\"},{\"id\":163,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Env.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":164,\"kind\":1024,\"name\":\"browser\",\"url\":\"classes/Env.html#browser\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":165,\"kind\":1024,\"name\":\"node\",\"url\":\"classes/Env.html#node\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":166,\"kind\":1024,\"name\":\"worker\",\"url\":\"classes/Env.html#worker\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":167,\"kind\":1024,\"name\":\"platform\",\"url\":\"classes/Env.html#platform\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":168,\"kind\":1024,\"name\":\"agent\",\"url\":\"classes/Env.html#agent\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":169,\"kind\":1024,\"name\":\"backends\",\"url\":\"classes/Env.html#backends\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":170,\"kind\":1024,\"name\":\"initial\",\"url\":\"classes/Env.html#initial\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":171,\"kind\":1024,\"name\":\"filter\",\"url\":\"classes/Env.html#filter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":172,\"kind\":1024,\"name\":\"tfjs\",\"url\":\"classes/Env.html#tfjs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":173,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":174,\"kind\":1024,\"name\":\"version\",\"url\":\"classes/Env.html#__type-1.version\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":175,\"kind\":1024,\"name\":\"offscreen\",\"url\":\"classes/Env.html#offscreen\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":176,\"kind\":1024,\"name\":\"perfadd\",\"url\":\"classes/Env.html#perfadd\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":177,\"kind\":1024,\"name\":\"wasm\",\"url\":\"classes/Env.html#wasm\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":178,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":179,\"kind\":1024,\"name\":\"supported\",\"url\":\"classes/Env.html#__type-2.supported\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":180,\"kind\":1024,\"name\":\"backend\",\"url\":\"classes/Env.html#__type-2.backend\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":181,\"kind\":1024,\"name\":\"simd\",\"url\":\"classes/Env.html#__type-2.simd\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":182,\"kind\":1024,\"name\":\"multithread\",\"url\":\"classes/Env.html#__type-2.multithread\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":183,\"kind\":1024,\"name\":\"webgl\",\"url\":\"classes/Env.html#webgl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":184,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":185,\"kind\":1024,\"name\":\"supported\",\"url\":\"classes/Env.html#__type-3.supported-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":186,\"kind\":1024,\"name\":\"backend\",\"url\":\"classes/Env.html#__type-3.backend-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":187,\"kind\":1024,\"name\":\"version\",\"url\":\"classes/Env.html#__type-3.version-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":188,\"kind\":1024,\"name\":\"renderer\",\"url\":\"classes/Env.html#__type-3.renderer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":189,\"kind\":1024,\"name\":\"webgpu\",\"url\":\"classes/Env.html#webgpu\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":190,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type-4\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":191,\"kind\":1024,\"name\":\"supported\",\"url\":\"classes/Env.html#__type-4.supported-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":192,\"kind\":1024,\"name\":\"backend\",\"url\":\"classes/Env.html#__type-4.backend-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":193,\"kind\":1024,\"name\":\"adapter\",\"url\":\"classes/Env.html#__type-4.adapter\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":194,\"kind\":1024,\"name\":\"cpu\",\"url\":\"classes/Env.html#cpu\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":195,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Env.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":196,\"kind\":1024,\"name\":\"model\",\"url\":\"classes/Env.html#__type.model\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":197,\"kind\":1024,\"name\":\"flags\",\"url\":\"classes/Env.html#__type.flags\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Env.__type\"},{\"id\":198,\"kind\":1024,\"name\":\"kernels\",\"url\":\"classes/Env.html#kernels\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":199,\"kind\":1024,\"name\":\"Canvas\",\"url\":\"classes/Env.html#Canvas\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":200,\"kind\":1024,\"name\":\"Image\",\"url\":\"classes/Env.html#Image\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":201,\"kind\":1024,\"name\":\"ImageData\",\"url\":\"classes/Env.html#ImageData\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":202,\"kind\":2048,\"name\":\"updateBackend\",\"url\":\"classes/Env.html#updateBackend\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":203,\"kind\":2048,\"name\":\"updateCPU\",\"url\":\"classes/Env.html#updateCPU\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Env\"},{\"id\":204,\"kind\":4194304,\"name\":\"FaceGesture\",\"url\":\"index.html#FaceGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":205,\"kind\":4194304,\"name\":\"BodyGesture\",\"url\":\"index.html#BodyGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":206,\"kind\":4194304,\"name\":\"HandGesture\",\"url\":\"index.html#HandGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":207,\"kind\":4194304,\"name\":\"IrisGesture\",\"url\":\"index.html#IrisGesture\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":208,\"kind\":4194304,\"name\":\"Emotion\",\"url\":\"index.html#Emotion\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":209,\"kind\":4194304,\"name\":\"Finger\",\"url\":\"index.html#Finger\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":210,\"kind\":4194304,\"name\":\"FingerCurl\",\"url\":\"index.html#FingerCurl\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":211,\"kind\":4194304,\"name\":\"FingerDirection\",\"url\":\"index.html#FingerDirection\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":212,\"kind\":4194304,\"name\":\"HandType\",\"url\":\"index.html#HandType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":213,\"kind\":4194304,\"name\":\"Gender\",\"url\":\"index.html#Gender\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":214,\"kind\":4194304,\"name\":\"Race\",\"url\":\"index.html#Race\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":215,\"kind\":4194304,\"name\":\"FaceLandmark\",\"url\":\"index.html#FaceLandmark\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":216,\"kind\":4194304,\"name\":\"BodyLandmark\",\"url\":\"index.html#BodyLandmark\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":217,\"kind\":4194304,\"name\":\"BodyAnnotation\",\"url\":\"index.html#BodyAnnotation\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":218,\"kind\":4194304,\"name\":\"ObjectType\",\"url\":\"index.html#ObjectType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":219,\"kind\":32,\"name\":\"env\",\"url\":\"index.html#env\",\"classes\":\"tsd-kind-variable\"},{\"id\":220,\"kind\":4194304,\"name\":\"Events\",\"url\":\"index.html#Events\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":221,\"kind\":4194304,\"name\":\"AnyCanvas\",\"url\":\"index.html#AnyCanvas\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":222,\"kind\":4194304,\"name\":\"AnyImage\",\"url\":\"index.html#AnyImage\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":223,\"kind\":4194304,\"name\":\"AnyVideo\",\"url\":\"index.html#AnyVideo\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":224,\"kind\":4194304,\"name\":\"ImageObjects\",\"url\":\"index.html#ImageObjects\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":225,\"kind\":4194304,\"name\":\"ExternalCanvas\",\"url\":\"index.html#ExternalCanvas\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":226,\"kind\":4194304,\"name\":\"Input\",\"url\":\"index.html#Input\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":227,\"kind\":256,\"name\":\"GenericConfig\",\"url\":\"interfaces/GenericConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":228,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/GenericConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":229,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/GenericConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":230,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/GenericConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":231,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/GenericConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GenericConfig\"},{\"id\":232,\"kind\":256,\"name\":\"FaceDetectorConfig\",\"url\":\"interfaces/FaceDetectorConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":233,\"kind\":1024,\"name\":\"rotation\",\"url\":\"interfaces/FaceDetectorConfig.html#rotation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":234,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/FaceDetectorConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":235,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/FaceDetectorConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":236,\"kind\":1024,\"name\":\"iouThreshold\",\"url\":\"interfaces/FaceDetectorConfig.html#iouThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":237,\"kind\":1024,\"name\":\"mask\",\"url\":\"interfaces/FaceDetectorConfig.html#mask\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":238,\"kind\":1024,\"name\":\"return\",\"url\":\"interfaces/FaceDetectorConfig.html#return\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDetectorConfig\"},{\"id\":239,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceDetectorConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":240,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceDetectorConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":241,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceDetectorConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":242,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceDetectorConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDetectorConfig\"},{\"id\":243,\"kind\":256,\"name\":\"FaceMeshConfig\",\"url\":\"interfaces/FaceMeshConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":244,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceMeshConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":245,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceMeshConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":246,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceMeshConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":247,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceMeshConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceMeshConfig\"},{\"id\":248,\"kind\":256,\"name\":\"FaceIrisConfig\",\"url\":\"interfaces/FaceIrisConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":249,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceIrisConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":250,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceIrisConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":251,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceIrisConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":252,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceIrisConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceIrisConfig\"},{\"id\":253,\"kind\":256,\"name\":\"FaceDescriptionConfig\",\"url\":\"interfaces/FaceDescriptionConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":254,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/FaceDescriptionConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":255,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceDescriptionConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":256,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceDescriptionConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":257,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceDescriptionConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":258,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceDescriptionConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceDescriptionConfig\"},{\"id\":259,\"kind\":256,\"name\":\"FaceEmotionConfig\",\"url\":\"interfaces/FaceEmotionConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":260,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/FaceEmotionConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceEmotionConfig\"},{\"id\":261,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceEmotionConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":262,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceEmotionConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":263,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceEmotionConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":264,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceEmotionConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceEmotionConfig\"},{\"id\":265,\"kind\":256,\"name\":\"FaceAntiSpoofConfig\",\"url\":\"interfaces/FaceAntiSpoofConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":266,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":267,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":268,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":269,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceAntiSpoofConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceAntiSpoofConfig\"},{\"id\":270,\"kind\":256,\"name\":\"FaceLivenessConfig\",\"url\":\"interfaces/FaceLivenessConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":271,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceLivenessConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":272,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceLivenessConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":273,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceLivenessConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":274,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceLivenessConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceLivenessConfig\"},{\"id\":275,\"kind\":256,\"name\":\"FaceConfig\",\"url\":\"interfaces/FaceConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":276,\"kind\":1024,\"name\":\"detector\",\"url\":\"interfaces/FaceConfig.html#detector\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":277,\"kind\":1024,\"name\":\"mesh\",\"url\":\"interfaces/FaceConfig.html#mesh\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":278,\"kind\":1024,\"name\":\"iris\",\"url\":\"interfaces/FaceConfig.html#iris\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":279,\"kind\":1024,\"name\":\"description\",\"url\":\"interfaces/FaceConfig.html#description\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":280,\"kind\":1024,\"name\":\"emotion\",\"url\":\"interfaces/FaceConfig.html#emotion\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":281,\"kind\":1024,\"name\":\"antispoof\",\"url\":\"interfaces/FaceConfig.html#antispoof\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":282,\"kind\":1024,\"name\":\"liveness\",\"url\":\"interfaces/FaceConfig.html#liveness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceConfig\"},{\"id\":283,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FaceConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":284,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/FaceConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":285,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/FaceConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":286,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/FaceConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"FaceConfig\"},{\"id\":287,\"kind\":256,\"name\":\"BodyConfig\",\"url\":\"interfaces/BodyConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":288,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/BodyConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyConfig\"},{\"id\":289,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/BodyConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyConfig\"},{\"id\":290,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/BodyConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":291,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/BodyConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":292,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/BodyConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":293,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/BodyConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BodyConfig\"},{\"id\":294,\"kind\":256,\"name\":\"HandConfig\",\"url\":\"interfaces/HandConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":295,\"kind\":1024,\"name\":\"rotation\",\"url\":\"interfaces/HandConfig.html#rotation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":296,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/HandConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":297,\"kind\":1024,\"name\":\"iouThreshold\",\"url\":\"interfaces/HandConfig.html#iouThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":298,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/HandConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":299,\"kind\":1024,\"name\":\"landmarks\",\"url\":\"interfaces/HandConfig.html#landmarks\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":300,\"kind\":1024,\"name\":\"detector\",\"url\":\"interfaces/HandConfig.html#detector\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":301,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/HandConfig.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":302,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/HandConfig.html#__type.modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"HandConfig.__type\"},{\"id\":303,\"kind\":1024,\"name\":\"skeleton\",\"url\":\"interfaces/HandConfig.html#skeleton\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":304,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/HandConfig.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"HandConfig\"},{\"id\":305,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/HandConfig.html#__type-1.modelPath-2\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"HandConfig.__type\"},{\"id\":306,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/HandConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":307,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/HandConfig.html#modelPath-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":308,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/HandConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":309,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/HandConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"HandConfig\"},{\"id\":310,\"kind\":256,\"name\":\"ObjectConfig\",\"url\":\"interfaces/ObjectConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":311,\"kind\":1024,\"name\":\"minConfidence\",\"url\":\"interfaces/ObjectConfig.html#minConfidence\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectConfig\"},{\"id\":312,\"kind\":1024,\"name\":\"iouThreshold\",\"url\":\"interfaces/ObjectConfig.html#iouThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectConfig\"},{\"id\":313,\"kind\":1024,\"name\":\"maxDetected\",\"url\":\"interfaces/ObjectConfig.html#maxDetected\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectConfig\"},{\"id\":314,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/ObjectConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":315,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/ObjectConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":316,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/ObjectConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":317,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/ObjectConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"ObjectConfig\"},{\"id\":318,\"kind\":256,\"name\":\"SegmentationConfig\",\"url\":\"interfaces/SegmentationConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":319,\"kind\":1024,\"name\":\"blur\",\"url\":\"interfaces/SegmentationConfig.html#blur\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"SegmentationConfig\"},{\"id\":320,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/SegmentationConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":321,\"kind\":1024,\"name\":\"modelPath\",\"url\":\"interfaces/SegmentationConfig.html#modelPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":322,\"kind\":1024,\"name\":\"skipFrames\",\"url\":\"interfaces/SegmentationConfig.html#skipFrames\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":323,\"kind\":1024,\"name\":\"skipTime\",\"url\":\"interfaces/SegmentationConfig.html#skipTime\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"SegmentationConfig\"},{\"id\":324,\"kind\":256,\"name\":\"FilterConfig\",\"url\":\"interfaces/FilterConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":325,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/FilterConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":326,\"kind\":1024,\"name\":\"equalization\",\"url\":\"interfaces/FilterConfig.html#equalization\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":327,\"kind\":1024,\"name\":\"width\",\"url\":\"interfaces/FilterConfig.html#width\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":328,\"kind\":1024,\"name\":\"height\",\"url\":\"interfaces/FilterConfig.html#height\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":329,\"kind\":1024,\"name\":\"return\",\"url\":\"interfaces/FilterConfig.html#return\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":330,\"kind\":1024,\"name\":\"flip\",\"url\":\"interfaces/FilterConfig.html#flip\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":331,\"kind\":1024,\"name\":\"brightness\",\"url\":\"interfaces/FilterConfig.html#brightness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":332,\"kind\":1024,\"name\":\"contrast\",\"url\":\"interfaces/FilterConfig.html#contrast\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":333,\"kind\":1024,\"name\":\"sharpness\",\"url\":\"interfaces/FilterConfig.html#sharpness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":334,\"kind\":1024,\"name\":\"blur\",\"url\":\"interfaces/FilterConfig.html#blur\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":335,\"kind\":1024,\"name\":\"saturation\",\"url\":\"interfaces/FilterConfig.html#saturation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":336,\"kind\":1024,\"name\":\"hue\",\"url\":\"interfaces/FilterConfig.html#hue\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":337,\"kind\":1024,\"name\":\"negative\",\"url\":\"interfaces/FilterConfig.html#negative\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":338,\"kind\":1024,\"name\":\"sepia\",\"url\":\"interfaces/FilterConfig.html#sepia\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":339,\"kind\":1024,\"name\":\"vintage\",\"url\":\"interfaces/FilterConfig.html#vintage\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":340,\"kind\":1024,\"name\":\"kodachrome\",\"url\":\"interfaces/FilterConfig.html#kodachrome\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":341,\"kind\":1024,\"name\":\"technicolor\",\"url\":\"interfaces/FilterConfig.html#technicolor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":342,\"kind\":1024,\"name\":\"polaroid\",\"url\":\"interfaces/FilterConfig.html#polaroid\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":343,\"kind\":1024,\"name\":\"pixelate\",\"url\":\"interfaces/FilterConfig.html#pixelate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FilterConfig\"},{\"id\":344,\"kind\":256,\"name\":\"GestureConfig\",\"url\":\"interfaces/GestureConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":345,\"kind\":1024,\"name\":\"enabled\",\"url\":\"interfaces/GestureConfig.html#enabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"GestureConfig\"},{\"id\":346,\"kind\":4194304,\"name\":\"BackendType\",\"url\":\"index.html#BackendType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":347,\"kind\":4194304,\"name\":\"WarmupType\",\"url\":\"index.html#WarmupType\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":348,\"kind\":256,\"name\":\"Config\",\"url\":\"interfaces/Config.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":349,\"kind\":1024,\"name\":\"backend\",\"url\":\"interfaces/Config.html#backend\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":350,\"kind\":1024,\"name\":\"wasmPath\",\"url\":\"interfaces/Config.html#wasmPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":351,\"kind\":1024,\"name\":\"wasmPlatformFetch\",\"url\":\"interfaces/Config.html#wasmPlatformFetch\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":352,\"kind\":1024,\"name\":\"debug\",\"url\":\"interfaces/Config.html#debug\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":353,\"kind\":1024,\"name\":\"async\",\"url\":\"interfaces/Config.html#async\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":354,\"kind\":1024,\"name\":\"warmup\",\"url\":\"interfaces/Config.html#warmup\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":355,\"kind\":1024,\"name\":\"modelBasePath\",\"url\":\"interfaces/Config.html#modelBasePath\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":356,\"kind\":1024,\"name\":\"cacheModels\",\"url\":\"interfaces/Config.html#cacheModels\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":357,\"kind\":1024,\"name\":\"cacheSensitivity\",\"url\":\"interfaces/Config.html#cacheSensitivity\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":358,\"kind\":1024,\"name\":\"deallocate\",\"url\":\"interfaces/Config.html#deallocate\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":359,\"kind\":1024,\"name\":\"skipAllowed\",\"url\":\"interfaces/Config.html#skipAllowed\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":360,\"kind\":1024,\"name\":\"filter\",\"url\":\"interfaces/Config.html#filter\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":361,\"kind\":1024,\"name\":\"gesture\",\"url\":\"interfaces/Config.html#gesture\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":362,\"kind\":1024,\"name\":\"face\",\"url\":\"interfaces/Config.html#face\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":363,\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/Config.html#body\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":364,\"kind\":1024,\"name\":\"hand\",\"url\":\"interfaces/Config.html#hand\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":365,\"kind\":1024,\"name\":\"object\",\"url\":\"interfaces/Config.html#object\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":366,\"kind\":1024,\"name\":\"segmentation\",\"url\":\"interfaces/Config.html#segmentation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Config\"},{\"id\":367,\"kind\":32,\"name\":\"defaults\",\"url\":\"index.html#defaults\",\"classes\":\"tsd-kind-variable\"},{\"id\":368,\"kind\":256,\"name\":\"FaceResult\",\"url\":\"interfaces/FaceResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":369,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/FaceResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":370,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/FaceResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":371,\"kind\":1024,\"name\":\"boxScore\",\"url\":\"interfaces/FaceResult.html#boxScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":372,\"kind\":1024,\"name\":\"faceScore\",\"url\":\"interfaces/FaceResult.html#faceScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":373,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/FaceResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":374,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/FaceResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":375,\"kind\":1024,\"name\":\"mesh\",\"url\":\"interfaces/FaceResult.html#mesh\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":376,\"kind\":1024,\"name\":\"meshRaw\",\"url\":\"interfaces/FaceResult.html#meshRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":377,\"kind\":1024,\"name\":\"annotations\",\"url\":\"interfaces/FaceResult.html#annotations\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":378,\"kind\":1024,\"name\":\"age\",\"url\":\"interfaces/FaceResult.html#age\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":379,\"kind\":1024,\"name\":\"gender\",\"url\":\"interfaces/FaceResult.html#gender\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":380,\"kind\":1024,\"name\":\"genderScore\",\"url\":\"interfaces/FaceResult.html#genderScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":381,\"kind\":1024,\"name\":\"emotion\",\"url\":\"interfaces/FaceResult.html#emotion\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":382,\"kind\":1024,\"name\":\"race\",\"url\":\"interfaces/FaceResult.html#race\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":383,\"kind\":1024,\"name\":\"embedding\",\"url\":\"interfaces/FaceResult.html#embedding\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":384,\"kind\":1024,\"name\":\"iris\",\"url\":\"interfaces/FaceResult.html#iris\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":385,\"kind\":1024,\"name\":\"real\",\"url\":\"interfaces/FaceResult.html#real\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":386,\"kind\":1024,\"name\":\"live\",\"url\":\"interfaces/FaceResult.html#live\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":387,\"kind\":1024,\"name\":\"rotation\",\"url\":\"interfaces/FaceResult.html#rotation\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":388,\"kind\":1024,\"name\":\"tensor\",\"url\":\"interfaces/FaceResult.html#tensor\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"FaceResult\"},{\"id\":389,\"kind\":4194304,\"name\":\"BodyLandmarkPoseNet\",\"url\":\"index.html#BodyLandmarkPoseNet\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":390,\"kind\":4194304,\"name\":\"BodyLandmarkMoveNet\",\"url\":\"index.html#BodyLandmarkMoveNet\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":391,\"kind\":4194304,\"name\":\"BodyLandmarkEfficientNet\",\"url\":\"index.html#BodyLandmarkEfficientNet\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":392,\"kind\":4194304,\"name\":\"BodyLandmarkBlazePose\",\"url\":\"index.html#BodyLandmarkBlazePose\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":393,\"kind\":4194304,\"name\":\"BodyAnnotationBlazePose\",\"url\":\"index.html#BodyAnnotationBlazePose\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":394,\"kind\":4194304,\"name\":\"BodyAnnotationEfficientPose\",\"url\":\"index.html#BodyAnnotationEfficientPose\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":395,\"kind\":256,\"name\":\"BodyKeypoint\",\"url\":\"interfaces/BodyKeypoint.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":396,\"kind\":1024,\"name\":\"part\",\"url\":\"interfaces/BodyKeypoint.html#part\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":397,\"kind\":1024,\"name\":\"position\",\"url\":\"interfaces/BodyKeypoint.html#position\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":398,\"kind\":1024,\"name\":\"positionRaw\",\"url\":\"interfaces/BodyKeypoint.html#positionRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":399,\"kind\":1024,\"name\":\"distance\",\"url\":\"interfaces/BodyKeypoint.html#distance\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":400,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/BodyKeypoint.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyKeypoint\"},{\"id\":401,\"kind\":256,\"name\":\"BodyResult\",\"url\":\"interfaces/BodyResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":402,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/BodyResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":403,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/BodyResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":404,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/BodyResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":405,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/BodyResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":406,\"kind\":1024,\"name\":\"keypoints\",\"url\":\"interfaces/BodyResult.html#keypoints\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":407,\"kind\":1024,\"name\":\"annotations\",\"url\":\"interfaces/BodyResult.html#annotations\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BodyResult\"},{\"id\":408,\"kind\":256,\"name\":\"HandResult\",\"url\":\"interfaces/HandResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":409,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/HandResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":410,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/HandResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":411,\"kind\":1024,\"name\":\"boxScore\",\"url\":\"interfaces/HandResult.html#boxScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":412,\"kind\":1024,\"name\":\"fingerScore\",\"url\":\"interfaces/HandResult.html#fingerScore\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":413,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/HandResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":414,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/HandResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":415,\"kind\":1024,\"name\":\"keypoints\",\"url\":\"interfaces/HandResult.html#keypoints\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":416,\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/HandResult.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":417,\"kind\":1024,\"name\":\"annotations\",\"url\":\"interfaces/HandResult.html#annotations\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":418,\"kind\":1024,\"name\":\"landmarks\",\"url\":\"interfaces/HandResult.html#landmarks\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"HandResult\"},{\"id\":419,\"kind\":256,\"name\":\"ObjectResult\",\"url\":\"interfaces/ObjectResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":420,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/ObjectResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":421,\"kind\":1024,\"name\":\"score\",\"url\":\"interfaces/ObjectResult.html#score\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":422,\"kind\":1024,\"name\":\"class\",\"url\":\"interfaces/ObjectResult.html#class\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":423,\"kind\":1024,\"name\":\"label\",\"url\":\"interfaces/ObjectResult.html#label\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":424,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/ObjectResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":425,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/ObjectResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ObjectResult\"},{\"id\":426,\"kind\":4194304,\"name\":\"GestureResult\",\"url\":\"index.html#GestureResult\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":427,\"kind\":256,\"name\":\"PersonResult\",\"url\":\"interfaces/PersonResult.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":428,\"kind\":1024,\"name\":\"id\",\"url\":\"interfaces/PersonResult.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":429,\"kind\":1024,\"name\":\"face\",\"url\":\"interfaces/PersonResult.html#face\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":430,\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/PersonResult.html#body\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":431,\"kind\":1024,\"name\":\"hands\",\"url\":\"interfaces/PersonResult.html#hands\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":432,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/PersonResult.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":433,\"kind\":1024,\"name\":\"left\",\"url\":\"interfaces/PersonResult.html#__type.left\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PersonResult.__type\"},{\"id\":434,\"kind\":1024,\"name\":\"right\",\"url\":\"interfaces/PersonResult.html#__type.right\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PersonResult.__type\"},{\"id\":435,\"kind\":1024,\"name\":\"gestures\",\"url\":\"interfaces/PersonResult.html#gestures\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":436,\"kind\":1024,\"name\":\"box\",\"url\":\"interfaces/PersonResult.html#box\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":437,\"kind\":1024,\"name\":\"boxRaw\",\"url\":\"interfaces/PersonResult.html#boxRaw\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PersonResult\"},{\"id\":438,\"kind\":256,\"name\":\"Result\",\"url\":\"interfaces/Result.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":439,\"kind\":1024,\"name\":\"face\",\"url\":\"interfaces/Result.html#face\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":440,\"kind\":1024,\"name\":\"body\",\"url\":\"interfaces/Result.html#body\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":441,\"kind\":1024,\"name\":\"hand\",\"url\":\"interfaces/Result.html#hand\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":442,\"kind\":1024,\"name\":\"gesture\",\"url\":\"interfaces/Result.html#gesture\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":443,\"kind\":1024,\"name\":\"object\",\"url\":\"interfaces/Result.html#object\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":444,\"kind\":1024,\"name\":\"performance\",\"url\":\"interfaces/Result.html#performance\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":445,\"kind\":1024,\"name\":\"canvas\",\"url\":\"interfaces/Result.html#canvas\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":446,\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/Result.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":447,\"kind\":1024,\"name\":\"persons\",\"url\":\"interfaces/Result.html#persons\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"},{\"id\":448,\"kind\":1024,\"name\":\"error\",\"url\":\"interfaces/Result.html#error\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"Result\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,24.586]],[\"parent/0\",[]],[\"name/1\",[1,44.045]],[\"parent/1\",[0,2.289]],[\"name/2\",[2,48.565]],[\"parent/2\",[0,2.289]],[\"name/3\",[3,30.888]],[\"parent/3\",[0,2.289]],[\"name/4\",[4,35.835]],[\"parent/4\",[0,2.289]],[\"name/5\",[5,57.038]],[\"parent/5\",[0,2.289]],[\"name/6\",[6,57.038]],[\"parent/6\",[0,2.289]],[\"name/7\",[7,29.106]],[\"parent/7\",[0,2.289]],[\"name/8\",[8,26.915]],[\"parent/8\",[9,2.922]],[\"name/9\",[10,46.052]],[\"parent/9\",[9,2.922]],[\"name/10\",[11,57.038]],[\"parent/10\",[0,2.289]],[\"name/11\",[12,26.915]],[\"parent/11\",[0,2.289]],[\"name/12\",[13,57.038]],[\"parent/12\",[0,2.289]],[\"name/13\",[7,29.106]],[\"parent/13\",[0,2.289]],[\"name/14\",[10,46.052]],[\"parent/14\",[9,2.922]],[\"name/15\",[7,29.106]],[\"parent/15\",[9,2.922]],[\"name/16\",[14,46.052]],[\"parent/16\",[9,2.922]],[\"name/17\",[7,29.106]],[\"parent/17\",[9,2.922]],[\"name/18\",[15,46.052]],[\"parent/18\",[9,2.922]],[\"name/19\",[7,29.106]],[\"parent/19\",[9,2.922]],[\"name/20\",[16,48.565]],[\"parent/20\",[9,2.922]],[\"name/21\",[7,29.106]],[\"parent/21\",[9,2.922]],[\"name/22\",[17,48.565]],[\"parent/22\",[9,2.922]],[\"name/23\",[7,29.106]],[\"parent/23\",[9,2.922]],[\"name/24\",[18,48.565]],[\"parent/24\",[9,2.922]],[\"name/25\",[7,29.106]],[\"parent/25\",[9,2.922]],[\"name/26\",[19,57.038]],[\"parent/26\",[9,2.922]],[\"name/27\",[7,29.106]],[\"parent/27\",[9,2.922]],[\"name/28\",[20,57.038]],[\"parent/28\",[9,2.922]],[\"name/29\",[7,29.106]],[\"parent/29\",[9,2.922]],[\"name/30\",[21,57.038]],[\"parent/30\",[9,2.922]],[\"name/31\",[22,51.93]],[\"parent/31\",[0,2.289]],[\"name/32\",[23,57.038]],[\"parent/32\",[0,2.289]],[\"name/33\",[24,57.038]],[\"parent/33\",[0,2.289]],[\"name/34\",[25,51.93]],[\"parent/34\",[0,2.289]],[\"name/35\",[26,57.038]],[\"parent/35\",[0,2.289]],[\"name/36\",[27,57.038]],[\"parent/36\",[0,2.289]],[\"name/37\",[28,57.038]],[\"parent/37\",[0,2.289]],[\"name/38\",[29,57.038]],[\"parent/38\",[0,2.289]],[\"name/39\",[30,57.038]],[\"parent/39\",[0,2.289]],[\"name/40\",[7,29.106]],[\"parent/40\",[0,2.289]],[\"name/41\",[31,51.93]],[\"parent/41\",[0,2.289]],[\"name/42\",[7,29.106]],[\"parent/42\",[0,2.289]],[\"name/43\",[32,57.038]],[\"parent/43\",[0,2.289]],[\"name/44\",[7,29.106]],[\"parent/44\",[0,2.289]],[\"name/45\",[33,57.038]],[\"parent/45\",[0,2.289]],[\"name/46\",[34,51.93]],[\"parent/46\",[0,2.289]],[\"name/47\",[35,48.565]],[\"parent/47\",[0,2.289]],[\"name/48\",[36,57.038]],[\"parent/48\",[0,2.289]],[\"name/49\",[37,57.038]],[\"parent/49\",[0,2.289]],[\"name/50\",[38,57.038]],[\"parent/50\",[0,2.289]],[\"name/51\",[39,51.93]],[\"parent/51\",[0,2.289]],[\"name/52\",[40,57.038]],[\"parent/52\",[0,2.289]],[\"name/53\",[41,57.038]],[\"parent/53\",[0,2.289]],[\"name/54\",[42,51.93]],[\"parent/54\",[0,2.289]],[\"name/55\",[43,57.038]],[\"parent/55\",[0,2.289]],[\"name/56\",[44,57.038]],[\"parent/56\",[0,2.289]],[\"name/57\",[45,57.038]],[\"parent/57\",[]],[\"name/58\",[8,26.915]],[\"parent/58\",[]],[\"name/59\",[1,44.045]],[\"parent/59\",[8,2.505]],[\"name/60\",[46,42.374]],[\"parent/60\",[8,2.505]],[\"name/61\",[47,57.038]],[\"parent/61\",[8,2.505]],[\"name/62\",[48,57.038]],[\"parent/62\",[8,2.505]],[\"name/63\",[49,57.038]],[\"parent/63\",[8,2.505]],[\"name/64\",[50,57.038]],[\"parent/64\",[8,2.505]],[\"name/65\",[51,57.038]],[\"parent/65\",[8,2.505]],[\"name/66\",[52,57.038]],[\"parent/66\",[8,2.505]],[\"name/67\",[53,57.038]],[\"parent/67\",[8,2.505]],[\"name/68\",[54,57.038]],[\"parent/68\",[8,2.505]],[\"name/69\",[55,38.58]],[\"parent/69\",[8,2.505]],[\"name/70\",[56,57.038]],[\"parent/70\",[8,2.505]],[\"name/71\",[57,57.038]],[\"parent/71\",[8,2.505]],[\"name/72\",[58,57.038]],[\"parent/72\",[8,2.505]],[\"name/73\",[59,57.038]],[\"parent/73\",[8,2.505]],[\"name/74\",[60,57.038]],[\"parent/74\",[8,2.505]],[\"name/75\",[61,57.038]],[\"parent/75\",[8,2.505]],[\"name/76\",[62,57.038]],[\"parent/76\",[8,2.505]],[\"name/77\",[63,57.038]],[\"parent/77\",[8,2.505]],[\"name/78\",[64,51.93]],[\"parent/78\",[8,2.505]],[\"name/79\",[65,57.038]],[\"parent/79\",[8,2.505]],[\"name/80\",[66,57.038]],[\"parent/80\",[8,2.505]],[\"name/81\",[67,57.038]],[\"parent/81\",[8,2.505]],[\"name/82\",[68,57.038]],[\"parent/82\",[8,2.505]],[\"name/83\",[69,57.038]],[\"parent/83\",[8,2.505]],[\"name/84\",[70,57.038]],[\"parent/84\",[8,2.505]],[\"name/85\",[8,26.915]],[\"parent/85\",[]],[\"name/86\",[71,57.038]],[\"parent/86\",[]],[\"name/87\",[72,30.412]],[\"parent/87\",[]],[\"name/88\",[1,44.045]],[\"parent/88\",[72,2.831]],[\"name/89\",[73,57.038]],[\"parent/89\",[72,2.831]],[\"name/90\",[74,57.038]],[\"parent/90\",[72,2.831]],[\"name/91\",[75,57.038]],[\"parent/91\",[72,2.831]],[\"name/92\",[76,57.038]],[\"parent/92\",[72,2.831]],[\"name/93\",[77,57.038]],[\"parent/93\",[72,2.831]],[\"name/94\",[78,57.038]],[\"parent/94\",[72,2.831]],[\"name/95\",[79,57.038]],[\"parent/95\",[72,2.831]],[\"name/96\",[7,29.106]],[\"parent/96\",[72,2.831]],[\"name/97\",[80,57.038]],[\"parent/97\",[72,2.831]],[\"name/98\",[7,29.106]],[\"parent/98\",[72,2.831]],[\"name/99\",[39,51.93]],[\"parent/99\",[72,2.831]],[\"name/100\",[81,57.038]],[\"parent/100\",[72,2.831]],[\"name/101\",[82,57.038]],[\"parent/101\",[72,2.831]],[\"name/102\",[83,57.038]],[\"parent/102\",[72,2.831]],[\"name/103\",[84,57.038]],[\"parent/103\",[72,2.831]],[\"name/104\",[85,57.038]],[\"parent/104\",[72,2.831]],[\"name/105\",[86,57.038]],[\"parent/105\",[72,2.831]],[\"name/106\",[87,57.038]],[\"parent/106\",[72,2.831]],[\"name/107\",[64,51.93]],[\"parent/107\",[72,2.831]],[\"name/108\",[55,38.58]],[\"parent/108\",[]],[\"name/109\",[88,57.038]],[\"parent/109\",[55,3.591]],[\"name/110\",[89,57.038]],[\"parent/110\",[55,3.591]],[\"name/111\",[90,57.038]],[\"parent/111\",[55,3.591]],[\"name/112\",[91,57.038]],[\"parent/112\",[55,3.591]],[\"name/113\",[92,57.038]],[\"parent/113\",[55,3.591]],[\"name/114\",[93,57.038]],[\"parent/114\",[55,3.591]],[\"name/115\",[94,57.038]],[\"parent/115\",[55,3.591]],[\"name/116\",[95,51.93]],[\"parent/116\",[]],[\"name/117\",[7,29.106]],[\"parent/117\",[95,4.834]],[\"name/118\",[96,57.038]],[\"parent/118\",[97,3.023]],[\"name/119\",[98,57.038]],[\"parent/119\",[97,3.023]],[\"name/120\",[99,57.038]],[\"parent/120\",[97,3.023]],[\"name/121\",[100,57.038]],[\"parent/121\",[97,3.023]],[\"name/122\",[101,57.038]],[\"parent/122\",[97,3.023]],[\"name/123\",[102,57.038]],[\"parent/123\",[97,3.023]],[\"name/124\",[103,57.038]],[\"parent/124\",[97,3.023]],[\"name/125\",[104,57.038]],[\"parent/125\",[97,3.023]],[\"name/126\",[105,57.038]],[\"parent/126\",[97,3.023]],[\"name/127\",[106,57.038]],[\"parent/127\",[97,3.023]],[\"name/128\",[107,57.038]],[\"parent/128\",[97,3.023]],[\"name/129\",[108,57.038]],[\"parent/129\",[97,3.023]],[\"name/130\",[109,57.038]],[\"parent/130\",[97,3.023]],[\"name/131\",[110,57.038]],[\"parent/131\",[97,3.023]],[\"name/132\",[111,57.038]],[\"parent/132\",[97,3.023]],[\"name/133\",[112,57.038]],[\"parent/133\",[97,3.023]],[\"name/134\",[113,57.038]],[\"parent/134\",[97,3.023]],[\"name/135\",[114,57.038]],[\"parent/135\",[]],[\"name/136\",[115,42.374]],[\"parent/136\",[]],[\"name/137\",[116,57.038]],[\"parent/137\",[]],[\"name/138\",[117,29.106]],[\"parent/138\",[]],[\"name/139\",[1,44.045]],[\"parent/139\",[117,2.709]],[\"name/140\",[118,57.038]],[\"parent/140\",[117,2.709]],[\"name/141\",[119,57.038]],[\"parent/141\",[117,2.709]],[\"name/142\",[120,57.038]],[\"parent/142\",[117,2.709]],[\"name/143\",[121,57.038]],[\"parent/143\",[117,2.709]],[\"name/144\",[122,57.038]],[\"parent/144\",[117,2.709]],[\"name/145\",[123,57.038]],[\"parent/145\",[117,2.709]],[\"name/146\",[124,57.038]],[\"parent/146\",[117,2.709]],[\"name/147\",[125,46.052]],[\"parent/147\",[117,2.709]],[\"name/148\",[126,57.038]],[\"parent/148\",[117,2.709]],[\"name/149\",[127,57.038]],[\"parent/149\",[117,2.709]],[\"name/150\",[128,57.038]],[\"parent/150\",[117,2.709]],[\"name/151\",[129,57.038]],[\"parent/151\",[117,2.709]],[\"name/152\",[130,57.038]],[\"parent/152\",[117,2.709]],[\"name/153\",[131,57.038]],[\"parent/153\",[117,2.709]],[\"name/154\",[132,57.038]],[\"parent/154\",[117,2.709]],[\"name/155\",[133,57.038]],[\"parent/155\",[117,2.709]],[\"name/156\",[134,51.93]],[\"parent/156\",[117,2.709]],[\"name/157\",[135,57.038]],[\"parent/157\",[117,2.709]],[\"name/158\",[136,57.038]],[\"parent/158\",[117,2.709]],[\"name/159\",[137,57.038]],[\"parent/159\",[117,2.709]],[\"name/160\",[35,48.565]],[\"parent/160\",[117,2.709]],[\"name/161\",[138,51.93]],[\"parent/161\",[117,2.709]],[\"name/162\",[12,26.915]],[\"parent/162\",[]],[\"name/163\",[1,44.045]],[\"parent/163\",[12,2.505]],[\"name/164\",[139,57.038]],[\"parent/164\",[12,2.505]],[\"name/165\",[140,57.038]],[\"parent/165\",[12,2.505]],[\"name/166\",[141,57.038]],[\"parent/166\",[12,2.505]],[\"name/167\",[142,57.038]],[\"parent/167\",[12,2.505]],[\"name/168\",[143,57.038]],[\"parent/168\",[12,2.505]],[\"name/169\",[144,57.038]],[\"parent/169\",[12,2.505]],[\"name/170\",[145,57.038]],[\"parent/170\",[12,2.505]],[\"name/171\",[146,51.93]],[\"parent/171\",[12,2.505]],[\"name/172\",[147,57.038]],[\"parent/172\",[12,2.505]],[\"name/173\",[7,29.106]],[\"parent/173\",[12,2.505]],[\"name/174\",[2,48.565]],[\"parent/174\",[148,3.198]],[\"name/175\",[149,57.038]],[\"parent/175\",[12,2.505]],[\"name/176\",[150,57.038]],[\"parent/176\",[12,2.505]],[\"name/177\",[151,57.038]],[\"parent/177\",[12,2.505]],[\"name/178\",[7,29.106]],[\"parent/178\",[12,2.505]],[\"name/179\",[152,48.565]],[\"parent/179\",[148,3.198]],[\"name/180\",[153,46.052]],[\"parent/180\",[148,3.198]],[\"name/181\",[154,57.038]],[\"parent/181\",[148,3.198]],[\"name/182\",[155,57.038]],[\"parent/182\",[148,3.198]],[\"name/183\",[156,57.038]],[\"parent/183\",[12,2.505]],[\"name/184\",[7,29.106]],[\"parent/184\",[12,2.505]],[\"name/185\",[152,48.565]],[\"parent/185\",[148,3.198]],[\"name/186\",[153,46.052]],[\"parent/186\",[148,3.198]],[\"name/187\",[2,48.565]],[\"parent/187\",[148,3.198]],[\"name/188\",[157,57.038]],[\"parent/188\",[148,3.198]],[\"name/189\",[158,57.038]],[\"parent/189\",[12,2.505]],[\"name/190\",[7,29.106]],[\"parent/190\",[12,2.505]],[\"name/191\",[152,48.565]],[\"parent/191\",[148,3.198]],[\"name/192\",[153,46.052]],[\"parent/192\",[148,3.198]],[\"name/193\",[159,57.038]],[\"parent/193\",[148,3.198]],[\"name/194\",[160,57.038]],[\"parent/194\",[12,2.505]],[\"name/195\",[7,29.106]],[\"parent/195\",[12,2.505]],[\"name/196\",[161,57.038]],[\"parent/196\",[148,3.198]],[\"name/197\",[162,57.038]],[\"parent/197\",[148,3.198]],[\"name/198\",[163,57.038]],[\"parent/198\",[12,2.505]],[\"name/199\",[10,46.052]],[\"parent/199\",[12,2.505]],[\"name/200\",[34,51.93]],[\"parent/200\",[12,2.505]],[\"name/201\",[164,57.038]],[\"parent/201\",[12,2.505]],[\"name/202\",[165,57.038]],[\"parent/202\",[12,2.505]],[\"name/203\",[166,57.038]],[\"parent/203\",[12,2.505]],[\"name/204\",[167,57.038]],[\"parent/204\",[]],[\"name/205\",[168,57.038]],[\"parent/205\",[]],[\"name/206\",[169,57.038]],[\"parent/206\",[]],[\"name/207\",[170,57.038]],[\"parent/207\",[]],[\"name/208\",[125,46.052]],[\"parent/208\",[]],[\"name/209\",[171,57.038]],[\"parent/209\",[]],[\"name/210\",[172,57.038]],[\"parent/210\",[]],[\"name/211\",[173,57.038]],[\"parent/211\",[]],[\"name/212\",[174,57.038]],[\"parent/212\",[]],[\"name/213\",[175,51.93]],[\"parent/213\",[]],[\"name/214\",[176,51.93]],[\"parent/214\",[]],[\"name/215\",[177,57.038]],[\"parent/215\",[]],[\"name/216\",[178,57.038]],[\"parent/216\",[]],[\"name/217\",[179,57.038]],[\"parent/217\",[]],[\"name/218\",[180,57.038]],[\"parent/218\",[]],[\"name/219\",[12,26.915]],[\"parent/219\",[]],[\"name/220\",[22,51.93]],[\"parent/220\",[]],[\"name/221\",[181,57.038]],[\"parent/221\",[]],[\"name/222\",[182,57.038]],[\"parent/222\",[]],[\"name/223\",[183,57.038]],[\"parent/223\",[]],[\"name/224\",[184,57.038]],[\"parent/224\",[]],[\"name/225\",[185,57.038]],[\"parent/225\",[]],[\"name/226\",[186,57.038]],[\"parent/226\",[]],[\"name/227\",[187,44.045]],[\"parent/227\",[]],[\"name/228\",[188,33.684]],[\"parent/228\",[187,4.1]],[\"name/229\",[189,33.684]],[\"parent/229\",[187,4.1]],[\"name/230\",[190,35.066]],[\"parent/230\",[187,4.1]],[\"name/231\",[191,35.066]],[\"parent/231\",[187,4.1]],[\"name/232\",[192,36.669]],[\"parent/232\",[]],[\"name/233\",[193,48.565]],[\"parent/233\",[192,3.413]],[\"name/234\",[194,46.052]],[\"parent/234\",[192,3.413]],[\"name/235\",[195,42.374]],[\"parent/235\",[192,3.413]],[\"name/236\",[196,48.565]],[\"parent/236\",[192,3.413]],[\"name/237\",[197,57.038]],[\"parent/237\",[192,3.413]],[\"name/238\",[198,51.93]],[\"parent/238\",[192,3.413]],[\"name/239\",[188,33.684]],[\"parent/239\",[192,3.413]],[\"name/240\",[189,33.684]],[\"parent/240\",[192,3.413]],[\"name/241\",[190,35.066]],[\"parent/241\",[192,3.413]],[\"name/242\",[191,35.066]],[\"parent/242\",[192,3.413]],[\"name/243\",[199,44.045]],[\"parent/243\",[]],[\"name/244\",[188,33.684]],[\"parent/244\",[199,4.1]],[\"name/245\",[189,33.684]],[\"parent/245\",[199,4.1]],[\"name/246\",[190,35.066]],[\"parent/246\",[199,4.1]],[\"name/247\",[191,35.066]],[\"parent/247\",[199,4.1]],[\"name/248\",[200,44.045]],[\"parent/248\",[]],[\"name/249\",[188,33.684]],[\"parent/249\",[200,4.1]],[\"name/250\",[189,33.684]],[\"parent/250\",[200,4.1]],[\"name/251\",[190,35.066]],[\"parent/251\",[200,4.1]],[\"name/252\",[191,35.066]],[\"parent/252\",[200,4.1]],[\"name/253\",[201,42.374]],[\"parent/253\",[]],[\"name/254\",[195,42.374]],[\"parent/254\",[201,3.944]],[\"name/255\",[188,33.684]],[\"parent/255\",[201,3.944]],[\"name/256\",[189,33.684]],[\"parent/256\",[201,3.944]],[\"name/257\",[190,35.066]],[\"parent/257\",[201,3.944]],[\"name/258\",[191,35.066]],[\"parent/258\",[201,3.944]],[\"name/259\",[202,42.374]],[\"parent/259\",[]],[\"name/260\",[195,42.374]],[\"parent/260\",[202,3.944]],[\"name/261\",[188,33.684]],[\"parent/261\",[202,3.944]],[\"name/262\",[189,33.684]],[\"parent/262\",[202,3.944]],[\"name/263\",[190,35.066]],[\"parent/263\",[202,3.944]],[\"name/264\",[191,35.066]],[\"parent/264\",[202,3.944]],[\"name/265\",[203,44.045]],[\"parent/265\",[]],[\"name/266\",[188,33.684]],[\"parent/266\",[203,4.1]],[\"name/267\",[189,33.684]],[\"parent/267\",[203,4.1]],[\"name/268\",[190,35.066]],[\"parent/268\",[203,4.1]],[\"name/269\",[191,35.066]],[\"parent/269\",[203,4.1]],[\"name/270\",[204,44.045]],[\"parent/270\",[]],[\"name/271\",[188,33.684]],[\"parent/271\",[204,4.1]],[\"name/272\",[189,33.684]],[\"parent/272\",[204,4.1]],[\"name/273\",[190,35.066]],[\"parent/273\",[204,4.1]],[\"name/274\",[191,35.066]],[\"parent/274\",[204,4.1]],[\"name/275\",[205,35.835]],[\"parent/275\",[]],[\"name/276\",[206,51.93]],[\"parent/276\",[205,3.336]],[\"name/277\",[207,51.93]],[\"parent/277\",[205,3.336]],[\"name/278\",[208,51.93]],[\"parent/278\",[205,3.336]],[\"name/279\",[209,57.038]],[\"parent/279\",[205,3.336]],[\"name/280\",[125,46.052]],[\"parent/280\",[205,3.336]],[\"name/281\",[138,51.93]],[\"parent/281\",[205,3.336]],[\"name/282\",[134,51.93]],[\"parent/282\",[205,3.336]],[\"name/283\",[188,33.684]],[\"parent/283\",[205,3.336]],[\"name/284\",[189,33.684]],[\"parent/284\",[205,3.336]],[\"name/285\",[190,35.066]],[\"parent/285\",[205,3.336]],[\"name/286\",[191,35.066]],[\"parent/286\",[205,3.336]],[\"name/287\",[210,40.943]],[\"parent/287\",[]],[\"name/288\",[194,46.052]],[\"parent/288\",[210,3.811]],[\"name/289\",[195,42.374]],[\"parent/289\",[210,3.811]],[\"name/290\",[188,33.684]],[\"parent/290\",[210,3.811]],[\"name/291\",[189,33.684]],[\"parent/291\",[210,3.811]],[\"name/292\",[190,35.066]],[\"parent/292\",[210,3.811]],[\"name/293\",[191,35.066]],[\"parent/293\",[210,3.811]],[\"name/294\",[211,34.351]],[\"parent/294\",[]],[\"name/295\",[193,48.565]],[\"parent/295\",[211,3.198]],[\"name/296\",[195,42.374]],[\"parent/296\",[211,3.198]],[\"name/297\",[196,48.565]],[\"parent/297\",[211,3.198]],[\"name/298\",[194,46.052]],[\"parent/298\",[211,3.198]],[\"name/299\",[212,51.93]],[\"parent/299\",[211,3.198]],[\"name/300\",[206,51.93]],[\"parent/300\",[211,3.198]],[\"name/301\",[7,29.106]],[\"parent/301\",[211,3.198]],[\"name/302\",[189,33.684]],[\"parent/302\",[213,4.834]],[\"name/303\",[214,57.038]],[\"parent/303\",[211,3.198]],[\"name/304\",[7,29.106]],[\"parent/304\",[211,3.198]],[\"name/305\",[189,33.684]],[\"parent/305\",[213,4.834]],[\"name/306\",[188,33.684]],[\"parent/306\",[211,3.198]],[\"name/307\",[189,33.684]],[\"parent/307\",[211,3.198]],[\"name/308\",[190,35.066]],[\"parent/308\",[211,3.198]],[\"name/309\",[191,35.066]],[\"parent/309\",[211,3.198]],[\"name/310\",[215,39.692]],[\"parent/310\",[]],[\"name/311\",[195,42.374]],[\"parent/311\",[215,3.695]],[\"name/312\",[196,48.565]],[\"parent/312\",[215,3.695]],[\"name/313\",[194,46.052]],[\"parent/313\",[215,3.695]],[\"name/314\",[188,33.684]],[\"parent/314\",[215,3.695]],[\"name/315\",[189,33.684]],[\"parent/315\",[215,3.695]],[\"name/316\",[190,35.066]],[\"parent/316\",[215,3.695]],[\"name/317\",[191,35.066]],[\"parent/317\",[215,3.695]],[\"name/318\",[216,42.374]],[\"parent/318\",[]],[\"name/319\",[217,51.93]],[\"parent/319\",[216,3.944]],[\"name/320\",[188,33.684]],[\"parent/320\",[216,3.944]],[\"name/321\",[189,33.684]],[\"parent/321\",[216,3.944]],[\"name/322\",[190,35.066]],[\"parent/322\",[216,3.944]],[\"name/323\",[191,35.066]],[\"parent/323\",[216,3.944]],[\"name/324\",[218,30.888]],[\"parent/324\",[]],[\"name/325\",[188,33.684]],[\"parent/325\",[218,2.875]],[\"name/326\",[219,57.038]],[\"parent/326\",[218,2.875]],[\"name/327\",[220,57.038]],[\"parent/327\",[218,2.875]],[\"name/328\",[221,57.038]],[\"parent/328\",[218,2.875]],[\"name/329\",[198,51.93]],[\"parent/329\",[218,2.875]],[\"name/330\",[222,57.038]],[\"parent/330\",[218,2.875]],[\"name/331\",[223,57.038]],[\"parent/331\",[218,2.875]],[\"name/332\",[224,57.038]],[\"parent/332\",[218,2.875]],[\"name/333\",[225,57.038]],[\"parent/333\",[218,2.875]],[\"name/334\",[217,51.93]],[\"parent/334\",[218,2.875]],[\"name/335\",[226,57.038]],[\"parent/335\",[218,2.875]],[\"name/336\",[227,57.038]],[\"parent/336\",[218,2.875]],[\"name/337\",[228,57.038]],[\"parent/337\",[218,2.875]],[\"name/338\",[229,57.038]],[\"parent/338\",[218,2.875]],[\"name/339\",[230,57.038]],[\"parent/339\",[218,2.875]],[\"name/340\",[231,57.038]],[\"parent/340\",[218,2.875]],[\"name/341\",[232,57.038]],[\"parent/341\",[218,2.875]],[\"name/342\",[233,57.038]],[\"parent/342\",[218,2.875]],[\"name/343\",[234,57.038]],[\"parent/343\",[218,2.875]],[\"name/344\",[235,51.93]],[\"parent/344\",[]],[\"name/345\",[188,33.684]],[\"parent/345\",[235,4.834]],[\"name/346\",[236,57.038]],[\"parent/346\",[]],[\"name/347\",[237,57.038]],[\"parent/347\",[]],[\"name/348\",[3,30.888]],[\"parent/348\",[]],[\"name/349\",[153,46.052]],[\"parent/349\",[3,2.875]],[\"name/350\",[238,57.038]],[\"parent/350\",[3,2.875]],[\"name/351\",[239,57.038]],[\"parent/351\",[3,2.875]],[\"name/352\",[240,57.038]],[\"parent/352\",[3,2.875]],[\"name/353\",[241,57.038]],[\"parent/353\",[3,2.875]],[\"name/354\",[42,51.93]],[\"parent/354\",[3,2.875]],[\"name/355\",[242,57.038]],[\"parent/355\",[3,2.875]],[\"name/356\",[243,57.038]],[\"parent/356\",[3,2.875]],[\"name/357\",[244,57.038]],[\"parent/357\",[3,2.875]],[\"name/358\",[245,57.038]],[\"parent/358\",[3,2.875]],[\"name/359\",[246,57.038]],[\"parent/359\",[3,2.875]],[\"name/360\",[146,51.93]],[\"parent/360\",[3,2.875]],[\"name/361\",[17,48.565]],[\"parent/361\",[3,2.875]],[\"name/362\",[14,46.052]],[\"parent/362\",[3,2.875]],[\"name/363\",[15,46.052]],[\"parent/363\",[3,2.875]],[\"name/364\",[16,48.565]],[\"parent/364\",[3,2.875]],[\"name/365\",[18,48.565]],[\"parent/365\",[3,2.875]],[\"name/366\",[35,48.565]],[\"parent/366\",[3,2.875]],[\"name/367\",[247,57.038]],[\"parent/367\",[]],[\"name/368\",[248,30.412]],[\"parent/368\",[]],[\"name/369\",[46,42.374]],[\"parent/369\",[248,2.831]],[\"name/370\",[249,44.045]],[\"parent/370\",[248,2.831]],[\"name/371\",[250,51.93]],[\"parent/371\",[248,2.831]],[\"name/372\",[251,57.038]],[\"parent/372\",[248,2.831]],[\"name/373\",[115,42.374]],[\"parent/373\",[248,2.831]],[\"name/374\",[252,44.045]],[\"parent/374\",[248,2.831]],[\"name/375\",[207,51.93]],[\"parent/375\",[248,2.831]],[\"name/376\",[253,57.038]],[\"parent/376\",[248,2.831]],[\"name/377\",[254,48.565]],[\"parent/377\",[248,2.831]],[\"name/378\",[255,57.038]],[\"parent/378\",[248,2.831]],[\"name/379\",[175,51.93]],[\"parent/379\",[248,2.831]],[\"name/380\",[256,57.038]],[\"parent/380\",[248,2.831]],[\"name/381\",[125,46.052]],[\"parent/381\",[248,2.831]],[\"name/382\",[176,51.93]],[\"parent/382\",[248,2.831]],[\"name/383\",[257,57.038]],[\"parent/383\",[248,2.831]],[\"name/384\",[208,51.93]],[\"parent/384\",[248,2.831]],[\"name/385\",[258,57.038]],[\"parent/385\",[248,2.831]],[\"name/386\",[259,57.038]],[\"parent/386\",[248,2.831]],[\"name/387\",[193,48.565]],[\"parent/387\",[248,2.831]],[\"name/388\",[8,26.915]],[\"parent/388\",[248,2.831]],[\"name/389\",[260,57.038]],[\"parent/389\",[]],[\"name/390\",[261,57.038]],[\"parent/390\",[]],[\"name/391\",[262,57.038]],[\"parent/391\",[]],[\"name/392\",[263,57.038]],[\"parent/392\",[]],[\"name/393\",[264,57.038]],[\"parent/393\",[]],[\"name/394\",[265,57.038]],[\"parent/394\",[]],[\"name/395\",[266,42.374]],[\"parent/395\",[]],[\"name/396\",[267,57.038]],[\"parent/396\",[266,3.944]],[\"name/397\",[268,57.038]],[\"parent/397\",[266,3.944]],[\"name/398\",[269,57.038]],[\"parent/398\",[266,3.944]],[\"name/399\",[31,51.93]],[\"parent/399\",[266,3.944]],[\"name/400\",[249,44.045]],[\"parent/400\",[266,3.944]],[\"name/401\",[270,40.943]],[\"parent/401\",[]],[\"name/402\",[46,42.374]],[\"parent/402\",[270,3.811]],[\"name/403\",[249,44.045]],[\"parent/403\",[270,3.811]],[\"name/404\",[115,42.374]],[\"parent/404\",[270,3.811]],[\"name/405\",[252,44.045]],[\"parent/405\",[270,3.811]],[\"name/406\",[271,51.93]],[\"parent/406\",[270,3.811]],[\"name/407\",[254,48.565]],[\"parent/407\",[270,3.811]],[\"name/408\",[272,36.669]],[\"parent/408\",[]],[\"name/409\",[46,42.374]],[\"parent/409\",[272,3.413]],[\"name/410\",[249,44.045]],[\"parent/410\",[272,3.413]],[\"name/411\",[250,51.93]],[\"parent/411\",[272,3.413]],[\"name/412\",[273,57.038]],[\"parent/412\",[272,3.413]],[\"name/413\",[115,42.374]],[\"parent/413\",[272,3.413]],[\"name/414\",[252,44.045]],[\"parent/414\",[272,3.413]],[\"name/415\",[271,51.93]],[\"parent/415\",[272,3.413]],[\"name/416\",[274,51.93]],[\"parent/416\",[272,3.413]],[\"name/417\",[254,48.565]],[\"parent/417\",[272,3.413]],[\"name/418\",[212,51.93]],[\"parent/418\",[272,3.413]],[\"name/419\",[275,40.943]],[\"parent/419\",[]],[\"name/420\",[46,42.374]],[\"parent/420\",[275,3.811]],[\"name/421\",[249,44.045]],[\"parent/421\",[275,3.811]],[\"name/422\",[276,57.038]],[\"parent/422\",[275,3.811]],[\"name/423\",[274,51.93]],[\"parent/423\",[275,3.811]],[\"name/424\",[115,42.374]],[\"parent/424\",[275,3.811]],[\"name/425\",[252,44.045]],[\"parent/425\",[275,3.811]],[\"name/426\",[277,57.038]],[\"parent/426\",[]],[\"name/427\",[278,38.58]],[\"parent/427\",[]],[\"name/428\",[46,42.374]],[\"parent/428\",[278,3.591]],[\"name/429\",[14,46.052]],[\"parent/429\",[278,3.591]],[\"name/430\",[15,46.052]],[\"parent/430\",[278,3.591]],[\"name/431\",[279,57.038]],[\"parent/431\",[278,3.591]],[\"name/432\",[7,29.106]],[\"parent/432\",[278,3.591]],[\"name/433\",[280,57.038]],[\"parent/433\",[281,4.834]],[\"name/434\",[282,57.038]],[\"parent/434\",[281,4.834]],[\"name/435\",[283,57.038]],[\"parent/435\",[278,3.591]],[\"name/436\",[115,42.374]],[\"parent/436\",[278,3.591]],[\"name/437\",[252,44.045]],[\"parent/437\",[278,3.591]],[\"name/438\",[4,35.835]],[\"parent/438\",[]],[\"name/439\",[14,46.052]],[\"parent/439\",[4,3.336]],[\"name/440\",[15,46.052]],[\"parent/440\",[4,3.336]],[\"name/441\",[16,48.565]],[\"parent/441\",[4,3.336]],[\"name/442\",[17,48.565]],[\"parent/442\",[4,3.336]],[\"name/443\",[18,48.565]],[\"parent/443\",[4,3.336]],[\"name/444\",[25,51.93]],[\"parent/444\",[4,3.336]],[\"name/445\",[10,46.052]],[\"parent/445\",[4,3.336]],[\"name/446\",[284,57.038]],[\"parent/446\",[4,3.336]],[\"name/447\",[285,57.038]],[\"parent/447\",[4,3.336]],[\"name/448\",[286,57.038]],[\"parent/448\",[4,3.336]]],\"invertedIndex\":[[\"__type\",{\"_index\":7,\"name\":{\"7\":{},\"13\":{},\"15\":{},\"17\":{},\"19\":{},\"21\":{},\"23\":{},\"25\":{},\"27\":{},\"29\":{},\"40\":{},\"42\":{},\"44\":{},\"96\":{},\"98\":{},\"117\":{},\"173\":{},\"178\":{},\"184\":{},\"190\":{},\"195\":{},\"301\":{},\"304\":{},\"432\":{}},\"parent\":{}}],[\"adapter\",{\"_index\":159,\"name\":{\"193\":{}},\"parent\":{}}],[\"age\",{\"_index\":255,\"name\":{\"378\":{}},\"parent\":{}}],[\"agent\",{\"_index\":143,\"name\":{\"168\":{}},\"parent\":{}}],[\"all\",{\"_index\":20,\"name\":{\"28\":{}},\"parent\":{}}],[\"analyze\",{\"_index\":27,\"name\":{\"36\":{}},\"parent\":{}}],[\"annotations\",{\"_index\":254,\"name\":{\"377\":{},\"407\":{},\"417\":{}},\"parent\":{}}],[\"antispoof\",{\"_index\":138,\"name\":{\"161\":{},\"281\":{}},\"parent\":{}}],[\"anycanvas\",{\"_index\":181,\"name\":{\"221\":{}},\"parent\":{}}],[\"anyimage\",{\"_index\":182,\"name\":{\"222\":{}},\"parent\":{}}],[\"anyvideo\",{\"_index\":183,\"name\":{\"223\":{}},\"parent\":{}}],[\"array\",{\"_index\":58,\"name\":{\"72\":{}},\"parent\":{}}],[\"arraysync\",{\"_index\":59,\"name\":{\"73\":{}},\"parent\":{}}],[\"async\",{\"_index\":241,\"name\":{\"353\":{}},\"parent\":{}}],[\"backend\",{\"_index\":153,\"name\":{\"180\":{},\"186\":{},\"192\":{},\"349\":{}},\"parent\":{}}],[\"backends\",{\"_index\":144,\"name\":{\"169\":{}},\"parent\":{}}],[\"backendtype\",{\"_index\":236,\"name\":{\"346\":{}},\"parent\":{}}],[\"blazepose\",{\"_index\":121,\"name\":{\"143\":{}},\"parent\":{}}],[\"blazeposedetect\",{\"_index\":120,\"name\":{\"142\":{}},\"parent\":{}}],[\"blur\",{\"_index\":217,\"name\":{\"319\":{},\"334\":{}},\"parent\":{}}],[\"body\",{\"_index\":15,\"name\":{\"18\":{},\"363\":{},\"430\":{},\"440\":{}},\"parent\":{}}],[\"bodyannotation\",{\"_index\":179,\"name\":{\"217\":{}},\"parent\":{}}],[\"bodyannotationblazepose\",{\"_index\":264,\"name\":{\"393\":{}},\"parent\":{}}],[\"bodyannotationefficientpose\",{\"_index\":265,\"name\":{\"394\":{}},\"parent\":{}}],[\"bodyconfig\",{\"_index\":210,\"name\":{\"287\":{}},\"parent\":{\"288\":{},\"289\":{},\"290\":{},\"291\":{},\"292\":{},\"293\":{}}}],[\"bodygesture\",{\"_index\":168,\"name\":{\"205\":{}},\"parent\":{}}],[\"bodykeypoint\",{\"_index\":266,\"name\":{\"395\":{}},\"parent\":{\"396\":{},\"397\":{},\"398\":{},\"399\":{},\"400\":{}}}],[\"bodylandmark\",{\"_index\":178,\"name\":{\"216\":{}},\"parent\":{}}],[\"bodylandmarkblazepose\",{\"_index\":263,\"name\":{\"392\":{}},\"parent\":{}}],[\"bodylandmarkefficientnet\",{\"_index\":262,\"name\":{\"391\":{}},\"parent\":{}}],[\"bodylandmarkmovenet\",{\"_index\":261,\"name\":{\"390\":{}},\"parent\":{}}],[\"bodylandmarkposenet\",{\"_index\":260,\"name\":{\"389\":{}},\"parent\":{}}],[\"bodyresult\",{\"_index\":270,\"name\":{\"401\":{}},\"parent\":{\"402\":{},\"403\":{},\"404\":{},\"405\":{},\"406\":{},\"407\":{}}}],[\"box\",{\"_index\":115,\"name\":{\"136\":{},\"373\":{},\"404\":{},\"413\":{},\"424\":{},\"436\":{}},\"parent\":{}}],[\"boxraw\",{\"_index\":252,\"name\":{\"374\":{},\"405\":{},\"414\":{},\"425\":{},\"437\":{}},\"parent\":{}}],[\"boxscore\",{\"_index\":250,\"name\":{\"371\":{},\"411\":{}},\"parent\":{}}],[\"brightness\",{\"_index\":223,\"name\":{\"331\":{}},\"parent\":{}}],[\"browser\",{\"_index\":139,\"name\":{\"164\":{}},\"parent\":{}}],[\"buffer\",{\"_index\":56,\"name\":{\"70\":{}},\"parent\":{}}],[\"buffersync\",{\"_index\":57,\"name\":{\"71\":{}},\"parent\":{}}],[\"bytes\",{\"_index\":63,\"name\":{\"77\":{}},\"parent\":{}}],[\"cachemodels\",{\"_index\":243,\"name\":{\"356\":{}},\"parent\":{}}],[\"cachesensitivity\",{\"_index\":244,\"name\":{\"357\":{}},\"parent\":{}}],[\"canvas\",{\"_index\":10,\"name\":{\"9\":{},\"14\":{},\"199\":{},\"445\":{}},\"parent\":{}}],[\"centernet\",{\"_index\":122,\"name\":{\"144\":{}},\"parent\":{}}],[\"class\",{\"_index\":276,\"name\":{\"422\":{}},\"parent\":{}}],[\"clone\",{\"_index\":68,\"name\":{\"82\":{}},\"parent\":{}}],[\"color\",{\"_index\":96,\"name\":{\"118\":{}},\"parent\":{}}],[\"compare\",{\"_index\":37,\"name\":{\"49\":{}},\"parent\":{}}],[\"config\",{\"_index\":3,\"name\":{\"3\":{},\"348\":{}},\"parent\":{\"349\":{},\"350\":{},\"351\":{},\"352\":{},\"353\":{},\"354\":{},\"355\":{},\"356\":{},\"357\":{},\"358\":{},\"359\":{},\"360\":{},\"361\":{},\"362\":{},\"363\":{},\"364\":{},\"365\":{},\"366\":{}}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{},\"59\":{},\"88\":{},\"139\":{},\"163\":{}},\"parent\":{}}],[\"contrast\",{\"_index\":224,\"name\":{\"332\":{}},\"parent\":{}}],[\"cpu\",{\"_index\":160,\"name\":{\"194\":{}},\"parent\":{}}],[\"data\",{\"_index\":60,\"name\":{\"74\":{}},\"parent\":{}}],[\"dataid\",{\"_index\":47,\"name\":{\"61\":{}},\"parent\":{}}],[\"datasync\",{\"_index\":62,\"name\":{\"76\":{}},\"parent\":{}}],[\"datatogpu\",{\"_index\":61,\"name\":{\"75\":{}},\"parent\":{}}],[\"deallocate\",{\"_index\":245,\"name\":{\"358\":{}},\"parent\":{}}],[\"debug\",{\"_index\":240,\"name\":{\"352\":{}},\"parent\":{}}],[\"default\",{\"_index\":45,\"name\":{\"57\":{}},\"parent\":{}}],[\"defaults\",{\"_index\":247,\"name\":{\"367\":{}},\"parent\":{}}],[\"description\",{\"_index\":209,\"name\":{\"279\":{}},\"parent\":{}}],[\"descriptor\",{\"_index\":114,\"name\":{\"135\":{}},\"parent\":{}}],[\"detect\",{\"_index\":44,\"name\":{\"56\":{}},\"parent\":{}}],[\"detector\",{\"_index\":206,\"name\":{\"276\":{},\"300\":{}},\"parent\":{}}],[\"dispose\",{\"_index\":64,\"name\":{\"78\":{},\"107\":{}},\"parent\":{}}],[\"disposeintermediatetensors\",{\"_index\":87,\"name\":{\"106\":{}},\"parent\":{}}],[\"distance\",{\"_index\":31,\"name\":{\"41\":{},\"399\":{}},\"parent\":{}}],[\"draw\",{\"_index\":13,\"name\":{\"12\":{}},\"parent\":{}}],[\"drawboxes\",{\"_index\":108,\"name\":{\"129\":{}},\"parent\":{}}],[\"drawgaze\",{\"_index\":110,\"name\":{\"131\":{}},\"parent\":{}}],[\"drawgestures\",{\"_index\":107,\"name\":{\"128\":{}},\"parent\":{}}],[\"drawlabels\",{\"_index\":106,\"name\":{\"127\":{}},\"parent\":{}}],[\"drawoptions\",{\"_index\":95,\"name\":{\"116\":{}},\"parent\":{\"117\":{}}}],[\"drawoptions.__type\",{\"_index\":97,\"name\":{},\"parent\":{\"118\":{},\"119\":{},\"120\":{},\"121\":{},\"122\":{},\"123\":{},\"124\":{},\"125\":{},\"126\":{},\"127\":{},\"128\":{},\"129\":{},\"130\":{},\"131\":{},\"132\":{},\"133\":{},\"134\":{}}}],[\"drawpoints\",{\"_index\":105,\"name\":{\"126\":{}},\"parent\":{}}],[\"drawpolygons\",{\"_index\":109,\"name\":{\"130\":{}},\"parent\":{}}],[\"dtype\",{\"_index\":50,\"name\":{\"64\":{}},\"parent\":{}}],[\"efficientpose\",{\"_index\":123,\"name\":{\"145\":{}},\"parent\":{}}],[\"embedding\",{\"_index\":257,\"name\":{\"383\":{}},\"parent\":{}}],[\"emit\",{\"_index\":40,\"name\":{\"52\":{}},\"parent\":{}}],[\"emotion\",{\"_index\":125,\"name\":{\"147\":{},\"208\":{},\"280\":{},\"381\":{}},\"parent\":{}}],[\"enabled\",{\"_index\":188,\"name\":{\"228\":{},\"239\":{},\"244\":{},\"249\":{},\"255\":{},\"261\":{},\"266\":{},\"271\":{},\"283\":{},\"290\":{},\"306\":{},\"314\":{},\"320\":{},\"325\":{},\"345\":{}},\"parent\":{}}],[\"enhance\",{\"_index\":36,\"name\":{\"48\":{}},\"parent\":{}}],[\"env\",{\"_index\":12,\"name\":{\"11\":{},\"162\":{},\"219\":{}},\"parent\":{\"163\":{},\"164\":{},\"165\":{},\"166\":{},\"167\":{},\"168\":{},\"169\":{},\"170\":{},\"171\":{},\"172\":{},\"173\":{},\"175\":{},\"176\":{},\"177\":{},\"178\":{},\"183\":{},\"184\":{},\"189\":{},\"190\":{},\"194\":{},\"195\":{},\"198\":{},\"199\":{},\"200\":{},\"201\":{},\"202\":{},\"203\":{}}}],[\"env.__type\",{\"_index\":148,\"name\":{},\"parent\":{\"174\":{},\"179\":{},\"180\":{},\"181\":{},\"182\":{},\"185\":{},\"186\":{},\"187\":{},\"188\":{},\"191\":{},\"192\":{},\"193\":{},\"196\":{},\"197\":{}}}],[\"equalization\",{\"_index\":219,\"name\":{\"326\":{}},\"parent\":{}}],[\"error\",{\"_index\":286,\"name\":{\"448\":{}},\"parent\":{}}],[\"events\",{\"_index\":22,\"name\":{\"31\":{},\"220\":{}},\"parent\":{}}],[\"execute\",{\"_index\":84,\"name\":{\"103\":{}},\"parent\":{}}],[\"executeasync\",{\"_index\":85,\"name\":{\"104\":{}},\"parent\":{}}],[\"externalcanvas\",{\"_index\":185,\"name\":{\"225\":{}},\"parent\":{}}],[\"face\",{\"_index\":14,\"name\":{\"16\":{},\"362\":{},\"429\":{},\"439\":{}},\"parent\":{}}],[\"faceantispoofconfig\",{\"_index\":203,\"name\":{\"265\":{}},\"parent\":{\"266\":{},\"267\":{},\"268\":{},\"269\":{}}}],[\"faceconfig\",{\"_index\":205,\"name\":{\"275\":{}},\"parent\":{\"276\":{},\"277\":{},\"278\":{},\"279\":{},\"280\":{},\"281\":{},\"282\":{},\"283\":{},\"284\":{},\"285\":{},\"286\":{}}}],[\"facedescriptionconfig\",{\"_index\":201,\"name\":{\"253\":{}},\"parent\":{\"254\":{},\"255\":{},\"256\":{},\"257\":{},\"258\":{}}}],[\"facedetect\",{\"_index\":126,\"name\":{\"148\":{}},\"parent\":{}}],[\"facedetectorconfig\",{\"_index\":192,\"name\":{\"232\":{}},\"parent\":{\"233\":{},\"234\":{},\"235\":{},\"236\":{},\"237\":{},\"238\":{},\"239\":{},\"240\":{},\"241\":{},\"242\":{}}}],[\"faceemotionconfig\",{\"_index\":202,\"name\":{\"259\":{}},\"parent\":{\"260\":{},\"261\":{},\"262\":{},\"263\":{},\"264\":{}}}],[\"facegesture\",{\"_index\":167,\"name\":{\"204\":{}},\"parent\":{}}],[\"faceiris\",{\"_index\":127,\"name\":{\"149\":{}},\"parent\":{}}],[\"faceirisconfig\",{\"_index\":200,\"name\":{\"248\":{}},\"parent\":{\"249\":{},\"250\":{},\"251\":{},\"252\":{}}}],[\"facelandmark\",{\"_index\":177,\"name\":{\"215\":{}},\"parent\":{}}],[\"facelivenessconfig\",{\"_index\":204,\"name\":{\"270\":{}},\"parent\":{\"271\":{},\"272\":{},\"273\":{},\"274\":{}}}],[\"facemesh\",{\"_index\":128,\"name\":{\"150\":{}},\"parent\":{}}],[\"facemeshconfig\",{\"_index\":199,\"name\":{\"243\":{}},\"parent\":{\"244\":{},\"245\":{},\"246\":{},\"247\":{}}}],[\"faceres\",{\"_index\":129,\"name\":{\"151\":{}},\"parent\":{}}],[\"faceresult\",{\"_index\":248,\"name\":{\"368\":{}},\"parent\":{\"369\":{},\"370\":{},\"371\":{},\"372\":{},\"373\":{},\"374\":{},\"375\":{},\"376\":{},\"377\":{},\"378\":{},\"379\":{},\"380\":{},\"381\":{},\"382\":{},\"383\":{},\"384\":{},\"385\":{},\"386\":{},\"387\":{},\"388\":{}}}],[\"facescore\",{\"_index\":251,\"name\":{\"372\":{}},\"parent\":{}}],[\"facetriangulation\",{\"_index\":23,\"name\":{\"32\":{}},\"parent\":{}}],[\"faceuvmap\",{\"_index\":24,\"name\":{\"33\":{}},\"parent\":{}}],[\"fillpolygons\",{\"_index\":111,\"name\":{\"132\":{}},\"parent\":{}}],[\"filter\",{\"_index\":146,\"name\":{\"171\":{},\"360\":{}},\"parent\":{}}],[\"filterconfig\",{\"_index\":218,\"name\":{\"324\":{}},\"parent\":{\"325\":{},\"326\":{},\"327\":{},\"328\":{},\"329\":{},\"330\":{},\"331\":{},\"332\":{},\"333\":{},\"334\":{},\"335\":{},\"336\":{},\"337\":{},\"338\":{},\"339\":{},\"340\":{},\"341\":{},\"342\":{},\"343\":{}}}],[\"finger\",{\"_index\":171,\"name\":{\"209\":{}},\"parent\":{}}],[\"fingercurl\",{\"_index\":172,\"name\":{\"210\":{}},\"parent\":{}}],[\"fingerdirection\",{\"_index\":173,\"name\":{\"211\":{}},\"parent\":{}}],[\"fingerscore\",{\"_index\":273,\"name\":{\"412\":{}},\"parent\":{}}],[\"flags\",{\"_index\":162,\"name\":{\"197\":{}},\"parent\":{}}],[\"flip\",{\"_index\":222,\"name\":{\"330\":{}},\"parent\":{}}],[\"font\",{\"_index\":100,\"name\":{\"121\":{}},\"parent\":{}}],[\"gear\",{\"_index\":119,\"name\":{\"141\":{}},\"parent\":{}}],[\"gender\",{\"_index\":175,\"name\":{\"213\":{},\"379\":{}},\"parent\":{}}],[\"genderscore\",{\"_index\":256,\"name\":{\"380\":{}},\"parent\":{}}],[\"genericconfig\",{\"_index\":187,\"name\":{\"227\":{}},\"parent\":{\"228\":{},\"229\":{},\"230\":{},\"231\":{}}}],[\"gesture\",{\"_index\":17,\"name\":{\"22\":{},\"361\":{},\"442\":{}},\"parent\":{}}],[\"gestureconfig\",{\"_index\":235,\"name\":{\"344\":{}},\"parent\":{\"345\":{}}}],[\"gestureresult\",{\"_index\":277,\"name\":{\"426\":{}},\"parent\":{}}],[\"gestures\",{\"_index\":283,\"name\":{\"435\":{}},\"parent\":{}}],[\"getintermediatetensors\",{\"_index\":86,\"name\":{\"105\":{}},\"parent\":{}}],[\"gl\",{\"_index\":26,\"name\":{\"35\":{}},\"parent\":{}}],[\"graphmodel\",{\"_index\":72,\"name\":{\"87\":{}},\"parent\":{\"88\":{},\"89\":{},\"90\":{},\"91\":{},\"92\":{},\"93\":{},\"94\":{},\"95\":{},\"96\":{},\"97\":{},\"98\":{},\"99\":{},\"100\":{},\"101\":{},\"102\":{},\"103\":{},\"104\":{},\"105\":{},\"106\":{},\"107\":{}}}],[\"hand\",{\"_index\":16,\"name\":{\"20\":{},\"364\":{},\"441\":{}},\"parent\":{}}],[\"handconfig\",{\"_index\":211,\"name\":{\"294\":{}},\"parent\":{\"295\":{},\"296\":{},\"297\":{},\"298\":{},\"299\":{},\"300\":{},\"301\":{},\"303\":{},\"304\":{},\"306\":{},\"307\":{},\"308\":{},\"309\":{}}}],[\"handconfig.__type\",{\"_index\":213,\"name\":{},\"parent\":{\"302\":{},\"305\":{}}}],[\"handgesture\",{\"_index\":169,\"name\":{\"206\":{}},\"parent\":{}}],[\"handpose\",{\"_index\":131,\"name\":{\"153\":{}},\"parent\":{}}],[\"handresult\",{\"_index\":272,\"name\":{\"408\":{}},\"parent\":{\"409\":{},\"410\":{},\"411\":{},\"412\":{},\"413\":{},\"414\":{},\"415\":{},\"416\":{},\"417\":{},\"418\":{}}}],[\"hands\",{\"_index\":279,\"name\":{\"431\":{}},\"parent\":{}}],[\"handskeleton\",{\"_index\":132,\"name\":{\"154\":{}},\"parent\":{}}],[\"handtrack\",{\"_index\":133,\"name\":{\"155\":{}},\"parent\":{}}],[\"handtype\",{\"_index\":174,\"name\":{\"212\":{}},\"parent\":{}}],[\"height\",{\"_index\":221,\"name\":{\"328\":{}},\"parent\":{}}],[\"hue\",{\"_index\":227,\"name\":{\"336\":{}},\"parent\":{}}],[\"human\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{\"1\":{},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{},\"50\":{},\"51\":{},\"52\":{},\"53\":{},\"54\":{},\"55\":{},\"56\":{}}}],[\"human.__type\",{\"_index\":9,\"name\":{},\"parent\":{\"8\":{},\"9\":{},\"14\":{},\"15\":{},\"16\":{},\"17\":{},\"18\":{},\"19\":{},\"20\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{},\"25\":{},\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{}}}],[\"id\",{\"_index\":46,\"name\":{\"60\":{},\"369\":{},\"402\":{},\"409\":{},\"420\":{},\"428\":{}},\"parent\":{}}],[\"image\",{\"_index\":34,\"name\":{\"46\":{},\"200\":{}},\"parent\":{}}],[\"imagedata\",{\"_index\":164,\"name\":{\"201\":{}},\"parent\":{}}],[\"imageobjects\",{\"_index\":184,\"name\":{\"224\":{}},\"parent\":{}}],[\"init\",{\"_index\":38,\"name\":{\"50\":{}},\"parent\":{}}],[\"initial\",{\"_index\":145,\"name\":{\"170\":{}},\"parent\":{}}],[\"input\",{\"_index\":186,\"name\":{\"226\":{}},\"parent\":{}}],[\"inputnodes\",{\"_index\":74,\"name\":{\"90\":{}},\"parent\":{}}],[\"inputs\",{\"_index\":76,\"name\":{\"92\":{}},\"parent\":{}}],[\"iouthreshold\",{\"_index\":196,\"name\":{\"236\":{},\"297\":{},\"312\":{}},\"parent\":{}}],[\"iris\",{\"_index\":208,\"name\":{\"278\":{},\"384\":{}},\"parent\":{}}],[\"irisgesture\",{\"_index\":170,\"name\":{\"207\":{}},\"parent\":{}}],[\"isdisposed\",{\"_index\":65,\"name\":{\"79\":{}},\"parent\":{}}],[\"kept\",{\"_index\":52,\"name\":{\"66\":{}},\"parent\":{}}],[\"kernels\",{\"_index\":163,\"name\":{\"198\":{}},\"parent\":{}}],[\"keypoints\",{\"_index\":271,\"name\":{\"406\":{},\"415\":{}},\"parent\":{}}],[\"kodachrome\",{\"_index\":231,\"name\":{\"340\":{}},\"parent\":{}}],[\"label\",{\"_index\":274,\"name\":{\"416\":{},\"423\":{}},\"parent\":{}}],[\"labelcolor\",{\"_index\":98,\"name\":{\"119\":{}},\"parent\":{}}],[\"landmarks\",{\"_index\":212,\"name\":{\"299\":{},\"418\":{}},\"parent\":{}}],[\"left\",{\"_index\":280,\"name\":{\"433\":{}},\"parent\":{}}],[\"lineheight\",{\"_index\":101,\"name\":{\"122\":{}},\"parent\":{}}],[\"linewidth\",{\"_index\":102,\"name\":{\"123\":{}},\"parent\":{}}],[\"live\",{\"_index\":259,\"name\":{\"386\":{}},\"parent\":{}}],[\"liveness\",{\"_index\":134,\"name\":{\"156\":{},\"282\":{}},\"parent\":{}}],[\"load\",{\"_index\":39,\"name\":{\"51\":{},\"99\":{}},\"parent\":{}}],[\"loadsync\",{\"_index\":81,\"name\":{\"100\":{}},\"parent\":{}}],[\"mask\",{\"_index\":197,\"name\":{\"237\":{}},\"parent\":{}}],[\"match\",{\"_index\":32,\"name\":{\"43\":{}},\"parent\":{}}],[\"maxdetected\",{\"_index\":194,\"name\":{\"234\":{},\"288\":{},\"298\":{},\"313\":{}},\"parent\":{}}],[\"mesh\",{\"_index\":207,\"name\":{\"277\":{},\"375\":{}},\"parent\":{}}],[\"meshraw\",{\"_index\":253,\"name\":{\"376\":{}},\"parent\":{}}],[\"metadata\",{\"_index\":79,\"name\":{\"95\":{}},\"parent\":{}}],[\"minconfidence\",{\"_index\":195,\"name\":{\"235\":{},\"254\":{},\"260\":{},\"289\":{},\"296\":{},\"311\":{}},\"parent\":{}}],[\"mobilefacenet\",{\"_index\":124,\"name\":{\"146\":{}},\"parent\":{}}],[\"model\",{\"_index\":161,\"name\":{\"196\":{}},\"parent\":{}}],[\"modelbasepath\",{\"_index\":242,\"name\":{\"355\":{}},\"parent\":{}}],[\"modelpath\",{\"_index\":189,\"name\":{\"229\":{},\"240\":{},\"245\":{},\"250\":{},\"256\":{},\"262\":{},\"267\":{},\"272\":{},\"284\":{},\"291\":{},\"302\":{},\"305\":{},\"307\":{},\"315\":{},\"321\":{}},\"parent\":{}}],[\"models\",{\"_index\":117,\"name\":{\"138\":{}},\"parent\":{\"139\":{},\"140\":{},\"141\":{},\"142\":{},\"143\":{},\"144\":{},\"145\":{},\"146\":{},\"147\":{},\"148\":{},\"149\":{},\"150\":{},\"151\":{},\"152\":{},\"153\":{},\"154\":{},\"155\":{},\"156\":{},\"157\":{},\"158\":{},\"159\":{},\"160\":{},\"161\":{}}}],[\"modelsignature\",{\"_index\":80,\"name\":{\"97\":{}},\"parent\":{}}],[\"modelversion\",{\"_index\":73,\"name\":{\"89\":{}},\"parent\":{}}],[\"movenet\",{\"_index\":135,\"name\":{\"157\":{}},\"parent\":{}}],[\"multithread\",{\"_index\":155,\"name\":{\"182\":{}},\"parent\":{}}],[\"nanodet\",{\"_index\":136,\"name\":{\"158\":{}},\"parent\":{}}],[\"negative\",{\"_index\":228,\"name\":{\"337\":{}},\"parent\":{}}],[\"next\",{\"_index\":41,\"name\":{\"53\":{}},\"parent\":{}}],[\"node\",{\"_index\":140,\"name\":{\"165\":{}},\"parent\":{}}],[\"now\",{\"_index\":33,\"name\":{\"45\":{}},\"parent\":{}}],[\"object\",{\"_index\":18,\"name\":{\"24\":{},\"365\":{},\"443\":{}},\"parent\":{}}],[\"objectconfig\",{\"_index\":215,\"name\":{\"310\":{}},\"parent\":{\"311\":{},\"312\":{},\"313\":{},\"314\":{},\"315\":{},\"316\":{},\"317\":{}}}],[\"objectresult\",{\"_index\":275,\"name\":{\"419\":{}},\"parent\":{\"420\":{},\"421\":{},\"422\":{},\"423\":{},\"424\":{},\"425\":{}}}],[\"objecttype\",{\"_index\":180,\"name\":{\"218\":{}},\"parent\":{}}],[\"offscreen\",{\"_index\":149,\"name\":{\"175\":{}},\"parent\":{}}],[\"options\",{\"_index\":21,\"name\":{\"30\":{}},\"parent\":{}}],[\"outputnodes\",{\"_index\":75,\"name\":{\"91\":{}},\"parent\":{}}],[\"outputs\",{\"_index\":77,\"name\":{\"93\":{}},\"parent\":{}}],[\"part\",{\"_index\":267,\"name\":{\"396\":{}},\"parent\":{}}],[\"perfadd\",{\"_index\":150,\"name\":{\"176\":{}},\"parent\":{}}],[\"performance\",{\"_index\":25,\"name\":{\"34\":{},\"444\":{}},\"parent\":{}}],[\"person\",{\"_index\":19,\"name\":{\"26\":{}},\"parent\":{}}],[\"personresult\",{\"_index\":278,\"name\":{\"427\":{}},\"parent\":{\"428\":{},\"429\":{},\"430\":{},\"431\":{},\"432\":{},\"435\":{},\"436\":{},\"437\":{}}}],[\"personresult.__type\",{\"_index\":281,\"name\":{},\"parent\":{\"433\":{},\"434\":{}}}],[\"persons\",{\"_index\":285,\"name\":{\"447\":{}},\"parent\":{}}],[\"pixelate\",{\"_index\":234,\"name\":{\"343\":{}},\"parent\":{}}],[\"platform\",{\"_index\":142,\"name\":{\"167\":{}},\"parent\":{}}],[\"point\",{\"_index\":116,\"name\":{\"137\":{}},\"parent\":{}}],[\"pointsize\",{\"_index\":103,\"name\":{\"124\":{}},\"parent\":{}}],[\"polaroid\",{\"_index\":233,\"name\":{\"342\":{}},\"parent\":{}}],[\"posenet\",{\"_index\":137,\"name\":{\"159\":{}},\"parent\":{}}],[\"position\",{\"_index\":268,\"name\":{\"397\":{}},\"parent\":{}}],[\"positionraw\",{\"_index\":269,\"name\":{\"398\":{}},\"parent\":{}}],[\"predict\",{\"_index\":83,\"name\":{\"102\":{}},\"parent\":{}}],[\"print\",{\"_index\":67,\"name\":{\"81\":{}},\"parent\":{}}],[\"process\",{\"_index\":6,\"name\":{\"6\":{}},\"parent\":{}}],[\"profile\",{\"_index\":43,\"name\":{\"55\":{}},\"parent\":{}}],[\"r0\",{\"_index\":88,\"name\":{\"109\":{}},\"parent\":{}}],[\"r1\",{\"_index\":89,\"name\":{\"110\":{}},\"parent\":{}}],[\"r2\",{\"_index\":90,\"name\":{\"111\":{}},\"parent\":{}}],[\"r3\",{\"_index\":91,\"name\":{\"112\":{}},\"parent\":{}}],[\"r4\",{\"_index\":92,\"name\":{\"113\":{}},\"parent\":{}}],[\"r5\",{\"_index\":93,\"name\":{\"114\":{}},\"parent\":{}}],[\"r6\",{\"_index\":94,\"name\":{\"115\":{}},\"parent\":{}}],[\"race\",{\"_index\":176,\"name\":{\"214\":{},\"382\":{}},\"parent\":{}}],[\"rank\",{\"_index\":55,\"name\":{\"69\":{},\"108\":{}},\"parent\":{\"109\":{},\"110\":{},\"111\":{},\"112\":{},\"113\":{},\"114\":{},\"115\":{}}}],[\"ranktype\",{\"_index\":51,\"name\":{\"65\":{}},\"parent\":{}}],[\"real\",{\"_index\":258,\"name\":{\"385\":{}},\"parent\":{}}],[\"renderer\",{\"_index\":157,\"name\":{\"188\":{}},\"parent\":{}}],[\"reset\",{\"_index\":28,\"name\":{\"37\":{}},\"parent\":{}}],[\"result\",{\"_index\":4,\"name\":{\"4\":{},\"438\":{}},\"parent\":{\"439\":{},\"440\":{},\"441\":{},\"442\":{},\"443\":{},\"444\":{},\"445\":{},\"446\":{},\"447\":{},\"448\":{}}}],[\"return\",{\"_index\":198,\"name\":{\"238\":{},\"329\":{}},\"parent\":{}}],[\"right\",{\"_index\":282,\"name\":{\"434\":{}},\"parent\":{}}],[\"rotation\",{\"_index\":193,\"name\":{\"233\":{},\"295\":{},\"387\":{}},\"parent\":{}}],[\"roundrect\",{\"_index\":104,\"name\":{\"125\":{}},\"parent\":{}}],[\"saturation\",{\"_index\":226,\"name\":{\"335\":{}},\"parent\":{}}],[\"save\",{\"_index\":82,\"name\":{\"101\":{}},\"parent\":{}}],[\"scopeid\",{\"_index\":53,\"name\":{\"67\":{}},\"parent\":{}}],[\"score\",{\"_index\":249,\"name\":{\"370\":{},\"400\":{},\"403\":{},\"410\":{},\"421\":{}},\"parent\":{}}],[\"segmentation\",{\"_index\":35,\"name\":{\"47\":{},\"160\":{},\"366\":{}},\"parent\":{}}],[\"segmentationconfig\",{\"_index\":216,\"name\":{\"318\":{}},\"parent\":{\"319\":{},\"320\":{},\"321\":{},\"322\":{},\"323\":{}}}],[\"sepia\",{\"_index\":229,\"name\":{\"338\":{}},\"parent\":{}}],[\"shadowcolor\",{\"_index\":99,\"name\":{\"120\":{}},\"parent\":{}}],[\"shape\",{\"_index\":48,\"name\":{\"62\":{}},\"parent\":{}}],[\"sharpness\",{\"_index\":225,\"name\":{\"333\":{}},\"parent\":{}}],[\"simd\",{\"_index\":154,\"name\":{\"181\":{}},\"parent\":{}}],[\"similarity\",{\"_index\":30,\"name\":{\"39\":{}},\"parent\":{}}],[\"size\",{\"_index\":49,\"name\":{\"63\":{}},\"parent\":{}}],[\"skeleton\",{\"_index\":214,\"name\":{\"303\":{}},\"parent\":{}}],[\"skipallowed\",{\"_index\":246,\"name\":{\"359\":{}},\"parent\":{}}],[\"skipframes\",{\"_index\":190,\"name\":{\"230\":{},\"241\":{},\"246\":{},\"251\":{},\"257\":{},\"263\":{},\"268\":{},\"273\":{},\"285\":{},\"292\":{},\"308\":{},\"316\":{},\"322\":{}},\"parent\":{}}],[\"skiptime\",{\"_index\":191,\"name\":{\"231\":{},\"242\":{},\"247\":{},\"252\":{},\"258\":{},\"264\":{},\"269\":{},\"274\":{},\"286\":{},\"293\":{},\"309\":{},\"317\":{},\"323\":{}},\"parent\":{}}],[\"ssrnetage\",{\"_index\":118,\"name\":{\"140\":{}},\"parent\":{}}],[\"ssrnetgender\",{\"_index\":130,\"name\":{\"152\":{}},\"parent\":{}}],[\"state\",{\"_index\":5,\"name\":{\"5\":{}},\"parent\":{}}],[\"strides\",{\"_index\":54,\"name\":{\"68\":{}},\"parent\":{}}],[\"supported\",{\"_index\":152,\"name\":{\"179\":{},\"185\":{},\"191\":{}},\"parent\":{}}],[\"technicolor\",{\"_index\":232,\"name\":{\"341\":{}},\"parent\":{}}],[\"tensor\",{\"_index\":8,\"name\":{\"8\":{},\"58\":{},\"85\":{},\"388\":{}},\"parent\":{\"59\":{},\"60\":{},\"61\":{},\"62\":{},\"63\":{},\"64\":{},\"65\":{},\"66\":{},\"67\":{},\"68\":{},\"69\":{},\"70\":{},\"71\":{},\"72\":{},\"73\":{},\"74\":{},\"75\":{},\"76\":{},\"77\":{},\"78\":{},\"79\":{},\"80\":{},\"81\":{},\"82\":{},\"83\":{},\"84\":{}}}],[\"tensorlike\",{\"_index\":71,\"name\":{\"86\":{}},\"parent\":{}}],[\"tf\",{\"_index\":11,\"name\":{\"10\":{}},\"parent\":{}}],[\"tfjs\",{\"_index\":147,\"name\":{\"172\":{}},\"parent\":{}}],[\"throwifdisposed\",{\"_index\":66,\"name\":{\"80\":{}},\"parent\":{}}],[\"timestamp\",{\"_index\":284,\"name\":{\"446\":{}},\"parent\":{}}],[\"tostring\",{\"_index\":69,\"name\":{\"83\":{}},\"parent\":{}}],[\"updatebackend\",{\"_index\":165,\"name\":{\"202\":{}},\"parent\":{}}],[\"updatecpu\",{\"_index\":166,\"name\":{\"203\":{}},\"parent\":{}}],[\"usecurves\",{\"_index\":113,\"name\":{\"134\":{}},\"parent\":{}}],[\"usedepth\",{\"_index\":112,\"name\":{\"133\":{}},\"parent\":{}}],[\"validate\",{\"_index\":29,\"name\":{\"38\":{}},\"parent\":{}}],[\"variable\",{\"_index\":70,\"name\":{\"84\":{}},\"parent\":{}}],[\"version\",{\"_index\":2,\"name\":{\"2\":{},\"174\":{},\"187\":{}},\"parent\":{}}],[\"vintage\",{\"_index\":230,\"name\":{\"339\":{}},\"parent\":{}}],[\"warmup\",{\"_index\":42,\"name\":{\"54\":{},\"354\":{}},\"parent\":{}}],[\"warmuptype\",{\"_index\":237,\"name\":{\"347\":{}},\"parent\":{}}],[\"wasm\",{\"_index\":151,\"name\":{\"177\":{}},\"parent\":{}}],[\"wasmpath\",{\"_index\":238,\"name\":{\"350\":{}},\"parent\":{}}],[\"wasmplatformfetch\",{\"_index\":239,\"name\":{\"351\":{}},\"parent\":{}}],[\"webgl\",{\"_index\":156,\"name\":{\"183\":{}},\"parent\":{}}],[\"webgpu\",{\"_index\":158,\"name\":{\"189\":{}},\"parent\":{}}],[\"weights\",{\"_index\":78,\"name\":{\"94\":{}},\"parent\":{}}],[\"width\",{\"_index\":220,\"name\":{\"327\":{}},\"parent\":{}}],[\"worker\",{\"_index\":141,\"name\":{\"166\":{}},\"parent\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/typedoc/classes/Env.html b/typedoc/classes/Env.html index 41b53c0a..5a49f2b6 100644 --- a/typedoc/classes/Env.html +++ b/typedoc/classes/Env.html @@ -1,4 +1,4 @@ -Env | @vladmandic/human - v2.6.2
Options
All
  • Public
  • Public/Protected
  • All
Menu
+Env | @vladmandic/human - v2.6.3
Options
All
  • Public
  • Public/Protected
  • All
Menu

Env class that holds detected capabilities

Hierarchy

  • Env

Index

Constructors

Properties

Canvas: undefined

MonkeyPatch for Canvas

diff --git a/typedoc/classes/GraphModel.html b/typedoc/classes/GraphModel.html index 906f4023..065348fb 100644 --- a/typedoc/classes/GraphModel.html +++ b/typedoc/classes/GraphModel.html @@ -1,4 +1,4 @@ -GraphModel | @vladmandic/human - v2.6.2
Options
All
  • Public
  • Public/Protected
  • All
Menu
+GraphModel | @vladmandic/human - v2.6.3
Options
All
  • Public
  • Public/Protected
  • All
Menu

A tf.GraphModel is a directed, acyclic graph built from a SavedModel GraphDef and allows inference execution.

A tf.GraphModel can only be created by loading from a model converted from diff --git a/typedoc/classes/Human.html b/typedoc/classes/Human.html index 7ff32eb5..b06d87ff 100644 --- a/typedoc/classes/Human.html +++ b/typedoc/classes/Human.html @@ -1,4 +1,4 @@ -Human | @vladmandic/human - v2.6.2

Options
All
  • Public
  • Public/Protected
  • All
Menu
+Human | @vladmandic/human - v2.6.3
Options
All
  • Public
  • Public/Protected
  • All
Menu

Human* library main class

All methods and properties are available only as members of Human class

wasmPlatformFetch: false
+

Force WASM loader to use platform fetch

+

default: auto-detects to link to CDN jsdelivr when running in browser

+

Legend

  • Constructor
  • Property
  • Method
  • Property

Settings

Theme

\ No newline at end of file diff --git a/typedoc/interfaces/FaceAntiSpoofConfig.html b/typedoc/interfaces/FaceAntiSpoofConfig.html index e8ec6454..752b3f63 100644 --- a/typedoc/interfaces/FaceAntiSpoofConfig.html +++ b/typedoc/interfaces/FaceAntiSpoofConfig.html @@ -1,4 +1,4 @@ -FaceAntiSpoofConfig | @vladmandic/human - v2.6.2
Options
All
  • Public
  • Public/Protected
  • All
Menu
+FaceAntiSpoofConfig | @vladmandic/human - v2.6.3
Options
All
  • Public
  • Public/Protected
  • All
Menu

Anti-spoofing part of face configuration

Hierarchy

Index

Properties

enabled: boolean

is module enabled?

diff --git a/typedoc/interfaces/FaceConfig.html b/typedoc/interfaces/FaceConfig.html index 8da4adbc..e7ab191c 100644 --- a/typedoc/interfaces/FaceConfig.html +++ b/typedoc/interfaces/FaceConfig.html @@ -1,4 +1,4 @@ -FaceConfig | @vladmandic/human - v2.6.2
Options
All
  • Public
  • Public/Protected
  • All
Menu
+FaceConfig | @vladmandic/human - v2.6.3
Options
All
  • Public
  • Public/Protected
  • All
Menu

Configures all face-specific options: face detection, mesh analysis, age, gender, emotion detection and face description

Hierarchy

Index

Properties

antispoof: Partial<FaceAntiSpoofConfig>
description: Partial<FaceDescriptionConfig>
detector: Partial<FaceDetectorConfig>
emotion: Partial<FaceEmotionConfig>
enabled: boolean

is module enabled?

diff --git a/typedoc/interfaces/FaceDescriptionConfig.html b/typedoc/interfaces/FaceDescriptionConfig.html index ea2c2963..171152c7 100644 --- a/typedoc/interfaces/FaceDescriptionConfig.html +++ b/typedoc/interfaces/FaceDescriptionConfig.html @@ -1,4 +1,4 @@ -FaceDescriptionConfig | @vladmandic/human - v2.6.2
Options
All
  • Public
  • Public/Protected
  • All
Menu
+FaceDescriptionConfig | @vladmandic/human - v2.6.3
Options
All
  • Public
  • Public/Protected
  • All
Menu

Description or face embedding part of face configuration