From ee7960bd8e54e4ca68e51ab11a423a6a9d05df5b Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Fri, 16 Oct 2020 15:04:51 -0400 Subject: [PATCH] updated examples plus bugfixes --- README.md | 82 ++++++++++++++++--------- assets/sample1.jpg | Bin 0 -> 144516 bytes assets/sample2.jpg | Bin 0 -> 181758 bytes assets/sample3.jpg | Bin 0 -> 221049 bytes assets/sample4.jpg | Bin 0 -> 210824 bytes assets/sample5.jpg | Bin 0 -> 166400 bytes assets/sample6.jpg | Bin 0 -> 302445 bytes assets/screenshot1.jpg | Bin 0 -> 369127 bytes assets/screenshot2.jpg | Bin 0 -> 228796 bytes demo/demo-esm.html | 21 +++---- demo/demo-esm.js | 105 +++++++++++++++++++++++---------- demo/sample-image.jpg | Bin 102644 -> 0 bytes demo/sample-video.jpg | Bin 84394 -> 0 bytes dist/human-nobundle.cjs | 26 ++++---- dist/human-nobundle.cjs.map | 4 +- dist/human.cjs | 94 ++++++++++++++--------------- dist/human.cjs.map | 4 +- dist/human.esm-nobundle.js | 2 +- dist/human.esm-nobundle.js.map | 4 +- dist/human.esm.js | 94 ++++++++++++++--------------- dist/human.esm.js.map | 4 +- dist/human.js | 94 ++++++++++++++--------------- dist/human.js.map | 4 +- src/config.js | 76 ++++++++++++++---------- src/index.js | 13 ++-- src/ssrnet/ssrnet.js | 13 ++-- 26 files changed, 367 insertions(+), 273 deletions(-) create mode 100644 assets/sample1.jpg create mode 100644 assets/sample2.jpg create mode 100644 assets/sample3.jpg create mode 100644 assets/sample4.jpg create mode 100644 assets/sample5.jpg create mode 100644 assets/sample6.jpg create mode 100644 assets/screenshot1.jpg create mode 100644 assets/screenshot2.jpg delete mode 100644 demo/sample-image.jpg delete mode 100644 demo/sample-video.jpg diff --git a/README.md b/README.md index 050e6b8f..9be06d20 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,13 @@ Compatible with Browser, WebWorker and NodeJS execution!
-**Example using static image:** -![Example Using Image](demo/sample-image.jpg) +## Examples -**Example using webcam:** -![Example Using WebCam](demo/sample-video.jpg) +**Using static images:** +![Example Using Image](assets/screenshot1.jpg) + +**Using webcam:** +![Example Using WebCam](assets/screenshot2.jpg)
@@ -211,59 +213,85 @@ Below is output of `human.defaults` object Any property can be overriden by passing user object during `human.detect()` Note that user object and default configuration are merged using deep-merge, so you do not need to redefine entire configuration +Configurtion object is large, but typically you only need to modify few values: + +- `enabled`: Choose which models to use +- `skipFrames`: Must be set to 0 for static images +- `modelPath`: Update as needed to reflect your application's relative path + + ```js -human.defaults = { - console: true, // enable debugging output to console - backend: 'webgl', // select tfjs backend to use +export default { + backend: 'webgl', // select tfjs backend to use + console: true, // enable debugging output to console face: { - enabled: true, // controls if specified modul is enabled (note: module is not loaded until it is required) + enabled: true, // controls if specified modul is enabled + // face.enabled is required for all face models: detector, mesh, iris, age, gender, emotion + // note: module is not loaded until it is required detector: { - modelPath: '../models/blazeface/tfhub/model.json', // can be 'tfhub', 'front' or 'back' - inputSize: 128, // 128 for tfhub and front models, 256 for back - maxFaces: 10, // how many faces are we trying to analyze. limiting number in busy scenes will result in higher performance - skipFrames: 10, // how many frames to skip before re-running bounding box detection - minConfidence: 0.5, // threshold for discarding a prediction - iouThreshold: 0.3, // threshold for deciding whether boxes overlap too much in non-maximum suppression - scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression + modelPath: '../models/blazeface/back/model.json', // can be 'tfhub', 'front' or 'back'. + // 'front' is optimized for large faces such as front-facing camera and 'back' is optimized for distanct faces. + inputSize: 256, // fixed value: 128 for front and 'tfhub' and 'front' and 256 for 'back' + maxFaces: 10, // maximum number of faces detected in the input, should be set to the minimum number for performance + skipFrames: 10, // how many frames to go without re-running the face bounding box detector + // if model is running st 25 FPS, we can re-use existing bounding box for updated face mesh analysis + // as face probably hasn't moved much in short time (10 * 1/25 = 0.25 sec) + minConfidence: 0.5, // threshold for discarding a prediction + iouThreshold: 0.3, // threshold for deciding whether boxes overlap too much in non-maximum suppression + scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression }, mesh: { enabled: true, modelPath: '../models/facemesh/model.json', + inputSize: 192, // fixed value }, iris: { enabled: true, modelPath: '../models/iris/model.json', + enlargeFactor: 2.3, // empiric tuning + inputSize: 64, // fixed value }, age: { enabled: true, modelPath: '../models/ssrnet-age/imdb/model.json', // can be 'imdb' or 'wiki' - skipFrames: 10, // how many frames to skip before re-running bounding box detection + // which determines training set for model + inputSize: 64, // fixed value + skipFrames: 10, // how many frames to go without re-running the detector }, gender: { enabled: true, - modelPath: '../models/ssrnet-gender/imdb/model.json', // can be 'imdb' or 'wiki' + minConfidence: 0.8, // threshold for discarding a prediction + modelPath: '../models/ssrnet-gender/imdb/model.json', }, emotion: { enabled: true, - minConfidence: 0.5, // threshold for discarding a prediction - skipFrames: 10, // how many frames to skip before re-running bounding box detection - useGrayscale: true, // convert color input to grayscale before processing or use single channels when color input is not supported + inputSize: 64, // fixed value + minConfidence: 0.5, // threshold for discarding a prediction + skipFrames: 10, // how many frames to go without re-running the detector + useGrayscale: true, // convert image to grayscale before prediction or use highest channel modelPath: '../models/emotion/model.json', }, }, body: { enabled: true, modelPath: '../models/posenet/model.json', - maxDetections: 5, // how many faces are we trying to analyze. limiting number in busy scenes will result in higher performance - scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression - nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression + inputResolution: 257, // fixed value + outputStride: 16, // fixed value + maxDetections: 10, // maximum number of people detected in the input, should be set to the minimum number for performance + scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression + nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression }, hand: { enabled: true, - skipFrames: 10, // how many frames to skip before re-running bounding box detection - minConfidence: 0.5, // threshold for discarding a prediction - iouThreshold: 0.3, // threshold for deciding whether boxes overlap too much in non-maximum suppression - scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression + inputSize: 256, // fixed value + skipFrames: 10, // how many frames to go without re-running the hand bounding box detector + // if model is running st 25 FPS, we can re-use existing bounding box for updated hand skeleton analysis + // as face probably hasn't moved much in short time (10 * 1/25 = 0.25 sec) + minConfidence: 0.5, // threshold for discarding a prediction + iouThreshold: 0.3, // threshold for deciding whether boxes overlap too much in non-maximum suppression + scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression + enlargeFactor: 1.65, // empiric tuning as skeleton prediction prefers hand box with some whitespace + maxHands: 10, // maximum number of hands detected in the input, should be set to the minimum number for performance detector: { anchors: '../models/handdetect/anchors.json', modelPath: '../models/handdetect/model.json', diff --git a/assets/sample1.jpg b/assets/sample1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82997d3ce77f12b2f369e7e0fbd94b6ca461e145 GIT binary patch literal 144516 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%0D5^5h3Zft*62>4NSd*|747w9d3lI$( z72Db8^YE`-?Br5)z_$&__f!7)PE0;Hbot| zt40f56s+08p0mIwr~38NSraU??QWHsUnfoVJ`8*7M11)o3-=4(kec__C1t8eov=~1 z4^2s3DuuF%-zsCvv|{^Ay(0Vo>6hp;$)I1OkTm$hvbeXFxykV3BlV0Sj*%LCsjj=+ zNH|hedc4zv+;K0Dfh!F85ziPi1k#hNpz1*>*GwH2H><72w~TS1k-Y~<11IKBB~4bd z^?%7rpTM~THAZ4%^{oM~N5$ZXybe$=l0?)q!sMkbMkpH+To09kgTDosS}ux{l0A$a zW^Z+OWV(z@cGK$3kJ3e3IiV^41q)P`I>OG~H?dcFrvK<}>eczpmW%#wG7)#um;BpO z8+b2W=aJ8SHC?LZl5YS`R`)7+$*885dSe-`ky*P3K%=s*6dzJ3l(e$^~y{r zyC#s#K@*9Zd@Iwhggfx~P+_j##VqyQ-WJN!i55}+BfNxw8n|1e^Yx_RbQ6ML`o2v$3srF4PJqE^DXtQS3uY{k(ov~S4=G9Czm)XY;oXhK zqSl1lkg10L=^v!JEb|14`qO!uua!ts?C;d$p}@2NWbw{UXXFrQw@OhyvcQiM_Dy?A z&UuyAH_QJPH$UdP^9VlXJL_ARs4}EZ66TgI1k_IL=NR4~1Y(=PIfi%!SVQtoWh?bQ z5)d36l$o*@alq;%7g4u3*;~^>;3wdwZ-)TR{PhqfQpi@qX%6AJ=L)F$Hn}0-{e-vucA9S z0(ghylt{bB0k2r6AmKvFNI=_A#~Tso`1BFjcHM)L()CfV`L{znu?l5VtuGFPn#}Pl3B>&tAdQvrVEB67{lWdy;hZX#J|-udg_Nd zgOjFX%zM)48BybxK9`;*-N(J}Tu~cl`^0IMGhOYeSMI1-J8G?mii2?&@*B)CFwizf z){T`Jdq-t{ggeIfI}ZadTqSyn;s8#(v?Qrul!i>%Fc-T zqh08VU!@cCb=2xcgXexY(zF}&V@}{MzonJz|5_?kF1r?on5xGZEzG%+_O27!#n-12Go%(9N=Pzr+C~?esl%$oEGFdgcd-^9A zW8%Fa)>h$tD1&$gDNVZqaGp<5MUlQqYI%iuUqGF% zm(Raq4Vx+U=Y3r_YfbXc-*AXsh*8`k`9fbQ^;&^1hO1+kx94n*`l42N$pteH!@r1b zjJkYnI+MgyWCk7`h5w=Ur|JRt2C;^+yW|48){S<7I=zM`)zZtN4{h&VEW}6=+sSoW+P2nlpk<(sX-gOY+aar)MKZ z3+F_LWANmFH~4AKoXQ=aJ-0^&ADfT}7L@r~?Jbp5gM!O8kfW*)me?r9HJv3Zu@cgB zvYhB=>q{qvGXbvf%{-D!wsBq3yh;8uC^%g#k28GFWr;0&eldmqfO|_~|L}2b;4aBm z;!X(L1RG=hQ*L7@qgvK;_LHi@^NCp@^Lgl`U)?j!-(2kl1p7;(XaVN6OCt!*}AaHr1ei!jsYMp;{EflA*fm7Cp&u+e6IzODA0XZz^hDC9$j z!1t(e{4o)5;?EvMxB)YP8u7ym5^19PBYY^Q&S)}sTIsR@c zYd+C?zGx>uS%gXlMT4>O|3UYvffT@?e;5Zlz}Ch;+o&!N#{A!N6LL-4usi8aY=#8M zC2bpz&hB#ezt6zKlLoVlJ(HhG?X7vv=m|ItEeDQQF6rBt6x*#+OC6b( zvGdqUOaH8PYhw+s(5L!1dEc1BLs#z)*~o#vW$nE>)9Vsk3!0qNY8A3NV_mn1%8ZJH z63$RUd^{p$_wEHYv@kQ73-Ki}W8&xes{f$TNX#C!|*T#T{E-VLx#nnxRS(@yb z$lHB*5fM}Ce>Xjhg-LGg5P2K0I#V;}hx@?{0=q^S2WYyFUb!b*W**6+)=Mb;3tH1( z(DF9*m4!ZkeFE%|`g1AxFTC5Zw^?=xCMs8Wn<14sQd{*pI^c4Vu#yOE!)Uu!&uFtX zFeQf}J+NK1dikf7@HWa}qOxW#kek&&bbbo5^xR5*p@{k6PL-MK4R%RKh==7)inJWt zPJMGEc!xcP3L%dKCWI-ATrtaaAZf;g=HGbDUQC2m)hiB@hw(`pts#rb3Dz1e3I%2B zDiBG#)4I>rrluivpE0W68@Y>^b6oVPyDRY!YOcioi=5bLX6MTBZ%#2yJ&0Lmm_pv& zk!;G|%i-hV=Eqh6epD~zzPhvAl(J}J5IwSrmb$Y-e`)k_B1U_1&AQ;gD`UMQa%BY) zEvg#<74+;35qRRUA4xXq1*F5}+N03^X_x$+XMu@C^uVlqm`4;e=Os9@TAIfs)>rO& zEyV_u5S*9Fr3GRk#1?dXE*N1j!i!u{IXi9Sx@ z8>xz^2Fg@-j^|hAo9Vp|dztKdL`$I`^{6Q6@cufjM%nDNJ5pi#4PVZhu_^w4HEpU~ z*^tGs&*v_qWyov)0@d9z4%UzN5?YL}nAUe3cp~X0Fee8lDI;}WNnTD|vZ^i!>h~zX z*!!C&-V6zRc1wjOd6#Un+lkL}cCL24SHj?|?~Yg@c*weQnXX#*jWod|ie0%LuOFD3 zw7%=&T6<))bYFPz8lTMxR0VCRxmIuNVjLVUT}3yu0O6zd$DKuex}2YvS3J0N;p04< zp$8mVb?tl@b={`#!oDsFz(K%kLyAY=f6^iUcIE+eCx8xwZqV!Iiq=Mam?0$!GA3I{C4C6PY`fm7Sxf7I=iQQHJ23MQinE1dz+fll^R4V^ zMPow|Ph}`kQNL6wNVD%{3#xPL+EJx}{{qVi8P+WWva+Xg&ADvKCyb7c+Wye-a+ z1=-3d$Dcpe-E$tj7s5NAIGQ?TjN@WhEF}GUC3AVe05!H}DkP)74^uSyv{-8vV}y=b zAF*L}>m1eB_8&*AR1;+bmB>LnKtL`IXQe^{`2a0Xm7#iNtUAci+SLA?`1G4qItfW@ zCU3vEHij}kQF$w5otN~SSa-DNQpw`RkGHuvyy1JphmP$c(nf_Lau@bG1H`T5xW8U% zpIf!bE%VA)5VRP?@qiQkNX<;-w@>BT0ZN7UQJ5uLZzTS;lf^BQ4dvasb{X=oc~Wp_ zvfNp?(`CgHbM?6WPJ!=1r7z8?pR6gPel$_?a6^o~wv05V82`ZhFn+AnJmm_o7?qwD z2Y#|}52$PUerysDBR_=?=zMuyt z)));2){e=@Z*Rtv+xrAV(sl@|5-NW79Rc2-{hJTWV2Wi<=L!d?Z6-=KRhP|HvV%r@ zKM>qQF5#(WYOl%u{X;ia*LsUNe1^kG)QRn;2EPq&P}GA0zo~X}guJA(sG`HU#Jf^e zGWnsCi&MR!K})t0MN$3IC$xa_xi>E|#q=c;iVafb#=m4+%ceID>-hTs^#IN-IfUu6 zMgdjw#(PoeCmE>dYlAujZ0hx^?>z6X)e9_94q`b^HXGS1OFi>;^|if7^Za?qxn`pF zVs)aT*F+!Px-JiY`R@s&u4cK91@Tyh+q^vg&+Oqj38g)gIE9SM1pVXRKSu&V|E-$> zE0=`^I}S^fmw@6~|GNp`|3yfelyMt&au4p*_JBC#eT&!TcTUxuhhD1v!C5=(NN{Tn zj*gL=VEO=?)rwHI4ktt|bAPnI`7L5`Q%Pa0UwlR_HM3#A(u*@M+>O#qu%3^O5)Dx-EZTuE!%FtM79co7}Ba z$-C*(D1*K37VIG@c~xQlCq}IDy!VYxjjirFHnAj>M#0uqX$-INk2&eYlC4Htrfq}F zdG^P8Aq(z(f?F)%tMubJYpQAr&mO9K@Q=1M z^Azyk+P-pal7O-A_00RVAxDp;7`_4)Gc~Z{3kDKXNjRl$$^1mS%`Q;ukmtbq>w{dn zJNcdd-{h(^vfUX#ZP536XJMtNE2lhMD^3XG)?nMAHGwX<^0-u zZuvc_ib7*kgZ*@|A;a~@xn9X-KWp?)oA6T`%8{Js@7560hTPkv6psk$iwL7GRrlu% zF0D(aWpp(c*FkggIJRmW;t(MuEmx(?W<&w8 zpHRoBjLB21rR;LDg*-ma&wyGTP=;g3JORq~-APkp3cTh=;RM~Tso`eV8!6#r>*a+)`E4_7~K+l`VHFfqzmr z3Lej`dBcclwk0rSVeWlDQ`N0=5jTnACry+KpEMc-C2?g-rpr5itwWZ(lpxmVdJReC z(w7Q!(4v_nbeSfc)a=}fvCdTfw_2-n1B}h_a&cEUqv=>&kB#4;akR8$IcbG2Hi~F+ zNY*3&J{g0Jey?j$zwE(k*8Z3%aZokgR^sc9?R;rQalIpFkU6@yU30k0UDd^$`OQ-;q9d)ZA$gDT&axp;%kD$CT@Hp&ifo+XS^pmW3yaI(G#;hTO#vI5 zKelq*v-a$T2v=TOyFL4Im%ir-P4Z$GG9-%6YeLH`to{7lo+m98>?luq{$YqVyBHKj zx*z+ic~|jyP`+t8r(JE9F-#w3Yk?zRc8@6*MXqN0Kd_$H?`tEI;jMD-tyxo_)~vQ^ z3^^+VxxFZo&-K6?h%(zy^DnK}X)fpS4wFZ3S|Vf{_8NZ{INgR9A(i|Dge73~jOqL2 zQ~0?~iRc@tx|}r^usRYvC~$UZlcNcCQ}W*QOLF)Vk6HQ3-s$qshfC?#u=ORJrydJ( zrFeS2{Pw&(203nq7#6apD-!KycUps}7jRm1i)1LgnC9lYlQG}G&_e;B59=n5u#szK z%t?9&R5No}fYbn69H0cDfeHx#040_OF}m#8I;jI`h5sQg`M>?npWdMem#HlMv(vqw z+NhOPSrEb$Q`_H#-L%#Nvxlyl#2N4TUuZLoyi1%2s$Ez$VsI!8P7%Z9oXCGS#_k6!C;PlF(p5qq{^JVe5{_1am z$BxeFKQNjz34`^5>sB5Q=v%BEsp*MtC`>dm;&V-z^5%Eng#BGKgeJdbIPk7F59-j+)=}O53K{qQwZtTR;B`x4 zTXX)cycp}fkiZ5HMql~pJtxLV#sQ6mtUZ@yej+FHXw{86wnhy$efXgLSu$Q%czaGE zf4yb>QrpWZ_?URJR0te_8%Z-m@bG>a0e7t#cXY~UXFs9EBNp@5$1=J8FP6`RA z42uPXk5%4kp_H>YI?)_%F2CW6nP zw1mtmCvDVQs|Ef;`&d(&4()l!J@dTZ>&$grqt0sOLtKhlT06C`Se=zwxJx~7`Qy_T ztt{|sTGhE*1p%W?br2UP@HNg8npw`{%$S~0GQ||10()cK@;a-XaF$|Gck!%STlyG=N@1!%tYEU^FzvnlQKqjO=Ma7>vcYZ^X1VAyaa?~YV{gdF(%h2n{G?E z&r|z*>)H>j4*aHV-oHTaWZIOzjl6RZJo`{MuXg z8qD6uPJ}65oopP@96J-10y@FQMzmQ5LQyQBh$T_G7H`defjIQnU9Yt#j~mHmtkVs1 zvSHo#EF495dqHCZ+=1nfD^hJo`!Uh*K?0?qNq!>g1@E!jemQk?yR@3d&|3ZbsiAME z0b%9&9sjTgG257yO*c8lirgyeAeziDK5ry_R+avwWRXzIR$iUzFX*RK<@$)!hIn=L zv}E!5R?rASSwQ|apk5;H-)1;Q`g#MUalJkBD<*w68)XZ&R}y~x!baX`e#vOUmX5aQ zrGE(UtiSQ{n3u=-FH#Q(Z{L1@h*6}+j|9i^) z->*Y)xkw#I1VbRSM;8HnXIUws*=}DhPKJ6#b)}u-ai|2Vx2GDQgiK@ubKx8*_HYV^ z@NnU9A@`6KEEJ6pJ`eNjTAhR{nle7ClP-@cl$QLpaDFRupin?OhZjEx3I+2>2#ZCw znJrKnhJW5j)#hFoPdX`$`<3{ap|3_pKK;jn99y^A=y>=PggbVL4FA`-?F3lT_ygo34X_iRC=V&^U%994n?ERh9+w*GPl!z%jc(rJ})5v6Y77zts2h7xSECPn5IFZ;;i;}X&7 zu}rr4IiNe9QOz_Ko0RskCnf6`ZF)ztGGw)}@}>(!E$~cq8PUY>Xa5q;;45KV zE%zSw$7!5uWeVs#JYlntpZidJF<|hjj+Koo z9nQlcdn_VhVS*UQ6ImK6J{Pt{0lUk--jlfUG&J#LChR|?+2Yh z{QIRacYot}&PlUq{8sT@x&J8mWazpal0qhrG8}HSt6ufvrab4J1utyUO<&hQo4#hs zcztpy>aHX4Pv66L3v8x-gxlueZ_fpd9k^M4K(XG%1k_XP7L_w7<F8R(%n1J2FOK{yCp@BY|3zCw!D&rxC)AO{&kxhLm&PdWC(-Jd_4cxUC~KEM2-x=qjC_Tuev z>ps1@#B16SGMcKJ72(GwavD!OV*ULT<0T#@U*yaCt2F!z=hNE8q4g~=HWcr+Iy<2F zFj{&o>goJ^TA7#MPPWx-{^+ygk4l$gZ_Z|YRE>OeQt?)5xxv8xJ85ptw_qV5M zZnD!(JSI$vjC$Mof3a!R*x!L!3}+ z?XjTk)1iPKzQ23fX`$Y;RR6+S`Q%29kcs|;tX{JygP@sPe*Wf^OMP6`;n;T_$k7k% zZ~{JRroRsVd7(h@k04iH?!UDiY&N+jOp$U>Oy4>&ihvq=igdf-MOE4~ zmwh?pG|mWPPC#B`0fW%?nxT;|mW)@YWkDMkAE*7EvA%OT*EbGC({?n=L%F{yrS57QH1lA5 z$JV}QhwnLACBX%C!as*&{3kaIrdbnJCE>^c}<(Tbb{GQeizAY<4ba75BxSKktyF^$VqrxPR%- zB)blErZzmbC+lY6-#tNHss94ChC&Ep@^9}?=}he{oz%F8o)2dg{!XkeEFGy|N%t7M z{2HQWwsx)`qwTI^w$y>A{jyM-#JTROEo3Ru);cgxhMy}mSE`3j`h_2CG;fOJXZ40R z3wc>}bH$JKjcmDYGRR2|Py_E~JU?>uaUNgxa$?cZzt;=x`8#AzzW4F7dZEb;3s;l; zU45lqlmdDDt#$lLCGXKs*IrF~6!}>BEtLWvPrHl50xMhM)6}b5uDtYOMBmY>kf;N-PRn^k#zGk zz^yVo@)Enyn(*>T6)be3rnyn*2ythAJb3;(6ZYB&DKQf_Xv#qMNEGU;GEPpL83qSD zpEdm9D!z>an|o9SHi+qxWTOE&&Y2KY0R)=q|KK$Y?`aUd<@$?tCmL1e-cEWdh*Fu`m@zG=4z?Hc{A-C<3Hfi z&$t$ie)D)Ad9=c8ymt|OyaX3T(@;<2qyVQ6@%>i`wYHhXb!`vQqnpeWO-+FNyk_IM zjUsCl7`0DSo+zF&T!y|~3Lrj^LC|eQuGqc^)2njtyrnJcAKx>Zi%2PaJFB{1QwwIF zX?qk6q1JaBDl;%44GUy=PWLbNAIR<+-UJR+4StP94PuQ%Xz_PMpdwTS{rL z#HWGoKSGlZJe9Y6KF1$>AblMQsgEarVDcd3+_hR$HV^s*+rYH_(8WZ}yL3v^KHELm z+&pTT7WVTt7lrudL0cd%a0h1 zOg;y`W5mlSX!KSi=)w;sC${RDD?X+(NMJ}Yk~|QALF}K6vRVdMDyiVUeCR2+&;OjF z|H8w|011&VKp;r1Lwt$*w_FF_p82N+qFpKFT+#pjC^ zWBSU1=KUTH1qSQhd3_C~e(6+pb$VQwjg%+(Z4z4a$hV&uzDVm{Ro;x}%L~+6sl5z9 z9`_Ev0Am&pyCX3BjnO`%z>18|dVo=p{B|2{8^OaQ|MOEz2{&mffD0&ZFelJ$#r(kF zhf;sK9hK>tPkXzbUnaC>^Qs5MMF3I~d!&~|Y^|F#xU~3^A#i_m9AT@rN%`%cG8jN3@N*r6GPJA@j|T zHua=4RV<-rVOyVSvx7QPyRJ6|c_5=QV>}X_J8>7@*O#Tc*0bGK498$|1u}FYK}1el z5Sw<@O}>Ke(Dr&(tnw`p;OR364tapAT6~ z8EZKY5M4z@9@cuBbz=(ZFr(6nMqJ0m7=yY5%a|JWFE&FGzmsx2JnL#jhTQPS2j!#d z>%%C~GFd;mN;t~v6s+a=0d!6f>Z-z0kTgn4CCR-G| z%SumneKJ{mr|yZ$Tb0alMc~$EctR}@YoY=X!pls?b-gbaMhN=7+zU3iOI zyC#|^>T7IM@M2(~fXt4A0>wChYagMY0Q4#pCgc>d;|!;nn<+Wv>HnoI&e8&;Xd#va zQrtH^0nMJw{_`Uy4^$c;6AQw{;$qE&y-0{{3a1Rkez@Kc)9Tj9c{IN^t&X-uFjP~R z6-25PMQWF)WfkG$zML9}gdDQKXoSj>E@$4d!BSxt87-M&t&>&GD@kB{(=Fwj1d)b^Xcm1@tJKrg3wXPcGR{Hokh0Q|5lCVy*6;_ z=rHVeCI^sjvCVDLm%xh!zP>Fi&KT41O7}>7SkTFlsRWCy3F#F0-L#gTDKE8{!kiws zn`r_G{PfCmg?L*a`v+xRSd+zw!9iqd%Pwb7DZ8}2JY;0TzBig1&9rcmYF8j|w9g9L zy9TwtGg0`_OukQ?bL7vs<192C=b$qmzBc(pOkG8E>*z@=?PJhHT8r+*GRT$Jx|85& z?eV_m$TCJY5$$tjrmKGoQ`sl6D(ud)bq;TI3}%(njGP`^FovZn`E}nut(nU2&C0J6LH@~HCIH+$@xe_cS%SwTXt6z_ zLBA1xmuL|yeEqiDPE)%b$5>67DncT-s!-09o!O5Nw;!1k1sOuQ&abe?Qwpa@??XNy zlQznt8(z1VUs&MMhU=IfyKKkK$U!w(@6KP?Xb-dlD6Y|OWjPI5E();>+^M40jG5Nj zZ@%3dF!a23oH6`dS z#?+ez#mTlzk@?>hA(_#l)%(^>==_9CWsdG%8t5cVjjrPaabU9nRs7O1X-XTQJba|( zsqrq^^}vj&PPe1Sk@A!MqlM3Y=gh<(-YptZ8^cX=fN|pn3Wy#_U%a0!;z6bsb z6tq($SJ9pmCDN2;-}1R{bSGJ%yCt=abFTHWnn|5vk*=Dbcl9C=l=U;h)Z2*|-7=_! zkNO^hlM4mf&3{ABktSp6W+kDTGcK(zC4poC$dGHv-L~oU?!Ijo>+@3iD1{tPMcB$` z%h);ovD7axXiOOcpD_Jg1D0?~MH#HdFqt+OE2{>xbszVCNM!2;s*3D2k6_Q_AmA60 z(2C=7rco=Ay6B4@edCqW6^E&i7f5DhX}RD27O{r3oIOd zoM`FTs7^_C8o(tk+A-5b8eW@FOv9bj)kuhqoiyU%-`{CWXgfY^#f!}$;4*<^pzF*T z!DWpE=yYHPr2wQ;axo={!%ti7y4o<%t5*pJ6+di*j{*j#aYIzhe4nFEmL`!;liUl^ zjgt(J<~d2KWvHT6)iUVL*-mRz?Q!RUihu7_{odo@(RA{}-=SE@vf`5fuaUHmbHOT5 zH$7IfQ^<;=PD?B10!=;eVK{pV#SYEiRS5az>fTqFVlnW?l1q2PDw>rw~oD1@ogDywQC4%IJy2_>K5;@149vw&vv`}tYBNG^p=Q%xApx+OG&??Fk{aB-9#`oIK9 zUAr^OG-YEUI~i?hTzB{Y@aAAfXBECrq8011lbK6{h0JdFe~CQx+ap!Tt9KSj%{*%U zS|KBwS^!WnRWBn49>rZMec}N+Yzuzjxn zSWf2=xS%8ZT0P1>6X4l3?+TNJy^!XdO7 zF{aGVO3DMJcT&cBI5w&cznJb%LZp#O!fyYV|5R&?cQ+qU*FeKcIX{t-Q5VeLT;Qk= z)5rGfvz8ZRr0HvdwCfrEmKyH~Yxxl1eMP?CT92s_=ZTQ@o;s_qXlQ64Sn%as8K`e{ zWwDMlC>N8}iA~*j7P6uozfuuM4KhD;(pr#pXX?cUHVUK{32B>8VFCdt)Yga~wHRZf z`zI}!;BARKN`?0m7ykwNT3K<3?mKIQE`E(R7InKlPwh?=U1b_m`c#ko@vNxh!Bp=J zaqo><7tQ6*8>)YFa=-kmTC7Rk{?>YE%*M-d_g#hFIu3d2Hcm7Ob~Mq}c$Q*3L+m>O^Kk~J@U0oKRV1}f+ z5?rX-3KeX%A~AGnplg^mc@IqrvKucx&UT?X;b&A!1(Nn0u?*cnm?tFh{OC#To05Nl zY*@MGz{|r*TZ`nGS==03y7D3RYP_5ARA~BB=HUm<&12G0Wi!pa=dv?T_4H&ZYQ~&` zhOCA?F8cnjZtZ#VTWPyP9=F_X{1=F)T!gUp$$Q!2xHMGp%9cUkWi{8Rv8VQO22};d?Q^wK}x2qZoU&06Q!oy$7O75V9fd!@J;m8%7BHL4EF9l*%88bW& zgihjSp;8%9qSs`obf-kRVh{sIHHFHQJy2?I`!(?lxZO4RZ4`J;-x!84gBtH80|6w{ z9bj<5d&O#nZ&t=h^JzYc1Bn5{i;Lrr+&GX@k-er9V@v|Yzl;^$E@pp>5P*L>w%5IM zLNdEFueI1t64bonDl!xBEMf0gU?l3nWC8As(JMEdz9rYj8ZL*fWZy z&u$iSk#J>Z_U6N6{_Y0j8-3|gX7-`B8V|l?4b#?iC&IC^_M6@*tPrbRY*CtYRy&iJ z>GlY4iWMbA|VgUbaB2M2i2Wm2+f&`i>h#OxLF zT{?HRHPll4trK&$?vbTqY(^G68!`RujUQp-@g+OyD6|Q(Vm%hkNCi-Qw@ zmTZdoYtRd?SQmHjwd=jUK|y;h50lETIRZL)$KbYL*u1%LL6(T7yN#`dl3cW(d#Ac} zaM&n;eEU-6V!LI8MSf56TjoD3ec1$MUh+L{wCUg+w z`N!>8ekl5T@!j1ikw!X~ZhqFuF&j1O`5tc1u(Bt^Q#V?N@X4k;cdSwD5lEH5KKgx! z;g@W6<@9Xndus>&-8scpCFzkKU@I1k6-8FH2?E+8^L2sd(*_Rl)Gsvc{Ch(?N*m-E z8+4LvT?ZF8O4;D2)63dw+4s*R-Q*)H>;(U`VfKC|rM~AaQTrCHRa7bZ2^H^T1I~md z`o`ynE)icg*DXPJ%wJ`$p`c*U8qf7LMR~c!BFm7y_Wnakf`gb`bG7C+U$50{c~915 zb@8)m7Fnx%c&+}ennosZbyf@GaFU8d%K-qef6`SnJDT)C)P z_uf6S=^?36E_RwlzqB>9TABI}FBN^~FvU37WW9OFeCjHP%IvezydM9BTF>zt!+BR~ z2+>#rE@%OUS#lY^N_Mt}>n09 zh1psgk8>WC+a;6AWrx^etm@R0C7;jp$KLpyGeTlbAIrU|4a$2Ej~J`$dI<`)6fuz? z*bB~F(;H%*lTWs+`z&flHIvz_*WbzZw=aoqQaNqiWPc_je>@T znD`B{zz|4|5*%60c!5WknwOkms6SyRES`DV(W2U%e8s{~o3{7vdX4hhR+XjWWcUVk zFC=5C2A>s<-Ts70E@Iy24R_BaHj+NXPr2`7*Xg%PrMyh}YU#1Ums3jvWqu~l=|a4- zs$!8}mIrQE7gWn?;u3dS$ulDG*|^|y>gyE1heOphrfH4V`tg^9A0Qpu&4i0~GjS2& zLrBRHi->c|Ra8b%8xVAWcrJ&`fy5Ji;Inx01DL@xs;2VZ)FOFw1r>`4$ZE8`rnv6} z@a+5c^B`bifn;Jse;^cp*q?xIQr{rB{>V7t;Q~gNYz}`feAF0M;Wk`Qf$QA^&xkzP zs0=QNu2$jiU6!ynJ*&^;F=TH#d%0MDsf^DQmS?)nQ!80se`WZGVON(=ua#_GK~n#| zfpteh9IWLka>8_A`4rId$!mtZ7*gu%!Z03dQ%~9k2c!%jIru4d(=t3V)iN3mTy|y& zsE=i)0;G&2X*qn-2gVmQkjaA!qKLAS?YYd&z^itYdYOrmg_Kg3S3)a|gFp>w%jCj;U-iwI)Am1HmLKHYyslUSQfJ>qNGWP0_W`Q$==zJ)N zm4sD|ZW6_~c)Er(rr?a{^+jl2$w{sAfOH5B-=G+LLRLinOn4&j{ow)XRqCHLzh;Pz z&ZOXB5eY-u=;pIK#WEc&!c{1?#i~W0iD1<@KE3i#K0nl#kNxg+CH^WeSoUbR0->^;J(AQ*Y5Ae z_NMtvT*JM4xy_C7Xp{cDi4Q z0)4d+o1sUS{H`10z$CPe^|8}MHDvkn?h-`kx|}!wSr7bDVxy}a`^2NlOmI;%dLxh- zcRUG*L}jbl*9R|eUlDd`&$}f7V`q{cQv5^$IzXhP7gWhZp0#k21!J}Tco9fKvWA$r(ktBOfpSguiS zBtDzYB+_Y=HJtbKsfQ^z)+J^2JyQv$xnkhbTz`GIb$&k$dT#SBFMbWUSO=(_3|%M2 zQL#g<-y?{x8QZEq9=SAS{68d}ha;Q)_xEG(Dq`S_cv~hI6duTgw#V=Ow z+u%^HXZjm?`+^E5KQDb@#5(G7KohgTHHLkSyuDx$kWqw5E`p5-hhgfa9u5gXM~yZY z>(LP@QnJDaX0&B^zHYGRF>m+0va4&5GQ8s@vOXYDLp zX*;bhl(?PV+iI5q(NRyot&QN`l0vPr#-pk6XF=+S(Do$f-hWaR5LfE8yB~sJ zMTZh`oeH>#JALU&;JVNOaM~UAN&g`myc`*cLY}A$n^6iwLYz>ppC0Djpf6r3+h2P2 zFd#c~6Ss%?(JqSDftB;w#HO|wLE;NLBxIr*-WB;!EG9gi z5Li&*n+uROKh0Pv6l>80Z_JNz?Ucos616TU=5q}UQ1oAbD(;XeC3n;jIRt~0akH~n zTFlnc`eUKs-wQe{(<)Ut!+s!|#C_8zyh4^Rrw+~TA?Md`WX4(E?l){@;t{V+mxLW6 zp`&$x&Jy=IR4jlz%+g3=gr*X86G7z;DK!9aUZrqIM}lml3uvx&RA-|Z8C#B270Z9=Zaq3APW7!Q2 zKe5XAuk(4MmgV`_zByDJ(4WyDJczX3Z#q&Rou*&W*Q^lrHe@t;+BiDM<)gknx!g9| z$yumX>ingkOKV{UVO&I#k)#A;KH>bHTqCmU|~)Eo)ulKM;@K_|-vJ&RUN& z!qVocWz0PDBbt~>fvV@10d_f76zTZ7tLOh7I!Y9-HHwv$Ubwt8+F~;wY=PdDQ&Av$ zBd+ov=)#(XyHkU#T&)VAO^%Kabix?h-wO4ZGu)2*4-}2||A&?R!FlRE*KM^Y>^H

To!Q23^!9ESpPDDJ?N1!_<0lAHXliqu_*W#TqvcHh;5Wk!vla!_?e6QP8=w$|weeT0p;-f#Rnrx=~|lunDJ) z->G&jgbkW-_X86o!<{O~V)0;KXpBdx54-vi%iRo4c)bzL9`AHZ;$>c}|qmQ)a*IyF;8XIL;5Pd#qgRojwq(z3qhc zFF6iqmjdP}Baa01Q3f2bwrOvJ?Wy}c%Rhg;!uPz-YwA9i z6$#c7tJ(eIu5lpwH3ORal3Msdh(pD8mdI?E>rS@R;5{GlC0Jh*a#BkXOZU|)drwF{3BKf#B+kTp6GNaSl zG$nQD{1q#&5T={@?fVPSxn{A9_J6@iQo$CzDE(+~iD09NmOUerZKt5(_a|*4`u@3} zik{lkS;KF|{S)O2l+wc&7uxlz)~6eVdP1jKy9%OeW8C{%tZ$-IwfQhp4<(k5OzBuU zK^L{0zpTl|-{#$Zl7!$g5*WzkM{86l!{W>el)oXQ0)GSY^5$3KwIuuWvw5CuT#yo_ zFA%_G>~xbuo9O?%e;N0pGH_UL2D-OVcMI~dp(oBlA=+1zv0NOO z^tYxJ7cyw*k!=6(@k>JLLVQRDld_A2qO2N7T=OUF*!hG-t4Z(E@itG#*Q^e*yW9K5 zSNZu*@1isK`bvkpndI!Z^u?;m-tyQ+C_&Qbx3y~N-NGB*&u+2+5Tj(_(Xn*v_zV{5$WxKqaP6KgHL z>qNNz&*8nr`l*Uipl1{S6b|@ARGp6Ku)nAFyyN0Ok_LZPOaEjrqDqPp)S!iA1u9l@ zXdlKy1bbrfT2K*1J8!9o!R#K-z`UG`cUpF~fTh0o&+p;JS`hWn8EQ=Z+qz)c7=elN8S)kDdQWuJy2CNR8&p#wU{F!99_6 zh{p$=$4u!)5k|#lpUS&Lciup}mC9V%KS~H(tk|bJy`1g6&1pS77?Ad%PVVtx&!&ja zMg@sc3tlDLu!Ruu98ywv##OkHz8K(+H=UPFHMejy{i}|YEvsIeG4mOY)n^|E>S%l_ zNf)VnV%FET^(<@u z#AtpV`-2{O+s2r&{n6m$UPw1rP4RdsEp4YexL({|`ieW>VeRQL@o#YXtt1=mK8xF@s?qsC~&c)0sP0*=Q4T zE5%MP{hFmVm<7bWnmisn_BkXWH<~tK!e?!D0KP=BV5)!HP$Wlv<6C7!RR55tb(miO zJWse`c$kMHo|(Luqac~Qv;sV+imPGaMc#$ex)Q?r2|fa~A@Q#SEF1@(?*#C)irJN9 zp)>5n4^8z4UHb00=+p6o>~L>S&KvesZlgf`D-BJGb2l%>)ECs=GRd;-H>MWE&R-Uf z%*=>LTIJKUnFYo2P&!c3OxIK^I#}##v45#ZaeO9x2yLjnmWX$)^h}aH4eu zsx{Dh$|8$7P@XI2f`ABxE>V+^2U#1g+D*|x5BSr6EltK@HKPR|I6hAA4jwmJU0op( z<|}M|4UqAsC+^#SOA1RIalTr7C6B*3k;Y^SqUPXZ`kWV#?%-*f%4AbGJ;vqZd1S3C z+%>-vO~d`}R>~MReDE@x_EiriEWheoogh zBs5f9f_^kbIH!iRD~@o(Mt_OJ()g8s0jmM>Z(MHrV#7lPww88JxH(1 zAEU^)pYj`^7#;W?63GLkGNA|XEj}Qa>cK4+U0-9wO;b9IgLeQB^Bhv({^@qYjN@IF z?NPoEd^caJohUxvPtGWM6BADap6(Ei90dj=9jy-x8amTCwzwiM(?4jr1s~Hie1#8? zW7E+3HVvbFc{?t$ZYWU(9Jl)!`!N7+(xJKqb< zqZ^%6oSWoSlz2+ap{(k^#|>g_#GUU&k5-xR^s!IJ=yUfIMReAf^7vQQ89edSUd|H3 zu?xYH*tF-zUl29@hqDFzicjlkv>(Vn+APyJEX%Zr$#+~}liKaod??K5iO*kn<;U{a z2ZWTLq{nGZ#*QUG#~O@|`Ij61DUmJvF_SM6sqmUS*-EPr8U#(>NPs^B-rQ~QVZ1xR z)1ucFy9;BSe)EVKJ=O0y*DE8~!9_BJq}vE{p9&Vtj+Cm@-K=};$7e|{(Apr^`Qsbh zOVU_Vq1kKf?(t_qnIRKc%C=L%R%=)PCO>mcqncA*rxx=k{tyIdzgvy*MYa~dWbW@U zlJc?N2jstvQm1iQ#(M?`&%mgXCvD4)GN*<>;T5!g#?rz!sXE7<97DtPF6_{XV;5YI z7zwOqi&IkA%*5L~hK1Cv7Rz$Ei8a9VQ2EGmT>FKij=!S(irKADutc?`ER$j!z0v)N zw4zQvYvZqmg0=Z5UVhb_1K@>k2e?xXoz@IojDZD`Ta+gzI-73E>wxP?d6!STtguo{ z?1R_1s%PrMG4X%=U8jyeTm4#pAo(R?`hH`W*+bZ~J(q;_M6MlPXB*rt4-%DJ>?}9! zH~4Mwk^@xL{TT8A#)?I}&t^T z@R92}GgK^_|JQJiw-gJ3DZ> z#yp#ovqJA+AYW?m_y8p``e?}ISjt|0- ztiuv4wr!Ja0`g%$=Y0yEwU2eZu_+v0&Vt2N%C6G!ZJqjS{5=B6JpSs_P{XwoCz^Ub z3T$b2s>JRMwP#Z~cK#}djmdq+KCYeNlK~F)OAG30$*hkhC^UveA;rNUNPM|KHu7*^ z8=mPpTn;<}boqMtkcFefaf6f>V(;W#*wZVP68qVw<)i4L={kxvf4_e6H_r&%|1eI5 z7l*J4EN30s!qSRtU)gDh24JrHxdIrkY_VRXn-dc|4Xa9p3{ZeYRT+>ju#*m-=ENtl z=dPcuQeYlp(q4W+9?&vsJU+nP^;|q}WAGt7mYidJe>asBV26{d>NI$4#+4Vi_$o^4^kSa6!?*I>M?kxV z?!4Do`_$B8DWa&CaH0h+!R8kEt+p%fm;oi#qNAUUBd*)3^cmkenT~Nsd&zO2lS>oeUOC*~YpNv(K$s0? zSu>B1ePhMp1Pc$mvk9BGeY$N)dmAL9B^0%6)asx*vpSCoY}VM%BTuaNaE9J%}-DAH}WhDdd--D!O{*iImqaY*#7VXyXY z=QCuIDTX=5vS;q*#;{ydMhXq)pf$tr$WkIKjfTl6^RBgvC`t1%eBhy^>_?o|)1Ik{ zZSK115aF+WSsui(H-d~ANhxba!(fB(|89w4k^gj$U>&w@a zWp-^de>f5o0_)Q6oAxvx78z^Y&=s+6iw9U0zKX)Gu|Rtg(KV8~XMZMNdY;_RzURE@ z$ylg?7K<^}Ng;aTr+_=;FR^nBp0y3j0}s{tYy&)aDH?;TCG}^fEpO5zEst~M)&@iVLK=qZ zQmp!a`*X6{$Z6O5cCt(K($rI!ix7Z_YaGUkUusk?=~quD}@szhQ3uK2Es(tIW(`c7kCR7M7CKkx>nEGlHs zR9jy(NLo1Yz7q`{LvH6N;A)H1S|9A(bw0DcH9jVw{bkmh==f?YXXT}l5VFSe!0Y2A zo%+0^^VbK)!e4Hnc@;a}1R90De@VGuu)vj)>CMc`C|A1iLf#;RNc430X>II3(&_7) zTHN3w`_;c;Zara*w$THQjj+OeK!*Aa2XC9se5$Ce`K0G9Btx?H+qH^RzRQbh{xrBm zPjG%G$9p}o=RdXlCH_-W`b%CO+YG#i08}Xq=U9;GK;Qla?!Lw|^UUduc8Yh%-gmzn!x292OT0`|fv>FoTNc1u8uKX)$mc_%;yxTF{s}tj_~bri<0VgEbBY zwP;j^95Q4D9{aJBp*SaIOTs%XHOxT1&H^gmkb;dMnTHA}1EfbBKfw2F-23&jO1QoH zvWMsG+VGRyF?qT%50pp%oQnK*sW}b0jb* zj4a$^^R!ko1qW{q7=#xz7Tl7B(`iBv?I%~nw%nxyC(T2-g8kJ82U}TBZvPX0l{wr3 z;}2T>H%yEo@$_2IxVo;-OBa%UGkBAq$vG0-E-N;5ob(ta;*rj6PTQ0era>Y}{&S~i z$nr#XVDO)UMkh6?2W_{1$enfiC>{K3Of+rR5I3U=yvft@5o)p_?{rgBN2;V}1C{ny zWaz#QK)F5pgSf^_xhL27&FV++n<>g-Y=y)Hg&TOw640W`d7fFjVpR;q$b8*Ux!su% zYx|+IZyL4n9{Ov)exqAc{m5G*Tb$m~u5~pkD@Zs*2k=A)zj}^LBO6FOXMdq^p2Nzi z4Et&#jmq~fR?9Yf7}0!`j__)ktuln22pAe`S@k*#H+i_3?j9mYZo*kov-K^T7zQb2 zq1`r>Tgx8^l-W9@7qdB(>rY+J2X!H!k+Z6rX=6~-?n}ogj~h%B{2h=SMinp_qzmwJ zSa*i+!^s$4N{+C5KrM8q8-GeAu(~3Ky#;kUY$q9Rc(f%f2X+d%#w0qwCZ1T2^Km_6>$Bx*|@t7Z`Tr+ z+6*5(F@P}+g|+(NawPd850OdtWMoO|H$G>`GUW$~e1m_Ae*UJ&%gKYTL_pH?Q&mO$feVzAH*rr1>LdQ81yJ=k-5Yes=%^18%ji^|j4 zMkw3-Ltdu*EM9Wa;3(G#Lctz>Lz1y?-W)~dsEZ6D(pQ6LCXZcO(C>r}P^sKHr!h9X zUC${gka3gh#hI-qvo*SX)vq>x`$_1iToCyvNJ1OK z;iG=nam{S2>|fcW21-|NNZ4O*yw1(G^X5@}E6`K$`-{-;L&sGBAMNeqxxdm`w~;-2 zYxqu)E&fgq!#jz4?_S<1HhOO;&^7=acf!{Y{j6N{{{K%Ri5#h9)_xn)c`Q=&HaFY9 zw9Dm}cx6npZQ3&l)$bw2NN%B1Df(1g-%05L1U{-u;XFy?l%smsnYA7KBp|X@z=1!h zuusEZ(b4OHnC3Is=Qj3BqAbtFbeqzV7x4e*`JS0l;h+6+KW;$fqN*?r;CaaHs?P@s ztCML_8y)ypd>>A@N=!Q@<2VSLK8Z!-v~&T^X+k-XC3VBHt^!1lF#KeGglGpk;% z-*tW~Px4wbNuO`-du~!{|Ky{$A0T1W#1-! zNj0U7cL@7|Uo#2eYbsQ}s@jZ|HD>bB`i|BN`_hF430!1Ya)qev)5@eEvx7{;p!k3oCpv9`Um< zd%01zzk#>Ugw648Qq3cMx+%{q`f8!^n`-l|e&eSRx~vKP+4_&klx zJX%ODP%VD{$Wd{{u#jsNYo<8X-0NFSi)7Yzgx;jrs0)%}Ud3d~4uO0R7?RQ3MDET9 zjbbRKvC>O|M)2ePG z7x53VG72F2g5w%~4A3Z;5q@=n`%vv8#_n0vaRSsd;5pzy3W@P4(qeNm0)9Eq6NR$S z)Shsr+hzsh>0UOp;g3qoi4?4s!mlsE6V_9--%Ry?R>!L3!>=L*%HQ~_)f|^G^D>9* zBZdpTcu-2;w-V{HEUKU&um+sSk?rVoR*02cA9XwL!{yiRnoOIADAF-k885i z?s}^5&)24j7p{4q;kyk6fm?ixiAQi-FK&^{izVtQ?!g$?i;v2+I;J04re}CQ8aY{W zywHgX_{Q}ctGOY0isC#5otn8@vzV*Bh7V=^9sIX%lIE<|2TeP(DNsP?dj8>=!WH)cYhA#g*2dGna*ig zQ9Kwd{0Qii0lzvh9UxJ#g}{9IW~fJ=!k#WX012h$>_q&{+YcV$Z=$B| zSMal&09{GsYEi6`drPXAr)tSXo6?#`FHlC~fG;H=qV^6yQ+ev`8D`T3ld*1}lvYW# zf)2!Ucb*GR%w8j?y+uzTk7It;Nz|sZNTp#+Y0VUp>Rs>!;fE^WDDt}PcDiXTN}708 zqd-@k`uD^bQ}3te7%J=2y_<;K>h^W(s%>tZeEh)bzUa!k>%zAu>Z^*?KZQdTL=BM3LK{wXdO5+hvV-|KFg{^h(O}ghq;h@hPsOd zX`ud^Amou)0R|IsQUBwpQ<_Q6__g$hOv9M8zbC*sXH2Q&ph29-8?_f=WqiSYJm4!t z#1(>vPnG_G_FOL{?&@#&$zkzEeA!9*MdOh?YaihxQwoaj3p{F0(M^EgE2#^V`+a;W zHnl#p+vtIsp9!b^8yYTxRa=POIL&&&b%*48I&dZSJHu|Zpux7aIlAwJ++vwiK zwjA%WI5~#B@f9TbH!Y2r`VTmi`nTHR-fsR#6KeMl6HS{%sTu3X!aJA_LpuAVpWOVz zQu^QXm{TVUez!TNH!|_SYyP%zX=<3IdRG1ivK#VpWiD6@Wb#W9+nXOGGVwofw^lLuJ#CYx71s;{! z+7O&YQkWJ-75mGvOT|F!f5o3%Px)e}p`4DBI$>OXAU#1wAMxSo5F^7%j8wYp0EMme z7fU&sO)apfIc=Ss^qdy^R)3{V)U<`8$1QVa$6TR%xu7z*3W;&Zf|~%6XNPTtEr}w? z-@T1i$MaJ9wh5P=6nnf}jhi?pI^J1*yR>5A_%@vyT7gtZ-GvZ*oaa2b?yJ+A;&C*_ zI;tB94lFvTx3;mC@OtvhwfTB3ekxg3%F1PEs!MtLjrlp!8a%OHK#|RT zxIYvgSK;3MveJ1JLM-bhJF;mC{Oepp@FQ~a@kA|i=5b$H-wxWgnn8wIV6_Ou)XfZ{ z`!E%HwNJ!Vb!M#S4psFgyO<{*K(H@486z-G)OORqWDQaQ{$#N=6@lH!*7MRW_1mw6 z=E&1=Uuh>pooddjMriYGC~n0r2mz5xh;tme%$fCuAEl9?$iDSmp+tCDgUYZ9IAB_t zNb#zd>j~_HQxi~-J#XB(6)~z(&&1Oc>k_J&2Wj$N`v8mf9&>G@q{6j8!5I@)KROdU z?=3i*k#B6cVSOVjkzVB&>=W&8>3VMS7}*#GQw0vJBbtv;bibu+o^5~NnmWBbv>rwF zYeEU2kggZqI^@!HEc8Tcr1w6La5B5`o|+Q+6H@|P_1b66de@wXnutJD;p7~3m}zO& zZCNS*9_g=2kI@HWfsqR<WWvmNTpFmD%v zrGF@#imJljT*0iH=%FhrC|K92k7*PN!#HXFU3aY%^O}s!0|{CoMfZpF5%k2cMWXKM zk_eB$q^gY#uKb$eFpzP&@|=j9e&2jSGZxi09(bf9i8QzL~~tz4Hfn4Ig!W9|A9&ZN%uIpYotx5x?X^a z7p9qpMLQ!jA7#>g1z2}-5vKc<4-@V*{}o^C>UI3Wu9ktsf$v)vNB4Zt3(1&_0@-H& zM4W~T1kO6u-w0Mx@Co{eiS)t(aI8K;P9M=Lb4=A|^w0N)FB;RT#)Q=@g>QN#-(|e^mc8(i8EAqzfu&$X&ig*BZ?yapzUWYa?&?PKK<7b}`g?h8mJlCxB^4NEx=8{E=Uldy@8E z8+svApPb{wumrbnQ|$iw&{U`Fa0zJTwW#{J+3#1A$7fFYQNU7?105eETfMOTh5Hf#9ZN-xR!BGTJ^P#Zx5Fu2o`%Nsoqx z=7JQi_byg`@%;FXWek0BY3ufhJXN#p*JDd5j^BUJ|48XK2d_QHrZ2!Q2GBr4Ws<~^6=EgE1Ojx5^dR% z6}eLUMMK)A9IDfe7lL-cZWb4 z-q^5tWce3Q=~miOksWB?kg!V+OEJQepY8W@?T@R=S{}CJc3Hc?TfbhZ&EDaZZR_Vh zSPO!)!xxxyj(zI7Z|oFF1fA@g1LQn7@H8fDV4pHZR`wBaA;!>DM`$V&$fr=Guadmr zDVfQ@-A;neV<>S3qIftY#H~I9X`J~5q=lRj*fKT)g{JRAAr;ybR` zCD=&LE}l=#4Dc-9Fljnxy0M0}_4=VVO+OgkAhRx>FBsh+lsEh+>vF95G3z^P&Zze!20tjmMD1Zh|e7BkopP%eBt$59DnD=Ub_azdz+FN@cqY6f|Ro z@>#2KIy?|cDdhX&;s_E|4p-uh-`2oukwD!^6HkJuNx64{Qygrmln*cJ7hAmZ%w^2P zpgUW4gZYe!wV_c z>@RvW*5A6HiyrzNXm zZV>0z-GvZOg}c}*Qv(CgI`PObYad)98!VD2JZ}jy69!0g3OXb$_U#8#HB$u{V;ZqD zB6Qg9!1G$4tj8l0b1=r4l-p#OoFHkMAZY5G_9=6v7uxd=l%~1rR##TA+)kaQ29ybV z5hMw}+Nja(7sZDUTp|a3O%?IkADc6Qk>s6W21bDehpQWarbxNE9u!5OfrnXM0HTwa z(s=+r1m5LC;BfnJH(xc&nGmI@ocWk3ve{hd9;JjLMzjx-^Cba??CnhIr z&nv>SZkGJ%;yT^mM~PFBkeE#c!dwQB{CmiaAFm%smT%~v7G`QDy)d2?eJzI)#rRm7 z&qndrKN!d^+-B)S+)PjgE`1HdN@L~czf!LvuaLwA&9s6$n7NyRFN}xhc`v(uu$RNC z+T^99#RzF{eXJdwbPeRR$7;C3EZ-Li^widI(qXk5c3LTYS{`lD=P%_7{ZNQ6^H`MQ zFt`vx4v>W%pcq@9?5>+|TEQ8hL-x9#h&U4j5b>?wnjiOLk;In@_L{MdJ3jMv`qZU{ zyB@e8k{~vpbZriesG*Pv(s-D|+|cxC)u7$*oNZEB&PyPBZZWC7=dT20;;0a8a?GQ_ z222(V&3vblX<`nX$M~E*eGn{j7@L(J&l$d6j0u@8)d%2&rjO@H4rv`?%xGMhi=iXr zai%<+h^`3A(#$hs*s0}(^s6}AsEnvv`vJS>>fPD0)Tnz^&!dKfLFiyK9Uo6IlPm~E zm=krL{R2(Qqz1C(oUphrGw|eQqiz^2ieO3Q@ZAfHQ9`irzavjtjKxw*@JLRE*i3l0 zm{HL|*P?dv!rJ3*3y;qrYexyx&IY1p0~pdnp)*rGhn*^0s>l2B5Ud?vh$#*8&l$*7 zR<4an+pje6pzVY1X~)!bw?s3tifZ)PN=ZXxb>%}v)g&cUuKNq)Lg@So6`8wW#HZb)KJQdS;%VYHyCs7(8Jkp%eMPFh#%$OM;l!3ji*G)jZ=%zN zE^r`m1m?_AqR}l9+D5C!o7uac?}+hIXQi-S8(E2ydhYz_srYPRw+5NOJY#rZ$Ere* z*sdf>4%b|HXzg$_Q%UHXi{4Ux%vAA70z=;Zr`Nd;JNYQy{fIQJ{%PU(?cAjD&0Kl5 zsV}e7q2A(i^1nr5A8sWHkc~F-v00|ZrlmiG-PG{A33}Vw6G5Qr*Vym-Vok0TV}py^ zt>h$IJ)6bf2Rl>U9g=@6#C0^Jl?nW)9UZ>I*&Witrj7OF>xeJ)u;2rbt|?522Q8JD zdI&#e9PSKg-f3xi@gU4KPt+``$}mOt^Zmz$iJ*_2DnkLQ?awCSQAl+Wp@&L5CHE8)j@d%BT z4|vG6Th>4_msgnm4;0R~n2j1t)gLzB{E$H41}F}1e?WH?_HKK$ zW^!1^6|iK=|B#^(i(kBXFo~XTPaXD{94bunTsy-bs%zG+j`286t@>ESSs1Vr^HXFZ ze2uy>E(_QZ3V{Cn5DZG1Ga^tcu`}>c>KGiO^G;Thn2jmDby>DoB3n%kyd85u$Mil|gOVQn$Pm9~A!L7&T(3I7V zA7=^V4*E`Z{Y5UHs#-z}L|-=Q4G3Y}4AVpK4?$3stGOq+DHMq&Llpe0u)64eqRcR} z#-3&}mGJvgGT3*;c0)i5NDNw;*se2{Zyx6T?QiC@61-O1z%%~=e8H7GX-Z=$C)tDx z_QV=ylWmm5AETA;%2Nhbc9OhWTEpJR1w^glR+@yyRWsFRmWA+pk2uk%AGw1g&YLj) z$S~xG(h8oh$;b%sNI)2}&4uS}j2AQfq7Jjw+K&{yC~Jxi%chHk%_Y7F))M_M@X@fxkB64L!3m zmj7wZg3#+fCmB4kj3!d4b@g;UyU|-mNvDP(Ovkl-XI@3bqm~AhrsmBPo z>snp6IX3<`C2tBLi6;0m+5TE>0`{W;DmA^`v832iXtd@-Gn~HVo@3q(iJL8F+*h`y zPj`Q#m~J|=tkgyRAP|Cj!pxmBCCI&0HmU%>4eggkWM|^f8kQFl!u!YtGDw@qivku? z1EQ|%)|E}{5GA?l3?xxtev!M1QZhKIUdH^#snp<*nJm9~Uc*Q*WtfZu&7o6sC*(DH zvc+wl(01{15+|Y*IdOi7D;jEbpTKBjuk0z9bD<%PHv~oTApM z-OR&!p=O9#Yzun_w4;l?1+UTauEvvlL=+LjSjsEmwrybHf!3i$JCV`uLv)_MBvqSdx=kSq|8~=g42Lb0$-Tl>PQ5{W&=$p=s zf!xJ>H}aqz`NDa>p>i_`J9?Tj^|njzgSHE~Vt8(I-Y)bg{=FNbapr_)T8kJQp3V&_ zU68ZW3jDD4a&-dw?p5PpE{j6|RLFyFBZr%y`{;G?PH88V>gI84$6!QT>-~NiiQu-z22b3RvS*fazRCN-JiG-l-o&xpfow5t50Eg%b4A zOg7@<&xOAG-I24<{8Ul;LzxK^YRK`k2P)@u7d{YW%wW1^WVX%rJVg^%&mz zMH1wwI|PE^b^OT16&Uc8;`$A%o24|i8}W4ia6b3WzlXV zoP3Q$sGdsJe8Fj@S#I&oxdeaUX9DRA(16!YzL`=@(QF!N4Z^<8a(&UJF0MW!_(g;m zjcwp`hW@^S?x6>twNb?IA-qLQ;2|14`NuR9qgS@cuY=OdxS%+a$70p{TeLB+hW*91 z)t@CGH%s2(b$x)VFMX9=KAcI!qiZ+gxXp}D<+W0Dg*p@u<=)ljZ}iF!@E|^{K&28f zd)4IuTlKveI{`K(X)?jk#$cbB?B^&Ao> z-WFK@BBm{ZLa)&%o{>?fAnghv13ENX&J`-yo;qXv78%>7d75#J>fgWJcJYtdwf)2#V2es^Ut{f>svr4s$lt)x|+JmM(<-K7uY2@9Wuk>TiyoO5h~hd#!czpr+5zhUX&Dz$HgH_p~W}%?J~`+^m|L=&COx zz{_M^5uuq3f{JhxgA8a#3HrR9F<8kggZ?@lfyTZ{4>~YeZNTR)@I-vqjgTQ(ZW1=k z%zX(wXs7ZK5#v!n7Ga&InHPw1+AmfAt~ z_M4_L#-xwejV5vy>s7dU` zCr3j{ZE$$`x<_zoPcmqZFMb6(y2{SWID3<7tQNEp$1`E-eNNC-v>prxtqV5Z#WqA+ zX*oxJcp88iIAM(rE|0XigT}# zHe%Un&HOT%mKkd1{;A#Qr8zD=z03Sq&BlRdvAmX2nY+^2P86g2lz)GULT@}|w#6Hg zH~MGtpW_XJ$krIi2<{7>`&|QN(sV>!h$TGZP|S)9#u?E0Di6gB=T+-h>>tvT?XVOw z*Ai+7p)P4vO4XI#cbd>iQ&0xm+tLPurMaB|^#l~Zn3$+F>g8B3$!x5zpXO8W26Ur` z{)7KNV(O9K9Ov|G^Y8}Luf^uwR2Kv2Sv00&rkqMxmc#f$^$q4IPIE9gEH}64c=2P& zHBLfFORyPTa@r@;?>##u{KeUfV@cq?S8pEHGa8?f9Xw^vsEKl<+hy_%gWi7PepmUD zgyOcJ3fYlW*C!5Dd>mm6gO$yNjP|qRic6)Uy6cNiZQbJ}{sW2C;G#&veY=eyGoNc| zt3O;k=bf297e+$xiZC@yo~%Z4uEAsl?YR73hTbsRwwQAL z%zIx4G>uCoUJ*Qd$-UNTkIb^~Okg}%?{QLwN^#og{wWizCHPHuI-6=8;+^)ULsk;f z3k|qp=Xev)X`IUaL#liu0G1foGfyO)-Bi60tn@VzVD1GeicHbfiaJ;Mk#}FuNs!%O zqTH>NVbj81Vuiai=X`Zs(&1mEpG* z?-*`7k3d2$YW!A&MO(Pz9&{fe+h{K($CjwGp~;0F%F~+Cl2?x7??E4&!yHdLnu~lb z)<54E;kh+f$MA}>*bbpH9FKIP|FG{@k!gOsjq>h4MDn+K@x6%B~iE;-QB5%wY@S_&E;ze}FxvH@93V)TjSz~;vx=QS=<8+`e7e8uwI8=gr1kjT~qR!_ULlA8Gjj(;|m5Ju>(ct$XF?ax@k!=S`U#v>@ zFUZ&bRLv+^by~e|CF;~N*(g1$!R&bh}wYhlef|OATC|AQ_DkfX2D#@mnjHXcr7U*>8Mj!rD0+mW~ z@2~ch0$O{Alg^pyeN(bmRH~oJy~UeJGOCAnS|qdOhftDI(z9gL&9ND*hKwQUkT^** zjCn-*)vN@f;$LI(_)#tb4VekXgZq}w+6+aA0hHFV^{5pD=t@zJl+xodjUY|mMhy}E z{nY0V*hizv5f8F&eU&$3+-rUIkMxvm=0Z7`OzS<<;25LnaWIWo=N}8}{J&v*0k-TK z-3$8cA=n|F^gxnptmfK-l0}81&e_;p)ShaO;(wrS8Ip`Eg+X$C`QP_*yB4L28NH%9 z|4y}J&!dXl>%mHPh3&~!ob_av_0``=tvGwE5vUjw`V+X?;^NQxRO=a6yR|4B+7F^n zog09^+-c$0$i-XzQ~q;Rt+GCk5*uxvT$Jd*jbL?Q&MjmU<{C1Zc^>2XDocO( z*p_iNO9jJd6J6$gQx(ne1neB1{Md~qhTgFJr;@&tNl1;e_&2U6Uj+shJA8AyJ*vz{ z-?MPgw+Vb*M0f*BvEoG!Fr(!NIS!ca1t0*GsDQrCA>Pw8lT-1mA&#PTm%7dIR4Vlu zwEwuerao~`-~MA&raw~5h>mZgPA{}mqaGUc(9nI>?GB=t;s`N}xxN-?-Ic&Fv@<`j z)|z^1+Tk9MZ7MV9MKMp`+mT)>Io8>}*J75UDYS*hUtQ5cJjlxlWA_po13Y1C&pjvF zp6$#(*y?;jrfjvRX2Z8$UnV8OaXfHQaYE3ZnUU9GwoW;JsrSAqf7dK|saTp>fo(Yi zCU0;sTE<-`HxHTxG*lpWG)kGE7g{V_7f~V4!Cyl@n{bJ-(06=qb56)NiO)oF8=@(- z2AGfRul}8g1cY95Jn}EuI9D~C6cmZob9q*HYPU5;8G#GlaFS(8$4CBsk>`}PRU+DA zzqAGO^o1SdCWb)P?%QvphtW2H@8YCJRWV7sV9@(Llr~ot889lOU=Fdc6~X9=+c5T6 zC8+)&BG{vqFX|(_N=BoEf>GeqZ&*6@1+LFySC@?$(jgB61uUky`vn)DadMz(n*`$q zOXw84B&s6B92=V#R;PwBQdhbB0|M&m@9LL_{oU->` zIUKSb``8?Nm8>{M_KLC+$2?XX(!p_TMYfb=Z^uYTLN=9AuTp)!&-d@I-=F?JuE+Jf zuKRVny}NadKkcblPZ+!Y=vIK*zhC^9jY^(txYnfOa2u0P@0H8by}x(f8I8*con3Cj zi3h!>AY@?2YRNq{J${jmrLuD>ChV-?89&*jGgBL%Z= zy~k|_N_sQ~X(LHffbD?RJxu4gBngKMknwsV;Ys#WA2w~JrFVjluM2X|md1~W)x)4h z){-aoJ_SJ#-h7DF3=M*IcJa9bOi-ZYq9vj@UvKBk!bK?8=9k?>DFiw$kpVg~wFM@d zSviY?ud9-n;J?u<#ffrje?N^hBg3Y8w({7f=qG1Ei{BNuCqs*ZnS`pEa0qtTp|q3t z>IWiP_LOPH9}LQ}Mk9iJ*DEoxto$sWU7E8wgaq@fe>R{;kRIW^1%~2C%cWoSeUIzv zB*WeyDi57yV+uCPMG3{4CRQxEB15U%A#t8wDYiq&rNXDvswzxy`e}0s2!i%bL5D&= z0E5Ck!y+Avx|K_XrallylEZu9IUS4v`BK+h3r;=a>;!>V{CaI1m7v(w{N|6kw?f%) zcIr`=9PhCoq*UK&{!tRka>@0RmE%1u-uCJZ##5>6YbZYY+X9<|ZiAzr^>qI9TE5e;4BS|o_MuegyeLZdgj-| z?3}#csQOya2Z7R%Kf>FpEh*-6E}rs{4(Dzcxi6Z&R1zcARlRbc4D8a9`=DV|)Qfi@ z*C7=auirkj2w<91diH8&b)wX2?^ctF zf)8E)VR<>fp^tSw`$Kx&J6+jJ!ean&jq;xM808eI-SXQrF&w4f> z2V8%mDy=s;OfBFU7Qw)$u!}G44zI10V*k+nJbYzWFsjaX-Zx?Rt>a-#UCOl3gpq5- z(shKKd|9ZVL&R#_8D=RhJ99oX?4Q?-k8U9yCagR6zR{2y+-F~SDSH~2g>xJKYjxx^ zQJ#oNak+8`lFK+t`n7ho_eTb0fNg722**t$&QDx<2P~kpO3!K}e_MmgFEp2brbQaI z7ZFNZp-<_KG2Sg{r5|X1>Cy=PtbW+<>9kzHcc>(Pe~u!UD2HT{S6^UEj3&^EJ(2d8 zGg{wGx-OUIEsyy&;?F*=lIvnl?7wt4QoBG{}_1#^>kX!2RjX2bLuy7)~HT`A|1}YH+yxu!*Ettlv zyU>B$emT$$4A5^%nA)pqhNHam#vpeZ-ks5eqlnTT&-pNZw~h~Ft{8(8p`b6il+iGkVf|lwyuqtF(ia@-dv}!s zwMU!u-Ze~lX}{C?8+YW*AGAvN$Ikf=lDmkV!MFL?ZR~E|`UPL&2nwtNyI`OWB-YP62&O1|zrByg%54aOX3D(%gQ#tQFm##Gj-$vY#G# zk9)T=gQ^~ID3^DN&c5QKJ+R~4{Jz@b(}RjE`@5*6zcb$`{+}+NzAw?&DX5dU^M}m% z�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 Wn@XYq&{psWDnEHWpIgYU@BSA;GF)>2 literal 0 HcmV?d00001 diff --git a/assets/sample3.jpg b/assets/sample3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6cfacc59a8fd4f8d44699c5e402f0dfc263ea453 GIT binary patch literal 221049 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%0DN&1>8Q$MtVi5SPz#OXu(DMjXG} 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�bW#Qno&a!HuwEq19R>W5Z2|MzBfY-@0k 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�Pe$a`vv_+xCo5iD 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

tJMNyaEIvB-r% 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

$i-6s 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

9C9WcyElhDUHDIdDKmL9_yn!5kiZ6 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

^AzTlQR|C<@2a0#EZ4n9QGt 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%0AbV?ISwP6 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 z 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 - - - - - - -

- + + diff --git a/demo/demo-esm.js b/demo/demo-esm.js index 73b64bca..7a505050 100644 --- a/demo/demo-esm.js +++ b/demo/demo-esm.js @@ -4,9 +4,11 @@ import human from '../dist/human.esm.js'; const ui = { baseColor: 'rgba(255, 200, 255, 0.3)', - baseLabel: 'rgba(255, 200, 255, 0.8)', + baseLabel: 'rgba(255, 200, 255, 0.9)', baseFont: 'small-caps 1.2rem "Segoe UI"', baseLineWidth: 16, + baseLineHeight: 2, + columns: 3, busy: false, facing: 'user', }; @@ -23,8 +25,8 @@ const config = { gender: { enabled: true }, emotion: { enabled: true, minConfidence: 0.5, useGrayscale: true }, }, - body: { enabled: false, maxDetections: 10, scoreThreshold: 0.7, nmsRadius: 20 }, - hand: { enabled: false, skipFrames: 10, minConfidence: 0.5, iouThreshold: 0.3, scoreThreshold: 0.7 }, + body: { enabled: true, maxDetections: 10, scoreThreshold: 0.7, nmsRadius: 20 }, + hand: { enabled: true, skipFrames: 10, minConfidence: 0.5, iouThreshold: 0.3, scoreThreshold: 0.7 }, }; let settings; let worker; @@ -49,20 +51,23 @@ const log = (...msg) => { async function drawFace(result, canvas) { if (!result) return; const ctx = canvas.getContext('2d'); - ctx.strokeStyle = ui.baseColor; - ctx.font = ui.baseFont; for (const face of result) { + ctx.font = ui.baseFont; + ctx.strokeStyle = ui.baseColor; ctx.fillStyle = ui.baseColor; ctx.lineWidth = ui.baseLineWidth; ctx.beginPath(); if (settings.getValue('Draw Boxes')) { ctx.rect(face.box[0], face.box[1], face.box[2], face.box[3]); } - const labelAgeGender = `${face.gender || ''} ${face.age || ''}`; - const labelIris = face.iris ? `iris: ${face.iris}` : ''; - const labelEmotion = face.emotion && face.emotion[0] ? `emotion: ${Math.trunc(100 * face.emotion[0].score)}% ${face.emotion[0].emotion}` : ''; + // silly hack since fillText does not suport new line + const labels = []; + if (face.agConfidence) labels.push(`${Math.trunc(100 * face.agConfidence)}% ${face.gender || ''}`); + if (face.age) labels.push(`Age:${face.age || ''}`); + if (face.iris) labels.push(`iris: ${face.iris}`); + if (face.emotion && face.emotion[0]) labels.push(`${Math.trunc(100 * face.emotion[0].score)}% ${face.emotion[0].emotion}`); ctx.fillStyle = ui.baseLabel; - ctx.fillText(`${Math.trunc(100 * face.confidence)}% face ${labelAgeGender} ${labelIris} ${labelEmotion}`, face.box[0] + 2, face.box[1] + 22); + for (const i in labels) ctx.fillText(labels[i], face.box[0] + 6, face.box[1] + 24 + ((i + 1) * ui.baseLineHeight)); ctx.stroke(); ctx.lineWidth = 1; if (face.mesh) { @@ -102,11 +107,11 @@ async function drawFace(result, canvas) { async function drawBody(result, canvas) { if (!result) return; const ctx = canvas.getContext('2d'); - ctx.fillStyle = ui.baseColor; - ctx.strokeStyle = ui.baseColor; - ctx.font = ui.baseFont; - ctx.lineWidth = ui.baseLineWidth; for (const pose of result) { + ctx.fillStyle = ui.baseColor; + ctx.strokeStyle = ui.baseColor; + ctx.font = ui.baseFont; + ctx.lineWidth = ui.baseLineWidth; if (settings.getValue('Draw Points')) { for (const point of pose.keypoints) { ctx.beginPath(); @@ -164,13 +169,13 @@ async function drawBody(result, canvas) { async function drawHand(result, canvas) { if (!result) return; const ctx = canvas.getContext('2d'); - ctx.font = ui.baseFont; - ctx.lineWidth = ui.baseLineWidth; - window.result = result; for (const hand of result) { + ctx.font = ui.baseFont; + ctx.lineWidth = ui.baseLineWidth; if (settings.getValue('Draw Boxes')) { ctx.lineWidth = ui.baseLineWidth; ctx.beginPath(); + ctx.strokeStyle = ui.baseColor; ctx.fillStyle = ui.baseColor; ctx.rect(hand.box[0], hand.box[1], hand.box[2], hand.box[3]); ctx.fillStyle = ui.baseLabel; @@ -398,34 +403,74 @@ async function setupCamera() { }); } -// eslint-disable-next-line no-unused-vars -async function setupImage() { - const image = document.getElementById('image'); - image.width = window.innerWidth; - image.height = window.innerHeight; +async function processImage(input) { + ui.baseColor = 'rgba(200, 255, 255, 0.5)'; + ui.baseLabel = 'rgba(200, 255, 255, 0.8)'; + ui.baseFont = 'small-caps 3.5rem "Segoe UI"'; + ui.baseLineWidth = 16; + ui.baseLineHeight = 5; + ui.columns = 3; + const cfg = { + backend: 'webgl', + console: true, + face: { + enabled: true, + detector: { maxFaces: 10, skipFrames: 0, minConfidence: 0.1, iouThreshold: 0.3, scoreThreshold: 0.3 }, + mesh: { enabled: true }, + iris: { enabled: true }, + age: { enabled: true, skipFrames: 0 }, + gender: { enabled: true }, + emotion: { enabled: true, minConfidence: 0.1, useGrayscale: true }, + }, + body: { enabled: true, maxDetections: 10, scoreThreshold: 0.7, nmsRadius: 20 }, + hand: { enabled: true, skipFrames: 0, minConfidence: 0.5, iouThreshold: 0.3, scoreThreshold: 0.5 }, + }; return new Promise((resolve) => { - image.onload = () => resolve(image); - image.src = 'sample.jpg'; + const image = document.getElementById('image'); + image.onload = async () => { + log('Processing image:', image.src); + const canvas = document.getElementById('canvas'); + image.width = image.naturalWidth; + image.height = image.naturalHeight; + canvas.width = image.naturalWidth; + canvas.height = image.naturalHeight; + const result = await human.detect(image, cfg); + await drawResults(image, result, canvas); + const thumb = document.createElement('canvas'); + thumb.width = window.innerWidth / (ui.columns + 0.02); + thumb.height = canvas.height / (window.innerWidth / thumb.width); + const ctx = thumb.getContext('2d'); + ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height); + document.getElementById('samples').appendChild(thumb); + image.src = ''; + resolve(true); + }; + image.src = input; }); } +// eslint-disable-next-line no-unused-vars +async function detectSampleImages() { + ui.baseFont = 'small-caps 3rem "Segoe UI"'; + document.getElementById('canvas').style.display = 'none'; + log('Running detection of sample images'); + const samples = ['../assets/sample1.jpg', '../assets/sample2.jpg', '../assets/sample3.jpg', '../assets/sample4.jpg', '../assets/sample5.jpg', '../assets/sample6.jpg']; + for (const sample of samples) await processImage(sample); +} + async function main() { log('Human demo starting ...'); // setup ui control panel await setupUI(); - // setup webcam - await setupCamera(); - - // or setup image - // const input = await setupImage(); const msg = `Human ready: version: ${human.version} TensorFlow/JS version: ${human.tf.version_core}`; document.getElementById('log').innerText += '\n' + msg; log(msg); - // run actual detection. if input is video, it will run in a loop else it will run only once - // runHumanDetect(video, canvas); + // use one of the two: + await setupCamera(); + // await detectSampleImages(); } window.onload = main; diff --git a/demo/sample-image.jpg b/demo/sample-image.jpg deleted file mode 100644 index 83bc55327ec153442d31d2b9895ab03a187c3ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102644 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

-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 diff --git a/demo/sample-video.jpg b/demo/sample-video.jpg deleted file mode 100644 index 83330f43beb16e3177afe4d6fc6789668cb94799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84394 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 NDO8^5MDuUq{{WD+B%1&L diff --git a/dist/human-nobundle.cjs b/dist/human-nobundle.cjs index 056381bd..fd88beb6 100644 --- a/dist/human-nobundle.cjs +++ b/dist/human-nobundle.cjs @@ -3886,11 +3886,13 @@ var require_ssrnet = __commonJS((exports2) => { return models2.gender; } async function predict(image, config2) { - frame += 1; - if (frame >= config2.face.age.skipFrames) { + if (frame > config2.face.age.skipFrames) { frame = 0; - return last; + } else { + frame += 1; } + if (frame === 0) + return last; let enhance; if (image instanceof tf2.Tensor) { const resize = tf2.image.resizeBilinear(image, [config2.face.age.inputSize, config2.face.age.inputSize], false); @@ -3909,7 +3911,11 @@ var require_ssrnet = __commonJS((exports2) => { if (config2.face.gender.enabled) { const genderT = await models2.gender.predict(enhance); const data = await genderT.data(); - obj.gender = Math.trunc(100 * data[0]) < 50 ? "female" : "male"; + const confidence = Math.trunc(Math.abs(1.9 * 100 * (data[0] - 0.5))) / 100; + if (confidence > config2.face.gender.minConfidence) { + obj.gender = data[0] <= 0.5 ? "female" : "male"; + obj.confidence = confidence; + } tf2.dispose(genderT); } tf2.dispose(enhance); @@ -5077,6 +5083,7 @@ var require_config = __commonJS((exports2) => { }, gender: { enabled: true, + minConfidence: 0.8, modelPath: "../models/ssrnet-gender/imdb/model.json" }, emotion: { @@ -5093,7 +5100,7 @@ var require_config = __commonJS((exports2) => { modelPath: "../models/posenet/model.json", inputResolution: 257, outputStride: 16, - maxDetections: 5, + maxDetections: 10, scoreThreshold: 0.7, nmsRadius: 20 }, @@ -5105,7 +5112,7 @@ var require_config = __commonJS((exports2) => { iouThreshold: 0.3, scoreThreshold: 0.7, enlargeFactor: 1.65, - maxHands: 2, + maxHands: 10, detector: { anchors: "../models/handdetect/anchors.json", modelPath: "../models/handdetect/model.json" @@ -5256,11 +5263,6 @@ async function detect(input, userConfig) { await tf.setBackend(config.backend); await tf.ready(); } - let savedWebglPackDepthwiseConvFlag; - if (tf.getBackend() === "webgl") { - savedWebglPackDepthwiseConvFlag = tf.env().get("WEBGL_PACK_DEPTHWISECONV"); - tf.env().set("WEBGL_PACK_DEPTHWISECONV", true); - } if (config.face.enabled && !models.facemesh) models.facemesh = await facemesh.load(config.face); if (config.body.enabled && !models.posenet) @@ -5311,13 +5313,13 @@ async function detect(input, userConfig) { annotations: face.annotations, age: ssrData.age, gender: ssrData.gender, + agConfidence: ssrData.confidence, emotion: emotionData, iris: iris !== 0 ? Math.trunc(100 * 11.7 / iris) / 100 : 0 }); } tf.engine().endScope(); } - tf.env().set("WEBGL_PACK_DEPTHWISECONV", savedWebglPackDepthwiseConvFlag); perf.total = Object.values(perf).reduce((a, b) => a + b); resolve({face: faceRes, body: poseRes, hand: handRes, performance: perf}); }); diff --git a/dist/human-nobundle.cjs.map b/dist/human-nobundle.cjs.map index efa922c1..afd3b629 100644 --- a/dist/human-nobundle.cjs.map +++ b/dist/human-nobundle.cjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/facemesh/blazeface.js", "../src/facemesh/keypoints.js", "../src/facemesh/box.js", "../src/facemesh/util.js", "../src/facemesh/pipeline.js", "../src/facemesh/uvcoords.js", "../src/facemesh/triangulation.js", "../src/facemesh/facemesh.js", "../src/ssrnet/ssrnet.js", "../src/emotion/emotion.js", "../src/posenet/modelBase.js", "../src/posenet/modelMobileNet.js", "../src/posenet/heapSort.js", "../src/posenet/buildParts.js", "../src/posenet/keypoints.js", "../src/posenet/vectors.js", "../src/posenet/decodePose.js", "../src/posenet/decodeMultiple.js", "../src/posenet/util.js", "../src/posenet/modelPoseNet.js", "../src/posenet/posenet.js", "../src/handpose/box.js", "../src/handpose/handdetector.js", "../src/handpose/keypoints.js", "../src/handpose/util.js", "../src/handpose/pipeline.js", "../src/handpose/handpose.js", "../src/config.js", "../src/index.js"], - "sourcesContent": ["const tf = require('@tensorflow/tfjs');\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.detector.inputSize;\n this.height = config.detector.inputSize;\n this.maxFaces = config.detector.maxFaces;\n this.anchorsData = generateAnchors(config.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.iouThreshold = config.detector.iouThreshold;\n this.scaleFaces = 0.8;\n this.scoreThreshold = config.detector.scoreThreshold;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.maxFaces, this.iouThreshold, this.scoreThreshold);\n const boxIndices = await boxIndicesTensor.array();\n boxIndicesTensor.dispose();\n let boundingBoxes = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n boundingBoxes = await Promise.all(boundingBoxes.map(async (boundingBox) => {\n const vals = await boundingBox.array();\n boundingBox.dispose();\n return vals;\n }));\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boundingBox = boundingBoxes[i];\n const annotatedBox = tf.tidy(() => {\n const box = createBox(boundingBox);\n const boxIndex = boxIndices[i];\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf\n .slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1])\n .squeeze()\n .reshape([NUM_LANDMARKS, -1]);\n const probability = tf.slice(scores, [boxIndex], [1]);\n return { box, landmarks, probability, anchor };\n });\n annotatedBoxes.push(annotatedBox);\n }\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const image = tf.tidy(() => {\n if (!(input instanceof tf.Tensor)) {\n input = tf.browser.fromPixels(input);\n }\n return input.toFloat().expandDims(0);\n });\n const { boxes, scaleFactor } = await this.getBoundingBoxes(image);\n image.dispose();\n return Promise.all(boxes.map(async (face) => {\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const [landmarkData, boxData, probabilityData] = await Promise.all([face.landmarks, scaledBox, face.probability].map(async (d) => d.array()));\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n return normalizedFace;\n }));\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.detector.modelPath, { fromTFHub: config.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "exports.MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\nexports.MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n", "const tf = require('@tensorflow/tfjs');\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "/* eslint-disable class-methods-use-this */\nconst tf = require('@tensorflow/tfjs');\nconst bounding = require('./box');\nconst keypoints = require('./keypoints');\nconst util = require('./util');\n\nconst LANDMARKS_COUNT = 468;\nconst UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD = 0.25;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, keypoints.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = keypoints.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = keypoints.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < keypoints.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = keypoints.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = keypoints.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.regionsOfInterest = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.mesh.inputSize;\n this.meshHeight = config.mesh.inputSize;\n this.irisSize = config.iris.inputSize;\n this.irisEnlarge = config.iris.enlargeFactor;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]]));\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => ([\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1], coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[keypoints.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[keypoints.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n this.skipFrames = config.detector.skipFrames;\n this.maxFaces = config.detector.maxFaces;\n if (this.shouldUpdateRegionsOfInterest()) {\n const { boxes, scaleFactor } = await this.boundingBoxDetector.getBoundingBoxes(input);\n if (boxes.length === 0) {\n this.regionsOfInterest = [];\n return null;\n }\n const scaledBoxes = boxes.map((prediction) => {\n const predictionBox = {\n startPoint: prediction.box.startPoint.squeeze().arraySync(),\n endPoint: prediction.box.endPoint.squeeze().arraySync(),\n };\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n const scaledBox = bounding.scaleBoxCoordinates(predictionBox, scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = prediction.landmarks.arraySync();\n prediction.landmarks.dispose();\n prediction.probability.dispose();\n return { ...enlargedBox, landmarks };\n });\n this.updateRegionsOfInterest(scaledBoxes);\n this.runsWithoutFaceDetector = 0;\n } else {\n this.runsWithoutFaceDetector++;\n }\n const results = tf.tidy(() => this.regionsOfInterest.map((box, i) => {\n let angle = 0;\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n const boxLandmarksFromMeshModel = box.landmarks.length >= LANDMARKS_COUNT;\n let [indexOfMouth, indexOfForehead] = MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n if (boxLandmarksFromMeshModel === false) {\n [indexOfMouth, indexOfForehead] = BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n }\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n let rotatedImage = input;\n let rotationMatrix = util.IDENTITY_MATRIX;\n if (angle !== 0) {\n rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n }\n const boxCPU = { startPoint: box.startPoint, endPoint: box.endPoint };\n const face = bounding.cutBoxFromImageAndResize(boxCPU, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n // The first returned tensor represents facial contours, which are included in the coordinates.\n const [, flag, coords] = this.meshDetector.predict(face);\n const coordsReshaped = tf.reshape(coords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n if (config.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = (this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop])));\n const eyePredictionsData = eyePredictions.dataSync();\n eyePredictions.dispose();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n tf.dispose(rawCoords);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n if (config.mesh.enabled) {\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n this.regionsOfInterest[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync() };\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n confidence: flag.squeeze(),\n image: face,\n };\n return prediction;\n }\n const prediction = {\n coords: null,\n box: landmarksBox,\n confidence: flag.squeeze(),\n image: face,\n };\n return prediction;\n }));\n return results;\n }\n\n // Updates regions of interest if the intersection over union between the incoming and previous regions falls below a threshold.\n updateRegionsOfInterest(boxes) {\n for (let i = 0; i < boxes.length; i++) {\n const box = boxes[i];\n const previousBox = this.regionsOfInterest[i];\n let iou = 0;\n if (previousBox && previousBox.startPoint) {\n const [boxStartX, boxStartY] = box.startPoint;\n const [boxEndX, boxEndY] = box.endPoint;\n const [previousBoxStartX, previousBoxStartY] = previousBox.startPoint;\n const [previousBoxEndX, previousBoxEndY] = previousBox.endPoint;\n const xStartMax = Math.max(boxStartX, previousBoxStartX);\n const yStartMax = Math.max(boxStartY, previousBoxStartY);\n const xEndMin = Math.min(boxEndX, previousBoxEndX);\n const yEndMin = Math.min(boxEndY, previousBoxEndY);\n const intersection = (xEndMin - xStartMax) * (yEndMin - yStartMax);\n const boxArea = (boxEndX - boxStartX) * (boxEndY - boxStartY);\n const previousBoxArea = (previousBoxEndX - previousBoxStartX) * (previousBoxEndY - boxStartY);\n iou = intersection / (boxArea + previousBoxArea - intersection);\n }\n if (iou < UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD) {\n this.regionsOfInterest[i] = box;\n }\n }\n this.regionsOfInterest = this.regionsOfInterest.slice(0, boxes.length);\n }\n\n clearRegionOfInterest(index) {\n if (this.regionsOfInterest[index] != null) {\n this.regionsOfInterest = [\n ...this.regionsOfInterest.slice(0, index),\n ...this.regionsOfInterest.slice(index + 1),\n ];\n }\n }\n\n shouldUpdateRegionsOfInterest() {\n const roisCount = this.regionsOfInterest.length;\n const noROIs = roisCount === 0;\n if (this.maxFaces === 1 || noROIs) {\n return noROIs;\n }\n return roisCount !== this.maxFaces && this.runsWithoutFaceDetector >= this.skipFrames;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\nexports.Pipeline = Pipeline;\n", "exports.UV_COORDS = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n", "export default [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121,\n 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92,\n 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4,\n 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244,\n 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26,\n 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53,\n 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153,\n 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202,\n 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149,\n 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102,\n 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195,\n 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108,\n 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7,\n 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2,\n 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209,\n 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86,\n 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239,\n 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226,\n 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238,\n 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220,\n 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357,\n 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304,\n 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364,\n 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17,\n 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261,\n 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363,\n 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293,\n 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287,\n 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271,\n 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351,\n 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15,\n 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311,\n 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454,\n 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370,\n 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379,\n 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446,\n 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414,\n 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291,\n 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433,\n 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341,\n 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290,\n 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420,\n 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398,\n 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39,\n 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74,\n 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129,\n 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148,\n 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126,\n 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91,\n 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51,\n 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210,\n 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210,\n 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16,\n 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218,\n 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66,\n 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65,\n 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2,\n 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209,\n 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194,\n 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4,\n 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230,\n 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213,\n 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215,\n 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297,\n 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410,\n 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4,\n 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269,\n 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438,\n 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349,\n 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281,\n 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257,\n 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304,\n 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404,\n 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351,\n 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276,\n 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265,\n 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251,\n 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374,\n 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459,\n 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306,\n 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358,\n 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256,\n 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305,\n 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360,\n 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n", "const tf = require('@tensorflow/tfjs');\nconst blazeface = require('./blazeface');\nconst keypoints = require('./keypoints');\nconst pipe = require('./pipeline');\nconst uv_coords = require('./uvcoords');\nconst triangulation = require('./triangulation').default;\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.pipeline = new pipe.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n if (config) this.config = config;\n }\n\n async estimateFaces(input, config) {\n if (config) this.config = config;\n const image = tf.tidy(() => {\n if (!(input instanceof tf.Tensor)) input = tf.browser.fromPixels(input);\n return input.toFloat().expandDims(0);\n });\n const predictions = await this.pipeline.predict(image, config);\n tf.dispose(image);\n const results = [];\n for (const prediction of (predictions || [])) {\n const confidence = prediction.confidence.arraySync();\n if (confidence >= this.config.detector.minConfidence) {\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key in keypoints.MESH_ANNOTATIONS) {\n if (this.config.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = keypoints.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n results.push({\n confidence: confidence || 0,\n box: prediction.box ? [prediction.box.startPoint[0], prediction.box.startPoint[1], prediction.box.endPoint[0] - prediction.box.startPoint[0], prediction.box.endPoint[1] - prediction.box.startPoint[1]] : 0,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n }\n prediction.confidence.dispose();\n prediction.image.dispose();\n }\n return results;\n }\n}\n\nasync function load(config) {\n const models = await Promise.all([\n blazeface.load(config),\n tf.loadGraphModel(config.mesh.modelPath, { fromTFHub: config.mesh.modelPath.includes('tfhub.dev') }),\n tf.loadGraphModel(config.iris.modelPath, { fromTFHub: config.iris.modelPath.includes('tfhub.dev') }),\n ]);\n const faceMesh = new MediaPipeFaceMesh(models[0], models[1], models[2], config);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.uv_coords = uv_coords;\nexports.triangulation = triangulation;\n", "const tf = require('@tensorflow/tfjs');\n\nconst models = {};\nlet last = { age: 0, gender: '' };\nlet frame = 0;\n\nasync function getImage(image, size) {\n const buffer = tf.browser.fromPixels(image);\n const resize = tf.image.resizeBilinear(buffer, [size, size]);\n const expand = tf.cast(tf.expandDims(resize, 0), 'float32');\n return expand;\n}\n\nasync function loadAge(config) {\n if (!models.age) models.age = await tf.loadGraphModel(config.face.age.modelPath);\n return models.age;\n}\n\nasync function loadGender(config) {\n if (!models.gender) models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n return models.gender;\n}\n\nasync function predict(image, config) {\n frame += 1;\n if (frame >= config.face.age.skipFrames) {\n frame = 0;\n return last;\n }\n let enhance;\n if (image instanceof tf.Tensor) {\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n } else {\n enhance = await getImage(image, config.face.age.inputSize);\n }\n const obj = {};\n if (config.face.age.enabled) {\n const ageT = await models.age.predict(enhance);\n const data = await ageT.data();\n obj.age = Math.trunc(10 * data[0]) / 10;\n tf.dispose(ageT);\n }\n if (config.face.gender.enabled) {\n const genderT = await models.gender.predict(enhance);\n const data = await genderT.data();\n obj.gender = Math.trunc(100 * data[0]) < 50 ? 'female' : 'male';\n tf.dispose(genderT);\n }\n tf.dispose(enhance);\n last = obj;\n return obj;\n}\n\nexports.predict = predict;\nexports.loadAge = loadAge;\nexports.loadGender = loadGender;\n", "const tf = require('@tensorflow/tfjs');\n\nconst annotations = ['angry', 'discust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet frame = 0;\nconst multiplier = 1.5;\n\nfunction getImage(image, size) {\n const tensor = tf.tidy(() => {\n const buffer = tf.browser.fromPixels(image, 1);\n const resize = tf.image.resizeBilinear(buffer, [size, size]);\n const expand = tf.cast(tf.expandDims(resize, 0), 'float32');\n return expand;\n });\n return tensor;\n}\n\nasync function load(config) {\n if (!models.emotion) models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n return models.emotion;\n}\n\nasync function predict(image, config) {\n frame += 1;\n if (frame >= config.face.emotion.skipFrames) {\n frame = 0;\n return last;\n }\n const enhance = tf.tidy(() => {\n if (image instanceof tf.Tensor) {\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [r, g, b] = tf.split(resize, 3, 3);\n if (config.face.emotion.useGrayscale) {\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const r1 = tf.mul(r, [0.2989]);\n const g1 = tf.mul(g, [0.5870]);\n const b1 = tf.mul(b, [0.1140]);\n const grayscale = tf.addN([r1, g1, b1]);\n return grayscale;\n }\n return g;\n }\n return getImage(image, config.face.emotion.inputSize);\n });\n const obj = [];\n if (config.face.emotion.enabled) {\n const emotionT = await models.emotion.predict(enhance);\n const data = await emotionT.data();\n for (let i = 0; i < data.length; i++) {\n if (multiplier * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * multiplier * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n tf.dispose(emotionT);\n }\n tf.dispose(enhance);\n last = obj;\n return obj;\n}\n\nexports.predict = predict;\nexports.load = load;\n", "const tf = require('@tensorflow/tfjs');\n\nclass BaseModel {\n constructor(model, outputStride) {\n this.model = model;\n this.outputStride = outputStride;\n const inputShape = this.model.inputs[0].shape;\n tf.util.assert((inputShape[1] === -1) && (inputShape[2] === -1), () => `Input shape [${inputShape[1]}, ${inputShape[2]}] must both be equal to or -1`);\n }\n\n /**\n * Predicts intermediate Tensor representations.\n *\n * @param input The input RGB image of the base model.\n * A Tensor of shape: [`inputResolution`, `inputResolution`, 3].\n *\n * @return A dictionary of base model's intermediate predictions.\n * The returned dictionary should contains the following elements:\n * heatmapScores: A Tensor3D that represents the heatmapScores.\n * offsets: A Tensor3D that represents the offsets.\n * displacementFwd: A Tensor3D that represents the forward displacement.\n * displacementBwd: A Tensor3D that represents the backward displacement.\n */\n predict(input) {\n return tf.tidy(() => {\n const asFloat = this.preprocessInput(input.toFloat());\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = this.nameOutputResults(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n /**\n * Releases the CPU and GPU memory allocated by the model.\n */\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "const tf = require('@tensorflow/tfjs');\nconst modelBase = require('./modelBase');\n\nclass MobileNet extends modelBase.BaseModel {\n // eslint-disable-next-line class-methods-use-this\n preprocessInput(input) {\n // Normalize the pixels [0, 255] to be between [-1, 1].\n return tf.tidy(() => tf.div(input, 127.5).sub(1.0));\n }\n\n // eslint-disable-next-line class-methods-use-this\n nameOutputResults(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n }\n}\nexports.MobileNet = MobileNet;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "const heapSort = require('./heapSort');\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) {\n break;\n }\n }\n return localMaximum;\n}\n/**\n * Builds a priority queue with part candidate positions for a specific image in\n * the batch. For this we find all local maxima in the score maps with score\n * values above a threshold. We create a single priority queue across all parts.\n */\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\nexports.NUM_KEYPOINTS = exports.partNames.length;\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\n/*\n * Define the skeleton. This defines the parent->child relationships of our\n * tree. Arbitrarily this defines the nose as the root of the tree, however\n * since we will infer the displacement for both parent->child and\n * child->parent, we can define the tree root as any node.\n */\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "const kpt = require('./keypoints');\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "const keypoints = require('./keypoints');\nconst vectors = require('./vectors');\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n/**\n * We get a new keypoint along the `edgeId` for the pose instance, assuming\n * that the position of the `idSource` part is already known. For this, we\n * follow the displacement vector from the source to target part (stored in\n * the `i`-t channel of the displacement tensor). The displaced keypoint\n * vector is refined using the offset vector by `offsetRefineStep` times.\n */\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n/**\n * Follows the displacement fields to decode the full pose of the object\n * instance given the position of a part that acts as root.\n *\n * @return An array of decoded keypoints and their scores for a single pose\n */\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward\n // displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward\n // displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n", "const buildParts = require('./buildParts');\nconst decodePose = require('./decodePose');\nconst vectors = require('./vectors');\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n/* Score the newly proposed object instance without taking into account\n * the scores of the parts that overlap with any previously detected\n * instance.\n */\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) {\n result += score;\n }\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n// A point (y, x) is considered as root part candidate if its score is a\n// maximum in a window |y - y'| <= kLocalMaximumRadius, |x - x'| <=\n// kLocalMaximumRadius.\nconst kLocalMaximumRadius = 1;\n/**\n * Detects multiple poses and finds their parts from part scores and\n * displacement vectors. It returns up to `maxDetections` object instance\n * detections in decreasing root score order. It works as follows: We first\n * create a priority queue with local part score maxima above\n * `scoreThreshold`, considering all parts at the same time. Then we\n * iteratively pull the top element of the queue (in decreasing score order)\n * and treat it as a root candidate for a new object instance. To avoid\n * duplicate detections, we reject the root candidate if it is within a disk\n * of `nmsRadius` pixels from the corresponding part of a previously detected\n * instance, which is a form of part-based non-maximum suppression (NMS). If\n * the root candidate passes the NMS check, we start a new object instance\n * detection, treating the corresponding part as root and finding the\n * positions of the remaining parts by following the displacement vectors\n * along the tree-structured part graph. We assign to the newly detected\n * instance a score equal to the sum of scores of its parts which have not\n * been claimed by a previous instance (i.e., those at least `nmsRadius`\n * pixels away from the corresponding part of all previously detected\n * instances), divided by the total number of parts `numParts`.\n *\n * @param heatmapScores 3-D tensor with shape `[height, width, numParts]`.\n * The value of heatmapScores[y, x, k]` is the score of placing the `k`-th\n * object part at position `(y, x)`.\n *\n * @param offsets 3-D tensor with shape `[height, width, numParts * 2]`.\n * The value of [offsets[y, x, k], offsets[y, x, k + numParts]]` is the\n * short range offset vector of the `k`-th object part at heatmap\n * position `(y, x)`.\n *\n * @param displacementsFwd 3-D tensor of shape\n * `[height, width, 2 * num_edges]`, where `num_edges = num_parts - 1` is the\n * number of edges (parent-child pairs) in the tree. It contains the forward\n * displacements between consecutive part from the root towards the leaves.\n *\n * @param displacementsBwd 3-D tensor of shape\n * `[height, width, 2 * num_edges]`, where `num_edges = num_parts - 1` is the\n * number of edges (parent-child pairs) in the tree. It contains the backward\n * displacements between consecutive part from the root towards the leaves.\n *\n * @param outputStride The output stride that was used when feed-forwarding\n * through the PoseNet model. Must be 32, 16, or 8.\n *\n * @param maxPoseDetections Maximum number of returned instance detections per\n * image.\n *\n * @param scoreThreshold Only return instance detections that have root part\n * score greater or equal to this value. Defaults to 0.5.\n *\n * @param nmsRadius Non-maximum suppression part distance. It needs to be\n * strictly positive. Two parts suppress each other if they are less than\n * `nmsRadius` pixels away. Defaults to 20.\n *\n * @return An array of poses and their scores, each containing keypoints and\n * the corresponding keypoint scores.\n */\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, outputStride, maxPoseDetections, scoreThreshold = 0.5, nmsRadius = 20) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius * nmsRadius;\n // Generate at most maxDetections object instances per image in\n // decreasing root part score order.\n while (poses.length < maxPoseDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it\n // is within a disk of `nmsRadius` pixels from the corresponding part of\n // a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "const tf = require('@tensorflow/tfjs');\nconst kpt = require('./keypoints');\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX, offsetY = 0, offsetX = 0) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: {\n x: position.x * scaleX + offsetX,\n y: position.y * scaleY + offsetY,\n },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction scalePoses(poses, scaleY, scaleX, offsetY = 0, offsetX = 0) {\n if (scaleX === 1 && scaleY === 1 && offsetY === 0 && offsetX === 0) {\n return poses;\n }\n return poses.map((pose) => scalePose(pose, scaleY, scaleX, offsetY, offsetX));\n}\nexports.scalePoses = scalePoses;\n\nfunction getInputTensorDimensions(input) {\n return input instanceof tf.Tensor ? [input.shape[0], input.shape[1]] : [input.height, input.width];\n}\nexports.getInputTensorDimensions = getInputTensorDimensions;\n\nfunction toInputTensor(input) {\n return input instanceof tf.Tensor ? input : tf.browser.fromPixels(input);\n}\nexports.toInputTensor = toInputTensor;\n\nfunction toResizedInputTensor(input, resizeHeight, resizeWidth) {\n return tf.tidy(() => {\n const imageTensor = toInputTensor(input);\n return imageTensor.resizeBilinear([resizeHeight, resizeWidth]);\n });\n}\nexports.toResizedInputTensor = toResizedInputTensor;\n\nfunction padAndResizeTo(input, [targetH, targetW]) {\n const [height, width] = getInputTensorDimensions(input);\n const targetAspect = targetW / targetH;\n const aspect = width / height;\n let [padT, padB, padL, padR] = [0, 0, 0, 0];\n if (aspect < targetAspect) {\n // pads the width\n padT = 0;\n padB = 0;\n padL = Math.round(0.5 * (targetAspect * height - width));\n padR = Math.round(0.5 * (targetAspect * height - width));\n } else {\n // pads the height\n padT = Math.round(0.5 * ((1.0 / targetAspect) * width - height));\n padB = Math.round(0.5 * ((1.0 / targetAspect) * width - height));\n padL = 0;\n padR = 0;\n }\n const resized = tf.tidy(() => {\n let imageTensor = toInputTensor(input);\n imageTensor = tf.pad3d(imageTensor, [[padT, padB], [padL, padR], [0, 0]]);\n return imageTensor.resizeBilinear([targetH, targetW]);\n });\n return { resized, padding: { top: padT, left: padL, right: padR, bottom: padB } };\n}\nexports.padAndResizeTo = padAndResizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth], padding) {\n const scaleY = (height + padding.top + padding.bottom) / (inputResolutionHeight);\n const scaleX = (width + padding.left + padding.right) / (inputResolutionWidth);\n const scaledPoses = scalePoses(poses, scaleY, scaleX, -padding.top, -padding.left);\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "const tf = require('@tensorflow/tfjs');\nconst modelMobileNet = require('./modelMobileNet');\nconst decodeMultiple = require('./decodeMultiple');\nconst util = require('./util');\n\nclass PoseNet {\n constructor(net) {\n this.baseModel = net;\n }\n\n /**\n * Infer through PoseNet, and estimates multiple poses using the outputs.\n * This does standard ImageNet pre-processing before inferring through the\n * model. The image should pixels should have values [0-255]. It detects\n * multiple poses and finds their parts from part scores and displacement\n * vectors using a fast greedy decoding algorithm. It returns up to\n * `config.maxDetections` object instance detections in decreasing root\n * score order.\n *\n * @param input\n * ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement) The input\n * image to feed through the network.\n *\n * @param config MultiPoseEstimationConfig object that contains parameters\n * for the PoseNet inference using multiple pose estimation.\n *\n * @return An array of poses and their scores, each containing keypoints and\n * the corresponding keypoint scores. The positions of the keypoints are\n * in the same scale as the original image\n */\n async estimatePoses(input, config) {\n const outputStride = config.outputStride;\n // const inputResolution = config.inputResolution;\n const [height, width] = util.getInputTensorDimensions(input);\n const { resized, padding } = util.padAndResizeTo(input, [config.inputResolution, config.inputResolution]);\n const { heatmapScores, offsets, displacementFwd, displacementBwd } = this.baseModel.predict(resized);\n const allTensorBuffers = await util.toTensorBuffers3D([heatmapScores, offsets, displacementFwd, displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, outputStride, config.maxDetections, config.scoreThreshold, config.nmsRadius);\n const resultPoses = util.scaleAndFlipPoses(poses, [height, width], [config.inputResolution, config.inputResolution], padding);\n heatmapScores.dispose();\n offsets.dispose();\n displacementFwd.dispose();\n displacementBwd.dispose();\n resized.dispose();\n return resultPoses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\nasync function loadMobileNet(config) {\n const graphModel = await tf.loadGraphModel(config.modelPath);\n const mobilenet = new modelMobileNet.MobileNet(graphModel, config.outputStride);\n return new PoseNet(mobilenet);\n}\n/**\n * Loads the PoseNet model instance from a checkpoint, with the MobileNet architecture. The model to be loaded is configurable using the\n * config dictionary ModelConfig. Please find more details in the documentation of the ModelConfig.\n *\n * @param config ModelConfig dictionary that contains parameters for\n * the PoseNet loading process. Please find more details of each parameters\n * in the documentation of the ModelConfig interface. The predefined\n * `MOBILENET_V1_CONFIG` and `RESNET_CONFIG` can also be used as references\n * for defining your customized config.\n */\nasync function load(config) {\n return loadMobileNet(config);\n}\nexports.load = load;\n", "const modelMobileNet = require('./modelMobileNet');\nconst modelPoseNet = require('./modelPoseNet');\nconst decodeMultiple = require('./decodeMultiple');\nconst keypoints = require('./keypoints');\nconst util = require('./util');\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.MobileNet = modelMobileNet.MobileNet;\nexports.decodeMultiplePoses = decodeMultiple.decodeMultiplePoses;\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "const tf = require('@tensorflow/tfjs');\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexports.squarifyBox = squarifyBox;\n\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0], box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexports.shiftBox = shiftBox;\n", "const tf = require('@tensorflow/tfjs');\nconst bounding = require('./box');\n\nclass HandDetector {\n constructor(model, anchors, config) {\n this.model = model;\n this.width = config.inputSize;\n this.height = config.inputSize;\n this.anchors = anchors.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([config.inputSize, config.inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([config.inputSize * 2, config.inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoundingBoxes(input) {\n const normalizedInput = tf.tidy(() => tf.mul(tf.sub(input, 0.5), 2));\n const batchedPrediction = this.model.predict(normalizedInput);\n const prediction = batchedPrediction.squeeze();\n // Regression score for each anchor point.\n const scores = tf.tidy(() => tf.sigmoid(tf.slice(prediction, [0, 0], [-1, 1])).squeeze());\n // Bounding box for each anchor point.\n const rawBoxes = tf.slice(prediction, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n const boxesWithHandsTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.maxHands, this.iouThreshold, this.scoreThreshold);\n const boxesWithHands = await boxesWithHandsTensor.array();\n const toDispose = [\n normalizedInput, batchedPrediction, boxesWithHandsTensor, prediction,\n boxes, rawBoxes, scores,\n ];\n if (boxesWithHands.length === 0) {\n toDispose.forEach((tensor) => tensor.dispose());\n return null;\n }\n const detectedHands = tf.tidy(() => {\n const detectedBoxes = [];\n for (const i in boxesWithHands) {\n const boxIndex = boxesWithHands[i];\n const matchingBox = tf.slice(boxes, [boxIndex, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(prediction, [boxIndex, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, boxIndex).reshape([-1, 2]));\n detectedBoxes.push({ boxes: matchingBox, palmLandmarks });\n }\n return detectedBoxes;\n });\n return detectedHands;\n }\n\n /**\n * Returns a Box identifying the bounding box of a hand within the image.\n * Returns null if there is no hand in the image.\n *\n * @param input The image to classify.\n */\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n this.iouThreshold = config.iouThreshold;\n this.scoreThreshold = config.scoreThreshold;\n this.maxHands = config.maxHands;\n const image = tf.tidy(() => input.resizeBilinear([this.width, this.height]).div(255));\n const predictions = await this.getBoundingBoxes(image);\n image.dispose();\n if (!predictions || (predictions.length === 0)) return null;\n const hands = [];\n for (const i in predictions) {\n const prediction = predictions[i];\n const boundingBoxes = await prediction.boxes.array();\n const startPoint = boundingBoxes[0].slice(0, 2);\n const endPoint = boundingBoxes[0].slice(2, 4);\n const palmLandmarks = await prediction.palmLandmarks.array();\n prediction.boxes.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(bounding.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks }, [inputWidth / this.width, inputHeight / this.height]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "exports.MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n", "function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nconst buildTranslationMatrix = (x, y) => ([[1, 0, x], [0, 1, y], [0, 0, 1]]);\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n", "const tf = require('@tensorflow/tfjs');\nconst bounding = require('./box');\nconst util = require('./util');\n\nconst UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD = 0.8;\nconst PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst HAND_BOX_SHIFT_VECTOR = [0, -0.1];\nconst HAND_BOX_ENLARGE_FACTOR = 1.65;\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass HandPipeline {\n constructor(boundingBoxDetector, meshDetector, config) {\n this.regionsOfInterest = [];\n this.runsWithoutHandDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.meshWidth = config.inputSize;\n this.meshHeight = config.inputSize;\n this.enlargeFactor = config.enlargeFactor;\n }\n\n // Get the bounding box surrounding the hand, given palm landmarks.\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => {\n const homogeneousCoordinate = [...coord, 1];\n return util.rotatePoint(homogeneousCoordinate, rotationMatrix);\n });\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // boxAroundPalm only surrounds the palm - therefore we shift it\n // upwards so it will capture fingers once enlarged + squarified.\n return bounding.enlargeBox(bounding.squarifyBox(bounding.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), this.enlargeFactor);\n }\n\n // Get the bounding box surrounding the hand, given all hand landmarks.\n getBoxForHandLandmarks(landmarks) {\n // The MediaPipe hand mesh model is trained on hands with empty space\n // around them, so we still need to shift / enlarge boxAroundHand even\n // though it surrounds the entire hand.\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n const boxAroundHand = bounding.enlargeBox(bounding.squarifyBox(bounding.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n boxAroundHand.palmLandmarks = palmLandmarks;\n return boxAroundHand;\n }\n\n // Scale, rotate, and translate raw keypoints from the model so they map to\n // the input coordinates.\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize(box);\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...bounding.getBoxCenter(box), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0], coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n this.maxContinuousChecks = config.skipFrames;\n this.detectionConfidence = config.minConfidence;\n this.maxHands = config.maxHands;\n const useFreshBox = this.shouldUpdateRegionsOfInterest();\n if (useFreshBox === true) {\n const boundingBoxPredictions = await this.boundingBoxDetector.estimateHandBounds(image, config);\n this.regionsOfInterest = [];\n for (const i in boundingBoxPredictions) {\n this.updateRegionsOfInterest(boundingBoxPredictions[i], true /* force update */, i);\n }\n this.runsWithoutHandDetector = 0;\n } else {\n this.runsWithoutHandDetector++;\n }\n // Rotate input so the hand is vertically oriented.\n const hands = [];\n if (!this.regionsOfInterest) return hands;\n for (const i in this.regionsOfInterest) {\n const currentBox = this.regionsOfInterest[i][0];\n if (!currentBox) return hands;\n const angle = util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]);\n const palmCenter = bounding.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized);\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const box = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = bounding.cutBoxFromImageAndResize(box, rotatedImage, [this.meshWidth, this.meshHeight]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const prediction = this.meshDetector.predict(handImage);\n const [flag, keypoints] = prediction;\n handImage.dispose();\n const flagValue = flag.dataSync()[0];\n flag.dispose();\n if (flagValue < config.minConfidence) {\n keypoints.dispose();\n this.regionsOfInterest[i] = [];\n return hands;\n }\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = await keypointsReshaped.array();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.updateRegionsOfInterest(nextBoundingBox, false /* force replace */, i);\n const result = {\n landmarks: coords,\n confidence: flagValue,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n }\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n\n // Updates regions of interest if the intersection over union between\n // the incoming and previous regions falls below a threshold.\n updateRegionsOfInterest(box, forceUpdate, index) {\n if (forceUpdate) {\n this.regionsOfInterest[index] = [box];\n } else {\n const previousBox = this.regionsOfInterest[index][0];\n let iou = 0;\n if (previousBox != null && previousBox.startPoint != null) {\n const [boxStartX, boxStartY] = box.startPoint;\n const [boxEndX, boxEndY] = box.endPoint;\n const [previousBoxStartX, previousBoxStartY] = previousBox.startPoint;\n const [previousBoxEndX, previousBoxEndY] = previousBox.endPoint;\n const xStartMax = Math.max(boxStartX, previousBoxStartX);\n const yStartMax = Math.max(boxStartY, previousBoxStartY);\n const xEndMin = Math.min(boxEndX, previousBoxEndX);\n const yEndMin = Math.min(boxEndY, previousBoxEndY);\n const intersection = (xEndMin - xStartMax) * (yEndMin - yStartMax);\n const boxArea = (boxEndX - boxStartX) * (boxEndY - boxStartY);\n const previousBoxArea = (previousBoxEndX - previousBoxStartX) * (previousBoxEndY - boxStartY);\n iou = intersection / (boxArea + previousBoxArea - intersection);\n }\n this.regionsOfInterest[index][0] = iou > UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD ? previousBox : box;\n }\n }\n\n shouldUpdateRegionsOfInterest() {\n return !this.regionsOfInterest || (this.regionsOfInterest.length === 0) || (this.runsWithoutHandDetector >= this.maxContinuousChecks);\n }\n}\nexports.HandPipeline = HandPipeline;\n", "const tf = require('@tensorflow/tfjs');\nconst hand = require('./handdetector');\nconst keypoints = require('./keypoints');\nconst pipe = require('./pipeline');\n\nclass HandPose {\n constructor(pipeline) {\n this.pipeline = pipeline;\n }\n\n async estimateHands(input, config) {\n this.maxContinuousChecks = config.skipFrames;\n this.detectionConfidence = config.minConfidence;\n this.maxHands = config.maxHands;\n const image = tf.tidy(() => {\n if (!(input instanceof tf.Tensor)) {\n input = tf.browser.fromPixels(input);\n }\n return input.toFloat().expandDims(0);\n });\n const predictions = await this.pipeline.estimateHands(image, config);\n image.dispose();\n const hands = [];\n if (!predictions) return hands;\n for (const prediction of predictions) {\n if (!prediction) return [];\n const annotations = {};\n for (const key of Object.keys(keypoints.MESH_ANNOTATIONS)) {\n annotations[key] = keypoints.MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n hands.push({\n confidence: prediction.confidence || 0,\n box: prediction.box ? [prediction.box.topLeft[0], prediction.box.topLeft[1], prediction.box.bottomRight[0] - prediction.box.topLeft[0], prediction.box.bottomRight[1] - prediction.box.topLeft[1]] : 0,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function loadAnchors(url) {\n if (tf.env().features.IS_NODE) {\n // eslint-disable-next-line global-require\n const fs = require('fs');\n const data = await fs.readFileSync(url.replace('file://', ''));\n return JSON.parse(data);\n }\n return tf.util.fetch(url).then((d) => d.json());\n}\n\nasync function load(config) {\n const [anchors, handDetectorModel, handPoseModel] = await Promise.all([\n loadAnchors(config.detector.anchors),\n tf.loadGraphModel(config.detector.modelPath, { fromTFHub: config.detector.modelPath.includes('tfhub.dev') }),\n tf.loadGraphModel(config.skeleton.modelPath, { fromTFHub: config.skeleton.modelPath.includes('tfhub.dev') }),\n ]);\n const detector = new hand.HandDetector(handDetectorModel, anchors, config);\n const pipeline = new pipe.HandPipeline(detector, handPoseModel, config);\n const handpose = new HandPose(pipeline);\n return handpose;\n}\nexports.load = load;\n", "export default {\n backend: 'webgl',\n console: true,\n face: {\n enabled: true, // refers to detector, but since all other face modules rely on detector, it should be a global\n detector: {\n modelPath: '../models/blazeface/back/model.json', // can be blazeface-front or blazeface-back\n inputSize: 256, // fixed value: 128 for front and tfhub and 256 for back\n maxFaces: 10, // maximum number of faces detected in the input, should be set to the minimum number for performance\n skipFrames: 10, // how many frames to go without running the bounding box detector\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.3, // threshold for deciding whether boxes overlap too much in non-maximum suppression\n scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression\n },\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh/model.json',\n inputSize: 192, // fixed value\n },\n iris: {\n enabled: true,\n modelPath: '../models/iris/model.json',\n enlargeFactor: 2.3, // empiric tuning\n inputSize: 64, // fixed value\n },\n age: {\n enabled: true,\n modelPath: '../models/ssrnet-age/imdb/model.json',\n inputSize: 64, // fixed value\n skipFrames: 10,\n },\n gender: {\n enabled: true,\n modelPath: '../models/ssrnet-gender/imdb/model.json',\n },\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.5,\n skipFrames: 10,\n useGrayscale: true,\n modelPath: '../models/emotion/model.json',\n },\n },\n body: {\n enabled: true,\n modelPath: '../models/posenet/model.json',\n inputResolution: 257, // fixed value\n outputStride: 16, // fixed value\n maxDetections: 5,\n scoreThreshold: 0.7,\n nmsRadius: 20,\n },\n hand: {\n enabled: true,\n inputSize: 256, // fixed value\n skipFrames: 10,\n minConfidence: 0.5,\n iouThreshold: 0.3,\n scoreThreshold: 0.7,\n enlargeFactor: 1.65, // empiric tuning\n maxHands: 2,\n detector: {\n anchors: '../models/handdetect/anchors.json',\n modelPath: '../models/handdetect/model.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton/model.json',\n },\n },\n};\n", "const tf = require('@tensorflow/tfjs');\nconst facemesh = require('./facemesh/facemesh.js');\nconst ssrnet = require('./ssrnet/ssrnet.js');\nconst emotion = require('./emotion/emotion.js');\nconst posenet = require('./posenet/posenet.js');\nconst handpose = require('./handpose/handpose.js');\nconst defaults = require('./config.js').default;\nconst app = require('../package.json');\n\nlet config;\n\n// object that contains all initialized models\nconst models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n};\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\nconst log = (...msg) => {\n // eslint-disable-next-line no-console\n if (config.console) console.log(...msg);\n};\n\n// helper function that performs deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nfunction sanity(input) {\n if (!input) return 'input is not defined';\n const width = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n if (!width || (width === 0)) return 'input is empty';\n if (input.readyState && (input.readyState <= 2)) return 'input is not ready';\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n}\n\nasync function detect(input, userConfig) {\n config = mergeDeep(defaults, userConfig);\n\n // sanity checks\n const error = sanity(input);\n if (error) {\n log(error, input);\n return { error };\n }\n\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n // check number of loaded models\n const loadedModels = Object.values(models).filter((a) => a).length;\n if (loadedModels === 0) log('Human library starting');\n\n // configure backend\n if (tf.getBackend() !== config.backend) {\n log('Human library setting backend:', config.backend);\n await tf.setBackend(config.backend);\n await tf.ready();\n }\n // explictly enable depthwiseconv since it's diasabled by default due to issues with large shaders\n let savedWebglPackDepthwiseConvFlag;\n if (tf.getBackend() === 'webgl') {\n savedWebglPackDepthwiseConvFlag = tf.env().get('WEBGL_PACK_DEPTHWISECONV');\n tf.env().set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n\n // load models if enabled\n if (config.face.enabled && !models.facemesh) models.facemesh = await facemesh.load(config.face);\n if (config.body.enabled && !models.posenet) models.posenet = await posenet.load(config.body);\n if (config.hand.enabled && !models.handpose) models.handpose = await handpose.load(config.hand);\n if (config.face.enabled && config.face.age.enabled && !models.age) models.age = await ssrnet.loadAge(config);\n if (config.face.enabled && config.face.gender.enabled && !models.gender) models.gender = await ssrnet.loadGender(config);\n if (config.face.enabled && config.face.emotion.enabled && !models.emotion) models.emotion = await emotion.load(config);\n\n const perf = {};\n let timeStamp;\n\n // run posenet\n timeStamp = now();\n tf.engine().startScope();\n const poseRes = config.body.enabled ? await models.posenet.estimatePoses(input, config.body) : [];\n tf.engine().endScope();\n perf.body = Math.trunc(now() - timeStamp);\n\n // run handpose\n timeStamp = now();\n tf.engine().startScope();\n const handRes = config.hand.enabled ? await models.handpose.estimateHands(input, config.hand) : [];\n tf.engine().endScope();\n perf.hand = Math.trunc(now() - timeStamp);\n\n // run facemesh, includes blazeface and iris\n const faceRes = [];\n if (config.face.enabled) {\n timeStamp = now();\n tf.engine().startScope();\n const faces = await models.facemesh.estimateFaces(input, config.face);\n perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('face object is disposed:', face.image);\n continue;\n }\n // run ssr-net age & gender, inherits face from blazeface\n timeStamp = now();\n const ssrData = (config.face.age.enabled || config.face.gender.enabled) ? await ssrnet.predict(face.image, config) : {};\n perf.agegender = Math.trunc(now() - timeStamp);\n // run emotion, inherits face from blazeface\n timeStamp = now();\n const emotionData = config.face.emotion.enabled ? await emotion.predict(face.image, config) : {};\n perf.emotion = Math.trunc(now() - timeStamp);\n face.image.dispose();\n // calculate iris distance\n // iris: array[ bottom, left, top, right, center ]\n const iris = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n ? Math.max(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0], face.annotations.rightEyeIris[3][0] - face.annotations.rightEyeIris[1][0])\n : 0;\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ssrData.age,\n gender: ssrData.gender,\n emotion: emotionData,\n iris: (iris !== 0) ? Math.trunc(100 * 11.7 /* human iris size in mm */ / iris) / 100 : 0,\n });\n }\n tf.engine().endScope();\n }\n\n // set depthwiseconv to original value\n tf.env().set('WEBGL_PACK_DEPTHWISECONV', savedWebglPackDepthwiseConvFlag);\n\n // combine and return results\n perf.total = Object.values(perf).reduce((a, b) => a + b);\n resolve({ face: faceRes, body: poseRes, hand: handRes, performance: perf });\n });\n}\n\nexports.detect = detect;\nexports.defaults = defaults;\nexports.config = config;\nexports.models = models;\nexports.facemesh = facemesh;\nexports.ssrnet = ssrnet;\nexports.posenet = posenet;\nexports.handpose = handpose;\nexports.tf = tf;\nexports.version = app.version;\n"], - "mappings": "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AAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,m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;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IACpE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACtE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACxE;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACvE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAC1E;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACzE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACzE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACxE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACzE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAC1E;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAC1E;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACpE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK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", + "sourcesContent": ["const tf = require('@tensorflow/tfjs');\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.detector.inputSize;\n this.height = config.detector.inputSize;\n this.maxFaces = config.detector.maxFaces;\n this.anchorsData = generateAnchors(config.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.iouThreshold = config.detector.iouThreshold;\n this.scaleFaces = 0.8;\n this.scoreThreshold = config.detector.scoreThreshold;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.maxFaces, this.iouThreshold, this.scoreThreshold);\n const boxIndices = await boxIndicesTensor.array();\n boxIndicesTensor.dispose();\n let boundingBoxes = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n boundingBoxes = await Promise.all(boundingBoxes.map(async (boundingBox) => {\n const vals = await boundingBox.array();\n boundingBox.dispose();\n return vals;\n }));\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boundingBox = boundingBoxes[i];\n const annotatedBox = tf.tidy(() => {\n const box = createBox(boundingBox);\n const boxIndex = boxIndices[i];\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf\n .slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1])\n .squeeze()\n .reshape([NUM_LANDMARKS, -1]);\n const probability = tf.slice(scores, [boxIndex], [1]);\n return { box, landmarks, probability, anchor };\n });\n annotatedBoxes.push(annotatedBox);\n }\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const image = tf.tidy(() => {\n if (!(input instanceof tf.Tensor)) {\n input = tf.browser.fromPixels(input);\n }\n return input.toFloat().expandDims(0);\n });\n const { boxes, scaleFactor } = await this.getBoundingBoxes(image);\n image.dispose();\n return Promise.all(boxes.map(async (face) => {\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const [landmarkData, boxData, probabilityData] = await Promise.all([face.landmarks, scaledBox, face.probability].map(async (d) => d.array()));\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n return normalizedFace;\n }));\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.detector.modelPath, { fromTFHub: config.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "exports.MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\nexports.MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n", "const tf = require('@tensorflow/tfjs');\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "/* eslint-disable class-methods-use-this */\nconst tf = require('@tensorflow/tfjs');\nconst bounding = require('./box');\nconst keypoints = require('./keypoints');\nconst util = require('./util');\n\nconst LANDMARKS_COUNT = 468;\nconst UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD = 0.25;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, keypoints.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = keypoints.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = keypoints.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < keypoints.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = keypoints.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = keypoints.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.regionsOfInterest = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.mesh.inputSize;\n this.meshHeight = config.mesh.inputSize;\n this.irisSize = config.iris.inputSize;\n this.irisEnlarge = config.iris.enlargeFactor;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]]));\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => ([\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1], coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[keypoints.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[keypoints.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n this.skipFrames = config.detector.skipFrames;\n this.maxFaces = config.detector.maxFaces;\n if (this.shouldUpdateRegionsOfInterest()) {\n const { boxes, scaleFactor } = await this.boundingBoxDetector.getBoundingBoxes(input);\n if (boxes.length === 0) {\n this.regionsOfInterest = [];\n return null;\n }\n const scaledBoxes = boxes.map((prediction) => {\n const predictionBox = {\n startPoint: prediction.box.startPoint.squeeze().arraySync(),\n endPoint: prediction.box.endPoint.squeeze().arraySync(),\n };\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n const scaledBox = bounding.scaleBoxCoordinates(predictionBox, scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = prediction.landmarks.arraySync();\n prediction.landmarks.dispose();\n prediction.probability.dispose();\n return { ...enlargedBox, landmarks };\n });\n this.updateRegionsOfInterest(scaledBoxes);\n this.runsWithoutFaceDetector = 0;\n } else {\n this.runsWithoutFaceDetector++;\n }\n const results = tf.tidy(() => this.regionsOfInterest.map((box, i) => {\n let angle = 0;\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n const boxLandmarksFromMeshModel = box.landmarks.length >= LANDMARKS_COUNT;\n let [indexOfMouth, indexOfForehead] = MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n if (boxLandmarksFromMeshModel === false) {\n [indexOfMouth, indexOfForehead] = BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n }\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n let rotatedImage = input;\n let rotationMatrix = util.IDENTITY_MATRIX;\n if (angle !== 0) {\n rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n }\n const boxCPU = { startPoint: box.startPoint, endPoint: box.endPoint };\n const face = bounding.cutBoxFromImageAndResize(boxCPU, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n // The first returned tensor represents facial contours, which are included in the coordinates.\n const [, flag, coords] = this.meshDetector.predict(face);\n const coordsReshaped = tf.reshape(coords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n if (config.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = (this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop])));\n const eyePredictionsData = eyePredictions.dataSync();\n eyePredictions.dispose();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n tf.dispose(rawCoords);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n if (config.mesh.enabled) {\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n this.regionsOfInterest[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync() };\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n confidence: flag.squeeze(),\n image: face,\n };\n return prediction;\n }\n const prediction = {\n coords: null,\n box: landmarksBox,\n confidence: flag.squeeze(),\n image: face,\n };\n return prediction;\n }));\n return results;\n }\n\n // Updates regions of interest if the intersection over union between the incoming and previous regions falls below a threshold.\n updateRegionsOfInterest(boxes) {\n for (let i = 0; i < boxes.length; i++) {\n const box = boxes[i];\n const previousBox = this.regionsOfInterest[i];\n let iou = 0;\n if (previousBox && previousBox.startPoint) {\n const [boxStartX, boxStartY] = box.startPoint;\n const [boxEndX, boxEndY] = box.endPoint;\n const [previousBoxStartX, previousBoxStartY] = previousBox.startPoint;\n const [previousBoxEndX, previousBoxEndY] = previousBox.endPoint;\n const xStartMax = Math.max(boxStartX, previousBoxStartX);\n const yStartMax = Math.max(boxStartY, previousBoxStartY);\n const xEndMin = Math.min(boxEndX, previousBoxEndX);\n const yEndMin = Math.min(boxEndY, previousBoxEndY);\n const intersection = (xEndMin - xStartMax) * (yEndMin - yStartMax);\n const boxArea = (boxEndX - boxStartX) * (boxEndY - boxStartY);\n const previousBoxArea = (previousBoxEndX - previousBoxStartX) * (previousBoxEndY - boxStartY);\n iou = intersection / (boxArea + previousBoxArea - intersection);\n }\n if (iou < UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD) {\n this.regionsOfInterest[i] = box;\n }\n }\n this.regionsOfInterest = this.regionsOfInterest.slice(0, boxes.length);\n }\n\n clearRegionOfInterest(index) {\n if (this.regionsOfInterest[index] != null) {\n this.regionsOfInterest = [\n ...this.regionsOfInterest.slice(0, index),\n ...this.regionsOfInterest.slice(index + 1),\n ];\n }\n }\n\n shouldUpdateRegionsOfInterest() {\n const roisCount = this.regionsOfInterest.length;\n const noROIs = roisCount === 0;\n if (this.maxFaces === 1 || noROIs) {\n return noROIs;\n }\n return roisCount !== this.maxFaces && this.runsWithoutFaceDetector >= this.skipFrames;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\nexports.Pipeline = Pipeline;\n", "exports.UV_COORDS = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n", "export default [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121,\n 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92,\n 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4,\n 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244,\n 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26,\n 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53,\n 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153,\n 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202,\n 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149,\n 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102,\n 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195,\n 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108,\n 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7,\n 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2,\n 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209,\n 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86,\n 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239,\n 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226,\n 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238,\n 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220,\n 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357,\n 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304,\n 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364,\n 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17,\n 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261,\n 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363,\n 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293,\n 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287,\n 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271,\n 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351,\n 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15,\n 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311,\n 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454,\n 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370,\n 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379,\n 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446,\n 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414,\n 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291,\n 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433,\n 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341,\n 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290,\n 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420,\n 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398,\n 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39,\n 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74,\n 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129,\n 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148,\n 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126,\n 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91,\n 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51,\n 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210,\n 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210,\n 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16,\n 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218,\n 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66,\n 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65,\n 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2,\n 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209,\n 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194,\n 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4,\n 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230,\n 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213,\n 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215,\n 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297,\n 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410,\n 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4,\n 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269,\n 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438,\n 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349,\n 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281,\n 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257,\n 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304,\n 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404,\n 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351,\n 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276,\n 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265,\n 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251,\n 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374,\n 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459,\n 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306,\n 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358,\n 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256,\n 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305,\n 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360,\n 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n", "const tf = require('@tensorflow/tfjs');\nconst blazeface = require('./blazeface');\nconst keypoints = require('./keypoints');\nconst pipe = require('./pipeline');\nconst uv_coords = require('./uvcoords');\nconst triangulation = require('./triangulation').default;\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.pipeline = new pipe.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n if (config) this.config = config;\n }\n\n async estimateFaces(input, config) {\n if (config) this.config = config;\n const image = tf.tidy(() => {\n if (!(input instanceof tf.Tensor)) input = tf.browser.fromPixels(input);\n return input.toFloat().expandDims(0);\n });\n const predictions = await this.pipeline.predict(image, config);\n tf.dispose(image);\n const results = [];\n for (const prediction of (predictions || [])) {\n const confidence = prediction.confidence.arraySync();\n if (confidence >= this.config.detector.minConfidence) {\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key in keypoints.MESH_ANNOTATIONS) {\n if (this.config.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = keypoints.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n results.push({\n confidence: confidence || 0,\n box: prediction.box ? [prediction.box.startPoint[0], prediction.box.startPoint[1], prediction.box.endPoint[0] - prediction.box.startPoint[0], prediction.box.endPoint[1] - prediction.box.startPoint[1]] : 0,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n }\n prediction.confidence.dispose();\n prediction.image.dispose();\n }\n return results;\n }\n}\n\nasync function load(config) {\n const models = await Promise.all([\n blazeface.load(config),\n tf.loadGraphModel(config.mesh.modelPath, { fromTFHub: config.mesh.modelPath.includes('tfhub.dev') }),\n tf.loadGraphModel(config.iris.modelPath, { fromTFHub: config.iris.modelPath.includes('tfhub.dev') }),\n ]);\n const faceMesh = new MediaPipeFaceMesh(models[0], models[1], models[2], config);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.uv_coords = uv_coords;\nexports.triangulation = triangulation;\n", "const tf = require('@tensorflow/tfjs');\n\nconst models = {};\nlet last = { age: 0, gender: '' };\nlet frame = 0;\n\nasync function getImage(image, size) {\n const buffer = tf.browser.fromPixels(image);\n const resize = tf.image.resizeBilinear(buffer, [size, size]);\n const expand = tf.cast(tf.expandDims(resize, 0), 'float32');\n return expand;\n}\n\nasync function loadAge(config) {\n if (!models.age) models.age = await tf.loadGraphModel(config.face.age.modelPath);\n return models.age;\n}\n\nasync function loadGender(config) {\n if (!models.gender) models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (frame > config.face.age.skipFrames) {\n frame = 0;\n } else {\n frame += 1;\n }\n if (frame === 0) return last;\n let enhance;\n if (image instanceof tf.Tensor) {\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n } else {\n enhance = await getImage(image, config.face.age.inputSize);\n }\n const obj = {};\n if (config.face.age.enabled) {\n const ageT = await models.age.predict(enhance);\n const data = await ageT.data();\n obj.age = Math.trunc(10 * data[0]) / 10;\n tf.dispose(ageT);\n }\n if (config.face.gender.enabled) {\n const genderT = await models.gender.predict(enhance);\n const data = await genderT.data();\n const confidence = Math.trunc(Math.abs(1.9 * 100 * (data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = confidence;\n }\n tf.dispose(genderT);\n }\n tf.dispose(enhance);\n last = obj;\n return obj;\n}\n\nexports.predict = predict;\nexports.loadAge = loadAge;\nexports.loadGender = loadGender;\n", "const tf = require('@tensorflow/tfjs');\n\nconst annotations = ['angry', 'discust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet frame = 0;\nconst multiplier = 1.5;\n\nfunction getImage(image, size) {\n const tensor = tf.tidy(() => {\n const buffer = tf.browser.fromPixels(image, 1);\n const resize = tf.image.resizeBilinear(buffer, [size, size]);\n const expand = tf.cast(tf.expandDims(resize, 0), 'float32');\n return expand;\n });\n return tensor;\n}\n\nasync function load(config) {\n if (!models.emotion) models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n return models.emotion;\n}\n\nasync function predict(image, config) {\n frame += 1;\n if (frame >= config.face.emotion.skipFrames) {\n frame = 0;\n return last;\n }\n const enhance = tf.tidy(() => {\n if (image instanceof tf.Tensor) {\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [r, g, b] = tf.split(resize, 3, 3);\n if (config.face.emotion.useGrayscale) {\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const r1 = tf.mul(r, [0.2989]);\n const g1 = tf.mul(g, [0.5870]);\n const b1 = tf.mul(b, [0.1140]);\n const grayscale = tf.addN([r1, g1, b1]);\n return grayscale;\n }\n return g;\n }\n return getImage(image, config.face.emotion.inputSize);\n });\n const obj = [];\n if (config.face.emotion.enabled) {\n const emotionT = await models.emotion.predict(enhance);\n const data = await emotionT.data();\n for (let i = 0; i < data.length; i++) {\n if (multiplier * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * multiplier * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n tf.dispose(emotionT);\n }\n tf.dispose(enhance);\n last = obj;\n return obj;\n}\n\nexports.predict = predict;\nexports.load = load;\n", "const tf = require('@tensorflow/tfjs');\n\nclass BaseModel {\n constructor(model, outputStride) {\n this.model = model;\n this.outputStride = outputStride;\n const inputShape = this.model.inputs[0].shape;\n tf.util.assert((inputShape[1] === -1) && (inputShape[2] === -1), () => `Input shape [${inputShape[1]}, ${inputShape[2]}] must both be equal to or -1`);\n }\n\n /**\n * Predicts intermediate Tensor representations.\n *\n * @param input The input RGB image of the base model.\n * A Tensor of shape: [`inputResolution`, `inputResolution`, 3].\n *\n * @return A dictionary of base model's intermediate predictions.\n * The returned dictionary should contains the following elements:\n * heatmapScores: A Tensor3D that represents the heatmapScores.\n * offsets: A Tensor3D that represents the offsets.\n * displacementFwd: A Tensor3D that represents the forward displacement.\n * displacementBwd: A Tensor3D that represents the backward displacement.\n */\n predict(input) {\n return tf.tidy(() => {\n const asFloat = this.preprocessInput(input.toFloat());\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = this.nameOutputResults(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n /**\n * Releases the CPU and GPU memory allocated by the model.\n */\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "const tf = require('@tensorflow/tfjs');\nconst modelBase = require('./modelBase');\n\nclass MobileNet extends modelBase.BaseModel {\n // eslint-disable-next-line class-methods-use-this\n preprocessInput(input) {\n // Normalize the pixels [0, 255] to be between [-1, 1].\n return tf.tidy(() => tf.div(input, 127.5).sub(1.0));\n }\n\n // eslint-disable-next-line class-methods-use-this\n nameOutputResults(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n }\n}\nexports.MobileNet = MobileNet;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "const heapSort = require('./heapSort');\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) {\n break;\n }\n }\n return localMaximum;\n}\n/**\n * Builds a priority queue with part candidate positions for a specific image in\n * the batch. For this we find all local maxima in the score maps with score\n * values above a threshold. We create a single priority queue across all parts.\n */\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\nexports.NUM_KEYPOINTS = exports.partNames.length;\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\n/*\n * Define the skeleton. This defines the parent->child relationships of our\n * tree. Arbitrarily this defines the nose as the root of the tree, however\n * since we will infer the displacement for both parent->child and\n * child->parent, we can define the tree root as any node.\n */\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "const kpt = require('./keypoints');\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "const keypoints = require('./keypoints');\nconst vectors = require('./vectors');\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n/**\n * We get a new keypoint along the `edgeId` for the pose instance, assuming\n * that the position of the `idSource` part is already known. For this, we\n * follow the displacement vector from the source to target part (stored in\n * the `i`-t channel of the displacement tensor). The displaced keypoint\n * vector is refined using the offset vector by `offsetRefineStep` times.\n */\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n/**\n * Follows the displacement fields to decode the full pose of the object\n * instance given the position of a part that acts as root.\n *\n * @return An array of decoded keypoints and their scores for a single pose\n */\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward\n // displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward\n // displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n", "const buildParts = require('./buildParts');\nconst decodePose = require('./decodePose');\nconst vectors = require('./vectors');\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n/* Score the newly proposed object instance without taking into account\n * the scores of the parts that overlap with any previously detected\n * instance.\n */\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) {\n result += score;\n }\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n// A point (y, x) is considered as root part candidate if its score is a\n// maximum in a window |y - y'| <= kLocalMaximumRadius, |x - x'| <=\n// kLocalMaximumRadius.\nconst kLocalMaximumRadius = 1;\n/**\n * Detects multiple poses and finds their parts from part scores and\n * displacement vectors. It returns up to `maxDetections` object instance\n * detections in decreasing root score order. It works as follows: We first\n * create a priority queue with local part score maxima above\n * `scoreThreshold`, considering all parts at the same time. Then we\n * iteratively pull the top element of the queue (in decreasing score order)\n * and treat it as a root candidate for a new object instance. To avoid\n * duplicate detections, we reject the root candidate if it is within a disk\n * of `nmsRadius` pixels from the corresponding part of a previously detected\n * instance, which is a form of part-based non-maximum suppression (NMS). If\n * the root candidate passes the NMS check, we start a new object instance\n * detection, treating the corresponding part as root and finding the\n * positions of the remaining parts by following the displacement vectors\n * along the tree-structured part graph. We assign to the newly detected\n * instance a score equal to the sum of scores of its parts which have not\n * been claimed by a previous instance (i.e., those at least `nmsRadius`\n * pixels away from the corresponding part of all previously detected\n * instances), divided by the total number of parts `numParts`.\n *\n * @param heatmapScores 3-D tensor with shape `[height, width, numParts]`.\n * The value of heatmapScores[y, x, k]` is the score of placing the `k`-th\n * object part at position `(y, x)`.\n *\n * @param offsets 3-D tensor with shape `[height, width, numParts * 2]`.\n * The value of [offsets[y, x, k], offsets[y, x, k + numParts]]` is the\n * short range offset vector of the `k`-th object part at heatmap\n * position `(y, x)`.\n *\n * @param displacementsFwd 3-D tensor of shape\n * `[height, width, 2 * num_edges]`, where `num_edges = num_parts - 1` is the\n * number of edges (parent-child pairs) in the tree. It contains the forward\n * displacements between consecutive part from the root towards the leaves.\n *\n * @param displacementsBwd 3-D tensor of shape\n * `[height, width, 2 * num_edges]`, where `num_edges = num_parts - 1` is the\n * number of edges (parent-child pairs) in the tree. It contains the backward\n * displacements between consecutive part from the root towards the leaves.\n *\n * @param outputStride The output stride that was used when feed-forwarding\n * through the PoseNet model. Must be 32, 16, or 8.\n *\n * @param maxPoseDetections Maximum number of returned instance detections per\n * image.\n *\n * @param scoreThreshold Only return instance detections that have root part\n * score greater or equal to this value. Defaults to 0.5.\n *\n * @param nmsRadius Non-maximum suppression part distance. It needs to be\n * strictly positive. Two parts suppress each other if they are less than\n * `nmsRadius` pixels away. Defaults to 20.\n *\n * @return An array of poses and their scores, each containing keypoints and\n * the corresponding keypoint scores.\n */\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, outputStride, maxPoseDetections, scoreThreshold = 0.5, nmsRadius = 20) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius * nmsRadius;\n // Generate at most maxDetections object instances per image in\n // decreasing root part score order.\n while (poses.length < maxPoseDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it\n // is within a disk of `nmsRadius` pixels from the corresponding part of\n // a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "const tf = require('@tensorflow/tfjs');\nconst kpt = require('./keypoints');\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX, offsetY = 0, offsetX = 0) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: {\n x: position.x * scaleX + offsetX,\n y: position.y * scaleY + offsetY,\n },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction scalePoses(poses, scaleY, scaleX, offsetY = 0, offsetX = 0) {\n if (scaleX === 1 && scaleY === 1 && offsetY === 0 && offsetX === 0) {\n return poses;\n }\n return poses.map((pose) => scalePose(pose, scaleY, scaleX, offsetY, offsetX));\n}\nexports.scalePoses = scalePoses;\n\nfunction getInputTensorDimensions(input) {\n return input instanceof tf.Tensor ? [input.shape[0], input.shape[1]] : [input.height, input.width];\n}\nexports.getInputTensorDimensions = getInputTensorDimensions;\n\nfunction toInputTensor(input) {\n return input instanceof tf.Tensor ? input : tf.browser.fromPixels(input);\n}\nexports.toInputTensor = toInputTensor;\n\nfunction toResizedInputTensor(input, resizeHeight, resizeWidth) {\n return tf.tidy(() => {\n const imageTensor = toInputTensor(input);\n return imageTensor.resizeBilinear([resizeHeight, resizeWidth]);\n });\n}\nexports.toResizedInputTensor = toResizedInputTensor;\n\nfunction padAndResizeTo(input, [targetH, targetW]) {\n const [height, width] = getInputTensorDimensions(input);\n const targetAspect = targetW / targetH;\n const aspect = width / height;\n let [padT, padB, padL, padR] = [0, 0, 0, 0];\n if (aspect < targetAspect) {\n // pads the width\n padT = 0;\n padB = 0;\n padL = Math.round(0.5 * (targetAspect * height - width));\n padR = Math.round(0.5 * (targetAspect * height - width));\n } else {\n // pads the height\n padT = Math.round(0.5 * ((1.0 / targetAspect) * width - height));\n padB = Math.round(0.5 * ((1.0 / targetAspect) * width - height));\n padL = 0;\n padR = 0;\n }\n const resized = tf.tidy(() => {\n let imageTensor = toInputTensor(input);\n imageTensor = tf.pad3d(imageTensor, [[padT, padB], [padL, padR], [0, 0]]);\n return imageTensor.resizeBilinear([targetH, targetW]);\n });\n return { resized, padding: { top: padT, left: padL, right: padR, bottom: padB } };\n}\nexports.padAndResizeTo = padAndResizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth], padding) {\n const scaleY = (height + padding.top + padding.bottom) / (inputResolutionHeight);\n const scaleX = (width + padding.left + padding.right) / (inputResolutionWidth);\n const scaledPoses = scalePoses(poses, scaleY, scaleX, -padding.top, -padding.left);\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "const tf = require('@tensorflow/tfjs');\nconst modelMobileNet = require('./modelMobileNet');\nconst decodeMultiple = require('./decodeMultiple');\nconst util = require('./util');\n\nclass PoseNet {\n constructor(net) {\n this.baseModel = net;\n }\n\n /**\n * Infer through PoseNet, and estimates multiple poses using the outputs.\n * This does standard ImageNet pre-processing before inferring through the\n * model. The image should pixels should have values [0-255]. It detects\n * multiple poses and finds their parts from part scores and displacement\n * vectors using a fast greedy decoding algorithm. It returns up to\n * `config.maxDetections` object instance detections in decreasing root\n * score order.\n *\n * @param input\n * ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement) The input\n * image to feed through the network.\n *\n * @param config MultiPoseEstimationConfig object that contains parameters\n * for the PoseNet inference using multiple pose estimation.\n *\n * @return An array of poses and their scores, each containing keypoints and\n * the corresponding keypoint scores. The positions of the keypoints are\n * in the same scale as the original image\n */\n async estimatePoses(input, config) {\n const outputStride = config.outputStride;\n // const inputResolution = config.inputResolution;\n const [height, width] = util.getInputTensorDimensions(input);\n const { resized, padding } = util.padAndResizeTo(input, [config.inputResolution, config.inputResolution]);\n const { heatmapScores, offsets, displacementFwd, displacementBwd } = this.baseModel.predict(resized);\n const allTensorBuffers = await util.toTensorBuffers3D([heatmapScores, offsets, displacementFwd, displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, outputStride, config.maxDetections, config.scoreThreshold, config.nmsRadius);\n const resultPoses = util.scaleAndFlipPoses(poses, [height, width], [config.inputResolution, config.inputResolution], padding);\n heatmapScores.dispose();\n offsets.dispose();\n displacementFwd.dispose();\n displacementBwd.dispose();\n resized.dispose();\n return resultPoses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\nasync function loadMobileNet(config) {\n const graphModel = await tf.loadGraphModel(config.modelPath);\n const mobilenet = new modelMobileNet.MobileNet(graphModel, config.outputStride);\n return new PoseNet(mobilenet);\n}\n/**\n * Loads the PoseNet model instance from a checkpoint, with the MobileNet architecture. The model to be loaded is configurable using the\n * config dictionary ModelConfig. Please find more details in the documentation of the ModelConfig.\n *\n * @param config ModelConfig dictionary that contains parameters for\n * the PoseNet loading process. Please find more details of each parameters\n * in the documentation of the ModelConfig interface. The predefined\n * `MOBILENET_V1_CONFIG` and `RESNET_CONFIG` can also be used as references\n * for defining your customized config.\n */\nasync function load(config) {\n return loadMobileNet(config);\n}\nexports.load = load;\n", "const modelMobileNet = require('./modelMobileNet');\nconst modelPoseNet = require('./modelPoseNet');\nconst decodeMultiple = require('./decodeMultiple');\nconst keypoints = require('./keypoints');\nconst util = require('./util');\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.MobileNet = modelMobileNet.MobileNet;\nexports.decodeMultiplePoses = decodeMultiple.decodeMultiplePoses;\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "const tf = require('@tensorflow/tfjs');\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexports.squarifyBox = squarifyBox;\n\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0], box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexports.shiftBox = shiftBox;\n", "const tf = require('@tensorflow/tfjs');\nconst bounding = require('./box');\n\nclass HandDetector {\n constructor(model, anchors, config) {\n this.model = model;\n this.width = config.inputSize;\n this.height = config.inputSize;\n this.anchors = anchors.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([config.inputSize, config.inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([config.inputSize * 2, config.inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoundingBoxes(input) {\n const normalizedInput = tf.tidy(() => tf.mul(tf.sub(input, 0.5), 2));\n const batchedPrediction = this.model.predict(normalizedInput);\n const prediction = batchedPrediction.squeeze();\n // Regression score for each anchor point.\n const scores = tf.tidy(() => tf.sigmoid(tf.slice(prediction, [0, 0], [-1, 1])).squeeze());\n // Bounding box for each anchor point.\n const rawBoxes = tf.slice(prediction, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n const boxesWithHandsTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.maxHands, this.iouThreshold, this.scoreThreshold);\n const boxesWithHands = await boxesWithHandsTensor.array();\n const toDispose = [\n normalizedInput, batchedPrediction, boxesWithHandsTensor, prediction,\n boxes, rawBoxes, scores,\n ];\n if (boxesWithHands.length === 0) {\n toDispose.forEach((tensor) => tensor.dispose());\n return null;\n }\n const detectedHands = tf.tidy(() => {\n const detectedBoxes = [];\n for (const i in boxesWithHands) {\n const boxIndex = boxesWithHands[i];\n const matchingBox = tf.slice(boxes, [boxIndex, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(prediction, [boxIndex, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, boxIndex).reshape([-1, 2]));\n detectedBoxes.push({ boxes: matchingBox, palmLandmarks });\n }\n return detectedBoxes;\n });\n return detectedHands;\n }\n\n /**\n * Returns a Box identifying the bounding box of a hand within the image.\n * Returns null if there is no hand in the image.\n *\n * @param input The image to classify.\n */\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n this.iouThreshold = config.iouThreshold;\n this.scoreThreshold = config.scoreThreshold;\n this.maxHands = config.maxHands;\n const image = tf.tidy(() => input.resizeBilinear([this.width, this.height]).div(255));\n const predictions = await this.getBoundingBoxes(image);\n image.dispose();\n if (!predictions || (predictions.length === 0)) return null;\n const hands = [];\n for (const i in predictions) {\n const prediction = predictions[i];\n const boundingBoxes = await prediction.boxes.array();\n const startPoint = boundingBoxes[0].slice(0, 2);\n const endPoint = boundingBoxes[0].slice(2, 4);\n const palmLandmarks = await prediction.palmLandmarks.array();\n prediction.boxes.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(bounding.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks }, [inputWidth / this.width, inputHeight / this.height]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "exports.MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n", "function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nconst buildTranslationMatrix = (x, y) => ([[1, 0, x], [0, 1, y], [0, 0, 1]]);\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n", "const tf = require('@tensorflow/tfjs');\nconst bounding = require('./box');\nconst util = require('./util');\n\nconst UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD = 0.8;\nconst PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst HAND_BOX_SHIFT_VECTOR = [0, -0.1];\nconst HAND_BOX_ENLARGE_FACTOR = 1.65;\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass HandPipeline {\n constructor(boundingBoxDetector, meshDetector, config) {\n this.regionsOfInterest = [];\n this.runsWithoutHandDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.meshWidth = config.inputSize;\n this.meshHeight = config.inputSize;\n this.enlargeFactor = config.enlargeFactor;\n }\n\n // Get the bounding box surrounding the hand, given palm landmarks.\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => {\n const homogeneousCoordinate = [...coord, 1];\n return util.rotatePoint(homogeneousCoordinate, rotationMatrix);\n });\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // boxAroundPalm only surrounds the palm - therefore we shift it\n // upwards so it will capture fingers once enlarged + squarified.\n return bounding.enlargeBox(bounding.squarifyBox(bounding.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), this.enlargeFactor);\n }\n\n // Get the bounding box surrounding the hand, given all hand landmarks.\n getBoxForHandLandmarks(landmarks) {\n // The MediaPipe hand mesh model is trained on hands with empty space\n // around them, so we still need to shift / enlarge boxAroundHand even\n // though it surrounds the entire hand.\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n const boxAroundHand = bounding.enlargeBox(bounding.squarifyBox(bounding.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n boxAroundHand.palmLandmarks = palmLandmarks;\n return boxAroundHand;\n }\n\n // Scale, rotate, and translate raw keypoints from the model so they map to\n // the input coordinates.\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize(box);\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...bounding.getBoxCenter(box), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0], coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n this.maxContinuousChecks = config.skipFrames;\n this.detectionConfidence = config.minConfidence;\n this.maxHands = config.maxHands;\n const useFreshBox = this.shouldUpdateRegionsOfInterest();\n if (useFreshBox === true) {\n const boundingBoxPredictions = await this.boundingBoxDetector.estimateHandBounds(image, config);\n this.regionsOfInterest = [];\n for (const i in boundingBoxPredictions) {\n this.updateRegionsOfInterest(boundingBoxPredictions[i], true /* force update */, i);\n }\n this.runsWithoutHandDetector = 0;\n } else {\n this.runsWithoutHandDetector++;\n }\n // Rotate input so the hand is vertically oriented.\n const hands = [];\n if (!this.regionsOfInterest) return hands;\n for (const i in this.regionsOfInterest) {\n const currentBox = this.regionsOfInterest[i][0];\n if (!currentBox) return hands;\n const angle = util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]);\n const palmCenter = bounding.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized);\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const box = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = bounding.cutBoxFromImageAndResize(box, rotatedImage, [this.meshWidth, this.meshHeight]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const prediction = this.meshDetector.predict(handImage);\n const [flag, keypoints] = prediction;\n handImage.dispose();\n const flagValue = flag.dataSync()[0];\n flag.dispose();\n if (flagValue < config.minConfidence) {\n keypoints.dispose();\n this.regionsOfInterest[i] = [];\n return hands;\n }\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = await keypointsReshaped.array();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.updateRegionsOfInterest(nextBoundingBox, false /* force replace */, i);\n const result = {\n landmarks: coords,\n confidence: flagValue,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n }\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n\n // Updates regions of interest if the intersection over union between\n // the incoming and previous regions falls below a threshold.\n updateRegionsOfInterest(box, forceUpdate, index) {\n if (forceUpdate) {\n this.regionsOfInterest[index] = [box];\n } else {\n const previousBox = this.regionsOfInterest[index][0];\n let iou = 0;\n if (previousBox != null && previousBox.startPoint != null) {\n const [boxStartX, boxStartY] = box.startPoint;\n const [boxEndX, boxEndY] = box.endPoint;\n const [previousBoxStartX, previousBoxStartY] = previousBox.startPoint;\n const [previousBoxEndX, previousBoxEndY] = previousBox.endPoint;\n const xStartMax = Math.max(boxStartX, previousBoxStartX);\n const yStartMax = Math.max(boxStartY, previousBoxStartY);\n const xEndMin = Math.min(boxEndX, previousBoxEndX);\n const yEndMin = Math.min(boxEndY, previousBoxEndY);\n const intersection = (xEndMin - xStartMax) * (yEndMin - yStartMax);\n const boxArea = (boxEndX - boxStartX) * (boxEndY - boxStartY);\n const previousBoxArea = (previousBoxEndX - previousBoxStartX) * (previousBoxEndY - boxStartY);\n iou = intersection / (boxArea + previousBoxArea - intersection);\n }\n this.regionsOfInterest[index][0] = iou > UPDATE_REGION_OF_INTEREST_IOU_THRESHOLD ? previousBox : box;\n }\n }\n\n shouldUpdateRegionsOfInterest() {\n return !this.regionsOfInterest || (this.regionsOfInterest.length === 0) || (this.runsWithoutHandDetector >= this.maxContinuousChecks);\n }\n}\nexports.HandPipeline = HandPipeline;\n", "const tf = require('@tensorflow/tfjs');\nconst hand = require('./handdetector');\nconst keypoints = require('./keypoints');\nconst pipe = require('./pipeline');\n\nclass HandPose {\n constructor(pipeline) {\n this.pipeline = pipeline;\n }\n\n async estimateHands(input, config) {\n this.maxContinuousChecks = config.skipFrames;\n this.detectionConfidence = config.minConfidence;\n this.maxHands = config.maxHands;\n const image = tf.tidy(() => {\n if (!(input instanceof tf.Tensor)) {\n input = tf.browser.fromPixels(input);\n }\n return input.toFloat().expandDims(0);\n });\n const predictions = await this.pipeline.estimateHands(image, config);\n image.dispose();\n const hands = [];\n if (!predictions) return hands;\n for (const prediction of predictions) {\n if (!prediction) return [];\n const annotations = {};\n for (const key of Object.keys(keypoints.MESH_ANNOTATIONS)) {\n annotations[key] = keypoints.MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n hands.push({\n confidence: prediction.confidence || 0,\n box: prediction.box ? [prediction.box.topLeft[0], prediction.box.topLeft[1], prediction.box.bottomRight[0] - prediction.box.topLeft[0], prediction.box.bottomRight[1] - prediction.box.topLeft[1]] : 0,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function loadAnchors(url) {\n if (tf.env().features.IS_NODE) {\n // eslint-disable-next-line global-require\n const fs = require('fs');\n const data = await fs.readFileSync(url.replace('file://', ''));\n return JSON.parse(data);\n }\n return tf.util.fetch(url).then((d) => d.json());\n}\n\nasync function load(config) {\n const [anchors, handDetectorModel, handPoseModel] = await Promise.all([\n loadAnchors(config.detector.anchors),\n tf.loadGraphModel(config.detector.modelPath, { fromTFHub: config.detector.modelPath.includes('tfhub.dev') }),\n tf.loadGraphModel(config.skeleton.modelPath, { fromTFHub: config.skeleton.modelPath.includes('tfhub.dev') }),\n ]);\n const detector = new hand.HandDetector(handDetectorModel, anchors, config);\n const pipeline = new pipe.HandPipeline(detector, handPoseModel, config);\n const handpose = new HandPose(pipeline);\n return handpose;\n}\nexports.load = load;\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n console: true, // enable debugging output to console\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models: detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface/back/model.json', // can be 'tfhub', 'front' or 'back'.\n // 'front' is optimized for large faces such as front-facing camera and 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 'tfhub' and 'front' and 256 for 'back'\n maxFaces: 10, // maximum number of faces detected in the input, should be set to the minimum number for performance\n skipFrames: 10, // how many frames to go without re-running the face bounding box detector\n // if model is running st 25 FPS, we can re-use existing bounding box for updated face mesh analysis\n // as face probably hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.3, // threshold for deciding whether boxes overlap too much in non-maximum suppression\n scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression\n },\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh/model.json',\n inputSize: 192, // fixed value\n },\n iris: {\n enabled: true,\n modelPath: '../models/iris/model.json',\n enlargeFactor: 2.3, // empiric tuning\n inputSize: 64, // fixed value\n },\n age: {\n enabled: true,\n modelPath: '../models/ssrnet-age/imdb/model.json', // can be 'imdb' or 'wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 10, // how many frames to go without re-running the detector\n },\n gender: {\n enabled: true,\n minConfidence: 0.8, // threshold for discarding a prediction\n modelPath: '../models/ssrnet-gender/imdb/model.json',\n },\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.5, // threshold for discarding a prediction\n skipFrames: 10, // how many frames to go without re-running the detector\n useGrayscale: true, // convert image to grayscale before prediction or use highest channel\n modelPath: '../models/emotion/model.json',\n },\n },\n body: {\n enabled: true,\n modelPath: '../models/posenet/model.json',\n inputResolution: 257, // fixed value\n outputStride: 16, // fixed value\n maxDetections: 10, // maximum number of people detected in the input, should be set to the minimum number for performance\n scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n },\n hand: {\n enabled: true,\n inputSize: 256, // fixed value\n skipFrames: 10, // how many frames to go without re-running the hand bounding box detector\n // if model is running st 25 FPS, we can re-use existing bounding box for updated hand skeleton analysis\n // as face probably hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.3, // threshold for deciding whether boxes overlap too much in non-maximum suppression\n scoreThreshold: 0.7, // threshold for deciding when to remove boxes based on score in non-maximum suppression\n enlargeFactor: 1.65, // empiric tuning as skeleton prediction prefers hand box with some whitespace\n maxHands: 10, // maximum number of hands detected in the input, should be set to the minimum number for performance\n detector: {\n anchors: '../models/handdetect/anchors.json',\n modelPath: '../models/handdetect/model.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton/model.json',\n },\n },\n};\n", "const tf = require('@tensorflow/tfjs');\nconst facemesh = require('./facemesh/facemesh.js');\nconst ssrnet = require('./ssrnet/ssrnet.js');\nconst emotion = require('./emotion/emotion.js');\nconst posenet = require('./posenet/posenet.js');\nconst handpose = require('./handpose/handpose.js');\nconst defaults = require('./config.js').default;\nconst app = require('../package.json');\n\nlet config;\n\n// object that contains all initialized models\nconst models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n};\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\nconst log = (...msg) => {\n // eslint-disable-next-line no-console\n if (config.console) console.log(...msg);\n};\n\n// helper function that performs deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nfunction sanity(input) {\n if (!input) return 'input is not defined';\n const width = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n if (!width || (width === 0)) return 'input is empty';\n if (input.readyState && (input.readyState <= 2)) return 'input is not ready';\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n}\n\nasync function detect(input, userConfig) {\n config = mergeDeep(defaults, userConfig);\n\n // sanity checks\n const error = sanity(input);\n if (error) {\n log(error, input);\n return { error };\n }\n\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n // check number of loaded models\n const loadedModels = Object.values(models).filter((a) => a).length;\n if (loadedModels === 0) log('Human library starting');\n\n // configure backend\n if (tf.getBackend() !== config.backend) {\n log('Human library setting backend:', config.backend);\n await tf.setBackend(config.backend);\n await tf.ready();\n }\n // explictly enable depthwiseconv since it's diasabled by default due to issues with large shaders\n // let savedWebglPackDepthwiseConvFlag;\n // if (tf.getBackend() === 'webgl') {\n // savedWebglPackDepthwiseConvFlag = tf.env().get('WEBGL_PACK_DEPTHWISECONV');\n // tf.env().set('WEBGL_PACK_DEPTHWISECONV', true);\n // }\n\n // load models if enabled\n if (config.face.enabled && !models.facemesh) models.facemesh = await facemesh.load(config.face);\n if (config.body.enabled && !models.posenet) models.posenet = await posenet.load(config.body);\n if (config.hand.enabled && !models.handpose) models.handpose = await handpose.load(config.hand);\n if (config.face.enabled && config.face.age.enabled && !models.age) models.age = await ssrnet.loadAge(config);\n if (config.face.enabled && config.face.gender.enabled && !models.gender) models.gender = await ssrnet.loadGender(config);\n if (config.face.enabled && config.face.emotion.enabled && !models.emotion) models.emotion = await emotion.load(config);\n\n const perf = {};\n let timeStamp;\n\n // run posenet\n timeStamp = now();\n tf.engine().startScope();\n const poseRes = config.body.enabled ? await models.posenet.estimatePoses(input, config.body) : [];\n tf.engine().endScope();\n perf.body = Math.trunc(now() - timeStamp);\n\n // run handpose\n timeStamp = now();\n tf.engine().startScope();\n const handRes = config.hand.enabled ? await models.handpose.estimateHands(input, config.hand) : [];\n tf.engine().endScope();\n perf.hand = Math.trunc(now() - timeStamp);\n\n // run facemesh, includes blazeface and iris\n const faceRes = [];\n if (config.face.enabled) {\n timeStamp = now();\n tf.engine().startScope();\n const faces = await models.facemesh.estimateFaces(input, config.face);\n perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('face object is disposed:', face.image);\n continue;\n }\n // run ssr-net age & gender, inherits face from blazeface\n timeStamp = now();\n const ssrData = (config.face.age.enabled || config.face.gender.enabled) ? await ssrnet.predict(face.image, config) : {};\n perf.agegender = Math.trunc(now() - timeStamp);\n // run emotion, inherits face from blazeface\n timeStamp = now();\n const emotionData = config.face.emotion.enabled ? await emotion.predict(face.image, config) : {};\n perf.emotion = Math.trunc(now() - timeStamp);\n face.image.dispose();\n // calculate iris distance\n // iris: array[ bottom, left, top, right, center ]\n const iris = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n ? Math.max(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0], face.annotations.rightEyeIris[3][0] - face.annotations.rightEyeIris[1][0])\n : 0;\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ssrData.age,\n gender: ssrData.gender,\n agConfidence: ssrData.confidence,\n emotion: emotionData,\n iris: (iris !== 0) ? Math.trunc(100 * 11.7 /* human iris size in mm */ / iris) / 100 : 0,\n });\n }\n tf.engine().endScope();\n }\n\n // set depthwiseconv to original value\n // tf.env().set('WEBGL_PACK_DEPTHWISECONV', savedWebglPackDepthwiseConvFlag);\n\n // combine and return results\n perf.total = Object.values(perf).reduce((a, b) => a + b);\n resolve({ face: faceRes, body: poseRes, hand: handRes, performance: perf });\n });\n}\n\nexports.detect = detect;\nexports.defaults = defaults;\nexports.config = config;\nexports.models = models;\nexports.facemesh = facemesh;\nexports.ssrnet = ssrnet;\nexports.posenet = posenet;\nexports.handpose = handpose;\nexports.tf = tf;\nexports.version = app.version;\n"], + "mappings": "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AAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,iBAAiB;AAAA,IAClB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,kBAAkB;AAAA,IACnB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,mBAAmB;AAAA,IACpB,CAAC,m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;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IACpE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACtE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACxE;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACvE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAC1E;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACzE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACzE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACxE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACzE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAC1E;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACzE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAC1E;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IACpE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAI;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACpE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACrE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACvE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAI;AAAA,IAAG;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACxE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACtE;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK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", "names": [] } diff --git a/dist/human.cjs b/dist/human.cjs index 53ce8fd8..0dcfd5e0 100644 --- a/dist/human.cjs +++ b/dist/human.cjs @@ -1,39 +1,39 @@ -var Es=Object.defineProperty,c2=Object.prototype.hasOwnProperty;var Le=(n,t)=>()=>(t||(t={exports:{}},n(t.exports,t)),t.exports),rf=n=>Es(n,"__esModule",{value:!0}),Sl=(n,t)=>{rf(n);for(var e in t)Es(n,e,{get:t[e],enumerable:!0})},h2=(n,t)=>{if(rf(n),typeof t=="object"||typeof t=="function")for(let e in t)!c2.call(n,e)&&e!=="default"&&Es(n,e,{get:()=>t[e],enumerable:!0});return n},Na=n=>n&&n.__esModule?n:h2(Es({},"default",{value:n,enumerable:!0}),n);var ff=Le(d2=>{Sl(d2,{FetchError:()=>Ut,Headers:()=>vn,Request:()=>Gi,Response:()=>Dn,default:()=>A2});const hn=Na(require("stream")),Ll=Na(require("http")),Ds=Na(require("url")),af=Na(require("https")),ci=Na(require("zlib")),p2=hn.default.Readable,$n=Symbol("buffer"),Il=Symbol("type");class xa{constructor(){this[Il]="";const n=arguments[0],t=arguments[1],e=[];let i=0;if(n){const a=n,s=Number(a.length);for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:{},i=e.size;let r=i===void 0?0:i;var a=e.timeout;let s=a===void 0?0:a;n==null?n=null:of(n)?n=Buffer.from(n.toString()):Ca(n)||(Buffer.isBuffer(n)||(Object.prototype.toString.call(n)==="[object ArrayBuffer]"?n=Buffer.from(n):ArrayBuffer.isView(n)?n=Buffer.from(n.buffer,n.byteOffset,n.byteLength):n instanceof hn.default||(n=Buffer.from(String(n))))),this[Xn]={body:n,disturbed:!1,error:null},this.size=r,this.timeout=s,n instanceof hn.default&&n.on("error",function(o){const l=o.name==="AbortError"?o:new Ut(`Invalid response body while trying to fetch ${t.url}: ${o.message}`,"system",o);t[Xn].error=l})}Ct.prototype={get body(){return this[Xn].body},get bodyUsed(){return this[Xn].disturbed},arrayBuffer(){return Er.call(this).then(function(n){return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)})},blob(){let n=this.headers&&this.headers.get("content-type")||"";return Er.call(this).then(function(t){return Object.assign(new xa([],{type:n.toLowerCase()}),{[$n]:t})})},json(){var n=this;return Er.call(this).then(function(t){try{return JSON.parse(t.toString())}catch(e){return Ct.Promise.reject(new Ut(`invalid json response body at ${n.url} reason: ${e.message}`,"invalid-json"))}})},text(){return Er.call(this).then(function(n){return n.toString()})},buffer(){return Er.call(this)},textConverted(){var n=this;return Er.call(this).then(function(t){return f2(t,n.headers)})}};Object.defineProperties(Ct.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Ct.mixIn=function(n){for(const t of Object.getOwnPropertyNames(Ct.prototype))if(!(t in n)){const e=Object.getOwnPropertyDescriptor(Ct.prototype,t);Object.defineProperty(n,t,e)}};function Er(){var n=this;if(this[Xn].disturbed)return Ct.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[Xn].disturbed=!0,this[Xn].error)return Ct.Promise.reject(this[Xn].error);let t=this.body;if(t===null)return Ct.Promise.resolve(Buffer.alloc(0));if(Ca(t)&&(t=t.stream()),Buffer.isBuffer(t))return Ct.Promise.resolve(t);if(!(t instanceof hn.default))return Ct.Promise.resolve(Buffer.alloc(0));let e=[],i=0,r=!1;return new Ct.Promise(function(a,s){let o;n.timeout&&(o=setTimeout(function(){r=!0,s(new Ut(`Response timeout while trying to fetch ${n.url} (over ${n.timeout}ms)`,"body-timeout"))},n.timeout)),t.on("error",function(l){l.name==="AbortError"?(r=!0,s(l)):s(new Ut(`Invalid response body while trying to fetch ${n.url}: ${l.message}`,"system",l))}),t.on("data",function(l){if(r||l===null)return;if(n.size&&i+l.length>n.size){r=!0,s(new Ut(`content size at ${n.url} over limit: ${n.size}`,"max-size"));return}i+=l.length,e.push(l)}),t.on("end",function(){if(r)return;clearTimeout(o);try{a(Buffer.concat(e,i))}catch(l){s(new Ut(`Could not create Buffer from response body for ${n.url}: ${l.message}`,"system",l))}})})}function f2(n,t){if(typeof Al!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");const e=t.get("content-type");let i="utf-8",r,a;return e&&(r=/charset=([^;]*)/i.exec(e)),a=n.slice(0,1024).toString(),!r&&a&&(r=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[ct]=Object.create(null),n instanceof vn){const t=n.raw(),e=Object.keys(t);for(const i of e)for(const r of t[i])this.append(i,r);return}if(!(n==null))if(typeof n=="object"){const t=n[Symbol.iterator];if(t!=null){if(typeof t!="function")throw new TypeError("Header pairs must be iterable");const e=[];for(const i of n){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");e.push(Array.from(i))}for(const i of e){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(const e of Object.keys(n)){const i=n[e];this.append(e,i)}}else throw new TypeError("Provided initializer must be an object")}get(n){n=`${n}`,Ra(n);const t=Dr(this[ct],n);return t===void 0?null:this[ct][t].join(", ")}forEach(n){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,e=Nl(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";const e=Object.keys(n[ct]).sort();return e.map(t==="key"?function(i){return i.toLowerCase()}:t==="value"?function(i){return n[ct][i].join(", ")}:function(i){return[i.toLowerCase(),n[ct][i].join(", ")]})}const Cl=Symbol("internal");function xl(n,t){const e=Object.create(Rl);return e[Cl]={target:n,kind:t,index:0},e}const Rl=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==Rl)throw new TypeError("Value of `this` is not a HeadersIterator");var n=this[Cl];const t=n.target,e=n.kind,i=n.index,r=Nl(t,e),a=r.length;return i>=a?{value:void 0,done:!0}:(this[Cl].index=i+1,{value:r[i],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(Rl,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function g2(n){const t=Object.assign({__proto__:null},n[ct]),e=Dr(n[ct],"Host");return e!==void 0&&(t[e]=t[e][0]),t}function v2(n){const t=new vn;for(const e of Object.keys(n)){if(hf.test(e))continue;if(Array.isArray(n[e]))for(const i of n[e]){if(Tl.test(i))continue;t[ct][e]===void 0?t[ct][e]=[i]:t[ct][e].push(i)}else Tl.test(n[e])||(t[ct][e]=[n[e]])}return t}const hi=Symbol("Response internals"),y2=Ll.default.STATUS_CODES;class Dn{constructor(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Ct.call(this,n,t);const e=t.status||200,i=new vn(t.headers);if(n!=null&&!i.has("Content-Type")){const r=uf(n);r&&i.append("Content-Type",r)}this[hi]={url:t.url,status:e,statusText:t.statusText||y2[e],headers:i,counter:t.counter}}get url(){return this[hi].url||""}get status(){return this[hi].status}get ok(){return this[hi].status>=200&&this[hi].status<300}get redirected(){return this[hi].counter>0}get statusText(){return this[hi].statusText}get headers(){return this[hi].headers}clone(){return new Dn(lf(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}}Ct.mixIn(Dn.prototype);Object.defineProperties(Dn.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(Dn.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});const Jn=Symbol("Request internals"),Ol=Ds.default.parse,b2=Ds.default.format,w2="destroy"in hn.default.Readable.prototype;function ks(n){return typeof n=="object"&&typeof n[Jn]=="object"}function S2(n){const t=n&&typeof n=="object"&&Object.getPrototypeOf(n);return!!(t&&t.constructor.name==="AbortSignal")}class Gi{constructor(n){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},e;ks(n)?e=Ol(n.url):(n&&n.href?e=Ol(n.href):e=Ol(`${n}`),n={});let i=t.method||n.method||"GET";if(i=i.toUpperCase(),(t.body!=null||ks(n)&&n.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let r=t.body!=null?t.body:ks(n)&&n.body!==null?lf(n):null;Ct.call(this,r,{timeout:t.timeout||n.timeout||0,size:t.size||n.size||0});const a=new vn(t.headers||n.headers||{});if(r!=null&&!a.has("Content-Type")){const o=uf(r);o&&a.append("Content-Type",o)}let s=ks(n)?n.signal:null;if("signal"in t&&(s=t.signal),s!=null&&!S2(s))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[Jn]={method:i,redirect:t.redirect||n.redirect||"follow",headers:a,parsedURL:e,signal:s},this.follow=t.follow!==void 0?t.follow:n.follow!==void 0?n.follow:20,this.compress=t.compress!==void 0?t.compress:n.compress!==void 0?n.compress:!0,this.counter=t.counter||n.counter||0,this.agent=t.agent||n.agent}get method(){return this[Jn].method}get url(){return b2(this[Jn].parsedURL)}get headers(){return this[Jn].headers}get redirect(){return this[Jn].redirect}get signal(){return this[Jn].signal}clone(){return new Gi(this)}}Ct.mixIn(Gi.prototype);Object.defineProperty(Gi.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(Gi.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function L2(n){const t=n[Jn].parsedURL,e=new vn(n[Jn].headers);if(e.has("Accept")||e.set("Accept","*/*"),!t.protocol||!t.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(t.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(n.signal&&n.body instanceof hn.default.Readable&&!w2)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let i=null;if(n.body==null&&/^(POST|PUT)$/i.test(n.method)&&(i="0"),n.body!=null){const a=cf(n);typeof a=="number"&&(i=String(a))}i&&e.set("Content-Length",i),e.has("User-Agent")||e.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),n.compress&&!e.has("Accept-Encoding")&&e.set("Accept-Encoding","gzip,deflate");let r=n.agent;return typeof r=="function"&&(r=r(t)),!e.has("Connection")&&!r&&e.set("Connection","close"),Object.assign({},t,{method:n.method,headers:g2(e),agent:r})}function Oa(n){Error.call(this,n),this.type="aborted",this.message=n,Error.captureStackTrace(this,this.constructor)}Oa.prototype=Object.create(Error.prototype);Oa.prototype.constructor=Oa;Oa.prototype.name="AbortError";const pf=hn.default.PassThrough,I2=Ds.default.resolve;function di(n,t){if(!di.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Ct.Promise=di.Promise,new di.Promise(function(e,i){const r=new Gi(n,t),a=L2(r),s=(a.protocol==="https:"?af.default:Ll.default).request,o=r.signal;let l=null;const u=function(){let m=new Oa("The user aborted a request.");if(i(m),r.body&&r.body instanceof hn.default.Readable&&r.body.destroy(m),!l||!l.body)return;l.body.emit("error",m)};if(o&&o.aborted){u();return}const c=function(){u(),p()},h=s(a);let d;o&&o.addEventListener("abort",c);function p(){h.abort(),o&&o.removeEventListener("abort",c),clearTimeout(d)}r.timeout&&h.once("socket",function(f){d=setTimeout(function(){i(new Ut(`network timeout at: ${r.url}`,"request-timeout")),p()},r.timeout)}),h.on("error",function(f){i(new Ut(`request to ${r.url} failed, reason: ${f.message}`,"system",f)),p()}),h.on("response",function(f){clearTimeout(d);const m=v2(f.headers);if(di.isRedirect(f.statusCode)){const S=m.get("Location"),L=S===null?null:I2(r.url,S);switch(r.redirect){case"error":i(new Ut(`uri requested responds with a redirect, redirect mode is set to error: ${r.url}`,"no-redirect")),p();return;case"manual":if(L!==null)try{m.set("Location",L)}catch(C){i(C)}break;case"follow":if(L===null)break;if(r.counter>=r.follow){i(new Ut(`maximum redirect reached at: ${r.url}`,"max-redirect")),p();return}const N={headers:new vn(r.headers),follow:r.follow,counter:r.counter+1,agent:r.agent,compress:r.compress,method:r.method,body:r.body,signal:r.signal,timeout:r.timeout,size:r.size};if(f.statusCode!==303&&r.body&&cf(r)===null){i(new Ut("Cannot follow redirect with body being a readable stream","unsupported-redirect")),p();return}(f.statusCode===303||(f.statusCode===301||f.statusCode===302)&&r.method==="POST")&&(N.method="GET",N.body=void 0,N.headers.delete("content-length")),e(di(new Gi(L,N))),p();return}}f.once("end",function(){o&&o.removeEventListener("abort",c)});let g=f.pipe(new pf);const v={url:r.url,status:f.statusCode,statusText:f.statusMessage,headers:m,size:r.size,timeout:r.timeout,counter:r.counter},b=m.get("Content-Encoding");if(!r.compress||r.method==="HEAD"||b===null||f.statusCode===204||f.statusCode===304){l=new Dn(g,v),e(l);return}const w={flush:ci.default.Z_SYNC_FLUSH,finishFlush:ci.default.Z_SYNC_FLUSH};if(b=="gzip"||b=="x-gzip"){g=g.pipe(ci.default.createGunzip(w)),l=new Dn(g,v),e(l);return}if(b=="deflate"||b=="x-deflate"){const S=f.pipe(new pf);S.once("data",function(L){(L[0]&15)===8?g=g.pipe(ci.default.createInflate()):g=g.pipe(ci.default.createInflateRaw()),l=new Dn(g,v),e(l)});return}if(b=="br"&&typeof ci.default.createBrotliDecompress=="function"){g=g.pipe(ci.default.createBrotliDecompress()),l=new Dn(g,v),e(l);return}l=new Dn(g,v),e(l)}),m2(h,r)})}di.isRedirect=function(n){return n===301||n===302||n===303||n===307||n===308};di.Promise=global.Promise;var A2=di});var lr=Le(I=>{"use strict";Object.defineProperty(I,"__esModule",{value:!0});var El=function(n,t){return El=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},El(n,t)};function Zn(n,t){El(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function de(n,t,e,i){return new(e||(e=Promise))(function(r,a){function s(u){try{l(i.next(u))}catch(c){a(c)}}function o(u){try{l(i.throw(u))}catch(c){a(c)}}function l(u){u.done?r(u.value):new e(function(c){c(u.value)}).then(s,o)}l((i=i.apply(n,t||[])).next())})}function pe(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]0;)i=Math.random()*t|0,t--,e=n[t],n[t]=n[i],n[i]=e}function Da(n,t,e){return Math.max(n,Math.min(t,e))}function z2(n){return n%2===0?n:n+1}function P2(n){for(var t=0,e=0;e=e){r();return}setTimeout(s,o)};s()})}function bm(n,t){for(var e=1,i=-1,r=0;r=0)e*=n[r];else if(n[r]===-1){if(i!==-1)throw Error("Shapes can only have 1 implicit size. "+("Found -1 at dim "+i+" and dim "+r));i=r}else if(n[r]<0)throw Error("Shapes can not be < 0. Found "+n[r]+" at dim "+r);if(i===-1){if(t>0&&t!==e)throw Error("Size("+t+") must match the product of shape "+n);return n}if(e===0)throw Error("Cannot infer the missing size in ["+n+"] when there are 0 elements");if(t%e!==0)throw Error("The implicit shape can't be a fractional number. "+("Got "+t+" / "+e));var a=n.slice();return a[i]=t/e,a}function Qe(n,t){var e=t.length;return n=n==null?t.map(function(i,r){return r}):[].concat(n),E(n.every(function(i){return i>=-e&&io)&&n[o]===1&&(e.push(n[o]),i.push(o)),a[s]<=o&&s++}n[o]!==1&&(e.push(n[o]),i.push(o))}return{newShape:e,keptDims:i}}function Bs(n,t){var e=null;if(n==null||n==="float32")e=new Float32Array(t);else if(n==="int32")e=new Int32Array(t);else if(n==="bool")e=new Uint8Array(t);else throw new Error("Unknown data type "+n);return e}function Sm(n,t){var e=null;if(n==null||n==="float32")e=new Float32Array(t);else if(n==="int32")e=new Int32Array(t);else if(n==="bool")e=new Uint8Array(t);else if(n==="string")e=new Array(t);else throw new Error("Unknown data type "+n);return e}function Lm(n,t){for(var e=0;e=0;--i)e[i]=e[i+1]*n[i+1];return e}function j2(n,t){return t==="string"?Ic(n):_s([n],t)}function _s(n,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(n)&&(n=ji(n)),He().getBool("DEBUG")&&Lm(n,t),K2(n,t))return n;if(t==null||t==="float32"||t==="complex64")return new Float32Array(n);if(t==="int32")return new Int32Array(n);if(t==="bool"){for(var e=new Uint8Array(n.length),i=0;i=0,function(){return"Tensor must have a shape comprised of positive integers but got "+("shape ["+n+"].")})})}function X2(n,t){return He().platform.fetch(n,t)}function Ic(n,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",He().platform.encode(n,t)}function xc(n,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",He().platform.decode(n,t)}function J2(n,t,e){if(t===0)return 0;if(t===1)return n[0];for(var i=n[n.length-1],r=0;r0?m:"")+" "}}console.log("%c"+l+" %c"+o+" %c"+u+"D "+h+" %c"+c+" %c"+d+" %c"+s,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},n}();function iA(n,t,e){for(var i={},r={},a=0;a=0;a--)for(var s=n[a],o=s.inputs,h=0;h=0;a--)r(a)}var Om=20,Fa=3,Cc=7;function sA(n,t,e,i){var r=Fr(t),a=aA(n,t,e,r),s=t.length,o=Ms(n,t,e,r,a),l=["Tensor"];return i&&(l.push(" dtype: "+e),l.push(" rank: "+s),l.push(" shape: ["+t+"]"),l.push(" values:")),l.push(o.map(function(u){return" "+u}).join(` +var Es=Object.defineProperty,c2=Object.prototype.hasOwnProperty;var Le=(n,t)=>()=>(t||(t={exports:{}},n(t.exports,t)),t.exports),rf=n=>Es(n,"__esModule",{value:!0}),Ll=(n,t)=>{rf(n);for(var e in t)Es(n,e,{get:t[e],enumerable:!0})},h2=(n,t)=>{if(rf(n),typeof t=="object"||typeof t=="function")for(let e in t)!c2.call(n,e)&&e!=="default"&&Es(n,e,{get:()=>t[e],enumerable:!0});return n},Na=n=>n&&n.__esModule?n:h2(Es({},"default",{value:n,enumerable:!0}),n);var ff=Le(d2=>{Ll(d2,{FetchError:()=>Ut,Headers:()=>gn,Request:()=>Gi,Response:()=>Dn,default:()=>A2});const cn=Na(require("stream")),Il=Na(require("http")),Ds=Na(require("url")),af=Na(require("https")),ci=Na(require("zlib")),p2=cn.default.Readable,$n=Symbol("buffer"),Al=Symbol("type");class xa{constructor(){this[Al]="";const n=arguments[0],t=arguments[1],e=[];let i=0;if(n){const a=n,s=Number(a.length);for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:{},i=e.size;let r=i===void 0?0:i;var a=e.timeout;let s=a===void 0?0:a;n==null?n=null:of(n)?n=Buffer.from(n.toString()):Ca(n)||(Buffer.isBuffer(n)||(Object.prototype.toString.call(n)==="[object ArrayBuffer]"?n=Buffer.from(n):ArrayBuffer.isView(n)?n=Buffer.from(n.buffer,n.byteOffset,n.byteLength):n instanceof cn.default||(n=Buffer.from(String(n))))),this[Xn]={body:n,disturbed:!1,error:null},this.size=r,this.timeout=s,n instanceof cn.default&&n.on("error",function(o){const l=o.name==="AbortError"?o:new Ut(`Invalid response body while trying to fetch ${t.url}: ${o.message}`,"system",o);t[Xn].error=l})}Ct.prototype={get body(){return this[Xn].body},get bodyUsed(){return this[Xn].disturbed},arrayBuffer(){return Er.call(this).then(function(n){return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)})},blob(){let n=this.headers&&this.headers.get("content-type")||"";return Er.call(this).then(function(t){return Object.assign(new xa([],{type:n.toLowerCase()}),{[$n]:t})})},json(){var n=this;return Er.call(this).then(function(t){try{return JSON.parse(t.toString())}catch(e){return Ct.Promise.reject(new Ut(`invalid json response body at ${n.url} reason: ${e.message}`,"invalid-json"))}})},text(){return Er.call(this).then(function(n){return n.toString()})},buffer(){return Er.call(this)},textConverted(){var n=this;return Er.call(this).then(function(t){return f2(t,n.headers)})}};Object.defineProperties(Ct.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Ct.mixIn=function(n){for(const t of Object.getOwnPropertyNames(Ct.prototype))if(!(t in n)){const e=Object.getOwnPropertyDescriptor(Ct.prototype,t);Object.defineProperty(n,t,e)}};function Er(){var n=this;if(this[Xn].disturbed)return Ct.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[Xn].disturbed=!0,this[Xn].error)return Ct.Promise.reject(this[Xn].error);let t=this.body;if(t===null)return Ct.Promise.resolve(Buffer.alloc(0));if(Ca(t)&&(t=t.stream()),Buffer.isBuffer(t))return Ct.Promise.resolve(t);if(!(t instanceof cn.default))return Ct.Promise.resolve(Buffer.alloc(0));let e=[],i=0,r=!1;return new Ct.Promise(function(a,s){let o;n.timeout&&(o=setTimeout(function(){r=!0,s(new Ut(`Response timeout while trying to fetch ${n.url} (over ${n.timeout}ms)`,"body-timeout"))},n.timeout)),t.on("error",function(l){l.name==="AbortError"?(r=!0,s(l)):s(new Ut(`Invalid response body while trying to fetch ${n.url}: ${l.message}`,"system",l))}),t.on("data",function(l){if(r||l===null)return;if(n.size&&i+l.length>n.size){r=!0,s(new Ut(`content size at ${n.url} over limit: ${n.size}`,"max-size"));return}i+=l.length,e.push(l)}),t.on("end",function(){if(r)return;clearTimeout(o);try{a(Buffer.concat(e,i))}catch(l){s(new Ut(`Could not create Buffer from response body for ${n.url}: ${l.message}`,"system",l))}})})}function f2(n,t){if(typeof Tl!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");const e=t.get("content-type");let i="utf-8",r,a;return e&&(r=/charset=([^;]*)/i.exec(e)),a=n.slice(0,1024).toString(),!r&&a&&(r=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[ct]=Object.create(null),n instanceof gn){const t=n.raw(),e=Object.keys(t);for(const i of e)for(const r of t[i])this.append(i,r);return}if(!(n==null))if(typeof n=="object"){const t=n[Symbol.iterator];if(t!=null){if(typeof t!="function")throw new TypeError("Header pairs must be iterable");const e=[];for(const i of n){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");e.push(Array.from(i))}for(const i of e){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(const e of Object.keys(n)){const i=n[e];this.append(e,i)}}else throw new TypeError("Provided initializer must be an object")}get(n){n=`${n}`,Ra(n);const t=Dr(this[ct],n);return t===void 0?null:this[ct][t].join(", ")}forEach(n){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,e=xl(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";const e=Object.keys(n[ct]).sort();return e.map(t==="key"?function(i){return i.toLowerCase()}:t==="value"?function(i){return n[ct][i].join(", ")}:function(i){return[i.toLowerCase(),n[ct][i].join(", ")]})}const Rl=Symbol("internal");function Cl(n,t){const e=Object.create(Ol);return e[Rl]={target:n,kind:t,index:0},e}const Ol=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==Ol)throw new TypeError("Value of `this` is not a HeadersIterator");var n=this[Rl];const t=n.target,e=n.kind,i=n.index,r=xl(t,e),a=r.length;return i>=a?{value:void 0,done:!0}:(this[Rl].index=i+1,{value:r[i],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(Ol,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function g2(n){const t=Object.assign({__proto__:null},n[ct]),e=Dr(n[ct],"Host");return e!==void 0&&(t[e]=t[e][0]),t}function v2(n){const t=new gn;for(const e of Object.keys(n)){if(hf.test(e))continue;if(Array.isArray(n[e]))for(const i of n[e]){if(Nl.test(i))continue;t[ct][e]===void 0?t[ct][e]=[i]:t[ct][e].push(i)}else Nl.test(n[e])||(t[ct][e]=[n[e]])}return t}const hi=Symbol("Response internals"),y2=Il.default.STATUS_CODES;class Dn{constructor(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Ct.call(this,n,t);const e=t.status||200,i=new gn(t.headers);if(n!=null&&!i.has("Content-Type")){const r=uf(n);r&&i.append("Content-Type",r)}this[hi]={url:t.url,status:e,statusText:t.statusText||y2[e],headers:i,counter:t.counter}}get url(){return this[hi].url||""}get status(){return this[hi].status}get ok(){return this[hi].status>=200&&this[hi].status<300}get redirected(){return this[hi].counter>0}get statusText(){return this[hi].statusText}get headers(){return this[hi].headers}clone(){return new Dn(lf(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}}Ct.mixIn(Dn.prototype);Object.defineProperties(Dn.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(Dn.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});const Jn=Symbol("Request internals"),El=Ds.default.parse,b2=Ds.default.format,w2="destroy"in cn.default.Readable.prototype;function ks(n){return typeof n=="object"&&typeof n[Jn]=="object"}function S2(n){const t=n&&typeof n=="object"&&Object.getPrototypeOf(n);return!!(t&&t.constructor.name==="AbortSignal")}class Gi{constructor(n){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},e;ks(n)?e=El(n.url):(n&&n.href?e=El(n.href):e=El(`${n}`),n={});let i=t.method||n.method||"GET";if(i=i.toUpperCase(),(t.body!=null||ks(n)&&n.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let r=t.body!=null?t.body:ks(n)&&n.body!==null?lf(n):null;Ct.call(this,r,{timeout:t.timeout||n.timeout||0,size:t.size||n.size||0});const a=new gn(t.headers||n.headers||{});if(r!=null&&!a.has("Content-Type")){const o=uf(r);o&&a.append("Content-Type",o)}let s=ks(n)?n.signal:null;if("signal"in t&&(s=t.signal),s!=null&&!S2(s))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[Jn]={method:i,redirect:t.redirect||n.redirect||"follow",headers:a,parsedURL:e,signal:s},this.follow=t.follow!==void 0?t.follow:n.follow!==void 0?n.follow:20,this.compress=t.compress!==void 0?t.compress:n.compress!==void 0?n.compress:!0,this.counter=t.counter||n.counter||0,this.agent=t.agent||n.agent}get method(){return this[Jn].method}get url(){return b2(this[Jn].parsedURL)}get headers(){return this[Jn].headers}get redirect(){return this[Jn].redirect}get signal(){return this[Jn].signal}clone(){return new Gi(this)}}Ct.mixIn(Gi.prototype);Object.defineProperty(Gi.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(Gi.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function L2(n){const t=n[Jn].parsedURL,e=new gn(n[Jn].headers);if(e.has("Accept")||e.set("Accept","*/*"),!t.protocol||!t.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(t.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(n.signal&&n.body instanceof cn.default.Readable&&!w2)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let i=null;if(n.body==null&&/^(POST|PUT)$/i.test(n.method)&&(i="0"),n.body!=null){const a=cf(n);typeof a=="number"&&(i=String(a))}i&&e.set("Content-Length",i),e.has("User-Agent")||e.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),n.compress&&!e.has("Accept-Encoding")&&e.set("Accept-Encoding","gzip,deflate");let r=n.agent;return typeof r=="function"&&(r=r(t)),!e.has("Connection")&&!r&&e.set("Connection","close"),Object.assign({},t,{method:n.method,headers:g2(e),agent:r})}function Oa(n){Error.call(this,n),this.type="aborted",this.message=n,Error.captureStackTrace(this,this.constructor)}Oa.prototype=Object.create(Error.prototype);Oa.prototype.constructor=Oa;Oa.prototype.name="AbortError";const pf=cn.default.PassThrough,I2=Ds.default.resolve;function di(n,t){if(!di.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Ct.Promise=di.Promise,new di.Promise(function(e,i){const r=new Gi(n,t),a=L2(r),s=(a.protocol==="https:"?af.default:Il.default).request,o=r.signal;let l=null;const u=function(){let m=new Oa("The user aborted a request.");if(i(m),r.body&&r.body instanceof cn.default.Readable&&r.body.destroy(m),!l||!l.body)return;l.body.emit("error",m)};if(o&&o.aborted){u();return}const c=function(){u(),p()},h=s(a);let d;o&&o.addEventListener("abort",c);function p(){h.abort(),o&&o.removeEventListener("abort",c),clearTimeout(d)}r.timeout&&h.once("socket",function(f){d=setTimeout(function(){i(new Ut(`network timeout at: ${r.url}`,"request-timeout")),p()},r.timeout)}),h.on("error",function(f){i(new Ut(`request to ${r.url} failed, reason: ${f.message}`,"system",f)),p()}),h.on("response",function(f){clearTimeout(d);const m=v2(f.headers);if(di.isRedirect(f.statusCode)){const S=m.get("Location"),L=S===null?null:I2(r.url,S);switch(r.redirect){case"error":i(new Ut(`uri requested responds with a redirect, redirect mode is set to error: ${r.url}`,"no-redirect")),p();return;case"manual":if(L!==null)try{m.set("Location",L)}catch(C){i(C)}break;case"follow":if(L===null)break;if(r.counter>=r.follow){i(new Ut(`maximum redirect reached at: ${r.url}`,"max-redirect")),p();return}const N={headers:new gn(r.headers),follow:r.follow,counter:r.counter+1,agent:r.agent,compress:r.compress,method:r.method,body:r.body,signal:r.signal,timeout:r.timeout,size:r.size};if(f.statusCode!==303&&r.body&&cf(r)===null){i(new Ut("Cannot follow redirect with body being a readable stream","unsupported-redirect")),p();return}(f.statusCode===303||(f.statusCode===301||f.statusCode===302)&&r.method==="POST")&&(N.method="GET",N.body=void 0,N.headers.delete("content-length")),e(di(new Gi(L,N))),p();return}}f.once("end",function(){o&&o.removeEventListener("abort",c)});let g=f.pipe(new pf);const v={url:r.url,status:f.statusCode,statusText:f.statusMessage,headers:m,size:r.size,timeout:r.timeout,counter:r.counter},b=m.get("Content-Encoding");if(!r.compress||r.method==="HEAD"||b===null||f.statusCode===204||f.statusCode===304){l=new Dn(g,v),e(l);return}const w={flush:ci.default.Z_SYNC_FLUSH,finishFlush:ci.default.Z_SYNC_FLUSH};if(b=="gzip"||b=="x-gzip"){g=g.pipe(ci.default.createGunzip(w)),l=new Dn(g,v),e(l);return}if(b=="deflate"||b=="x-deflate"){const S=f.pipe(new pf);S.once("data",function(L){(L[0]&15)===8?g=g.pipe(ci.default.createInflate()):g=g.pipe(ci.default.createInflateRaw()),l=new Dn(g,v),e(l)});return}if(b=="br"&&typeof ci.default.createBrotliDecompress=="function"){g=g.pipe(ci.default.createBrotliDecompress()),l=new Dn(g,v),e(l);return}l=new Dn(g,v),e(l)}),m2(h,r)})}di.isRedirect=function(n){return n===301||n===302||n===303||n===307||n===308};di.Promise=global.Promise;var A2=di});var lr=Le(I=>{"use strict";Object.defineProperty(I,"__esModule",{value:!0});var Dl=function(n,t){return Dl=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},Dl(n,t)};function Zn(n,t){Dl(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function de(n,t,e,i){return new(e||(e=Promise))(function(r,a){function s(u){try{l(i.next(u))}catch(c){a(c)}}function o(u){try{l(i.throw(u))}catch(c){a(c)}}function l(u){u.done?r(u.value):new e(function(c){c(u.value)}).then(s,o)}l((i=i.apply(n,t||[])).next())})}function pe(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]0;)i=Math.random()*t|0,t--,e=n[t],n[t]=n[i],n[i]=e}function Da(n,t,e){return Math.max(n,Math.min(t,e))}function z2(n){return n%2===0?n:n+1}function P2(n){for(var t=0,e=0;e=e){r();return}setTimeout(s,o)};s()})}function bm(n,t){for(var e=1,i=-1,r=0;r=0)e*=n[r];else if(n[r]===-1){if(i!==-1)throw Error("Shapes can only have 1 implicit size. "+("Found -1 at dim "+i+" and dim "+r));i=r}else if(n[r]<0)throw Error("Shapes can not be < 0. Found "+n[r]+" at dim "+r);if(i===-1){if(t>0&&t!==e)throw Error("Size("+t+") must match the product of shape "+n);return n}if(e===0)throw Error("Cannot infer the missing size in ["+n+"] when there are 0 elements");if(t%e!==0)throw Error("The implicit shape can't be a fractional number. "+("Got "+t+" / "+e));var a=n.slice();return a[i]=t/e,a}function Qe(n,t){var e=t.length;return n=n==null?t.map(function(i,r){return r}):[].concat(n),E(n.every(function(i){return i>=-e&&io)&&n[o]===1&&(e.push(n[o]),i.push(o)),a[s]<=o&&s++}n[o]!==1&&(e.push(n[o]),i.push(o))}return{newShape:e,keptDims:i}}function Bs(n,t){var e=null;if(n==null||n==="float32")e=new Float32Array(t);else if(n==="int32")e=new Int32Array(t);else if(n==="bool")e=new Uint8Array(t);else throw new Error("Unknown data type "+n);return e}function Sm(n,t){var e=null;if(n==null||n==="float32")e=new Float32Array(t);else if(n==="int32")e=new Int32Array(t);else if(n==="bool")e=new Uint8Array(t);else if(n==="string")e=new Array(t);else throw new Error("Unknown data type "+n);return e}function Lm(n,t){for(var e=0;e=0;--i)e[i]=e[i+1]*n[i+1];return e}function j2(n,t){return t==="string"?Ac(n):_s([n],t)}function _s(n,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(n)&&(n=ji(n)),He().getBool("DEBUG")&&Lm(n,t),K2(n,t))return n;if(t==null||t==="float32"||t==="complex64")return new Float32Array(n);if(t==="int32")return new Int32Array(n);if(t==="bool"){for(var e=new Uint8Array(n.length),i=0;i=0,function(){return"Tensor must have a shape comprised of positive integers but got "+("shape ["+n+"].")})})}function X2(n,t){return He().platform.fetch(n,t)}function Ac(n,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",He().platform.encode(n,t)}function Cc(n,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",He().platform.decode(n,t)}function J2(n,t,e){if(t===0)return 0;if(t===1)return n[0];for(var i=n[n.length-1],r=0;r0?m:"")+" "}}console.log("%c"+l+" %c"+o+" %c"+u+"D "+h+" %c"+c+" %c"+d+" %c"+s,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},n}();function iA(n,t,e){for(var i={},r={},a=0;a=0;a--)for(var s=n[a],o=s.inputs,h=0;h=0;a--)r(a)}var Om=20,Fa=3,Rc=7;function sA(n,t,e,i){var r=Fr(t),a=aA(n,t,e,r),s=t.length,o=Ms(n,t,e,r,a),l=["Tensor"];return i&&(l.push(" dtype: "+e),l.push(" rank: "+s),l.push(" shape: ["+t+"]"),l.push(" values:")),l.push(o.map(function(u){return" "+u}).join(` `)),l.join(` -`)}function aA(n,t,e,i){var r=ot(t),a=i[i.length-1],s=new Array(a).fill(0),o=t.length,l=e==="complex64"?Ua(n):n;if(o>1)for(var u=0;uOm){var c=Fa*s,h=Array.from(n.slice(0,c)),d=Array.from(n.slice((o-Fa)*s,o*s));return e==="complex64"&&(h=Ua(h),d=Ua(d)),["["+h.map(function(C,R){return Wa(C,r[R],e)}).join(", ")+", ..., "+d.map(function(C,R){return Wa(C,r[o-Fa+R],e)}).join(", ")+"]"]}var p=e==="complex64"?Ua(n):Array.from(n);return["["+p.map(function(C,R){return Wa(C,r[R],e)}).join(", ")+"]"]}var f=t.slice(1),m=i.slice(1),g=i[0]*s,v=[];if(o>Om){for(var b=0;b1)for(var u=0;uOm){var c=Fa*s,h=Array.from(n.slice(0,c)),d=Array.from(n.slice((o-Fa)*s,o*s));return e==="complex64"&&(h=Ua(h),d=Ua(d)),["["+h.map(function(C,R){return Wa(C,r[R],e)}).join(", ")+", ..., "+d.map(function(C,R){return Wa(C,r[o-Fa+R],e)}).join(", ")+"]"]}var p=e==="complex64"?Ua(n):Array.from(n);return["["+p.map(function(C,R){return Wa(C,r[R],e)}).join(", ")+"]"]}var f=t.slice(1),m=i.slice(1),g=i[0]*s,v=[];if(o>Om){for(var b=0;b=this.shape[i]){var o="Requested out of range element at "+t+". "+(" Buffer shape="+this.shape);throw new Error(o)}i++}for(var l=t[t.length-1],u=0;u0)throw new Error("Backend '"+this.backendName+"' has an internal memory leak "+("("+o+" data ids) after running '"+t+"'"))},n.prototype.runKernelFunc=function(t,e,i,r,a,s,o){var l=this,u,c=[],h=this.isTapeOn();r==null&&(r=this.state.activeScope!=null?this.state.activeScope.name:"");var d=this.state.numBytes,p=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var f,m=Sc(r,this.backendName),g;if(m!=null)f=function(){var w=l.backend.numDataIds();g=m.kernelFunc({inputs:e,attrs:a,backend:l.backend});var S=Array.isArray(g)?g:[g];l.shouldCheckForMemLeaks()&&l.checkKernelForMemLeak(r,w,S);var L=S.map(function(R){var D=R.dataId,k=R.shape,W=R.dtype;return l.makeTensorFromDataId(D,k,W)});if(h){var N=l.getTensorsForGradient(r,e,L);if(N==null){o==null&&(o=[]);var C=L.filter(function(R,D){return o[D]});N=(s||[]).slice().concat(C)}c=l.saveTensorsForBackwardMode(N)}return L};else{var v=function(w){if(!h)return;c=w.map(function(S){return l.keep(l.clone(S))})};f=function(){var w=l.backend.numDataIds();g=l.tidy(function(){return t(l.backend,v)});var S=Array.isArray(g)?g:[g];return l.shouldCheckForMemLeaks()&&l.checkKernelForMemLeak(r,w,S),S}}var b;return this.scopedRun(function(){return l.state.kernelDepth++},function(){return l.state.kernelDepth--},function(){!l.ENV.getBool("DEBUG")&&!l.state.profiling?u=f():(b=l.profiler.profileKernel(r,e,function(){return f()}),l.ENV.getBool("DEBUG")&&l.profiler.logKernelProfile(b),u=b.outputs)}),h&&this.addTapeNode(r,e,u,i,c,a),this.state.profiling&&this.state.activeProfile.kernels.push({name:r,bytesAdded:this.state.numBytes-d,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-p,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map(function(w){return e[w]!=null?e[w].shape:null}),outputShapes:u.map(function(w){return w.shape}),kernelTimeMs:b.timeMs,extraInfo:b.extraInfo}),Array.isArray(g)?u:u[0]},n.prototype.saveTensorsForBackwardMode=function(t){var e=this,i=t.map(function(r){return e.keep(e.clone(r))});return i},n.prototype.getTensorsForGradient=function(t,e,i){var r=Lc(t);if(r!=null){var a=r.inputsToSave||[],s=r.outputsToSave||[],o=void 0;r.saveAllInputs?(E(Array.isArray(e),function(){return"saveAllInputs is true, expected inputs to be an array."}),o=Object.keys(e).map(function(u){return e[u]})):o=a.map(function(u){return e[u]});var l=i.filter(function(u,c){return s[c]});return o.concat(l)}return null},n.prototype.makeTensor=function(t,e,i,r){if(t==null)throw new Error("Values passed to engine.makeTensor() are null");i=i||"float32",r=r||this.backend;var a=t;i==="string"&&pi(t[0])&&(a=t.map(function(c){return Ic(c)}));var s=r.write(a,e,i),o=new Y(e,i,s,this.nextTensorId());if(this.incRef(o,r),i==="string"){var l=this.state.tensorInfo.get(s),u=Nm(a);this.state.numBytes+=u-l.bytes,l.bytes=u}return o},n.prototype.makeTensorFromDataId=function(t,e,i,r){i=i||"float32";var a=new Y(e,i,t,this.nextTensorId());return this.incRef(a,r),a},n.prototype.makeVariable=function(t,e,i,r){e===void 0&&(e=!0),i=i||this.nextVariableId().toString(),r!=null&&r!==t.dtype&&(t=t.cast(r));var a=new Ba(t,e,i,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error("Variable with name "+a.name+" was already registered");return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a},n.prototype.incRef=function(t,e){var i=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,t.dtype==="string"&&this.state.numStringTensors++,i===0){this.state.numDataBuffers++;var r=0;t.dtype!=="complex64"&&t.dtype!=="string"&&(r=t.size*Tm(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.state.numBytes+=r}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof Ba||this.track(t)},n.prototype.disposeTensor=function(t){if(!this.state.tensorInfo.has(t.dataId))return;this.state.numTensors--,t.dtype==="string"&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId),i=e.refCount;i<=1?(t.dtype!=="complex64"&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--},n.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},n.prototype.disposeVariable=function(t){this.disposeTensor(t),this.state.registeredVariables[t.name]!=null&&delete this.state.registeredVariables[t.name]},n.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,t.reasons==null&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},n.prototype.profile=function(t){return de(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u;return pe(this,function(c){switch(c.label){case 0:return this.state.profiling=!0,e=this.state.numBytes,i=this.state.numTensors,this.state.activeProfile.kernels=[],r=this.state.activeProfile,[4,t()];case 1:r.result=c.sent(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map(function(h){return h.totalBytesSnapshot})),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-i,a=0,s=this.state.activeProfile.kernels,c.label=2;case 2:return a0&&this.state.kernelDepth===0},n.prototype.addTapeNode=function(t,e,i,r,a,s){var o=this,l={id:this.state.nextTapeNodeId++,kernelName:t,inputs:e,outputs:i,saved:a},u=Lc(t);u!=null&&(r=u.gradFunc),r!=null&&(l.gradient=function(c){return c=c.map(function(h,d){if(h==null){var p=i[d],f=Ur(p.size,p.dtype);return o.makeTensor(f,p.shape,p.dtype)}return h}),r(c.length>1?c:c[0],a,s)}),this.state.activeTape.push(l)},n.prototype.keep=function(t){return t.kept=!0,t},n.prototype.startTape=function(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++},n.prototype.endTape=function(){this.state.gradientDepth--},n.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},n.prototype.endScope=function(t){for(var e=this,i=kc(t),r=new Set(i.map(function(l){return l.id})),a=0;a0,function(){return"gradients() received an empty list of xs."}),i!=null&&i.dtype!=="float32")throw new Error("dy must have 'float32' dtype, but has '"+i.dtype+"'");var s=this.scopedRun(function(){return a.startTape()},function(){return a.endTape()},function(){return a.tidy("forward",t)});E(s instanceof Y,function(){return"The result y returned by f() must be a tensor."});var o=iA(this.state.activeTape,e,s);if(!r&&o.length===0&&e.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",function(){var l={};l[s.id]=i??fA(s.shape),rA(l,o,function(c){return a.tidy(c)},mA);var u=e.map(function(c){return l[c.id]});return a.state.gradientDepth===0&&(a.state.activeTape.forEach(function(c){for(var h=0,d=c.saved;h0,function(){return"Element arr["+e.join("][")+"] should be a primitive, "+("but is an array of "+n.length+" elements")}),E(n.length===t[0],function(){return"Element arr["+e.join("][")+"] should have "+t[0]+" "+("elements, but has "+n.length+" elements")});for(var i=t.slice(1),r=0;r=0&&(r=i),zm(i,r,t,e),n==null||!Dt(n)&&!Array.isArray(n)&&typeof n!="number"&&typeof n!="boolean"&&typeof n!="string"){var a=n==null?"null":n.constructor.name;throw new Error("Argument '"+t+"' passed to '"+e+"' must be a "+("Tensor or TensorLike, but got '"+a+"'"))}var s=Fn(n,r);!Dt(n)&&!Array.isArray(n)&&(n=[n]);var o=!0,l=r!=="string"?_s(n,r):ji(n,[],o);return z.makeTensor(l,s,r)}function za(n,t,e,i){if(i===void 0&&(i="numeric"),!Array.isArray(n))throw new Error("Argument "+t+" passed to "+e+" must be a `Tensor[]` or `TensorLike[]`");var r=n;return r.map(function(a,s){return O(a,t+"["+s+"]",e)},i)}var Pm="__op";function U(n){var t=Object.keys(n);if(t.length!==1)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+(t.length+" keys."));var e=t[0],i=n[e];e.endsWith("_")&&(e=e.substring(0,e.length-1)),e=e+Pm;var r=function(){for(var a=[],s=0;s>10]+(o&1023)]+t[o>>10];a[s]=l}return new Float32Array(r)}}var nn=function(){function n(){this.saveRouters=[],this.loadRouters=[]}return n.getInstance=function(){return n.instance==null&&(n.instance=new n),n.instance},n.registerSaveRouter=function(t){n.getInstance().saveRouters.push(t)},n.registerLoadRouter=function(t){n.getInstance().loadRouters.push(t)},n.getSaveHandlers=function(t){return n.getHandlers(t,"save")},n.getLoadHandlers=function(t,e){return n.getHandlers(t,"load",e)},n.getHandlers=function(t,e,i){var r=[],a=e==="load"?n.getInstance().loadRouters:n.getInstance().saveRouters;return a.forEach(function(s){var o=s(t,i);o!==null&&r.push(o)}),r},n}(),RA=function(n){return nn.registerSaveRouter(n)},OA=function(n){return nn.registerLoadRouter(n)},EA=function(n){return nn.getSaveHandlers(n)},DA=function(n,t){return nn.getLoadHandlers(n,t)};var Bc="tensorflowjs",zc=1,Ki="models_store",yi="model_info_store";function Vm(){if(!He().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var n=typeof window=="undefined"?self:window,t=n.indexedDB||n.mozIndexedDB||n.webkitIndexedDB||n.msIndexedDB||n.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function Pc(n){var t=n.result;t.createObjectStore(Ki,{keyPath:"modelPath"}),t.createObjectStore(yi,{keyPath:"modelPath"})}var zr=function(){function n(t){if(this.indexedDB=Vm(),t==null||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t}return n.prototype.save=function(t){return de(this,void 0,void 0,function(){return pe(this,function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,t)]})})},n.prototype.load=function(){return de(this,void 0,void 0,function(){return pe(this,function(t){return[2,this.databaseAction(this.modelPath)]})})},n.prototype.databaseAction=function(t,e){var i=this;return new Promise(function(r,a){var s=i.indexedDB.open(Bc,zc);s.onupgradeneeded=function(){return Pc(s)},s.onsuccess=function(){var o=s.result;if(e==null){var l=o.transaction(Ki,"readonly"),u=l.objectStore(Ki),c=u.get(i.modelPath);c.onsuccess=function(){if(c.result==null)return o.close(),a(new Error("Cannot find model with path '"+i.modelPath+"' in IndexedDB."));r(c.result.modelArtifacts)},c.onerror=function(g){return o.close(),a(c.error)},l.oncomplete=function(){return o.close()}}else{var h=Pa(e),d=o.transaction(yi,"readwrite"),p=d.objectStore(yi),f=p.put({modelPath:i.modelPath,modelArtifactsInfo:h}),m;f.onsuccess=function(){m=o.transaction(Ki,"readwrite");var g=m.objectStore(Ki),v=g.put({modelPath:i.modelPath,modelArtifacts:e,modelArtifactsInfo:h});v.onsuccess=function(){return r({modelArtifactsInfo:h})},v.onerror=function(b){p=d.objectStore(yi);var w=p.delete(i.modelPath);w.onsuccess=function(){return o.close(),a(v.error)},w.onerror=function(S){return o.close(),a(v.error)}}},f.onerror=function(g){return o.close(),a(f.error)},d.oncomplete=function(){m==null?o.close():m.oncomplete=function(){return o.close()}}}},s.onerror=function(o){return a(s.error)}})},n.URL_SCHEME="indexeddb://",n}(),qm=function(n){return He().getBool("IS_BROWSER")&&(!Array.isArray(n)&&n.startsWith(zr.URL_SCHEME))?kA(n.slice(zr.URL_SCHEME.length)):null};nn.registerSaveRouter(qm);nn.registerLoadRouter(qm);function kA(n){return new zr(n)}function FA(n){return n.startsWith(zr.URL_SCHEME)?n.slice(zr.URL_SCHEME.length):n}var WA=function(){function n(){this.indexedDB=Vm()}return n.prototype.listModels=function(){return de(this,void 0,void 0,function(){var t=this;return pe(this,function(e){return[2,new Promise(function(i,r){var a=t.indexedDB.open(Bc,zc);a.onupgradeneeded=function(){return Pc(a)},a.onsuccess=function(){var s=a.result,o=s.transaction(yi,"readonly"),l=o.objectStore(yi),u=l.getAll();u.onsuccess=function(){for(var c={},h=0,d=u.result;h0,function(){return"scheme must not be an empty string."});var i=n.getInstance();E(i.managers[t]==null,function(){return"A model store manager is already registered for scheme '"+t+"'."}),i.managers[t]=e},n.getManager=function(t){var e=this.getInstance().managers[t];if(e==null)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},n.getSchemes=function(){return Object.keys(this.getInstance().managers)},n}();function Gs(n){if(n.indexOf(Mr)===-1)throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+(""+bi.getSchemes().join(",")));return{scheme:n.split(Mr)[0],path:n.split(Mr)[1]}}function Km(n,t,e){return e===void 0&&(e=!1),de(this,void 0,void 0,function(){var i,r,a,s,o,l,u,c,h;return pe(this,function(d){switch(d.label){case 0:return E(n!==t,function(){return"Old path and new path are the same: '"+n+"'"}),i=nn.getLoadHandlers(n),E(i.length>0,function(){return"Copying failed because no load handler is found for source URL "+n+"."}),E(i.length<2,function(){return"Copying failed because more than one ("+i.length+") "+("load handlers for source URL "+n+".")}),r=i[0],a=nn.getSaveHandlers(t),E(a.length>0,function(){return"Copying failed because no save handler is found for destination "+("URL "+t+".")}),E(a.length<2,function(){return"Copying failed because more than one ("+i.length+") "+("save handlers for destination URL "+t+".")}),s=a[0],o=Gs(n).scheme,l=Gs(n).path,u=o===Gs(n).scheme,[4,r.load()];case 1:return c=d.sent(),e&&u?[4,bi.getManager(o).removeModel(l)]:[3,3];case 2:d.sent(),d.label=3;case 3:return[4,s.save(c)];case 4:return h=d.sent(),e&&!u?[4,bi.getManager(o).removeModel(l)]:[3,6];case 5:d.sent(),d.label=6;case 6:return[2,h.modelArtifactsInfo]}})})}function qA(){return de(this,void 0,void 0,function(){var n,t,e,i,r,a,s,o;return pe(this,function(l){switch(l.label){case 0:n=bi.getSchemes(),t={},e=0,i=n,l.label=1;case 1:return e0,function(){return"promises must be a none empty array"})}function o(l,u){E(l>=0&&l<=1,function(){return"Progress fraction must be in range [0, 1], but "+("got startFraction "+l)}),E(u>=0&&u<=1,function(){return"Progress fraction must be in range [0, 1], but "+("got endFraction "+u)}),E(u>=l,function(){return"startFraction must be no more than endFraction, but "+("got startFraction "+l+" and endFraction ")+(""+u)})}return Promise.all(n.map(a))}function Zm(n,t){return de(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u,c,h,d;return pe(this,function(p){switch(p.label){case 0:return t==null&&(t={}),e=t.fetchFunc==null?He().platform.fetch:t.fetchFunc,i=n.map(function(f){return e(f,t.requestInit,{isBinary:!0})}),r=0,a=.5,t.onProgress==null?[4,Promise.all(i)]:[3,2];case 1:return o=p.sent(),[3,4];case 2:return[4,Jm(i,t.onProgress,r,a)];case 3:o=p.sent(),p.label=4;case 4:return s=o,l=s.map(function(f){return f.arrayBuffer()}),u=.5,c=1,t.onProgress==null?[4,Promise.all(l)]:[3,6];case 5:return d=p.sent(),[3,8];case 6:return[4,Jm(l,t.onProgress,u,c)];case 7:d=p.sent(),p.label=8;case 8:return h=d,[2,h]}})})}function oT(n,t,e,i){return t===void 0&&(t=""),de(this,void 0,void 0,function(){var r,a;return pe(this,function(s){return r=function(o){return Zm(o,{requestInit:i})},a=Qm(r),[2,a(n,t,e)]})})}function Qm(n){var t=this;return function(e,i,r){return i===void 0&&(i=""),de(t,void 0,void 0,function(){var a,s,o,l,u,c,h,d,p,f;return pe(this,function(m){switch(m.label){case 0:if(a=e.map(function(){return!1}),s={},o=r!=null?r.map(function(){return!1}):[],l=[],e.forEach(function(g,v){var b=0;g.weights.forEach(function(w){var S="quantization"in w?w.quantization.dtype:w.dtype,L=Fc[S]*ot(w.shape),N=function(){a[v]=!0,s[v]==null&&(s[v]=[]),s[v].push({manifestEntry:w,groupOffset:b,sizeBytes:L})};r!=null?r.forEach(function(C,R){C===w.name&&(N(),o[R]=!0)}):N(),l.push(w.name),b+=L})}),!o.every(function(g){return g}))throw u=r.filter(function(g,v){return!o[v]}),new Error("Could not find weights in manifest with names: "+(u.join(", ")+`. -`)+"Manifest JSON has weights with names: "+(l.join(", ")+"."));return c=a.reduce(function(g,v,b){return v&&g.push(b),g},[]),h=[],c.forEach(function(g){e[g].paths.forEach(function(v){var b=i+(i.endsWith("/")?"":"/")+v;h.push(b)})}),[4,n(h)];case 1:return d=m.sent(),p={},f=0,c.forEach(function(g){for(var v=e[g].paths.length,b=0,w=0;w0,function(){return"URL path for http must not be null, undefined or empty."}),Array.isArray(t)&&E(t.length===2,function(){return"URL paths for http must have a length of 2, "+("(actual length is "+t.length+").")}),this.path=t,e.requestInit!=null&&e.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{}}return n.prototype.save=function(t){return de(this,void 0,void 0,function(){var e,i,r,a;return pe(this,function(s){switch(s.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit),e.body=new FormData,i=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:i},e.body.append("model.json",new Blob([JSON.stringify(r)],{type:uT}),"model.json"),t.weightData!=null&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:lT}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if(a=s.sent(),a.ok)return[2,{modelArtifactsInfo:Pa(t),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+(a.status+"."))}})})},n.prototype.load=function(){return de(this,void 0,void 0,function(){var t,e,i,r,a,s,o,l,u,c,h,d,p,f,m;return pe(this,function(g){switch(g.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(t=g.sent(),!t.ok)throw new Error("Request to "+this.path+" failed with status code "+(t.status+". Please verify this URL points to ")+"the model JSON of the model to load.");g.label=2;case 2:return g.trys.push([2,4,,5]),[4,t.json()];case 3:return e=g.sent(),[3,5];case 4:throw i=g.sent(),r="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?r+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":r+=" Please make sure the server is serving valid JSON for this request.",new Error(r);case 5:if(a=e.modelTopology,s=e.weightsManifest,o=e.generatedBy,l=e.convertedBy,u=e.format,c=e.userDefinedMetadata,a==null&&s==null)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return s!=null?[4,this.loadWeights(s)]:[3,7];case 6:p=g.sent(),h=p[0],d=p[1],g.label=7;case 7:return f={modelTopology:a,weightSpecs:h,weightData:d,userDefinedMetadata:c,generatedBy:o,convertedBy:l,format:u},m=e.modelInitializer,m&&(f.modelInitializer=m),[2,f]}})})},n.prototype.loadWeights=function(t){return de(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u,c,h,d,p,f,m,g,v,b,w,S,L,N;return pe(this,function(C){switch(C.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,i=cT(e),r=i[0],a=i[1],s=this.weightPathPrefix||r,o=[],l=0,u=t;lt?n.substring(e):"";return[i+"/",r]}function Hc(n){return n.match(eg.URL_SCHEME_REGEX)!=null}var tg=function(n,t){if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;var e=!0;return Array.isArray(n)?e=n.every(function(i){return Hc(i)}):e=Hc(n),e?Vc(n,t):null};nn.registerSaveRouter(tg);nn.registerLoadRouter(tg);function Vc(n,t){return new eg(n,t)}function hT(n,t){return Vc(n,t)}var qc=function(){function n(t){this.modelArtifacts=t}return n.prototype.load=function(){return de(this,void 0,void 0,function(){return pe(this,function(t){return[2,this.modelArtifacts]})})},n}(),dT=function(){function n(t){this.saveHandler=t}return n.prototype.save=function(t){return de(this,void 0,void 0,function(){return pe(this,function(e){return[2,this.saveHandler(t)]})})},n}();function pT(n,t,e,i){if(arguments.length===1){var r=n.modelTopology!=null||n.weightSpecs!=null;return r?new qc(n):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new qc({modelTopology:n}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new qc({modelTopology:n,weightSpecs:t,weightData:e,trainingConfig:i})}function fT(n){return new dT(n)}var mT={__proto__:null,browserFiles:sT,browserHTTPRequest:hT,concatenateArrayBuffers:Uc,decodeWeights:_m,encodeWeights:LA,fromMemory:pT,getLoadHandlers:DA,getModelArtifactsInfoForJSON:Pa,getSaveHandlers:EA,http:Vc,isHTTPScheme:Hc,loadWeights:oT,registerLoadRouter:OA,registerSaveRouter:RA,weightsLoaderFactory:Qm,withSaveHandler:fT,copyModel:YA,listModels:qA,moveModel:jA,removeModel:GA};function gT(n,t){var e=O(n,"x","reshape",null),i={x:e},r={shape:t},a=function(s,o){return t=bm(t,e.size),E(e.size===ot(t),function(){return"new shape and old shape must have the same number of elements."}),o([e]),s.reshape(e,t)};return z.runKernelFunc(a,i,null,_u,r)}var V=U({reshape_:gT});function vT(n,t,e,i){var r;e===void 0&&(e=!1),i===void 0&&(i=!1);var a=O(n,"a","matMul"),s=O(t,"b","matMul");r=at(a,s),a=r[0],s=r[1],E(a.rank>=2&&s.rank>=2&&a.rank===s.rank,function(){return"Error in matMul: inputs must have the same rank of at least 2, "+("got ranks "+a.rank+" and "+s.rank+".")});var o=e?a.shape[a.rank-2]:a.shape[a.rank-1],l=i?s.shape[s.rank-1]:s.shape[s.rank-2],u=e?a.shape[a.rank-1]:a.shape[a.rank-2],c=i?s.shape[s.rank-2]:s.shape[s.rank-1],h=a.shape.slice(0,-2),d=s.shape.slice(0,-2),p=ot(h),f=ot(d);E(dn(h,d),function(){return"Error in matMul: outer dimensions ("+h+") and ("+(d+") of Tensors with shapes "+a.shape+" and ")+(s.shape+" must match.")}),E(o===l,function(){return"Error in matMul: inner shapes ("+o+") and ("+(l+") of Tensors with shapes "+a.shape+" and ")+(s.shape+" and transposeA="+e)+(" and transposeB="+i+" must match.")});var m=a.shape.slice(0,-2).concat([u,c]),g=e?V(a,[p,o,u]):V(a,[p,u,o]),v=i?V(s,[f,c,l]):V(s,[f,l,c]),b=function(N,C){return C([g,v]),N.batchMatMul(g,v,e,i)},w={a:g,b:v},S={transposeA:e,transposeB:i},L=z.runKernelFunc(b,w,null,Yl,S);return V(L,m)}var We=U({matMul_:vT});function yT(n,t,e,i){if(e===void 0&&(e=1),i===void 0&&(i=0),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);var r=O(n,"indices","oneHot","int32"),a=r.shape.concat([t]),s=function(u,c){return c([r]),V(u.oneHot(V(r,[r.size]),t,e,i),a)},o={indices:r},l={depth:t,onValue:e,offValue:i};return z.runKernelFunc(s,o,null,Fu,l)}var Ys=U({oneHot_:yT});function bT(n,t){var e=O(n,"x","transpose");if(t==null&&(t=e.shape.map(function(a,s){return s}).reverse()),E(e.rank===t.length,function(){return"Error in transpose: rank of input "+e.rank+" "+("must match length of perm "+t+".")}),t.forEach(function(a){E(a>=0&&a0&&Number.isInteger(e),function(){return"If provided, numClasses must be a positive integer, "+("but got "+e)}),E(i.rank===1,function(){return"Expected the rank of labels to be 1, but got "+i.rank}),E(r.rank===1,function(){return"Expected the rank of predictions to be 1, "+("but got "+r.rank)}),E(i.shape[0]===r.shape[0],function(){return"Mismatch in the number of examples: "+(i.shape[0]+" vs. "+r.shape[0]+". ")+"Labels and predictions should have the same number of elements."}),E(e>0&&Number.isInteger(e),function(){return"numClasses is required to be a positive integer, but got "+(""+e)});var a=Ys(ue(i,"int32"),e),s=Ys(ue(r,"int32"),e),o=ut(a);return ue(We(o,s),"int32")}var ST=U({confusionMatrix_:wT});var LT={__proto__:null,confusionMatrix:ST};function ng(n,t,e){if(Yi(n),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");var i=Fn(n,e);if(i.length!==3&&i.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return gi(n,t,i,e)}var Hr;function IT(n,t){if(t===void 0&&(t=3),t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(n==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var e=!1,i=!1,r=!1,a=!1,s=!1;if(n.data instanceof Uint8Array)e=!0;else if(typeof ImageData!="undefined"&&n instanceof ImageData)i=!0;else if(typeof HTMLVideoElement!="undefined"&&n instanceof HTMLVideoElement)r=!0;else if(typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement)a=!0;else if(n.getContext!=null)s=!0;else throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, "+("but was "+n.constructor.name));if(r){var o=2;if(r&&n.readyState element.")}var l=Sc(gc,z.backendName);if(l!=null){var u={pixels:n},c={numChannels:t};return z.runKernel(gc,u,c)}var h=r?[n.videoWidth,n.videoHeight]:[n.width,n.height],d=h[0],p=h[1],f;s?f=n.getContext("2d").getImageData(0,0,d,p).data:i||e?f=n.data:(a||r)&&(Hr==null&&(Hr=document.createElement("canvas").getContext("2d")),Hr.canvas.width=d,Hr.canvas.height=p,Hr.drawImage(n,0,0,d,p),f=Hr.getImageData(0,0,d,p).data);var m;if(t===4)m=new Int32Array(f);else{var g=d*p;m=new Int32Array(g*t);for(var v=0;v4||o===2)throw new Error("toPixels only supports depth of size "+("1, 3 or 4 but got "+o));if(e.dtype!=="float32"&&e.dtype!=="int32")throw new Error("Unsupported type for toPixels: "+e.dtype+". Please use float32 or int32 tensors.");return[4,e.data()];case 1:for(l=b.sent(),u=e.dtype==="float32"?255:1,c=new Uint8ClampedArray(s*a*4),h=0;h1)throw new Error("Tensor values for a float32 Tensor must be in the "+("range [0 - 1] but encountered "+f+"."))}else if(e.dtype==="int32"&&(f<0||f>255))throw new Error("Tensor values for a int32 Tensor must be in the "+("range [0 - 255] but encountered "+f+"."));o===1?(d[0]=f*u,d[1]=f*u,d[2]=f*u):d[p]=f*u}m=h*4,c[m+0]=Math.round(d[0]),c[m+1]=Math.round(d[1]),c[m+2]=Math.round(d[2]),c[m+3]=Math.round(d[3])}return t!=null&&(t.width=s,t.height=a,g=t.getContext("2d"),v=new ImageData(c,s,a),g.putImageData(v,0,0)),e!==n&&e.dispose(),[2,c]}})})}var TT=U({fromPixels_:IT}),NT={__proto__:null,toPixels:AT,fromPixels:TT};function ig(n,t){if(n.rank<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher,"+(" but the rank was "+n.rank+"."));if(t.rank<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher,"+(" but the rank was "+t.rank+"."));if(t.dtype!=="int32")throw new Error("tf.gatherND() expects the indices to be int32 type,"+(" but the dtype was "+t.dtype+"."));if(t.shape[t.rank-1]>n.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+(t.shape[t.rank-1]+" vs. "+n.rank));if(n.size===0)throw new Error("Requested more than 0 entries, but input is empty."+(" Input shape: "+n.shape+"."));for(var e=t.shape,i=e[e.length-1],r=1,a=0;a1?t.shape[t.rank-1]:1,r=t.rank>1?t.rank-1:1,a="Must have updates.shape = indices.shape[:batchDim] + "+("shape[sliceDim:], got updates.shape: "+e.shape)+(", indices.shape: "+t.shape+", shape: "+n)+(", sliceDim: "+i+", and batchDim: "+r+".");if(e.rank1?t.shape[i-1]:1,a=e.length,s=1,o=r;o0;)n&1&&t.push(e),n/=2,e++;return t}function sg(n,t,e){for(var i=[],r=0;r0){var p=t[0],f=e+1;c=cg(s,p,f,i,n),h=hg(o,p,f,r,n),d=og(a,p,f,n)}else for(var m=0;m-1)a[o]=0;else{var l=lg(t,e,o),u=i[l];n&1<-1)a[o]=Number.MAX_SAFE_INTEGER;else{var l=lg(t,e,o),u=i[l];n&1<0?s=Number.MIN_SAFE_INTEGER:s=Number.MAX_SAFE_INTEGER);var l=i[r];return s<0&&(s+=l),s=Da(0,s,l-1),s}function fg(n,t,e,i,r,a){var s=t[r],o=e[r]||1;(n&1<0?s=Number.MAX_SAFE_INTEGER:s=Number.MIN_SAFE_INTEGER);var l=i[r];return s<0&&(s+=l),o>0?s=Da(0,s,l):s=Da(-1,s,l-1),s}function RT(n,t,e){for(var i=e.length,r=0;r1){i=r;break}for(var r=i+1;r0||e[r]!==n[r])return!1;return!0}function OT(n,t){for(var e=n.length>0?n[n.length-1]:1,i=0;i=0?s:(E(s===-1,function(){return"Negative size values should be exactly -1 but got "+(s+" for the slice() size at index "+o+".")}),n.shape[o]-i[o])}),[i,a]}var gg={__proto__:null,assertParamsValid:ag,maskToAxes:js,computeOutShape:sg,stridesWithElidedDims:og,getNormalizedAxes:mg,startIndicesWithElidedDims:cg,stopIndicesWithElidedDims:hg,stridesForAxis:dg,startForAxis:pg,stopForAxis:fg,isSliceContinous:RT,computeFlatOffset:OT,parseSliceParams:jc};var vg=function(){function n(){}return n.prototype.getClassName=function(){return this.constructor.className},n.fromConfig=function(t,e){return new t(e)},n}(),yg=function(){function n(){this.classNameMap={}}return n.getMap=function(){return n.instance==null&&(n.instance=new n),n.instance},n.register=function(t){n.getMap().classNameMap[t.className]=[t,t.fromConfig]},n}();function wi(n){E(n.className!=null,function(){return"Class being registered does not have the static className property defined."}),E(typeof n.className=="string",function(){return"className is required to be a string, but got type "+typeof n.className}),E(n.className.length>0,function(){return"Class being registered has an empty-string as its className, which is disallowed."}),yg.register(n)}var ET={__proto__:null,Serializable:vg,SerializationMap:yg,registerClass:wi};var DT=.001,bg=.1;function kT(n,t,e){return e==null&&(e=Kc()),$c(n,t,function(i,r){return Xc(i,r,e)})}function Kc(){return z.backend.floatPrecision()===32?DT:bg}function $c(n,t,e){var i=!0;if((Dt(n)||Dt(t))&&(i=!1),Dt(n)&&Dt(t)&&(i=!0),i){var r=n.constructor.name,a=t.constructor.name;if(r!==a)throw new Error("Arrays are of different type. Actual: "+r+". "+("Expected: "+a))}if(Array.isArray(n)&&Array.isArray(t)){var s=Fn(n),o=Fn(t);if(!dn(s,o))throw new Error("Arrays have different shapes. "+("Actual: ["+s+"]. Expected: ["+o+"]"))}var l=Dt(n)?n:ji(n),u=Dt(t)?t:ji(t);if(l.length!==u.length)throw new Error("Arrays have different lengths actual: "+l.length+" vs "+("expected: "+u.length+`. +`;return v[v.length-1]=" "+v[v.length-1]+"]"+(a?"":N),v}function Ua(n){for(var t=[],e=0;e=this.shape[i]){var o="Requested out of range element at "+t+". "+(" Buffer shape="+this.shape);throw new Error(o)}i++}for(var l=t[t.length-1],u=0;u0)throw new Error("Backend '"+this.backendName+"' has an internal memory leak "+("("+o+" data ids) after running '"+t+"'"))},n.prototype.runKernelFunc=function(t,e,i,r,a,s,o){var l=this,u,c=[],h=this.isTapeOn();r==null&&(r=this.state.activeScope!=null?this.state.activeScope.name:"");var d=this.state.numBytes,p=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var f,m=Lc(r,this.backendName),g;if(m!=null)f=function(){var w=l.backend.numDataIds();g=m.kernelFunc({inputs:e,attrs:a,backend:l.backend});var S=Array.isArray(g)?g:[g];l.shouldCheckForMemLeaks()&&l.checkKernelForMemLeak(r,w,S);var L=S.map(function(R){var D=R.dataId,k=R.shape,W=R.dtype;return l.makeTensorFromDataId(D,k,W)});if(h){var N=l.getTensorsForGradient(r,e,L);if(N==null){o==null&&(o=[]);var C=L.filter(function(R,D){return o[D]});N=(s||[]).slice().concat(C)}c=l.saveTensorsForBackwardMode(N)}return L};else{var v=function(w){if(!h)return;c=w.map(function(S){return l.keep(l.clone(S))})};f=function(){var w=l.backend.numDataIds();g=l.tidy(function(){return t(l.backend,v)});var S=Array.isArray(g)?g:[g];return l.shouldCheckForMemLeaks()&&l.checkKernelForMemLeak(r,w,S),S}}var b;return this.scopedRun(function(){return l.state.kernelDepth++},function(){return l.state.kernelDepth--},function(){!l.ENV.getBool("DEBUG")&&!l.state.profiling?u=f():(b=l.profiler.profileKernel(r,e,function(){return f()}),l.ENV.getBool("DEBUG")&&l.profiler.logKernelProfile(b),u=b.outputs)}),h&&this.addTapeNode(r,e,u,i,c,a),this.state.profiling&&this.state.activeProfile.kernels.push({name:r,bytesAdded:this.state.numBytes-d,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-p,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map(function(w){return e[w]!=null?e[w].shape:null}),outputShapes:u.map(function(w){return w.shape}),kernelTimeMs:b.timeMs,extraInfo:b.extraInfo}),Array.isArray(g)?u:u[0]},n.prototype.saveTensorsForBackwardMode=function(t){var e=this,i=t.map(function(r){return e.keep(e.clone(r))});return i},n.prototype.getTensorsForGradient=function(t,e,i){var r=Ic(t);if(r!=null){var a=r.inputsToSave||[],s=r.outputsToSave||[],o=void 0;r.saveAllInputs?(E(Array.isArray(e),function(){return"saveAllInputs is true, expected inputs to be an array."}),o=Object.keys(e).map(function(u){return e[u]})):o=a.map(function(u){return e[u]});var l=i.filter(function(u,c){return s[c]});return o.concat(l)}return null},n.prototype.makeTensor=function(t,e,i,r){if(t==null)throw new Error("Values passed to engine.makeTensor() are null");i=i||"float32",r=r||this.backend;var a=t;i==="string"&&pi(t[0])&&(a=t.map(function(c){return Ac(c)}));var s=r.write(a,e,i),o=new Y(e,i,s,this.nextTensorId());if(this.incRef(o,r),i==="string"){var l=this.state.tensorInfo.get(s),u=Nm(a);this.state.numBytes+=u-l.bytes,l.bytes=u}return o},n.prototype.makeTensorFromDataId=function(t,e,i,r){i=i||"float32";var a=new Y(e,i,t,this.nextTensorId());return this.incRef(a,r),a},n.prototype.makeVariable=function(t,e,i,r){e===void 0&&(e=!0),i=i||this.nextVariableId().toString(),r!=null&&r!==t.dtype&&(t=t.cast(r));var a=new Ba(t,e,i,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error("Variable with name "+a.name+" was already registered");return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a},n.prototype.incRef=function(t,e){var i=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,t.dtype==="string"&&this.state.numStringTensors++,i===0){this.state.numDataBuffers++;var r=0;t.dtype!=="complex64"&&t.dtype!=="string"&&(r=t.size*Tm(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.state.numBytes+=r}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof Ba||this.track(t)},n.prototype.disposeTensor=function(t){if(!this.state.tensorInfo.has(t.dataId))return;this.state.numTensors--,t.dtype==="string"&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId),i=e.refCount;i<=1?(t.dtype!=="complex64"&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--},n.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},n.prototype.disposeVariable=function(t){this.disposeTensor(t),this.state.registeredVariables[t.name]!=null&&delete this.state.registeredVariables[t.name]},n.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,t.reasons==null&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},n.prototype.profile=function(t){return de(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u;return pe(this,function(c){switch(c.label){case 0:return this.state.profiling=!0,e=this.state.numBytes,i=this.state.numTensors,this.state.activeProfile.kernels=[],r=this.state.activeProfile,[4,t()];case 1:r.result=c.sent(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map(function(h){return h.totalBytesSnapshot})),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-i,a=0,s=this.state.activeProfile.kernels,c.label=2;case 2:return a0&&this.state.kernelDepth===0},n.prototype.addTapeNode=function(t,e,i,r,a,s){var o=this,l={id:this.state.nextTapeNodeId++,kernelName:t,inputs:e,outputs:i,saved:a},u=Ic(t);u!=null&&(r=u.gradFunc),r!=null&&(l.gradient=function(c){return c=c.map(function(h,d){if(h==null){var p=i[d],f=Ur(p.size,p.dtype);return o.makeTensor(f,p.shape,p.dtype)}return h}),r(c.length>1?c:c[0],a,s)}),this.state.activeTape.push(l)},n.prototype.keep=function(t){return t.kept=!0,t},n.prototype.startTape=function(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++},n.prototype.endTape=function(){this.state.gradientDepth--},n.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},n.prototype.endScope=function(t){for(var e=this,i=Fc(t),r=new Set(i.map(function(l){return l.id})),a=0;a0,function(){return"gradients() received an empty list of xs."}),i!=null&&i.dtype!=="float32")throw new Error("dy must have 'float32' dtype, but has '"+i.dtype+"'");var s=this.scopedRun(function(){return a.startTape()},function(){return a.endTape()},function(){return a.tidy("forward",t)});E(s instanceof Y,function(){return"The result y returned by f() must be a tensor."});var o=iA(this.state.activeTape,e,s);if(!r&&o.length===0&&e.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",function(){var l={};l[s.id]=i??fA(s.shape),rA(l,o,function(c){return a.tidy(c)},mA);var u=e.map(function(c){return l[c.id]});return a.state.gradientDepth===0&&(a.state.activeTape.forEach(function(c){for(var h=0,d=c.saved;h0,function(){return"Element arr["+e.join("][")+"] should be a primitive, "+("but is an array of "+n.length+" elements")}),E(n.length===t[0],function(){return"Element arr["+e.join("][")+"] should have "+t[0]+" "+("elements, but has "+n.length+" elements")});for(var i=t.slice(1),r=0;r=0&&(r=i),zm(i,r,t,e),n==null||!Dt(n)&&!Array.isArray(n)&&typeof n!="number"&&typeof n!="boolean"&&typeof n!="string"){var a=n==null?"null":n.constructor.name;throw new Error("Argument '"+t+"' passed to '"+e+"' must be a "+("Tensor or TensorLike, but got '"+a+"'"))}var s=Fn(n,r);!Dt(n)&&!Array.isArray(n)&&(n=[n]);var o=!0,l=r!=="string"?_s(n,r):ji(n,[],o);return z.makeTensor(l,s,r)}function za(n,t,e,i){if(i===void 0&&(i="numeric"),!Array.isArray(n))throw new Error("Argument "+t+" passed to "+e+" must be a `Tensor[]` or `TensorLike[]`");var r=n;return r.map(function(a,s){return O(a,t+"["+s+"]",e)},i)}var Pm="__op";function U(n){var t=Object.keys(n);if(t.length!==1)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+(t.length+" keys."));var e=t[0],i=n[e];e.endsWith("_")&&(e=e.substring(0,e.length-1)),e=e+Pm;var r=function(){for(var a=[],s=0;s>10]+(o&1023)]+t[o>>10];a[s]=l}return new Float32Array(r)}}var tn=function(){function n(){this.saveRouters=[],this.loadRouters=[]}return n.getInstance=function(){return n.instance==null&&(n.instance=new n),n.instance},n.registerSaveRouter=function(t){n.getInstance().saveRouters.push(t)},n.registerLoadRouter=function(t){n.getInstance().loadRouters.push(t)},n.getSaveHandlers=function(t){return n.getHandlers(t,"save")},n.getLoadHandlers=function(t,e){return n.getHandlers(t,"load",e)},n.getHandlers=function(t,e,i){var r=[],a=e==="load"?n.getInstance().loadRouters:n.getInstance().saveRouters;return a.forEach(function(s){var o=s(t,i);o!==null&&r.push(o)}),r},n}(),RA=function(n){return tn.registerSaveRouter(n)},OA=function(n){return tn.registerLoadRouter(n)},EA=function(n){return tn.getSaveHandlers(n)},DA=function(n,t){return tn.getLoadHandlers(n,t)};var zc="tensorflowjs",Pc=1,Ki="models_store",yi="model_info_store";function Vm(){if(!He().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var n=typeof window=="undefined"?self:window,t=n.indexedDB||n.mozIndexedDB||n.webkitIndexedDB||n.msIndexedDB||n.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function _c(n){var t=n.result;t.createObjectStore(Ki,{keyPath:"modelPath"}),t.createObjectStore(yi,{keyPath:"modelPath"})}var zr=function(){function n(t){if(this.indexedDB=Vm(),t==null||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t}return n.prototype.save=function(t){return de(this,void 0,void 0,function(){return pe(this,function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,t)]})})},n.prototype.load=function(){return de(this,void 0,void 0,function(){return pe(this,function(t){return[2,this.databaseAction(this.modelPath)]})})},n.prototype.databaseAction=function(t,e){var i=this;return new Promise(function(r,a){var s=i.indexedDB.open(zc,Pc);s.onupgradeneeded=function(){return _c(s)},s.onsuccess=function(){var o=s.result;if(e==null){var l=o.transaction(Ki,"readonly"),u=l.objectStore(Ki),c=u.get(i.modelPath);c.onsuccess=function(){if(c.result==null)return o.close(),a(new Error("Cannot find model with path '"+i.modelPath+"' in IndexedDB."));r(c.result.modelArtifacts)},c.onerror=function(g){return o.close(),a(c.error)},l.oncomplete=function(){return o.close()}}else{var h=Pa(e),d=o.transaction(yi,"readwrite"),p=d.objectStore(yi),f=p.put({modelPath:i.modelPath,modelArtifactsInfo:h}),m;f.onsuccess=function(){m=o.transaction(Ki,"readwrite");var g=m.objectStore(Ki),v=g.put({modelPath:i.modelPath,modelArtifacts:e,modelArtifactsInfo:h});v.onsuccess=function(){return r({modelArtifactsInfo:h})},v.onerror=function(b){p=d.objectStore(yi);var w=p.delete(i.modelPath);w.onsuccess=function(){return o.close(),a(v.error)},w.onerror=function(S){return o.close(),a(v.error)}}},f.onerror=function(g){return o.close(),a(f.error)},d.oncomplete=function(){m==null?o.close():m.oncomplete=function(){return o.close()}}}},s.onerror=function(o){return a(s.error)}})},n.URL_SCHEME="indexeddb://",n}(),qm=function(n){return He().getBool("IS_BROWSER")&&(!Array.isArray(n)&&n.startsWith(zr.URL_SCHEME))?kA(n.slice(zr.URL_SCHEME.length)):null};tn.registerSaveRouter(qm);tn.registerLoadRouter(qm);function kA(n){return new zr(n)}function FA(n){return n.startsWith(zr.URL_SCHEME)?n.slice(zr.URL_SCHEME.length):n}var WA=function(){function n(){this.indexedDB=Vm()}return n.prototype.listModels=function(){return de(this,void 0,void 0,function(){var t=this;return pe(this,function(e){return[2,new Promise(function(i,r){var a=t.indexedDB.open(zc,Pc);a.onupgradeneeded=function(){return _c(a)},a.onsuccess=function(){var s=a.result,o=s.transaction(yi,"readonly"),l=o.objectStore(yi),u=l.getAll();u.onsuccess=function(){for(var c={},h=0,d=u.result;h0,function(){return"scheme must not be an empty string."});var i=n.getInstance();E(i.managers[t]==null,function(){return"A model store manager is already registered for scheme '"+t+"'."}),i.managers[t]=e},n.getManager=function(t){var e=this.getInstance().managers[t];if(e==null)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},n.getSchemes=function(){return Object.keys(this.getInstance().managers)},n}();function Gs(n){if(n.indexOf(Mr)===-1)throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+(""+bi.getSchemes().join(",")));return{scheme:n.split(Mr)[0],path:n.split(Mr)[1]}}function Km(n,t,e){return e===void 0&&(e=!1),de(this,void 0,void 0,function(){var i,r,a,s,o,l,u,c,h;return pe(this,function(d){switch(d.label){case 0:return E(n!==t,function(){return"Old path and new path are the same: '"+n+"'"}),i=tn.getLoadHandlers(n),E(i.length>0,function(){return"Copying failed because no load handler is found for source URL "+n+"."}),E(i.length<2,function(){return"Copying failed because more than one ("+i.length+") "+("load handlers for source URL "+n+".")}),r=i[0],a=tn.getSaveHandlers(t),E(a.length>0,function(){return"Copying failed because no save handler is found for destination "+("URL "+t+".")}),E(a.length<2,function(){return"Copying failed because more than one ("+i.length+") "+("save handlers for destination URL "+t+".")}),s=a[0],o=Gs(n).scheme,l=Gs(n).path,u=o===Gs(n).scheme,[4,r.load()];case 1:return c=d.sent(),e&&u?[4,bi.getManager(o).removeModel(l)]:[3,3];case 2:d.sent(),d.label=3;case 3:return[4,s.save(c)];case 4:return h=d.sent(),e&&!u?[4,bi.getManager(o).removeModel(l)]:[3,6];case 5:d.sent(),d.label=6;case 6:return[2,h.modelArtifactsInfo]}})})}function qA(){return de(this,void 0,void 0,function(){var n,t,e,i,r,a,s,o;return pe(this,function(l){switch(l.label){case 0:n=bi.getSchemes(),t={},e=0,i=n,l.label=1;case 1:return e0,function(){return"promises must be a none empty array"})}function o(l,u){E(l>=0&&l<=1,function(){return"Progress fraction must be in range [0, 1], but "+("got startFraction "+l)}),E(u>=0&&u<=1,function(){return"Progress fraction must be in range [0, 1], but "+("got endFraction "+u)}),E(u>=l,function(){return"startFraction must be no more than endFraction, but "+("got startFraction "+l+" and endFraction ")+(""+u)})}return Promise.all(n.map(a))}function Zm(n,t){return de(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u,c,h,d;return pe(this,function(p){switch(p.label){case 0:return t==null&&(t={}),e=t.fetchFunc==null?He().platform.fetch:t.fetchFunc,i=n.map(function(f){return e(f,t.requestInit,{isBinary:!0})}),r=0,a=.5,t.onProgress==null?[4,Promise.all(i)]:[3,2];case 1:return o=p.sent(),[3,4];case 2:return[4,Jm(i,t.onProgress,r,a)];case 3:o=p.sent(),p.label=4;case 4:return s=o,l=s.map(function(f){return f.arrayBuffer()}),u=.5,c=1,t.onProgress==null?[4,Promise.all(l)]:[3,6];case 5:return d=p.sent(),[3,8];case 6:return[4,Jm(l,t.onProgress,u,c)];case 7:d=p.sent(),p.label=8;case 8:return h=d,[2,h]}})})}function oT(n,t,e,i){return t===void 0&&(t=""),de(this,void 0,void 0,function(){var r,a;return pe(this,function(s){return r=function(o){return Zm(o,{requestInit:i})},a=Qm(r),[2,a(n,t,e)]})})}function Qm(n){var t=this;return function(e,i,r){return i===void 0&&(i=""),de(t,void 0,void 0,function(){var a,s,o,l,u,c,h,d,p,f;return pe(this,function(m){switch(m.label){case 0:if(a=e.map(function(){return!1}),s={},o=r!=null?r.map(function(){return!1}):[],l=[],e.forEach(function(g,v){var b=0;g.weights.forEach(function(w){var S="quantization"in w?w.quantization.dtype:w.dtype,L=Wc[S]*ot(w.shape),N=function(){a[v]=!0,s[v]==null&&(s[v]=[]),s[v].push({manifestEntry:w,groupOffset:b,sizeBytes:L})};r!=null?r.forEach(function(C,R){C===w.name&&(N(),o[R]=!0)}):N(),l.push(w.name),b+=L})}),!o.every(function(g){return g}))throw u=r.filter(function(g,v){return!o[v]}),new Error("Could not find weights in manifest with names: "+(u.join(", ")+`. +`)+"Manifest JSON has weights with names: "+(l.join(", ")+"."));return c=a.reduce(function(g,v,b){return v&&g.push(b),g},[]),h=[],c.forEach(function(g){e[g].paths.forEach(function(v){var b=i+(i.endsWith("/")?"":"/")+v;h.push(b)})}),[4,n(h)];case 1:return d=m.sent(),p={},f=0,c.forEach(function(g){for(var v=e[g].paths.length,b=0,w=0;w0,function(){return"URL path for http must not be null, undefined or empty."}),Array.isArray(t)&&E(t.length===2,function(){return"URL paths for http must have a length of 2, "+("(actual length is "+t.length+").")}),this.path=t,e.requestInit!=null&&e.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{}}return n.prototype.save=function(t){return de(this,void 0,void 0,function(){var e,i,r,a;return pe(this,function(s){switch(s.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit),e.body=new FormData,i=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:i},e.body.append("model.json",new Blob([JSON.stringify(r)],{type:uT}),"model.json"),t.weightData!=null&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:lT}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if(a=s.sent(),a.ok)return[2,{modelArtifactsInfo:Pa(t),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+(a.status+"."))}})})},n.prototype.load=function(){return de(this,void 0,void 0,function(){var t,e,i,r,a,s,o,l,u,c,h,d,p,f,m;return pe(this,function(g){switch(g.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(t=g.sent(),!t.ok)throw new Error("Request to "+this.path+" failed with status code "+(t.status+". Please verify this URL points to ")+"the model JSON of the model to load.");g.label=2;case 2:return g.trys.push([2,4,,5]),[4,t.json()];case 3:return e=g.sent(),[3,5];case 4:throw i=g.sent(),r="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?r+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":r+=" Please make sure the server is serving valid JSON for this request.",new Error(r);case 5:if(a=e.modelTopology,s=e.weightsManifest,o=e.generatedBy,l=e.convertedBy,u=e.format,c=e.userDefinedMetadata,a==null&&s==null)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return s!=null?[4,this.loadWeights(s)]:[3,7];case 6:p=g.sent(),h=p[0],d=p[1],g.label=7;case 7:return f={modelTopology:a,weightSpecs:h,weightData:d,userDefinedMetadata:c,generatedBy:o,convertedBy:l,format:u},m=e.modelInitializer,m&&(f.modelInitializer=m),[2,f]}})})},n.prototype.loadWeights=function(t){return de(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u,c,h,d,p,f,m,g,v,b,w,S,L,N;return pe(this,function(C){switch(C.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,i=cT(e),r=i[0],a=i[1],s=this.weightPathPrefix||r,o=[],l=0,u=t;lt?n.substring(e):"";return[i+"/",r]}function Vc(n){return n.match(eg.URL_SCHEME_REGEX)!=null}var tg=function(n,t){if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;var e=!0;return Array.isArray(n)?e=n.every(function(i){return Vc(i)}):e=Vc(n),e?qc(n,t):null};tn.registerSaveRouter(tg);tn.registerLoadRouter(tg);function qc(n,t){return new eg(n,t)}function hT(n,t){return qc(n,t)}var Gc=function(){function n(t){this.modelArtifacts=t}return n.prototype.load=function(){return de(this,void 0,void 0,function(){return pe(this,function(t){return[2,this.modelArtifacts]})})},n}(),dT=function(){function n(t){this.saveHandler=t}return n.prototype.save=function(t){return de(this,void 0,void 0,function(){return pe(this,function(e){return[2,this.saveHandler(t)]})})},n}();function pT(n,t,e,i){if(arguments.length===1){var r=n.modelTopology!=null||n.weightSpecs!=null;return r?new Gc(n):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Gc({modelTopology:n}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Gc({modelTopology:n,weightSpecs:t,weightData:e,trainingConfig:i})}function fT(n){return new dT(n)}var mT={__proto__:null,browserFiles:sT,browserHTTPRequest:hT,concatenateArrayBuffers:Bc,decodeWeights:_m,encodeWeights:LA,fromMemory:pT,getLoadHandlers:DA,getModelArtifactsInfoForJSON:Pa,getSaveHandlers:EA,http:qc,isHTTPScheme:Vc,loadWeights:oT,registerLoadRouter:OA,registerSaveRouter:RA,weightsLoaderFactory:Qm,withSaveHandler:fT,copyModel:YA,listModels:qA,moveModel:jA,removeModel:GA};function gT(n,t){var e=O(n,"x","reshape",null),i={x:e},r={shape:t},a=function(s,o){return t=bm(t,e.size),E(e.size===ot(t),function(){return"new shape and old shape must have the same number of elements."}),o([e]),s.reshape(e,t)};return z.runKernelFunc(a,i,null,Mu,r)}var V=U({reshape_:gT});function vT(n,t,e,i){var r;e===void 0&&(e=!1),i===void 0&&(i=!1);var a=O(n,"a","matMul"),s=O(t,"b","matMul");r=at(a,s),a=r[0],s=r[1],E(a.rank>=2&&s.rank>=2&&a.rank===s.rank,function(){return"Error in matMul: inputs must have the same rank of at least 2, "+("got ranks "+a.rank+" and "+s.rank+".")});var o=e?a.shape[a.rank-2]:a.shape[a.rank-1],l=i?s.shape[s.rank-1]:s.shape[s.rank-2],u=e?a.shape[a.rank-1]:a.shape[a.rank-2],c=i?s.shape[s.rank-2]:s.shape[s.rank-1],h=a.shape.slice(0,-2),d=s.shape.slice(0,-2),p=ot(h),f=ot(d);E(hn(h,d),function(){return"Error in matMul: outer dimensions ("+h+") and ("+(d+") of Tensors with shapes "+a.shape+" and ")+(s.shape+" must match.")}),E(o===l,function(){return"Error in matMul: inner shapes ("+o+") and ("+(l+") of Tensors with shapes "+a.shape+" and ")+(s.shape+" and transposeA="+e)+(" and transposeB="+i+" must match.")});var m=a.shape.slice(0,-2).concat([u,c]),g=e?V(a,[p,o,u]):V(a,[p,u,o]),v=i?V(s,[f,c,l]):V(s,[f,l,c]),b=function(N,C){return C([g,v]),N.batchMatMul(g,v,e,i)},w={a:g,b:v},S={transposeA:e,transposeB:i},L=z.runKernelFunc(b,w,null,jl,S);return V(L,m)}var We=U({matMul_:vT});function yT(n,t,e,i){if(e===void 0&&(e=1),i===void 0&&(i=0),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);var r=O(n,"indices","oneHot","int32"),a=r.shape.concat([t]),s=function(u,c){return c([r]),V(u.oneHot(V(r,[r.size]),t,e,i),a)},o={indices:r},l={depth:t,onValue:e,offValue:i};return z.runKernelFunc(s,o,null,Wu,l)}var Ys=U({oneHot_:yT});function bT(n,t){var e=O(n,"x","transpose");if(t==null&&(t=e.shape.map(function(a,s){return s}).reverse()),E(e.rank===t.length,function(){return"Error in transpose: rank of input "+e.rank+" "+("must match length of perm "+t+".")}),t.forEach(function(a){E(a>=0&&a0&&Number.isInteger(e),function(){return"If provided, numClasses must be a positive integer, "+("but got "+e)}),E(i.rank===1,function(){return"Expected the rank of labels to be 1, but got "+i.rank}),E(r.rank===1,function(){return"Expected the rank of predictions to be 1, "+("but got "+r.rank)}),E(i.shape[0]===r.shape[0],function(){return"Mismatch in the number of examples: "+(i.shape[0]+" vs. "+r.shape[0]+". ")+"Labels and predictions should have the same number of elements."}),E(e>0&&Number.isInteger(e),function(){return"numClasses is required to be a positive integer, but got "+(""+e)});var a=Ys(ue(i,"int32"),e),s=Ys(ue(r,"int32"),e),o=ut(a);return ue(We(o,s),"int32")}var ST=U({confusionMatrix_:wT});var LT={__proto__:null,confusionMatrix:ST};function ng(n,t,e){if(Yi(n),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");var i=Fn(n,e);if(i.length!==3&&i.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return gi(n,t,i,e)}var Hr;function IT(n,t){if(t===void 0&&(t=3),t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(n==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var e=!1,i=!1,r=!1,a=!1,s=!1;if(n.data instanceof Uint8Array)e=!0;else if(typeof ImageData!="undefined"&&n instanceof ImageData)i=!0;else if(typeof HTMLVideoElement!="undefined"&&n instanceof HTMLVideoElement)r=!0;else if(typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement)a=!0;else if(n.getContext!=null)s=!0;else throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, "+("but was "+n.constructor.name));if(r){var o=2;if(r&&n.readyState element.")}var l=Lc(vc,z.backendName);if(l!=null){var u={pixels:n},c={numChannels:t};return z.runKernel(vc,u,c)}var h=r?[n.videoWidth,n.videoHeight]:[n.width,n.height],d=h[0],p=h[1],f;s?f=n.getContext("2d").getImageData(0,0,d,p).data:i||e?f=n.data:(a||r)&&(Hr==null&&(Hr=document.createElement("canvas").getContext("2d")),Hr.canvas.width=d,Hr.canvas.height=p,Hr.drawImage(n,0,0,d,p),f=Hr.getImageData(0,0,d,p).data);var m;if(t===4)m=new Int32Array(f);else{var g=d*p;m=new Int32Array(g*t);for(var v=0;v4||o===2)throw new Error("toPixels only supports depth of size "+("1, 3 or 4 but got "+o));if(e.dtype!=="float32"&&e.dtype!=="int32")throw new Error("Unsupported type for toPixels: "+e.dtype+". Please use float32 or int32 tensors.");return[4,e.data()];case 1:for(l=b.sent(),u=e.dtype==="float32"?255:1,c=new Uint8ClampedArray(s*a*4),h=0;h1)throw new Error("Tensor values for a float32 Tensor must be in the "+("range [0 - 1] but encountered "+f+"."))}else if(e.dtype==="int32"&&(f<0||f>255))throw new Error("Tensor values for a int32 Tensor must be in the "+("range [0 - 255] but encountered "+f+"."));o===1?(d[0]=f*u,d[1]=f*u,d[2]=f*u):d[p]=f*u}m=h*4,c[m+0]=Math.round(d[0]),c[m+1]=Math.round(d[1]),c[m+2]=Math.round(d[2]),c[m+3]=Math.round(d[3])}return t!=null&&(t.width=s,t.height=a,g=t.getContext("2d"),v=new ImageData(c,s,a),g.putImageData(v,0,0)),e!==n&&e.dispose(),[2,c]}})})}var TT=U({fromPixels_:IT}),NT={__proto__:null,toPixels:AT,fromPixels:TT};function ig(n,t){if(n.rank<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher,"+(" but the rank was "+n.rank+"."));if(t.rank<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher,"+(" but the rank was "+t.rank+"."));if(t.dtype!=="int32")throw new Error("tf.gatherND() expects the indices to be int32 type,"+(" but the dtype was "+t.dtype+"."));if(t.shape[t.rank-1]>n.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+(t.shape[t.rank-1]+" vs. "+n.rank));if(n.size===0)throw new Error("Requested more than 0 entries, but input is empty."+(" Input shape: "+n.shape+"."));for(var e=t.shape,i=e[e.length-1],r=1,a=0;a1?t.shape[t.rank-1]:1,r=t.rank>1?t.rank-1:1,a="Must have updates.shape = indices.shape[:batchDim] + "+("shape[sliceDim:], got updates.shape: "+e.shape)+(", indices.shape: "+t.shape+", shape: "+n)+(", sliceDim: "+i+", and batchDim: "+r+".");if(e.rank1?t.shape[i-1]:1,a=e.length,s=1,o=r;o0;)n&1&&t.push(e),n/=2,e++;return t}function sg(n,t,e){for(var i=[],r=0;r0){var p=t[0],f=e+1;c=cg(s,p,f,i,n),h=hg(o,p,f,r,n),d=og(a,p,f,n)}else for(var m=0;m-1)a[o]=0;else{var l=lg(t,e,o),u=i[l];n&1<-1)a[o]=Number.MAX_SAFE_INTEGER;else{var l=lg(t,e,o),u=i[l];n&1<0?s=Number.MIN_SAFE_INTEGER:s=Number.MAX_SAFE_INTEGER);var l=i[r];return s<0&&(s+=l),s=Da(0,s,l-1),s}function fg(n,t,e,i,r,a){var s=t[r],o=e[r]||1;(n&1<0?s=Number.MAX_SAFE_INTEGER:s=Number.MIN_SAFE_INTEGER);var l=i[r];return s<0&&(s+=l),o>0?s=Da(0,s,l):s=Da(-1,s,l-1),s}function RT(n,t,e){for(var i=e.length,r=0;r1){i=r;break}for(var r=i+1;r0||e[r]!==n[r])return!1;return!0}function OT(n,t){for(var e=n.length>0?n[n.length-1]:1,i=0;i=0?s:(E(s===-1,function(){return"Negative size values should be exactly -1 but got "+(s+" for the slice() size at index "+o+".")}),n.shape[o]-i[o])}),[i,a]}var gg={__proto__:null,assertParamsValid:ag,maskToAxes:js,computeOutShape:sg,stridesWithElidedDims:og,getNormalizedAxes:mg,startIndicesWithElidedDims:cg,stopIndicesWithElidedDims:hg,stridesForAxis:dg,startForAxis:pg,stopForAxis:fg,isSliceContinous:RT,computeFlatOffset:OT,parseSliceParams:Kc};var vg=function(){function n(){}return n.prototype.getClassName=function(){return this.constructor.className},n.fromConfig=function(t,e){return new t(e)},n}(),yg=function(){function n(){this.classNameMap={}}return n.getMap=function(){return n.instance==null&&(n.instance=new n),n.instance},n.register=function(t){n.getMap().classNameMap[t.className]=[t,t.fromConfig]},n}();function wi(n){E(n.className!=null,function(){return"Class being registered does not have the static className property defined."}),E(typeof n.className=="string",function(){return"className is required to be a string, but got type "+typeof n.className}),E(n.className.length>0,function(){return"Class being registered has an empty-string as its className, which is disallowed."}),yg.register(n)}var ET={__proto__:null,Serializable:vg,SerializationMap:yg,registerClass:wi};var DT=.001,bg=.1;function kT(n,t,e){return e==null&&(e=$c()),Xc(n,t,function(i,r){return Jc(i,r,e)})}function $c(){return z.backend.floatPrecision()===32?DT:bg}function Xc(n,t,e){var i=!0;if((Dt(n)||Dt(t))&&(i=!1),Dt(n)&&Dt(t)&&(i=!0),i){var r=n.constructor.name,a=t.constructor.name;if(r!==a)throw new Error("Arrays are of different type. Actual: "+r+". "+("Expected: "+a))}if(Array.isArray(n)&&Array.isArray(t)){var s=Fn(n),o=Fn(t);if(!hn(s,o))throw new Error("Arrays have different shapes. "+("Actual: ["+s+"]. Expected: ["+o+"]"))}var l=Dt(n)?n:ji(n),u=Dt(t)?t:ji(t);if(l.length!==u.length)throw new Error("Arrays have different lengths actual: "+l.length+" vs "+("expected: "+u.length+`. `)+("Actual: "+l+`. `)+("Expected: "+u+"."));for(var c=0;ce)}function BT(n,t,e){for(var i=0;ie)throw new Error("Value out of range:"+n[i]+" low: "+t+", high: "+e)}function zT(n,t){expect(new Float32Array(n)).toEqual(new Float32Array(t))}var PT={__proto__:null,TEST_EPSILON_FLOAT16:bg,expectArraysClose:kT,testEpsilon:Kc,expectPromiseToFail:FT,expectArraysEqual:WT,expectNumbersClose:UT,expectValuesInRange:BT,expectArrayBuffersEqual:zT};var _T="2.6.0";function MT(){He().set("PROD",!0)}function HT(){He().set("DEBUG",!0)}function VT(){He().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function At(n){He().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(n+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}function qT(){z.disposeVariables()}function GT(){return z}function YT(){return z.memory()}function jT(n){return z.profile(n)}function mt(n,t){return z.tidy(n,t)}function Mt(n){var t=kc(n);t.forEach(function(e){return e.dispose()})}function wg(n){return z.keep(n)}function KT(n){return z.time(n)}function $T(n){return z.setBackend(n)}function XT(){return z.ready()}function JT(){return z.backendName}function ZT(n){z.removeBackend(n)}function QT(n){return z.findBackend(n)}function e1(n){return z.findBackendFactory(n)}function t1(n,t,e){return e===void 0&&(e=1),z.registerBackend(n,t,e)}function n1(){return z.backend}function i1(n,t){He().setPlatform(n,t)}function r1(n,t){var e,i=O(n,"a","add"),r=O(t,"b","add");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.add(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Fs)}var fe=U({add_:r1});function a1(n,t){var e,i=O(n,"a","floorDiv"),r=O(t,"b","floorDiv");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.floorDiv(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,du)}var Jc=U({floorDiv_:a1});function s1(n,t){var e,i=O(n,"a","div"),r=O(t,"b","div");if(e=at(i,r),i=e[0],r=e[1],i.dtype==="int32"&&r.dtype==="int32")return Jc(i,r);var a=function(l,u){var c=l.realDivide(i,r);return u([i,r]),c},s={a:i,b:r},o={};return z.runKernelFunc(a,s,null,su,o)}var Ie=U({div_:s1});function o1(n,t){var e,i=O(n,"a","mul"),r=O(t,"b","mul");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.multiply(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Eu)}var J=U({mul_:o1});function l1(n){var t=O(n,"x","abs"),e={x:t};return z.runKernelFunc(function(i,r){return r([t]),t.dtype==="complex64"?i.complexAbs(t):i.abs(t)},e,null,kl)}var Kt=U({abs_:l1});function u1(n){var t=O(n,"x","acos"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.acos(t);return r([t]),a},e,null,Fl)}var Sg=U({acos_:u1});function c1(n){var t=O(n,"x","acosh"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.acosh(t);return r([t]),a},e,null,Wl)}var Lg=U({acosh_:c1});function h1(n){E(Array.isArray(n),function(){return"The argument passed to tf.addN() must be a list of tensors"}),E(n.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+(""+n.length)});var t=n.map(function(a,s){return O(a,"tensors"+s,"addN")}),e=t[0];t.forEach(function(a){if(a.dtype!==e.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(a){if(!dn(a.shape,e.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var i=function(a,s){var o=a.addN(t);return s(t),o},r=t;return z.runKernelFunc(i,r,null,Ul)}var d1=U({addN_:h1});function Zc(n,t){for(var e=0;e=0&&t=1,function(){return"Pass at least one tensor to concat"});var e=za(n,"tensors","concat");e[0].dtype==="complex64"&&e.forEach(function(s){if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype `+s.dtype+". ")});var i=function(s,o){var l=Qe(t,e[0].shape)[0],u=Wg(e.map(function(d){return d.shape}),l);if(ot(u)===0)return vi([],u);if(e=e.filter(function(d){return d.size>0}),e.length===1)return e[0];var c=e.map(function(d){return d.shape});Fg(c,l);var h=s.concat(e,l);return o(e),h},r=e,a={axis:t};return z.runKernelFunc(i,r,null,Jl,a)}var Rt=U({concat_:E1});function D1(n){var t=O(n,"x","sigmoid"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.sigmoid(t);return r([a]),a},e,null,Qu)}var Ji=U({sigmoid_:D1});function k1(n,t,e){var i=O(n,"x","slice");if(i.rank===0)throw new Error("Slicing scalar is not possible");var r=function(o,l){var u=jc(i,t,e),c=u[0],h=u[1];return ag(i,c,h),l([i]),o.slice(i,c,h)},a={x:i},s={begin:t,size:e};return z.runKernelFunc(r,a,null,$u,s)}var ze=U({slice_:k1});function F1(n){var t=O(n,"x","tanh"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.tanh(t);return r([a]),a},e,null,uc)}var Xs=U({tanh_:F1});function W1(n,t,e,i,r,a){var s=O(n,"forgetBias","basicLSTMCell"),o=O(t,"lstmKernel","basicLSTMCell"),l=O(e,"lstmBias","basicLSTMCell"),u=O(i,"data","basicLSTMCell"),c=O(r,"c","basicLSTMCell"),h=O(a,"h","basicLSTMCell"),d=Rt([u,h],1),p=We(d,o),f=fe(p,l),m=f.shape[0],g=f.shape[1]/4,v=[m,g],b=ze(f,[0,0],v),w=ze(f,[0,g],v),S=ze(f,[0,g*2],v),L=ze(f,[0,g*3],v),N=fe(J(Ji(b),Xs(w)),J(c,Ji(fe(s,S)))),C=J(Xs(N),Ji(L));return[N,C]}var U1=U({basicLSTMCell_:W1});function B1(n,t,e){var i=O(n,"x","batchToSpaceND"),r=t.reduce(function(l,u){return l*u});E(i.rank>=1+t.length,function(){return"input rank is "+i.rank+" but should be > than blockShape.length "+t.length}),E(e.length===t.length,function(){return"crops.length is "+e.length+" but should be equal to blockShape.length "+t.length}),E(i.shape[0]%r===0,function(){return"input tensor batch is "+i.shape[0]+" but is not divisible by the product of "+("the elements of blockShape "+t.join(" * ")+" === "+r)});var a=function(l){return l.batchToSpaceND(i,t,e)},s={x:i},o={blockShape:t,crops:e};return z.runKernelFunc(a,s,null,jl,o)}var Js=U({batchToSpaceND_:B1});function z1(n){var t;return n.rank===0||n.rank===1?t=V(n,[1,1,1,n.size]):n.rank===2?t=V(n,[1,1,n.shape[0],n.shape[1]]):n.rank===3?t=V(n,[1,n.shape[0],n.shape[1],n.shape[2]]):t=n,t}function P1(n,t,e,i,r,a){a==null&&(a=.001);var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;i!=null&&(c=O(i,"offset","batchNorm")),E(o.rank===l.rank,function(){return"Batch normalization gradient requires mean and variance to have equal ranks."}),E(c==null||o.rank===c.rank,function(){return"Batch normalization gradient requires mean and offset to have equal ranks."}),E(u==null||o.rank===u.rank,function(){return"Batch normalization gradient requires mean and scale to have equal ranks."});var h=z1(s),d=function(g,v){return v([h,o,l,u]),g.batchNorm(h,Zs(o),Zs(l),Zs(c),Zs(u),a)},p={x:h,scale:u,offset:c,mean:o,variance:l},f={varianceEpsilon:a},m=z.runKernelFunc(d,p,null,pu,f);return V(m,s.shape)}function Zs(n){return n==null?null:n.rank===0?V(n,[n.size]):n.rank===1?n:n.rank===2?V(n,[1,1,n.shape[0],n.shape[1]]):n.rank===3?V(n,[1,n.shape[0],n.shape[1],n.shape[2]]):n}var Va=U({batchNorm_:P1});function _1(n,t,e,i,r,a){var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;return i!=null&&(c=O(i,"offset","batchNorm")),E(s.rank===2,function(){return"Error in batchNorm2D: x must be rank 2 but got rank "+(s.rank+".")}),E(o.rank===2||o.rank===1,function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but "+("got rank "+o.rank+".")}),E(l.rank===2||l.rank===1,function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 "+("but got rank "+l.rank+".")}),u!=null&&E(u.rank===2||u.rank===1,function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 "+("but got rank "+u.rank+".")}),c!=null&&E(c.rank===2||c.rank===1,function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 "+("but got rank "+c.rank+".")}),Va(s,o,l,c,u,a)}var M1=U({batchNorm2d_:_1});function H1(n,t,e,i,r,a){var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;return i!=null&&(c=O(i,"offset","batchNorm")),E(s.rank===3,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+(s.rank+".")}),E(o.rank===3||o.rank===1,function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but "+("got rank "+o.rank+".")}),E(l.rank===3||l.rank===1,function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 "+("but got rank "+l.rank+".")}),u!=null&&E(u.rank===3||u.rank===1,function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 "+("but got rank "+u.rank+".")}),c!=null&&E(c.rank===3||c.rank===1,function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 "+("but got rank "+c.rank+".")}),Va(s,o,l,c,u,a)}var V1=U({batchNorm3d_:H1});function q1(n,t,e,i,r,a){var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;return i!=null&&(c=O(i,"offset","batchNorm")),E(s.rank===4,function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+(s.rank+".")}),E(o.rank===4||o.rank===1,function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but "+("got rank "+o.rank+".")}),E(l.rank===4||l.rank===1,function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 "+("but got rank "+l.rank+".")}),u!=null&&E(u.rank===4||u.rank===1,function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 "+("but got rank "+u.rank+".")}),c!=null&&E(c.rank===4||c.rank===1,function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 "+("but got rank "+c.rank+".")}),Va(s,o,l,c,u,a)}var G1=U({batchNorm4d_:q1});function Y1(n,t){var e=O(n,"broadcastTo","x"),i=e.shape;if(t.some(function(d){return!(d>0)||d%1!==0}))throw new Error("broadcastTo(): Invalid broadcast shape ["+t+"].");if(t.lengthe.rank){for(var r=e.shape.slice();r.length=0;o--)if(a[o]===t[o])s[o]=1;else if(e.shape[o]!==1)throw new Error("broadcastTo(): ["+i+"] cannot be broadcast to ["+t+"].");var l=s.map(function(d,p){return d>1?p:-1}).filter(function(d){return d>=0});if(l.length===0)return $i(e);var u=function(d){return d.tile(e,s)},c={x:e},h={shape:t,inputShape:a};return z.runKernelFunc(u,c,null,Kl,h)}var Qs=U({broadcastTo_:Y1});function j1(n){var t=O(n,"x","ceil"),e={x:t};return z.runKernelFunc(function(i){return i.ceil(t)},e,null,$l)}var Ug=U({ceil_:j1});function K1(n,t,e){var i=O(n,"x","clipByValue");E(t<=e,function(){return"Error in clip: min ("+t+") must be "+("less than or equal to max ("+e+").")});var r={x:i},a={clipValueMin:t,clipValueMax:e};return z.runKernelFunc(function(s,o){var l=s.clip(i,t,e);return o([i]),l},r,null,Xl,a)}var Bg=U({clipByValue_:K1});function $1(n){return Rt(n,0)}var X1=U({concat1d_:$1});function J1(n,t){return Rt(n,t)}var Z1=U({concat2d_:J1});function Q1(n,t){return Rt(n,t)}var eN=U({concat3d_:Q1});function tN(n,t){return Rt(n,t)}var nN=U({concat4d_:tN});function iN(n,t,e,i,r,a,s){r===void 0&&(r="NHWC"),a===void 0&&(a=[1,1]);var o=O(n,"x","conv2d"),l=O(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=V(o,[1,o.shape[0],o.shape[1],o.shape[2]])),E(u.rank===4,function(){return"Error in conv2d: input must be rank 4, but got rank "+u.rank+"."}),E(l.rank===4,function(){return"Error in conv2d: filter must be rank 4, but got rank "+(l.rank+".")}),s!=null&&E(rt(i),function(){return"Error in conv2d: pad must be an integer when using, "+("dimRoundingMode "+s+" but got pad "+i+".")});var h=r==="NHWC"?u.shape[3]:u.shape[1];E(h===l.shape[2],function(){return"Error in conv2d: depth of input ("+h+") must match "+("input depth for filter "+l.shape[2]+".")}),E(Ht(e,a),function(){return"Error in conv2D: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+a+"'")});var d=function(g,v){var b=_a(r),w=Bn(u.shape,l.shape,e,a,i,s,!1,b),S=g.conv2d(u,l,w);return v([u,l]),S},p={x:u,filter:l},f={strides:e,pad:i,dataFormat:r,dilations:a,dimRoundingMode:s},m=z.runKernelFunc(d,p,null,Zl,f);return c?V(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Gr=U({conv2d_:iN});function rN(n,t,e,i,r,a,s){r===void 0&&(r="NWC"),a===void 0&&(a=1);var o=O(n,"x","conv1d"),l=O(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=V(o,[1,o.shape[0],o.shape[1]])),E(u.rank===3,function(){return"Error in conv1d: input must be rank 3, but got rank "+u.rank+"."}),E(l.rank===3,function(){return"Error in conv1d: filter must be rank 3, but got rank "+(l.rank+".")}),s!=null&&E(rt(i),function(){return"Error in conv1d: pad must be an integer when using, "+("dimRoundingMode "+s+" but got pad "+i+".")}),E(u.shape[2]===l.shape[1],function(){return"Error in conv1d: depth of input ("+u.shape[2]+") must match "+("input depth for filter "+l.shape[1]+".")}),E(Ht(e,a),function(){return"Error in conv1D: Either stride or dilation must be 1. "+("Got stride "+e+" and dilation '"+a+"'")}),E(r==="NWC",function(){return"Error in conv1d: got dataFormat of "+r+" but only NWC is currently supported."});var h=V(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=V(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=[1,e],f=[1,a],m="NHWC",g=Gr(d,h,p,i,m,f,s);return c?V(g,[g.shape[2],g.shape[3]]):V(g,[g.shape[0],g.shape[2],g.shape[3]])}var zg=U({conv1d_:rN});function aN(n,t,e,i,r,a,s){a===void 0&&(a="NHWC"),E(n.length===t.rank,function(){return"Length of inShape "+("("+n.length+") and rank of dy ("+t.rank+") must match")});var o=n,l=t,u=!1;t.rank===3&&(u=!0,l=V(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,n[0],n[1],n[2]]),E(o.length===4,function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+(o.length+".")}),E(l.rank===4,function(){return"Error in conv2dDerInput: dy must be rank 4, but got "+("rank "+l.rank)}),E(e.rank===4,function(){return"Error in conv2dDerInput: filter must be rank 4, but got "+("rank "+e.rank)});var c=a==="NHWC"?o[3]:o[1],h=a==="NHWC"?l.shape[3]:l.shape[1];E(c===e.shape[2],function(){return"Error in conv2dDerInput: depth of input ("+c+") must "+("match input depth for filter "+e.shape[2]+".")}),E(h===e.shape[3],function(){return"Error in conv2dDerInput: depth of output ("+h+") must "+("match output depth for filter "+e.shape[3]+".")}),s!=null&&E(rt(r),function(){return"Error in conv2dDerInput: pad must be an integer when using, "+("dimRoundingMode "+s+" but got pad "+r+".")});var d=function(g,v){var b=1,w=_a(a),S=Bn(o,e.shape,i,b,r,s,!1,w),L=g.conv2dDerInput(l,e,S);return v([l,e]),L},p={dy:l,filter:e},f={strides:i,pad:r,dataFormat:a,dimRoundingMode:s,inputShape:o},m=z.runKernelFunc(d,p,null,Ql,f);return u?V(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var nh=U({conv2DBackpropInput_:aN});function sN(n,t,e,i,r,a){var s=O(n,"x","conv2dTranspose"),o=O(t,"filter","conv2dTranspose");return nh(e,s,o,i,r,"NHWC",a)}var Pg=U({conv2dTranspose_:sN});function oN(n,t,e,i,r,a){r===void 0&&(r="NDHWC"),a===void 0&&(a=[1,1,1]);var s=O(n,"x","conv3d"),o=O(t,"filter","conv3d"),l=s,u=!1;s.rank===4&&(u=!0,l=V(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),E(l.rank===5,function(){return"Error in conv3d: input must be rank 5, but got rank "+l.rank+"."}),E(o.rank===5,function(){return"Error in conv3d: filter must be rank 5, but got rank "+(o.rank+".")}),E(l.shape[4]===o.shape[3],function(){return"Error in conv3d: depth of input ("+l.shape[4]+") must match "+("input depth for filter "+o.shape[3]+".")}),E(Ht(e,a),function(){return"Error in conv3D: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+a+"'")}),E(r==="NDHWC",function(){return"Error in conv3d: got dataFormat of "+r+" but only NDHWC is currently supported."});var c=function(f,m){var g=Ma(l.shape,o.shape,e,a,i),v=f.conv3d(l,o,g);return m([l,o]),v},h={x:l,filter:o},d={strides:e,pad:i,dataFormat:r,dilations:a},p=z.runKernelFunc(c,h,null,eu,d);return u?V(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var lN=U({conv3d_:oN});function uN(n,t,e,i,r){E(n.length===t.rank,function(){return"Length of inShape "+("("+n.length+") and rank of dy ("+t.rank+") must match")});var a=n,s=t,o=!1;t.rank===4&&(o=!0,s=V(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),a=[1,n[0],n[1],n[2],n[3]]);var l=a[4],u=s.shape[4];E(a.length===5,function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+(a.length+".")}),E(s.rank===5,function(){return"Error in conv3dDerInput: dy must be rank 5, but got "+("rank "+s.rank)}),E(e.rank===5,function(){return"Error in conv3dDerInput: filter must be rank 5, but got "+("rank "+e.rank)}),E(l===e.shape[3],function(){return"Error in conv3dDerInput: depth of input ("+l+") must "+("match input depth for filter "+e.shape[3]+".")}),E(u===e.shape[4],function(){return"Error in conv3dDerInput: depth of output ("+u+") must "+("match output depth for filter "+e.shape[4]+".")});var c=function(f){var m=1,g=Ma(a,e.shape,i,m,r);return f.conv3dDerInput(s,e,g)},h={dy:s},d={pad:r},p=z.runKernelFunc(c,h,null,xf,d);return o?V(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var _g=U({conv3DBackpropInput_:uN});function cN(n,t,e,i,r){var a=O(n,"x","conv3dTranspose"),s=O(t,"filter","conv3dTranspose");return _g(e,a,s,i,r)}var hN=U({conv3dTranspose_:cN});function dN(n){var t=O(n,"x","cos"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.cos(t);return r([t]),a},e,null,tu)}var eo=U({cos_:dN});function pN(n){var t=O(n,"x","cosh"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.cosh(t);return r([t]),a},e,null,nu)}var ih=U({cosh_:pN});function fN(n,t,e,i){t===void 0&&(t=0),e===void 0&&(e=!1),i===void 0&&(i=!1);var r=O(n,"x","cumsum"),a=function(l,u){var c=an([t],r.rank),h=r;c!=null&&(h=ut(r,c));var d=Un(1,r.rank)[0],p=l.cumsum(h,d,e,i);if(u([r]),c!=null){var f=Ks(c);p=ut(p,f)}return p},s={x:r},o={axis:t,exclusive:e,reverse:i};return z.runKernelFunc(a,s,null,iu,o)}var rh=U({cumsum_:fN});function mN(n,t,e){e===void 0&&(e="NHWC");var i=O(n,"x","depthToSpace"),r=e==="NHWC"?i.shape[1]:i.shape[2],a=e==="NHWC"?i.shape[2]:i.shape[3],s=e==="NHWC"?i.shape[3]:i.shape[1];E(r*t>=0,function(){return`Negative dimension size caused by overflow when multiplying +`)+("Expected: "+u+"."))}}function FT(n,t){n().then(function(){return t.fail()},function(){return t()})}function WT(n,t){var e=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return pi(n)||pi(n[0])||pi(t)||pi(t[0])?Xc(n,e,function(i,r){return i==r}):Xc(n,t,function(i,r){return Jc(i,r,0)})}function UT(n,t,e){if(e==null&&(e=$c()),!Jc(n,t,e))throw new Error("Numbers differ: actual === "+n+", expected === "+t)}function Jc(n,t,e){return!isFinite(n)&&!isFinite(t)?!0:!(isNaN(n)||isNaN(t)||Math.abs(n-t)>e)}function BT(n,t,e){for(var i=0;ie)throw new Error("Value out of range:"+n[i]+" low: "+t+", high: "+e)}function zT(n,t){expect(new Float32Array(n)).toEqual(new Float32Array(t))}var PT={__proto__:null,TEST_EPSILON_FLOAT16:bg,expectArraysClose:kT,testEpsilon:$c,expectPromiseToFail:FT,expectArraysEqual:WT,expectNumbersClose:UT,expectValuesInRange:BT,expectArrayBuffersEqual:zT};var _T="2.6.0";function MT(){He().set("PROD",!0)}function HT(){He().set("DEBUG",!0)}function VT(){He().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function At(n){He().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(n+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}function qT(){z.disposeVariables()}function GT(){return z}function YT(){return z.memory()}function jT(n){return z.profile(n)}function mt(n,t){return z.tidy(n,t)}function Mt(n){var t=Fc(n);t.forEach(function(e){return e.dispose()})}function wg(n){return z.keep(n)}function KT(n){return z.time(n)}function $T(n){return z.setBackend(n)}function XT(){return z.ready()}function JT(){return z.backendName}function ZT(n){z.removeBackend(n)}function QT(n){return z.findBackend(n)}function e1(n){return z.findBackendFactory(n)}function t1(n,t,e){return e===void 0&&(e=1),z.registerBackend(n,t,e)}function n1(){return z.backend}function i1(n,t){He().setPlatform(n,t)}function r1(n,t){var e,i=O(n,"a","add"),r=O(t,"b","add");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.add(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Fs)}var fe=U({add_:r1});function a1(n,t){var e,i=O(n,"a","floorDiv"),r=O(t,"b","floorDiv");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.floorDiv(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,pu)}var Zc=U({floorDiv_:a1});function s1(n,t){var e,i=O(n,"a","div"),r=O(t,"b","div");if(e=at(i,r),i=e[0],r=e[1],i.dtype==="int32"&&r.dtype==="int32")return Zc(i,r);var a=function(l,u){var c=l.realDivide(i,r);return u([i,r]),c},s={a:i,b:r},o={};return z.runKernelFunc(a,s,null,ou,o)}var Ie=U({div_:s1});function o1(n,t){var e,i=O(n,"a","mul"),r=O(t,"b","mul");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.multiply(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Du)}var J=U({mul_:o1});function l1(n){var t=O(n,"x","abs"),e={x:t};return z.runKernelFunc(function(i,r){return r([t]),t.dtype==="complex64"?i.complexAbs(t):i.abs(t)},e,null,Fl)}var jt=U({abs_:l1});function u1(n){var t=O(n,"x","acos"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.acos(t);return r([t]),a},e,null,Wl)}var Sg=U({acos_:u1});function c1(n){var t=O(n,"x","acosh"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.acosh(t);return r([t]),a},e,null,Ul)}var Lg=U({acosh_:c1});function h1(n){E(Array.isArray(n),function(){return"The argument passed to tf.addN() must be a list of tensors"}),E(n.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+(""+n.length)});var t=n.map(function(a,s){return O(a,"tensors"+s,"addN")}),e=t[0];t.forEach(function(a){if(a.dtype!==e.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(a){if(!hn(a.shape,e.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var i=function(a,s){var o=a.addN(t);return s(t),o},r=t;return z.runKernelFunc(i,r,null,Bl)}var d1=U({addN_:h1});function Qc(n,t){for(var e=0;e=0&&t=1,function(){return"Pass at least one tensor to concat"});var e=za(n,"tensors","concat");e[0].dtype==="complex64"&&e.forEach(function(s){if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype `+s.dtype+". ")});var i=function(s,o){var l=Qe(t,e[0].shape)[0],u=Wg(e.map(function(d){return d.shape}),l);if(ot(u)===0)return vi([],u);if(e=e.filter(function(d){return d.size>0}),e.length===1)return e[0];var c=e.map(function(d){return d.shape});Fg(c,l);var h=s.concat(e,l);return o(e),h},r=e,a={axis:t};return z.runKernelFunc(i,r,null,Zl,a)}var Rt=U({concat_:E1});function D1(n){var t=O(n,"x","sigmoid"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.sigmoid(t);return r([a]),a},e,null,ec)}var Ji=U({sigmoid_:D1});function k1(n,t,e){var i=O(n,"x","slice");if(i.rank===0)throw new Error("Slicing scalar is not possible");var r=function(o,l){var u=Kc(i,t,e),c=u[0],h=u[1];return ag(i,c,h),l([i]),o.slice(i,c,h)},a={x:i},s={begin:t,size:e};return z.runKernelFunc(r,a,null,Xu,s)}var ze=U({slice_:k1});function F1(n){var t=O(n,"x","tanh"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.tanh(t);return r([a]),a},e,null,cc)}var Xs=U({tanh_:F1});function W1(n,t,e,i,r,a){var s=O(n,"forgetBias","basicLSTMCell"),o=O(t,"lstmKernel","basicLSTMCell"),l=O(e,"lstmBias","basicLSTMCell"),u=O(i,"data","basicLSTMCell"),c=O(r,"c","basicLSTMCell"),h=O(a,"h","basicLSTMCell"),d=Rt([u,h],1),p=We(d,o),f=fe(p,l),m=f.shape[0],g=f.shape[1]/4,v=[m,g],b=ze(f,[0,0],v),w=ze(f,[0,g],v),S=ze(f,[0,g*2],v),L=ze(f,[0,g*3],v),N=fe(J(Ji(b),Xs(w)),J(c,Ji(fe(s,S)))),C=J(Xs(N),Ji(L));return[N,C]}var U1=U({basicLSTMCell_:W1});function B1(n,t,e){var i=O(n,"x","batchToSpaceND"),r=t.reduce(function(l,u){return l*u});E(i.rank>=1+t.length,function(){return"input rank is "+i.rank+" but should be > than blockShape.length "+t.length}),E(e.length===t.length,function(){return"crops.length is "+e.length+" but should be equal to blockShape.length "+t.length}),E(i.shape[0]%r===0,function(){return"input tensor batch is "+i.shape[0]+" but is not divisible by the product of "+("the elements of blockShape "+t.join(" * ")+" === "+r)});var a=function(l){return l.batchToSpaceND(i,t,e)},s={x:i},o={blockShape:t,crops:e};return z.runKernelFunc(a,s,null,Kl,o)}var Js=U({batchToSpaceND_:B1});function z1(n){var t;return n.rank===0||n.rank===1?t=V(n,[1,1,1,n.size]):n.rank===2?t=V(n,[1,1,n.shape[0],n.shape[1]]):n.rank===3?t=V(n,[1,n.shape[0],n.shape[1],n.shape[2]]):t=n,t}function P1(n,t,e,i,r,a){a==null&&(a=.001);var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;i!=null&&(c=O(i,"offset","batchNorm")),E(o.rank===l.rank,function(){return"Batch normalization gradient requires mean and variance to have equal ranks."}),E(c==null||o.rank===c.rank,function(){return"Batch normalization gradient requires mean and offset to have equal ranks."}),E(u==null||o.rank===u.rank,function(){return"Batch normalization gradient requires mean and scale to have equal ranks."});var h=z1(s),d=function(g,v){return v([h,o,l,u]),g.batchNorm(h,Zs(o),Zs(l),Zs(c),Zs(u),a)},p={x:h,scale:u,offset:c,mean:o,variance:l},f={varianceEpsilon:a},m=z.runKernelFunc(d,p,null,fu,f);return V(m,s.shape)}function Zs(n){return n==null?null:n.rank===0?V(n,[n.size]):n.rank===1?n:n.rank===2?V(n,[1,1,n.shape[0],n.shape[1]]):n.rank===3?V(n,[1,n.shape[0],n.shape[1],n.shape[2]]):n}var Va=U({batchNorm_:P1});function _1(n,t,e,i,r,a){var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;return i!=null&&(c=O(i,"offset","batchNorm")),E(s.rank===2,function(){return"Error in batchNorm2D: x must be rank 2 but got rank "+(s.rank+".")}),E(o.rank===2||o.rank===1,function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but "+("got rank "+o.rank+".")}),E(l.rank===2||l.rank===1,function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 "+("but got rank "+l.rank+".")}),u!=null&&E(u.rank===2||u.rank===1,function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 "+("but got rank "+u.rank+".")}),c!=null&&E(c.rank===2||c.rank===1,function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 "+("but got rank "+c.rank+".")}),Va(s,o,l,c,u,a)}var M1=U({batchNorm2d_:_1});function H1(n,t,e,i,r,a){var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;return i!=null&&(c=O(i,"offset","batchNorm")),E(s.rank===3,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+(s.rank+".")}),E(o.rank===3||o.rank===1,function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but "+("got rank "+o.rank+".")}),E(l.rank===3||l.rank===1,function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 "+("but got rank "+l.rank+".")}),u!=null&&E(u.rank===3||u.rank===1,function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 "+("but got rank "+u.rank+".")}),c!=null&&E(c.rank===3||c.rank===1,function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 "+("but got rank "+c.rank+".")}),Va(s,o,l,c,u,a)}var V1=U({batchNorm3d_:H1});function q1(n,t,e,i,r,a){var s=O(n,"x","batchNorm"),o=O(t,"mean","batchNorm"),l=O(e,"variance","batchNorm"),u;r!=null&&(u=O(r,"scale","batchNorm"));var c;return i!=null&&(c=O(i,"offset","batchNorm")),E(s.rank===4,function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+(s.rank+".")}),E(o.rank===4||o.rank===1,function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but "+("got rank "+o.rank+".")}),E(l.rank===4||l.rank===1,function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 "+("but got rank "+l.rank+".")}),u!=null&&E(u.rank===4||u.rank===1,function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 "+("but got rank "+u.rank+".")}),c!=null&&E(c.rank===4||c.rank===1,function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 "+("but got rank "+c.rank+".")}),Va(s,o,l,c,u,a)}var G1=U({batchNorm4d_:q1});function Y1(n,t){var e=O(n,"broadcastTo","x"),i=e.shape;if(t.some(function(d){return!(d>0)||d%1!==0}))throw new Error("broadcastTo(): Invalid broadcast shape ["+t+"].");if(t.lengthe.rank){for(var r=e.shape.slice();r.length=0;o--)if(a[o]===t[o])s[o]=1;else if(e.shape[o]!==1)throw new Error("broadcastTo(): ["+i+"] cannot be broadcast to ["+t+"].");var l=s.map(function(d,p){return d>1?p:-1}).filter(function(d){return d>=0});if(l.length===0)return $i(e);var u=function(d){return d.tile(e,s)},c={x:e},h={shape:t,inputShape:a};return z.runKernelFunc(u,c,null,$l,h)}var Qs=U({broadcastTo_:Y1});function j1(n){var t=O(n,"x","ceil"),e={x:t};return z.runKernelFunc(function(i){return i.ceil(t)},e,null,Xl)}var Ug=U({ceil_:j1});function K1(n,t,e){var i=O(n,"x","clipByValue");E(t<=e,function(){return"Error in clip: min ("+t+") must be "+("less than or equal to max ("+e+").")});var r={x:i},a={clipValueMin:t,clipValueMax:e};return z.runKernelFunc(function(s,o){var l=s.clip(i,t,e);return o([i]),l},r,null,Jl,a)}var Bg=U({clipByValue_:K1});function $1(n){return Rt(n,0)}var X1=U({concat1d_:$1});function J1(n,t){return Rt(n,t)}var Z1=U({concat2d_:J1});function Q1(n,t){return Rt(n,t)}var eN=U({concat3d_:Q1});function tN(n,t){return Rt(n,t)}var nN=U({concat4d_:tN});function iN(n,t,e,i,r,a,s){r===void 0&&(r="NHWC"),a===void 0&&(a=[1,1]);var o=O(n,"x","conv2d"),l=O(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=V(o,[1,o.shape[0],o.shape[1],o.shape[2]])),E(u.rank===4,function(){return"Error in conv2d: input must be rank 4, but got rank "+u.rank+"."}),E(l.rank===4,function(){return"Error in conv2d: filter must be rank 4, but got rank "+(l.rank+".")}),s!=null&&E(rt(i),function(){return"Error in conv2d: pad must be an integer when using, "+("dimRoundingMode "+s+" but got pad "+i+".")});var h=r==="NHWC"?u.shape[3]:u.shape[1];E(h===l.shape[2],function(){return"Error in conv2d: depth of input ("+h+") must match "+("input depth for filter "+l.shape[2]+".")}),E(Ht(e,a),function(){return"Error in conv2D: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+a+"'")});var d=function(g,v){var b=_a(r),w=Bn(u.shape,l.shape,e,a,i,s,!1,b),S=g.conv2d(u,l,w);return v([u,l]),S},p={x:u,filter:l},f={strides:e,pad:i,dataFormat:r,dilations:a,dimRoundingMode:s},m=z.runKernelFunc(d,p,null,Ql,f);return c?V(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Gr=U({conv2d_:iN});function rN(n,t,e,i,r,a,s){r===void 0&&(r="NWC"),a===void 0&&(a=1);var o=O(n,"x","conv1d"),l=O(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=V(o,[1,o.shape[0],o.shape[1]])),E(u.rank===3,function(){return"Error in conv1d: input must be rank 3, but got rank "+u.rank+"."}),E(l.rank===3,function(){return"Error in conv1d: filter must be rank 3, but got rank "+(l.rank+".")}),s!=null&&E(rt(i),function(){return"Error in conv1d: pad must be an integer when using, "+("dimRoundingMode "+s+" but got pad "+i+".")}),E(u.shape[2]===l.shape[1],function(){return"Error in conv1d: depth of input ("+u.shape[2]+") must match "+("input depth for filter "+l.shape[1]+".")}),E(Ht(e,a),function(){return"Error in conv1D: Either stride or dilation must be 1. "+("Got stride "+e+" and dilation '"+a+"'")}),E(r==="NWC",function(){return"Error in conv1d: got dataFormat of "+r+" but only NWC is currently supported."});var h=V(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=V(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=[1,e],f=[1,a],m="NHWC",g=Gr(d,h,p,i,m,f,s);return c?V(g,[g.shape[2],g.shape[3]]):V(g,[g.shape[0],g.shape[2],g.shape[3]])}var zg=U({conv1d_:rN});function aN(n,t,e,i,r,a,s){a===void 0&&(a="NHWC"),E(n.length===t.rank,function(){return"Length of inShape "+("("+n.length+") and rank of dy ("+t.rank+") must match")});var o=n,l=t,u=!1;t.rank===3&&(u=!0,l=V(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,n[0],n[1],n[2]]),E(o.length===4,function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+(o.length+".")}),E(l.rank===4,function(){return"Error in conv2dDerInput: dy must be rank 4, but got "+("rank "+l.rank)}),E(e.rank===4,function(){return"Error in conv2dDerInput: filter must be rank 4, but got "+("rank "+e.rank)});var c=a==="NHWC"?o[3]:o[1],h=a==="NHWC"?l.shape[3]:l.shape[1];E(c===e.shape[2],function(){return"Error in conv2dDerInput: depth of input ("+c+") must "+("match input depth for filter "+e.shape[2]+".")}),E(h===e.shape[3],function(){return"Error in conv2dDerInput: depth of output ("+h+") must "+("match output depth for filter "+e.shape[3]+".")}),s!=null&&E(rt(r),function(){return"Error in conv2dDerInput: pad must be an integer when using, "+("dimRoundingMode "+s+" but got pad "+r+".")});var d=function(g,v){var b=1,w=_a(a),S=Bn(o,e.shape,i,b,r,s,!1,w),L=g.conv2dDerInput(l,e,S);return v([l,e]),L},p={dy:l,filter:e},f={strides:i,pad:r,dataFormat:a,dimRoundingMode:s,inputShape:o},m=z.runKernelFunc(d,p,null,eu,f);return u?V(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var ih=U({conv2DBackpropInput_:aN});function sN(n,t,e,i,r,a){var s=O(n,"x","conv2dTranspose"),o=O(t,"filter","conv2dTranspose");return ih(e,s,o,i,r,"NHWC",a)}var Pg=U({conv2dTranspose_:sN});function oN(n,t,e,i,r,a){r===void 0&&(r="NDHWC"),a===void 0&&(a=[1,1,1]);var s=O(n,"x","conv3d"),o=O(t,"filter","conv3d"),l=s,u=!1;s.rank===4&&(u=!0,l=V(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),E(l.rank===5,function(){return"Error in conv3d: input must be rank 5, but got rank "+l.rank+"."}),E(o.rank===5,function(){return"Error in conv3d: filter must be rank 5, but got rank "+(o.rank+".")}),E(l.shape[4]===o.shape[3],function(){return"Error in conv3d: depth of input ("+l.shape[4]+") must match "+("input depth for filter "+o.shape[3]+".")}),E(Ht(e,a),function(){return"Error in conv3D: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+a+"'")}),E(r==="NDHWC",function(){return"Error in conv3d: got dataFormat of "+r+" but only NDHWC is currently supported."});var c=function(f,m){var g=Ma(l.shape,o.shape,e,a,i),v=f.conv3d(l,o,g);return m([l,o]),v},h={x:l,filter:o},d={strides:e,pad:i,dataFormat:r,dilations:a},p=z.runKernelFunc(c,h,null,tu,d);return u?V(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var lN=U({conv3d_:oN});function uN(n,t,e,i,r){E(n.length===t.rank,function(){return"Length of inShape "+("("+n.length+") and rank of dy ("+t.rank+") must match")});var a=n,s=t,o=!1;t.rank===4&&(o=!0,s=V(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),a=[1,n[0],n[1],n[2],n[3]]);var l=a[4],u=s.shape[4];E(a.length===5,function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+(a.length+".")}),E(s.rank===5,function(){return"Error in conv3dDerInput: dy must be rank 5, but got "+("rank "+s.rank)}),E(e.rank===5,function(){return"Error in conv3dDerInput: filter must be rank 5, but got "+("rank "+e.rank)}),E(l===e.shape[3],function(){return"Error in conv3dDerInput: depth of input ("+l+") must "+("match input depth for filter "+e.shape[3]+".")}),E(u===e.shape[4],function(){return"Error in conv3dDerInput: depth of output ("+u+") must "+("match output depth for filter "+e.shape[4]+".")});var c=function(f){var m=1,g=Ma(a,e.shape,i,m,r);return f.conv3dDerInput(s,e,g)},h={dy:s},d={pad:r},p=z.runKernelFunc(c,h,null,xf,d);return o?V(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var _g=U({conv3DBackpropInput_:uN});function cN(n,t,e,i,r){var a=O(n,"x","conv3dTranspose"),s=O(t,"filter","conv3dTranspose");return _g(e,a,s,i,r)}var hN=U({conv3dTranspose_:cN});function dN(n){var t=O(n,"x","cos"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.cos(t);return r([t]),a},e,null,nu)}var eo=U({cos_:dN});function pN(n){var t=O(n,"x","cosh"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.cosh(t);return r([t]),a},e,null,iu)}var rh=U({cosh_:pN});function fN(n,t,e,i){t===void 0&&(t=0),e===void 0&&(e=!1),i===void 0&&(i=!1);var r=O(n,"x","cumsum"),a=function(l,u){var c=rn([t],r.rank),h=r;c!=null&&(h=ut(r,c));var d=Un(1,r.rank)[0],p=l.cumsum(h,d,e,i);if(u([r]),c!=null){var f=Ks(c);p=ut(p,f)}return p},s={x:r},o={axis:t,exclusive:e,reverse:i};return z.runKernelFunc(a,s,null,ru,o)}var ah=U({cumsum_:fN});function mN(n,t,e){e===void 0&&(e="NHWC");var i=O(n,"x","depthToSpace"),r=e==="NHWC"?i.shape[1]:i.shape[2],a=e==="NHWC"?i.shape[2]:i.shape[3],s=e==="NHWC"?i.shape[3]:i.shape[1];E(r*t>=0,function(){return`Negative dimension size caused by overflow when multiplying `+r+" and "+t+` for depthToSpace with input shape `+i.shape}),E(a*t>=0,function(){return`Negative dimension size caused by overflow when multiplying `+a+" and "+t+` for depthToSpace with input shape - `+i.shape}),E(s%(t*t)===0,function(){return"Dimension size must be evenly divisible by "+t*t+" but is "+s+" for depthToSpace with input shape "+i.shape});var o=function(c){return c.depthToSpace(i,t,e)},l={x:i},u={blockSize:t,dataFormat:e};return z.runKernelFunc(o,l,null,Rf,u)}var Mg=U({depthToSpace_:mN});function gN(n,t,e,i,r,a,s){r===void 0&&(r="NHWC"),a===void 0&&(a=[1,1]);var o=O(n,"x","depthwiseConv2d"),l=O(t,"filter","depthwiseConv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=V(o,[1,o.shape[0],o.shape[1],o.shape[2]])),E(u.rank===4,function(){return"Error in depthwiseConv2d: input must be rank 4, but got "+("rank "+u.rank+".")}),E(l.rank===4,function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+(l.rank+".")}),E(u.shape[3]===l.shape[2],function(){return"Error in depthwiseConv2d: number of input channels "+("("+u.shape[3]+") must match the inChannels dimension in ")+("filter "+l.shape[2]+".")}),s!=null&&E(rt(i),function(){return"Error in depthwiseConv2d: pad must be an integer when using, "+("dimRoundingMode "+s+" but got pad "+i+".")});var h=function(m,g){a==null&&(a=[1,1]),E(Ht(e,a),function(){return"Error in depthwiseConv2d: Either strides or dilations must be "+("1. Got strides "+e+" and dilations '"+a+"'")});var v=Bn(u.shape,l.shape,e,a,i,s,!0),b=m.depthwiseConv2D(u,l,v);return g([u,l]),b},d={x:u,filter:l},p={strides:e,pad:i,dataFormat:r,dilations:a,dimRoundingMode:s},f=z.runKernelFunc(h,d,null,ru,p);return c?V(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var qa=U({depthwiseConv2d_:gN});function vN(n){var t=O(n,"x","diag"),e=function(r){var a=V(t,[t.size]),s=r.diag(a),o=n.shape.concat(n.shape);return V(s,o)},i={x:t};return z.runKernelFunc(e,i,null,Df)}var yN=U({diag_:vN});function bN(n,t,e,i,r,a){r===void 0&&(r=[1,1]),a===void 0&&(a="NHWC");var s=O(n,"x","dilation2d"),o=O(t,"filter","dilation2d");E(s.rank===3||s.rank===4,function(){return"Error in dilation2d: input must be rank 3 or 4, but got rank "+(s.rank+".")}),E(o.rank===3,function(){return"Error in dilation2d: filter must be rank 3, but got rank "+(o.rank+".")}),E(a==="NHWC",function(){return"Error in dilation2d: Only NHWC is currently supported, "+("but got dataFormat of "+a)});var l=s,u=!1;s.rank===3&&(l=V(s,[1,s.shape[0],s.shape[1],s.shape[2]]),u=!0);var c={x:l,filter:o},h={strides:e,pad:i,dilations:r},d=z.runKernel(au,c,h);return u?V(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Hg=U({dilation2d_:bN});function wN(n,t){for(var e=n.length,i=[],r=0;r1&&s===1&&i.unshift(a)}return i}function gt(n,t){for(var e=[],i=0;i1)&&e.unshift(a)}return e}function et(n,t){for(var e=[],i=Math.max(n.length,t.length),r=0;rt||i===n?e=!0:i=Ps(n,i+1);return i}function UN(n,t,e){for(var i=[],r=n.length,a=0;a0,function(){return"variableGrads() expects at least one of the input variables to "+("be trainable, but none of the "+a+" variables is ")+"trainable."});var s=!0,o=z.gradients(n,t,null,s),l=o.value,u=o.grads;E(u.some(function(h){return h!=null}),function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."}),E(l.rank===0,function(){return"The f passed in variableGrads(f) must return a scalar, but it "+("returned a rank-"+l.rank+" tensor")});var c={};return t.forEach(function(h,d){u[d]!=null&&(c[h.name]=u[d])}),r!=null&&r.forEach(function(h){return c[h.name]=null}),{value:l,grads:c}}function zn(n){return z.customGrad(n)}function ao(n){var t=n.filter(function(e){return e==null}).length;if(t>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function ix(n){var t=O(n,"x","neg"),e={x:t};return z.runKernelFunc(function(i){return i.neg(t)},e,null,Du)}var vt=U({neg_:ix});function rx(n){var t=O(n,"x","softplus"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.softplus(t);return r([t]),a},e,null,ec)}var uh=U({softplus_:rx});function ax(n){var t=O(n,"x","logSigmoid"),e=zn(function(i){var r=vt(uh(vt(i))),a=function(s){var o=J(s,Ji(vt(i)));return o};return{value:r,gradFunc:a}});return e(t)}var tv=U({logSigmoid_:ax});function sx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","max"),r=function(o,l){var u=Qe(t,i.shape),c=u,h=an(c,i.rank),d=i;h!=null&&(d=ut(i,h),c=Un(c.length,d.rank));var p=o.max(d,c);h!=null&&d.dispose();var f=p;if(e){var m=rn(f.shape,Qe(t,i.shape));f=V(f,m),p.dispose()}return l([i,f]),f},a={x:i},s={reductionIndices:t,keepDims:e};return z.runKernelFunc(r,a,null,Au,s)}var tr=U({max_:sx});function ox(n,t){var e,i=O(n,"a","sub"),r=O(t,"b","sub");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.subtract(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,oc)}var ge=U({sub_:ox});function lx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","sum");i.dtype==="bool"&&(i=ue(i,"int32"));var r=function(o,l){l([i]);var u=Qe(t,i.shape),c=an(u,i.rank),h=u,d=i;c!=null&&(d=ut(i,c),h=Un(h.length,i.rank));var p=o.sum(d,h);if(e){var f=rn(p.shape,u);p=V(p,f)}return p},a={x:i},s={axis:t,keepDims:e};return z.runKernelFunc(r,a,null,nc,s)}var Ae=U({sum_:lx});function ux(n,t){t===void 0&&(t=-1);var e=O(n,"logits","logSoftmax");if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. "+("Logits was rank "+e.rank+" and axis was "+t));var i=function(s,o){var l=!0,u=tr(n,t,!0),c=ge(n,u),h=ge(ue(c,"float32"),er(Ae(bn(c),t,l)));return o([h]),h},r={logits:e},a={axis:t};return z.runKernelFunc(i,r,null,Lu,a)}var nv=U({logSoftmax_:ux});function cx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","logSumExp"),r=Qe(t,i.shape),a=tr(i,r,!0),s=ge(i,a),o=bn(s),l=Ae(o,r),u=er(l),c=fe(V(a,u.shape),u);if(e){var h=rn(c.shape,r);return V(c,h)}return c}var ch=U({logSumExp_:cx});function hx(n,t){var e=O(n,"a","logicalAnd","bool"),i=O(t,"b","logicalAnd","bool");et(e.shape,i.shape);var r={a:e,b:i};return z.runKernelFunc(function(a){return a.logicalAnd(e,i)},r,null,jf)}var nr=U({logicalAnd_:hx});function dx(n){var t=O(n,"x","logicalNot","bool"),e={x:t};return z.runKernelFunc(function(i){return i.logicalNot(t)},e,null,Kf)}var so=U({logicalNot_:dx});function px(n,t){var e=O(n,"a","logicalOr","bool"),i=O(t,"b","logicalOr","bool");et(e.shape,i.shape);var r={a:e,b:i};return z.runKernelFunc(function(a){return a.logicalOr(e,i)},r,null,$f)}var hh=U({logicalOr_:px});function fx(n,t){var e=O(n,"a","logicalXor","bool"),i=O(t,"b","logicalXor","bool");return et(e.shape,i.shape),nr(hh(n,t),so(nr(n,t)))}var iv=U({logicalXor_:fx});function mx(n,t,e,i,r){var a=O(n,"x","maxPool"),s=1,o=a,l=!1;a.rank===3&&(l=!0,o=V(a,[1,a.shape[0],a.shape[1],a.shape[2]])),E(o.rank===4,function(){return"Error in maxPool: input must be rank 4 but got rank "+o.rank+"."}),E(Ht(e,s),function(){return"Error in maxPool: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+s+"'")}),r!=null&&E(rt(i),function(){return"Error in maxPool: pad must be an integer when using, "+("dimRoundingMode "+r+" but got pad "+i+".")});var u=function(p,f){var m=Vr(o.shape,t,e,1,i,r),g;return m.filterWidth===1&&m.filterHeight===1&&dn(m.inShape,m.outShape)?g=o.clone():g=p.maxPool(o,m),f([o,g]),g},c={x:o},h={filterSize:t,strides:e,pad:i,dimRoundingMode:r},d=z.runKernelFunc(u,c,null,Nu,h);return l?V(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var dh=U({maxPool_:mx});function gx(n,t,e,i,r,a,s){t===void 0&&(t=[1,1,1]),a===void 0&&(a="NDHWC"),s==null?s=[1,1,1]:At("dilations is deprecated, this field will be gone in v3.0.0.");var o=O(n,"x","maxPool3d"),l=o,u=!1;o.rank===4&&(u=!0,l=V(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),E(l.rank===5,function(){return"Error in maxPool3d: x must be rank 5 but got rank "+l.rank+"."}),E(a==="NDHWC",function(){return"Error in maxPool3d: Only NDHWC is currently supported, "+("but got dataFormat of "+a)}),E(Ht(e,s),function(){return"Error in maxPool3d: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+s+"'")}),r!=null&&E(rt(i),function(){return"Error in maxPool3d: pad must be an integer when using, "+("dimRoundingMode "+r+" but got pad "+i+".")});var c=function(f,m){s==null&&(s=[1,1,1]);var g=Ha(l.shape,t,e,s,i,r,a),v=f.maxPool3d(l,g);return m([l,v]),v},h={x:l},d={filterSize:t,strides:e,pad:i,dimRoundingMode:r,dataFormat:a,dilations:s},p=z.runKernelFunc(c,h,null,xu,d);return u?V(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var vx=U({maxPool3d_:gx});function yx(n,t,e,i,r){r===void 0&&(r=!1);var a=O(n,"x","maxPoolWithArgmax"),s={x:a},o={filterSize:t,strides:e,pad:i,includeBatchInIndex:r},l=z.runKernel(Qf,s,o);return{result:l[0],indexes:l[1]}}var bx=U({maxPoolWithArgmax_:yx});function ti(n,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=ti(n,"float32"),i=ti(n,"float32");return mi(e,i)}var r=Ur(ot(n),t);return z.makeTensor(r,n,t)}function Kr(n,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=Kr(n,"float32"),i=ti(n,"float32");return mi(e,i)}var r=Ac(ot(n),t);return z.makeTensor(r,n,t)}function wx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","mean"),r=Qe(t,i.shape),a=Ag(i.shape,r),s=a[1],o=ot(s),l=zn(function(u){var c=be(o),h=c.dtype===u.dtype?u:ue(u,c.dtype),d=Ie(h,c),p=Ae(d,t,e),f=function(m){var g=u.shape.slice();r.forEach(function(w){g[w]=1});var v=V(m,g),b=Ie(J(v,Kr(u.shape,"float32")),o);return b};return{value:p,gradFunc:f}});return l(i)}var Ya=U({mean_:wx});function Sx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","min"),r=function(o,l){var u=Qe(t,i.shape),c=u,h=an(c,i.rank),d=i;h!=null&&(d=ut(i,h),c=Un(c.length,i.rank));var p=o.min(d,c);h!=null&&d.dispose();var f=p;if(e){var m=rn(f.shape,u);f=V(p,m),p.dispose()}return l([i,f]),f},a={x:i},s={axis:t,keepDims:e};return z.runKernelFunc(r,a,null,Cu,s)}var oo=U({min_:Sx});function Lx(n,t){var e,i=O(n,"a","minimum"),r=O(t,"b","minimum");e=at(i,r),i=e[0],r=e[1],i.dtype==="bool"&&(i=ue(i,"int32"),r=ue(r,"int32")),et(i.shape,r.shape);var a=function(o,l){var u=o.minimum(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Ru)}var lo=U({minimum_:Lx});function Ix(n,t){var e,i=O(n,"a","mod"),r=O(t,"b","mod");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.mod(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Ou)}var ph=U({mod_:Ix});function Ax(n){var t=O(n,"x","square"),e={},i=[t],r=[];return z.runKernelFunc(function(a,s){return s([t]),a.square(t)},{x:t},null,"Square",e,i,r)}var Ye=U({square_:Ax});function Tx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1),n=O(n,"x","moments");var i=Qe(t,n.shape),r=Ya(n,i,e),a=r.shape;e||(a=rn(r.shape,i));var s=Ye(ge(ue(n,"float32"),V(r,a))),o=Ya(s,i,e);return{mean:r,variance:o}}var Nx=U({moments_:Tx});function xx(n,t,e,i){for(var r=O(t,"data","multiRNNCell"),a=za(e,"c","multiRNNCell"),s=za(i,"h","multiRNNCell"),o=r,l=[],u=0;u2)throw new Error("Rank of probabilities must be 1 or 2, but is "+s);e=e||Math.random();var o=s===1?V(r,[1,-1]):r,l=z.runKernelFunc(function(u){return u.multinomial(o,i,t,e)},{logits2D:o});return s===1?V(l,[l.size]):l}var Ox=U({multinomial_:Rx});function Ex(n,t){var e,i=O(n,"a","notEqual"),r=O(t,"b","notEqual");e=at(i,r),i=e[0],r=e[1],et(i.shape,r.shape);var a=function(o){return o.notEqual(i,r)},s={a:i,b:r};return z.runKernelFunc(a,s,null,em)}var uo=U({notEqual_:Ex});function Dx(n){var t=O(n,"input","real"),e=function(r){return r.real(t)},i={input:t};return z.runKernelFunc(e,i,null,sm)}var ja=U({real_:Dx});function kx(n){var t=O(n,"x","onesLike"),e=function(r,a){if(t.dtype==="complex64"){var s=fh(ja(t)),o=Ee(io(t));return mi(s,o)}return r.onesLike(t)},i={x:t};return z.runKernelFunc(e,i,null,ku)}var fh=U({onesLike_:kx});function Fx(n,t){var e=O(n,"v1","outerProduct"),i=O(t,"v2","outerProduct");E(e.rank===1&&i.rank===1,function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+(e.rank+" and "+i.rank+".")});var r=V(e,[-1,1]),a=V(i,[1,-1]);return We(r,a)}var Wx=U({outerProduct_:Fx});function Ux(n,t,e){e===void 0&&(e=0);var i=O(n,"x","pad");if(i.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var r=function(o,l){return l([i]),o.pad(i,t,e)},a={paddings:t,constantValue:e},s={x:i};return z.runKernelFunc(r,s,null,Wu,a)}var ir=U({pad_:Ux});function Bx(n,t,e){return e===void 0&&(e=0),E(t.length===2,function(){return"Invalid number of paddings. Must be length of 2."}),ir(n,[t],e)}var zx=U({pad1d_:Bx});function Px(n,t,e){return e===void 0&&(e=0),E(t.length===2&&t[0].length===2&&t[1].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),ir(n,t,e)}var _x=U({pad2d_:Px});function Mx(n,t,e){return e===void 0&&(e=0),E(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),ir(n,t,e)}var Hx=U({pad3d_:Mx});function Vx(n,t,e){return e===void 0&&(e=0),E(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),ir(n,t,e)}var qx=U({pad4d_:Vx});function Gx(n,t,e){var i=O(n,"x","spaceToBatchND");E(i.rank>=1+t.length,function(){return"input rank "+i.rank+" should be > than [blockShape] "+t.length}),E(e.length===t.length,function(){return"paddings.shape[0] "+e.length+" must be equal to [blockShape] "+t.length}),E(i.shape.reduce(function(o,l,u){return u>0&&u<=t.length?o&&(l+e[u-1][0]+e[u-1][1])%t[u-1]===0:o},!0),function(){return"input spatial dimensions "+i.shape.slice(1)+" with paddings "+e.toString()+" must be divisible by blockShapes "+t.toString()});var r=function(o){return o.spaceToBatchND(i,t,e)},a={x:i},s={blockShape:t,paddings:e};return z.runKernelFunc(r,a,null,ic,s)}var co=U({spaceToBatchND_:Gx});function Kx(n,t,e,i,r,a){r==null&&(r=[1,1]),a==null&&(a=1),i===0&&(i="valid");var s=O(n,"x","maxPool"),o=s,l=!1;s.rank===3&&(l=!0,o=V(s,[1,s.shape[0],s.shape[1],s.shape[2]])),E(Ht(a,r),function(){return"Error in pool: Either strides or dilations must be 1. "+("Got strides "+a+" and dilations '"+r+"'")});var u=Vr(o.shape,t,a,r,i),c=[u.dilationHeight,u.dilationWidth],h;i==="same"?h=jx([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];var d=c[0]===1&&c[1]===1,p=Yx([u.inHeight,u.inWidth],c,h),f=p[0],m=p[1],g=d?i:"valid",v=d?o:co(o,c,f),b=e==="avg"?function(){return th(v,t,a,g)}:function(){return dh(v,t,a,g)},w=b(),S=d?w:Js(w,c,m);return l?V(S,[S.shape[1],S.shape[2],S.shape[3]]):S}function Yx(n,t,e){var i=e.map(function(c){return c[0]}),r=e.map(function(c){return c[1]}),a=n.concat(i,r),s=t.map(function(c,h){return(c-a[h]%c)%c}),o=r.map(function(c,h){return c+s[h]}),l=t.map(function(c,h){return[i[h],o[h]]}),u=t.map(function(c,h){return[0,s[h]]});return[l,u]}function jx(n,t){var e=n.map(function(s,o){return s+(s-1)*(t[o]-1)}),i=e.map(function(s){return s-1}),r=i.map(function(s){return Math.floor(s/2)}),a=i.map(function(s,o){return s-r[o]});return i.map(function(s,o){return[r[o],a[o]]})}var rv=U({pool_:Kx});function $x(n,t){var e,i=O(n,"base","pow"),r=O(t,"exp","pow");e=at(i,r),i=e[0],r=e[1];var a={a:i,b:r},s=function(o,l){var u=o.pow(i,r);return l([i,r,u]),u};return z.runKernelFunc(s,a,null,Uu)}var ni=U({pow_:$x});function Xx(n,t){var e=O(n,"x","prelu"),i=O(t,"alpha","prelu"),r=function(s,o){var l=s.prelu(e,i);return o([e,i]),l},a={x:e,alpha:i};return z.runKernelFunc(r,a,null,Bu)}var mh=U({prelu_:Xx});function Jx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","prod"),r=function(o){i.dtype==="bool"&&(i=ue(i,"int32"));var l=Qe(t,i.shape),u=an(l,i.rank),c=l,h=i;u!=null&&(h=ut(i,u),c=Un(c.length,i.rank));var d=o.prod(h,c);if(e){var p=rn(d.shape,l);d=V(d,p)}return d},a={x:i},s={axis:t,keepDims:e};return z.runKernelFunc(r,a,null,rm,s)}var av=U({prod_:Jx});function Zx(n,t,e){var i=ot(n),r=null;if(e==null||e==="float32")r=new Float32Array(i);else if(e==="int32")r=new Int32Array(i);else if(e==="bool")r=new Uint8Array(i);else throw new Error("Unknown data type "+e);for(var a=0;a>>0,d-=l,d*=l,l=d>>>0,d-=l,l+=d*4294967296}return(l>>>0)*23283064365386963e-26};return u}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.alea=s})($r,n,!1)}),tC=rr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var h=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^h^h>>>8},o===(o|0)?l.x=o:u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor128=s})($r,n,!1)}),nC=rr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(h^h<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,o===(o|0)?l.x=o:u+=o;for(var c=0;c>>4),l.next()}function a(o,l){return l.x=o.x,l.y=o.y,l.z=o.z,l.w=o.w,l.v=o.v,l.d=o.d,l}function s(o,l){var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorwow=s})($r,n,!1)}),iC=rr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.x,h=l.i,d,p;return d=c[h],d^=d>>>7,p=d^d<<24,d=c[h+1&7],p^=d^d>>>10,d=c[h+3&7],p^=d^d>>>3,d=c[h+4&7],p^=d^d<<7,d=c[h+7&7],d=d^d<<13,p^=d^d<<9,c[h]=p,l.i=h+1&7,p};function u(c,h){var d,p,f=[];if(h===(h|0))p=f[0]=h;else for(h=""+h,d=0;d0;--d)c.next()}u(l,o)}function a(o,l){return l.x=o.x.slice(),l.i=o.i,l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.x&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorshift7=s})($r,n,!1)}),rC=rr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.w,h=l.X,d=l.i,p,f;return l.w=c=c+1640531527|0,f=h[d+34&127],p=h[d=d+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,f=h[d]=f^p,l.i=d,f+(c^c>>>16)|0};function u(c,h){var d,p,f,m,g,v=[],b=128;for(h===(h|0)?(p=h,h=null):(h=h+"\0",p=0,b=Math.max(b,h.length)),f=0,m=-32;m>>15,p^=p<<4,p^=p>>>13,m>=0&&(g=g+1640531527|0,d=v[m&127]^=p+g,f=d==0?f+1:0);for(f>=128&&(v[(h&&h.length||0)&127]=-1),f=127,m=4*128;m>0;--m)p=v[f+34&127],d=v[f=f+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,v[f]=p^d;c.w=g,c.X=v,c.i=f}u(l,o)}function a(o,l){return l.i=o.i,l.w=o.w,l.X=o.X.slice(),l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.X&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor4096=s})($r,n,!1)}),aC=rr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.b,d=l.c,p=l.d,f=l.a;return h=h<<25^h>>>7^d,d=d-p|0,p=p<<24^p>>>8^f,f=f-h|0,l.b=h=h<<20^h>>>12^d,l.c=d=d-p|0,l.d=p<<16^d>>>16^f,l.a=f-h|0},l.a=0,l.b=0,l.c=2654435769|0,l.d=1367130551,o===Math.floor(o)?(l.a=o/4294967296|0,l.b=o|0):u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.tychei=s})($r,n,!1)}),ar=rr(function(n){(function(t,e){var i=this,r=256,a=6,s=52,o="random",l=e.pow(r,a),u=e.pow(2,s),c=u*2,h=r-1,d;function p(S,L,N){var C=[];L=L==!0?{entropy:!0}:L||{};var R=v(g(L.entropy?[S,w(t)]:S??b(),3),C),D=new f(C),k=function(){for(var W=D.g(a),F=l,P=0;W=c;)W/=2,F/=2,P>>>=1;return(W+P)/F};return k.int32=function(){return D.g(4)|0},k.quick=function(){return D.g(4)/4294967296},k.double=k,v(w(D.S),t),(L.pass||N||function(W,F,P,H){return H&&(H.S&&m(H,D),W.state=function(){return m(D,{})}),P?(e[o]=W,F):W})(k,R,"global"in L?L.global:this==e,L.state)}e["seed"+o]=p;function f(S){var L,N=S.length,C=this,R=0,D=C.i=C.j=0,k=C.S=[];for(N||(S=[N++]);R=1||o===0);var l=Math.sqrt(-2*Math.log(o)/o);e=this.mean+this.stdDev*a*l,i=this.mean+this.stdDev*s*l,(!this.truncated||this.isValidTruncated(e))&&(r=!0)}return(!this.truncated||this.isValidTruncated(i))&&(this.nextVal=this.convertValue(i)),this.convertValue(e)},n.prototype.convertValue=function(t){return this.dtype==null||this.dtype==="float32"?t:Math.round(t)},n.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},n}(),oC=function(){function n(t,e,i,r){this.alpha=t,this.beta=1/e,this.dtype=i;var a=r||Math.random();this.randu=gh(a.toString()),this.randn=new vh(0,1,i,!1,this.randu()),t<1?this.d=t+2/3:this.d=t-1/3,this.c=1/Math.sqrt(9*this.d)}return n.prototype.nextValue=function(){for(var t,e,i,r,a,s;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,t=r*r,e=1-.331*t*t,i=.5*t+this.d*(1-s+Math.log(s)),a=this.randu(),a1;if(s||o||l)return ti([0],i);var u=Math.abs(Math.ceil((t-n)/e)),c=Ur(u,i);t0?o+l:o});t[a]=n.shape[e]-s}E(n.shape[e]===t.reduce(function(o,l){return o+l}),function(){return"The sum of sizes must match the size of the axis dimension."}),i=t}return i}function jC(n,t,e){e===void 0&&(e=0);var i=O(n,"x","split"),r=function(o,l){var u=Qe(e,i.shape)[0],c=pv(i,t,u);return o.split(i,c,u)},a={x:i},s={numOrSizeSplits:t,axis:e};return z.runKernelFunc(r,a,null,rc,s)}var Jr=U({split_:jC});function KC(n,t){E(n.dtype==="float32",function(){return"The dtype for rfft() must be real value but got "+n.dtype});var e=n.shape[n.shape.length-1],i=n.size/e,r;if(t!=null&&te){var o=n.shape.map(function(v){return v});o[n.shape.length-1]=t-e,r=Rt([n,ti(o)],n.shape.length-1),e=t}else r=n;var l=Ee(r),u=V(mi(r,l),[i,e]),c=ho(u),h=Math.floor(e/2)+1,d=ja(c),p=io(c),f=Jr(d,[h,e-h],d.shape.length-1),m=Jr(p,[h,e-h],p.shape.length-1),g=r.shape.slice();return g[r.shape.length-1]=h,V(mi(f[0],m[0]),g)}var po=U({rfft_:KC});function $C(n){var t=O(n,"x","sqrt"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.sqrt(t);return r([t]),a},e,null,tc)}var Vt=U({sqrt_:$C});function XC(n,t){var e,i=O(n,"a","squaredDifference"),r=O(t,"b","squaredDifference");e=at(i,r),i=e[0],r=e[1],et(i.shape,r.shape);var a=function(l,u){var c=l.squaredDifference(i,r);return u([i,r]),c},s={a:i,b:r},o={};return z.runKernelFunc(a,s,null,sc,o)}var fo=U({squaredDifference_:XC});function JC(n,t){var e=O(n,"x","squeeze");return V(e,wm(e.shape,t).newShape)}var mo=U({squeeze_:JC});function ZC(n,t){t===void 0&&(t=0);var e=za(n,"tensors","stack");if(E(e.length>=1,function(){return"Pass at least one tensor to tf.stack"}),e.length===1)return wn(e[0],t);var i=e[0].rank,r=e[0].shape,a=e[0].dtype;E(t<=i,function(){return"Axis must be <= rank of the tensor"}),e.forEach(function(o){Be(r,o.shape,"All tensors passed to stack must have matching shapes"),E(a===o.dtype,function(){return"All tensors passed to stack must have matching dtypes"})});var s=e.map(function(o){return wn(o,t)});return Rt(s,t)}var sr=U({stack_:ZC});function QC(n,t){t===void 0&&(t=0);var e=O(n,"x","step"),i={x:e},r={alpha:t};return z.runKernelFunc(function(a){return a.step(e,t)},i,null,mc,r)}var Zr=U({step_:QC});function eR(n,t,e,i,r,a,s,o,l){r===void 0&&(r=0),a===void 0&&(a=0),s===void 0&&(s=0),o===void 0&&(o=0),l===void 0&&(l=0);var u=O(n,"x","stridedSlice"),c=function(p){i==null&&(i=new Array(t.length));var f=js(s);if(f.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(s!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(s!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");var m=u.rank-t.length,g=js(o),v=u.shape.slice();g.forEach(function(W){t[W]=0,e[W]=1,v.splice(W,0,1)}),u=V(u,v);var b=mg(u.shape,f,m,t,e,i,r,a,s),w=b.begin,S=b.end,L=b.strides;t=w,e=S,i=L;var N=js(l);N.forEach(function(W){e[W]=t[W]+1,i[W]=1});var C=sg(t,e,i),R=C.filter(function(W,F){return N.indexOf(F)===-1}),D=i.every(function(W){return W===1});if(D)return V(ze(u,t,C),R);var k=p.stridedSlice(u,t,e,i);return V(k,R)},h={x:u},d={begin:t,end:e,strides:i,beginMask:r,endMask:a,ellipsisMask:s,newAxisMask:o,shrinkAxisMask:l};return z.runKernelFunc(c,h,null,dm,d)}var fv=U({stridedSlice_:eR});function tR(n){var t=O(n,"x","tan"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.tan(t);return r([t]),a},e,null,lc)}var mv=U({tan_:tR});function Xa(n,t,e){if(Yi(n),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");var i=Fn(n,e);if(i.length!==2&&i.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return gi(n,t,i,e)}function nR(n,t,e){if(Yi(n),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");var i=Fn(n,e);if(i.length!==4&&i.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return gi(n,t,i,e)}function iR(n,t,e){if(Yi(n),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");var i=Fn(n,e);if(i.length!==5&&i.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return gi(n,t,i,e)}function rR(n,t,e){if(Yi(n),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");var i=Fn(n,e);if(i.length!==6&&i.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||i,gi(n,t,i,e)}function aR(n,t,e){t===void 0&&(t=1),e===void 0&&(e=!0);var i=O(n,"x","topk");if(i.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");var r=i.shape[i.shape.length-1];if(t>r)throw new Error("'k' passed to topk() must be <= the last dimension ("+r+") "+("but got "+t));var a={x:i},s={k:t,sorted:e},o=z.runKernelFunc(function(c){return c.topk(i,t,e)},a,null,pm,s),l=o[0],u=o[1];return{values:l,indices:u}}var gv=U({topk_:aR});function sR(n,t,e,i,r){if(t===void 0&&(t=0),e===void 0&&(e=1),i!=null&&i==="bool")throw new Error("Unsupported data type $ { dtype }");for(var a=new vh(t,e,i,!0,r),s=Wn(n,i),o=0;o0,function(){return"The input tensor must be at least 1D"});var i={x:e},r={axis:t},a=z.runKernel(fm,i,r),s=a[0],o=a[1];return{values:s,indices:o}}var vv=U({unique_:lR});function uR(n,t,e){var i=O(n,"x","unsortedSegmentSum"),r=O(t,"segmentIds","unsortedSegmentSum","int32");E(rt(e),function(){return"numSegments must be of dtype int"});var a={x:i,segmentIds:r},s={numSegments:e},o=function(l,u){var c=l.unsortedSegmentSum(i,r,e);return u([r]),c};return z.runKernelFunc(o,a,null,pc,s)}var Ah=U({unsortedSegmentSum_:uR});function cR(n,t){t===void 0&&(t=0);var e=O(n,"x","unstack");E(t>=-e.shape.length&&t0,function(){return"mask cannot be scalar"}),Be(o.slice(a,a+s),r.shape,"mask's shape must match the first K dimensions of tensor's shape,"),l=1,u=a;u2)throw new Error("sparseIndices should be a scalar, vector, or matrix,"+(" but got shape "+n.shape+"."));var r=n.rank>0?n.shape[0]:1,a=n.rank>1?n.shape[1]:1;if(e.length!==a)throw new Error("outputShape has incorrect number of elements:,"+(" "+e.length+", should be: "+a+"."));var s=t.size;if(!(t.rank===0||t.rank===1&&s===r))throw new Error("sparseValues has incorrect shape "+(t.shape+", should be [] or ["+r+"]"));if(t.dtype!==i.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function UR(n,t,e,i){i===void 0&&(i=0);var r=O(n,"sparseIndices","sparseToDense","int32"),a=O(t,"sparseValues","sparseToDense"),s=O(i,"defaultValue","sparseToDense",a.dtype);WR(r,a,e,s);var o={sparseIndices:r,sparseValues:a,defaultValue:s},l={outputShape:e};return z.runKernelFunc(function(u){return u.sparseToDense(r,a,e,s)},o,null,hm,l)}var BR=U({sparseToDense_:UR});function zR(n,t){var e=O(t,"indices","gatherND","int32"),i=O(n,"x","gatherND"),r=function(s){return s.gatherND(i,e)},a={params:i,indices:e};return z.runKernelFunc(r,a,null,_f)}var PR=U({gatherND_:zR});function _R(n,t){if(t==null)return n.shape.slice();if(dn(n.shape,t))return t;if(n.shape.length===t.length){for(var e=[],i=0;i=0&&t<1,function(){return"rate must be a float in the range [0, 1), but got "+t+"."}),t===0)return n instanceof Y?r.clone():r;var a=_R(r,e),s=1-t,o=Ie(to(fe(sv(a,0,1,"float32",i),s)),s);return J(r,o)}var HR=U({dropout_:MR});function Uv(n){return Math.floor(Math.pow(2,Math.ceil(Math.log(n)/Math.log(2))))}function Th(n,t,e){for(var i=1-n%2,r=new Float32Array(n),a=0;a1,function(){return"inTopK() expects the predictions to be of rank 2 or higher, "+("but got "+i.rank)}),E(i.rank-1===r.rank,function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+(i.rank+" and targets rank "+r.rank)}),Be(i.shape.slice(0,i.shape.length-1),r.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),a=i.shape[i.shape.length-1],E(e>0&&e<=a,function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last "+("dimension ("+a+"), but got "+e)}),[4,i.data()];case 1:return s=v.sent(),[4,r.data()];case 2:for(o=v.sent(),l=[s.length/a,a],u=l[0],c=l[1],h=Bs("bool",u),d=0;d0&&(e=Ae(e,i)),V(e,n.shape)}function wo(n,t,e){if(t==="linear")return n;if(t==="relu")return Ka(n);if(t==="elu")return ah(n);if(t==="relu6")return bh(n);if(t==="prelu")return mh(n,e);throw new Error("Unknown fused activation "+t+".")}var So=function(n,t){var e=n>0;return!e||t==="linear"};function YR(n){var t=n.x,e=n.filter,i=n.strides,r=n.pad,a=n.dataFormat,s=a===void 0?"NHWC":a,o=n.dilations,l=o===void 0?[1,1]:o,u=n.dimRoundingMode,c=n.bias,h=n.activation,d=h===void 0?"linear":h,p=n.preluActivationWeights;if(d=d||"linear",So(z.state.gradientDepth,d)===!1){var f=Gr(t,e,i,r,s,l,u);return c!=null&&(f=fe(f,c)),wo(f,d,p)}var m=O(t,"x","conv2d"),g=O(e,"filter","conv2d"),v=m,b=!1;m.rank===3&&(b=!0,v=V(m,[1,m.shape[0],m.shape[1],m.shape[2]])),E(v.rank===4,function(){return"Error in fused conv2d: input must be rank 4, but got rank "+(v.rank+".")}),E(g.rank===4,function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+(g.rank+".")}),u!=null&&E(rt(r),function(){return"Error in fused conv2d: pad must be an integer when using, "+("dimRoundingMode "+u+" but got pad "+r+".")}),E(v.shape[3]===g.shape[2],function(){return"Error in conv2d: depth of input ("+v.shape[3]+") must match "+("input depth for filter "+g.shape[2]+".")}),E(Ht(i,l),function(){return"Error in conv2D: Either strides or dilations must be 1. "+("Got strides "+i+" and dilations '"+l+"'")}),E(s==="NHWC",function(){return"Error in conv2d: got dataFormat of "+s+" but only NHWC is currently supported."});var w=Bn(v.shape,g.shape,i,l,r,u),S;c!=null&&(S=O(c,"bias","fused conv2d"),S=at(S,m)[0],et(w.outShape,S.shape));var L;p!=null&&(L=O(p,"prelu weights","fused conv2d"));var N=function(F,P){var H=P,_=H[0],j=H[1],K=H[2],q=H[3],G=yo(F,K,d);E(Si(l),function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 "+("are not yet supported in gradients. Got dilations '"+l+"'")});var Z=nh(j.shape,G,_,i,r),X=Nh(j,G,_.shape,i,r),ee=[Z,X];if(q!=null){var ne=bo(q,G);ee.push(ne)}return ee},C=function(F){var P=F.fusedConv2d({input:v,filter:g,convInfo:w,bias:S,activation:d,preluActivationWeights:L});return P},R={x:v,filter:g,bias:S,preluActivationWeights:L},D={strides:i,pad:r,dataFormat:s,dilations:l,dimRoundingMode:u,activation:d};if(c==null){var k=zn(function(F,P,H){var _=z.runKernelFunc(C,R,null,yc,D);return H([P,F,_]),b&&(_=V(_,[_.shape[1],_.shape[2],_.shape[3]])),{value:_,gradFunc:N}});return k(v,g)}else{var W=zn(function(F,P,H,_){var j=z.runKernelFunc(C,R,null,yc,D);return _([P,F,j,H]),b&&(j=V(j,[j.shape[1],j.shape[2],j.shape[3]])),{value:j,gradFunc:N}});return W(v,g,S)}}var jR=U({fusedConv2d_:YR});function KR(n,t,e,i){var r=n;n.rank===3&&(r=V(n,[1,n.shape[0],n.shape[1],n.shape[2]]));var a=t;a.rank===3&&(a=V(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var s=function(l){return l.depthwiseConv2DDerFilter(r,a,i)},o={x:r,dy:a};return z.runKernelFunc(s,o,null,Of)}var Bv=U({depthwiseConv2dNativeBackpropFilter_:KR});function $R(n,t,e,i){var r=t,a=!1;t.rank===3&&(a=!0,r=V(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var s=function(u){return u.depthwiseConv2DDerInput(r,e,i)},o={dy:r},l=z.runKernelFunc(s,o,null,Ef);return a?V(l,[l.shape[1],l.shape[2],l.shape[3]]):l}var zv=U({depthwiseConv2dNativeBackpropInput_:$R});function XR(n){var t=n.x,e=n.filter,i=n.strides,r=n.pad,a=n.dataFormat,s=a===void 0?"NHWC":a,o=n.dilations,l=o===void 0?[1,1]:o,u=n.dimRoundingMode,c=n.bias,h=n.activation,d=h===void 0?"linear":h,p=n.preluActivationWeights;if(So(z.state.gradientDepth,d)===!1){var f=qa(t,e,i,r,s,l,u);return c!=null&&(f=fe(f,c)),wo(f,d,p)}var m=O(t,"x","depthwiseConv2d"),g=O(e,"filter","depthwiseConv2d"),v=m,b=!1;m.rank===3&&(b=!0,v=V(m,[1,m.shape[0],m.shape[1],m.shape[2]])),E(v.rank===4,function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got "+("rank "+v.rank+".")}),E(g.rank===4,function(){return"Error in fused depthwiseConv2d: filter must be rank 4, "+("but got rank "+g.rank+".")}),E(v.shape[3]===g.shape[2],function(){return"Error in fused depthwiseConv2d: number of input channels "+("("+v.shape[3]+") must match the inChannels dimension in ")+("filter "+g.shape[2]+".")}),l==null&&(l=[1,1]),E(Ht(i,l),function(){return"Error in fused depthwiseConv2d: Either strides or dilations must "+("be 1. Got strides "+i+" and dilations '"+l+"'")}),u!=null&&E(rt(r),function(){return"Error in fused depthwiseConv2d: pad must be an integer when "+("using dimRoundingMode "+u+" but got pad "+r+".")});var w=Bn(v.shape,g.shape,i,l,r,u,!0),S;c!=null&&(S=O(c,"bias","fused conv2d"),S=at(S,m)[0],et(w.outShape,S.shape));var L;p!=null&&(L=O(p,"prelu weights","fused depthwiseConv2d"));var N=function(F,P){E(Si(l),function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations "+("'"+l+"'")});var H=P[0],_=P[1],j=P[2],K=P[3],q=yo(F,j,d),G=zv(_.shape,q,H,w),Z=Bv(_,q,H.shape,w);if(K!=null){var X=bo(S,q);return[G,Z,X]}return[G,Z]},C=function(F){var P=F.fusedDepthwiseConv2D({input:v,filter:g,convInfo:w,bias:S,activation:d,preluActivationWeights:L});return P},R={x:v,filter:g,bias:S,preluActivationWeights:L},D={strides:i,pad:r,dataFormat:s,dilations:l,dimRoundingMode:u,activation:d};if(c==null){var k=zn(function(F,P,H){var _=z.runKernelFunc(C,R,null,bc,D);return H([P,F,_]),b&&(_=V(_,[_.shape[1],_.shape[2],_.shape[3]])),{value:_,gradFunc:N}});return k(v,g)}else{var W=zn(function(F,P,H,_){var j=z.runKernelFunc(C,R,null,bc,D);return _([P,F,j,H]),b&&(j=V(j,[j.shape[1],j.shape[2],j.shape[3]])),{value:j,gradFunc:N}});return W(v,g,S)}}var JR=U({fusedDepthwiseConv2d_:XR});function ZR(n){var t,e=n.a,i=n.b,r=n.transposeA,a=r===void 0?!1:r,s=n.transposeB,o=s===void 0?!1:s,l=n.bias,u=n.activation,c=u===void 0?"linear":u,h=n.preluActivationWeights;if(So(z.state.gradientDepth,c)===!1){var d=We(e,i,a,o);return l!=null&&(d=fe(d,l)),wo(d,c,h)}var p=O(e,"a","fused matMul"),f=O(i,"b","fused matMul");t=at(p,f),p=t[0],f=t[1];var m=a?p.shape[p.rank-2]:p.shape[p.rank-1],g=o?f.shape[f.rank-1]:f.shape[f.rank-2],v=a?p.shape[p.rank-1]:p.shape[p.rank-2],b=o?f.shape[f.rank-2]:f.shape[f.rank-1],w=p.shape.slice(0,-2),S=f.shape.slice(0,-2),L=ot(w),N=ot(S);E(p.rank>=2&&f.rank>=2&&p.rank===f.rank,function(){return"Error in fused matMul: inputs must have the same rank of at least "+("2, got ranks "+p.rank+" and "+f.rank+".")}),E(dn(w,S),function(){return"Error in fused matMul: outer dimensions ("+w+") and ("+(S+") of Tensors with shapes "+p.shape+" and ")+(f.shape+" must match.")}),E(m===g,function(){return"Error in fused matMul: inner shapes ("+m+") and ("+(g+") of Tensors with shapes "+p.shape+" and ")+(f.shape+" and transposeA="+a)+(" and transposeB="+o+" must match.")});var C=p.shape.slice(0,-2).concat([v,b]),R=a?V(p,[L,m,v]):V(p,[L,v,m]),D=o?V(f,[N,b,g]):V(f,[N,g,b]),k;l!=null&&(k=O(l,"bias","fused matMul"),k=at(k,p)[0],et(C,k.shape));var W;h!=null&&(W=O(h,"prelu weights","fused matMul"));var F=function(q,G){var Z=G[0],X=G[1],ee=G[2],ne=G[3],ie=yo(V(q,ee.shape),ee,c),te,re;if(!a&&!o?(te=We(ie,X,!1,!0),re=We(Z,ie,!0,!1)):!a&&o?(te=We(ie,X,!1,!1),re=We(ie,Z,!0,!1)):a&&!o?(te=We(X,ie,!1,!0),re=We(Z,ie,!1,!1)):(te=We(X,ie,!0,!0),re=We(ie,Z,!0,!0)),l!=null){var le=bo(ne,ie);return[te,re,le]}else return[te,re]},P=function(q){var G=q.fusedBatchMatMul({a:R,b:D,transposeA:a,transposeB:o,bias:k,activation:c,preluActivationWeights:W});return G},H={a:R,b:D,bias:k,preluActivationWeights:W},_={transposeA:a,transposeB:o,activation:c};if(l==null){var j=zn(function(q,G,Z){var X=z.runKernelFunc(P,H,null,vc,_);return Z([q,G,X]),{value:V(X,C),gradFunc:F}});return j(R,D)}else{var K=zn(function(q,G,Z,X){var ee=z.runKernelFunc(P,H,null,vc,_);return X([q,G,ee,Z]),{value:V(ee,C),gradFunc:F}});return K(R,D,k)}}var QR=U({fusedMatMul_:ZR});var eO={__proto__:null,conv2d:jR,depthwiseConv2d:JR,matMul:QR};function tO(n){return Th(n,.54,.46)}var nO=U({hammingWindow_:tO});function iO(n){return Th(n,.5,.5)}var Pv=U({hannWindow_:iO});function rO(n,t,e,i,r){i===void 0&&(i=!1),r===void 0&&(r=0);for(var a=0,s=[];a+t<=n.size;)s.push(ze(n,a,t)),a+=e;if(i)for(;a=1&&i[1]>=1,function(){return"cropSize must be atleast [1,1], but was "+i}),E(r==="bilinear"||r==="nearest",function(){return"method must be bilinear or nearest, but was "+r});var c=function(f){return f.cropAndResize(s,o,l,i,r,a)},h={image:s,boxes:o,boxInd:l},d={method:r,extrapolationValue:a,cropSize:i},p=z.runKernelFunc(c,h,null,Cf,d);return p}var lO=U({cropAndResize_:oO});function uO(n){var t=O(n,"image","flipLeftRight","float32");E(t.rank===4,function(){return"Error in flipLeftRight: image must be rank 4,"+("but got rank "+t.rank+".")});var e={image:t},i=z.runKernel(Pf,e,{});return i}var cO=U({flipLeftRight_:uO});function hO(n,t,e,i){e===void 0&&(e=0),i===void 0&&(i=.5);var r=O(n,"image","rotateWithOffset","float32");E(r.rank===4,function(){return"Error in rotateWithOffset: image must be rank 4,"+("but got rank "+r.rank+".")});var a={image:r},s={radians:t,fillValue:e,center:i},o=z.runKernel(mm,a,s);return o}var dO=U({rotateWithOffset_:hO});function Qr(n,t,e,i,r,a){i==null&&(i=.5),r==null&&(r=Number.NEGATIVE_INFINITY),a==null&&(a=0);var s=n.shape[0];return e=Math.min(e,s),E(0<=i&&i<=1,function(){return"iouThreshold must be in [0, 1], but was '"+i+"'"}),E(n.rank===2,function(){return"boxes must be a 2D tensor, but was of rank '"+n.rank+"'"}),E(n.shape[1]===4,function(){return"boxes must have 4 columns, but 2nd dimension was "+n.shape[1]}),E(t.rank===1,function(){return"scores must be a 1D tensor"}),E(t.shape[0]===s,function(){return"scores has incompatible shape with boxes. Expected "+s+", "+("but was "+t.shape[0])}),E(0<=a&&a<=1,function(){return"softNmsSigma must be in [0, 1], but was '"+a+"'"}),{maxOutputSize:e,iouThreshold:i,scoreThreshold:r,softNmsSigma:a}}function pO(n,t,e,i,r){i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY);var a=O(n,"boxes","nonMaxSuppression"),s=O(t,"scores","nonMaxSuppression"),o=Qr(a,s,e,i,r);e=o.maxOutputSize,i=o.iouThreshold,r=o.scoreThreshold;var l={maxOutputSize:e,iouThreshold:i,scoreThreshold:r};return z.runKernelFunc(function(u){return u.nonMaxSuppression(a,s,e,i,r)},{boxes:a,scores:s},null,tm,l)}var fO=U({nonMaxSuppression_:pO});function gO(n,t,e){var i=mO(n,t,e),r=i<0?-(i+1):i;n.splice(r,0,t)}function mO(n,t,e){return yO(n,t,e||vO)}function vO(n,t){return n>t?1:n>>1);var o=e(t,n[a]);o>0?i=a+1:(r=a,s=!o)}return s?i:-i-1}function Mv(n,t,e,i,r){return xh(n,t,e,i,r,0).selectedIndices}function Hv(n,t,e,i,r,a){return xh(n,t,e,i,r,0,!1,a,!0)}function Vv(n,t,e,i,r,a){return xh(n,t,e,i,r,a,!0)}function xh(n,t,e,i,r,a,s,o,l){s===void 0&&(s=!1),o===void 0&&(o=!1),l===void 0&&(l=!1);for(var u=[],c=0;cr&&u.push({score:t[c],boxIndex:c,suppressBeginIndex:0});u.sort(qv);for(var h=a>0?-.5/a:0,d=[],p=[];d.length0;){var f=u.pop(),m=f.score,g=f.boxIndex,v=f.suppressBeginIndex;if(m=v;--w){var S=bO(n,g,d[w]);if(S>=i){b=!0;break}if(f.score=f.score*wO(i,h,S),f.score<=r)break}f.suppressBeginIndex=d.length,b||(f.score===m?(d.push(g),p.push(f.score)):f.score>r&&gO(u,f,qv))}var L=d.length,N=e-L;o&&N>0&&(d.push.apply(d,new Array(N).fill(0)),p.push.apply(p,new Array(N).fill(0)));var C={selectedIndices:Xr(d,"int32")};return s&&(C.selectedScores=Xr(p,"float32")),l&&(C.validOutputs=be(L,"int32")),C}function bO(n,t,e){var i=n.subarray(t*4,t*4+4),r=n.subarray(e*4,e*4+4),a=Math.min(i[0],i[2]),s=Math.min(i[1],i[3]),o=Math.max(i[0],i[2]),l=Math.max(i[1],i[3]),u=Math.min(r[0],r[2]),c=Math.min(r[1],r[3]),h=Math.max(r[0],r[2]),d=Math.max(r[1],r[3]),p=(o-a)*(l-s),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;var m=Math.max(a,u),g=Math.max(s,c),v=Math.min(o,h),b=Math.min(l,d),w=Math.max(v-m,0)*Math.max(b-g,0);return w/(p+f-w)}function wO(n,t,e){var i=Math.exp(t*e*e);return e<=n?i:0}function qv(n,t){return n.score-t.score||n.score===t.score&&t.boxIndex-n.boxIndex}function SO(n,t,e,i,r){return i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),de(this,void 0,void 0,function(){var a,s,o,l,u,c,h;return pe(this,function(d){switch(d.label){case 0:return a=O(n,"boxes","nonMaxSuppressionAsync"),s=O(t,"scores","nonMaxSuppressionAsync"),o=Qr(a,s,e,i,r),e=o.maxOutputSize,i=o.iouThreshold,r=o.scoreThreshold,[4,Promise.all([a.data(),s.data()])];case 1:return l=d.sent(),u=l[0],c=l[1],h=Mv(u,c,e,i,r),a!==n&&a.dispose(),s!==t&&s.dispose(),[2,h]}})})}var LO=SO;function IO(n,t,e,i,r,a){i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=0);var s=O(n,"boxes","nonMaxSuppression"),o=O(t,"scores","nonMaxSuppression"),l=Qr(s,o,e,i,r,a);e=l.maxOutputSize,i=l.iouThreshold,r=l.scoreThreshold,a=l.softNmsSigma;var u={boxes:s,scores:o},c={maxOutputSize:e,iouThreshold:i,scoreThreshold:r,softNmsSigma:a},h=z.runKernel(im,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var AO=U({nonMaxSuppressionWithScore_:IO});function TO(n,t,e,i,r,a){return i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=0),de(this,void 0,void 0,function(){var s,o,l,u,c,h,d;return pe(this,function(p){switch(p.label){case 0:return s=O(n,"boxes","nonMaxSuppressionAsync"),o=O(t,"scores","nonMaxSuppressionAsync"),l=Qr(s,o,e,i,r,a),e=l.maxOutputSize,i=l.iouThreshold,r=l.scoreThreshold,a=l.softNmsSigma,[4,Promise.all([s.data(),o.data()])];case 1:return u=p.sent(),c=u[0],h=u[1],d=Vv(c,h,e,i,r,a),s!==n&&s.dispose(),o!==t&&o.dispose(),[2,d]}})})}var NO=TO;function xO(n,t,e,i,r,a){i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=!1);var s=O(n,"boxes","nonMaxSuppression"),o=O(t,"scores","nonMaxSuppression"),l=Qr(s,o,e,i,r,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:s,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:a},f=z.runKernel(nm,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var CO=U({nonMaxSuppressionPadded_:xO});function RO(n,t,e,i,r,a){return i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=!1),de(this,void 0,void 0,function(){var s,o,l,u,c,h,d,p,f,m;return pe(this,function(g){switch(g.label){case 0:return s=O(n,"boxes","nonMaxSuppressionAsync"),o=O(t,"scores","nonMaxSuppressionAsync"),l=Qr(s,o,e,i,r,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[4,Promise.all([s.data(),o.data()])];case 1:return d=g.sent(),p=d[0],f=d[1],m=Hv(p,f,u,c,h,a),s!==n&&s.dispose(),o!==t&&o.dispose(),[2,m]}})})}var OO=RO;function EO(n,t,e){e===void 0&&(e=!1);var i=O(n,"images","resizeBilinear");E(i.rank===3||i.rank===4,function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got "+("rank "+i.rank+".")}),E(t.length===2,function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+(t+".")});var r=i,a=!1;i.rank===3&&(a=!0,r=V(i,[1,i.shape[0],i.shape[1],i.shape[2]]));var s=t[0],o=t[1],l=function(d,p){return p([r]),d.resizeBilinear(r,s,o,e)},u={images:r},c={alignCorners:e,size:t},h=z.runKernelFunc(l,u,null,Hu,c);return a?V(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Gv=U({resizeBilinear_:EO});function DO(n,t,e){e===void 0&&(e=!1);var i=O(n,"images","resizeNearestNeighbor");E(i.rank===3||i.rank===4,function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got "+("rank "+i.rank+".")}),E(t.length===2,function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+(t+".")}),E(i.dtype==="float32"||i.dtype==="int32",function(){return"`images` must have `int32` or `float32` as dtype"});var r=i,a=!1;i.rank===3&&(a=!0,r=V(i,[1,i.shape[0],i.shape[1],i.shape[2]]));var s=t[0],o=t[1],l={images:r},u={alignCorners:e,size:t},c=function(d,p){return p([r]),d.resizeNearestNeighbor(r,s,o,e)},h=z.runKernelFunc(c,l,null,Mu,u);return a?V(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Yv=U({resizeNearestNeighbor_:DO});function kO(n,t,e){E(t%1===0,function(){return"bandPart(): numLower must be an integer, got "+t+"."}),E(e%1===0,function(){return"bandPart(): numUpper must be an integer, got "+e+"."});var i=O(n,"a","bandPart");E(i.rank>=2,function(){return"bandPart(): Rank must be at least 2, got "+i.rank+"."});var r=i.shape,a=i.shape.slice(-2),s=a[0],o=a[1];if(!(t<=s))throw new Error("bandPart(): numLower ("+t+")"+(" must not be greater than the number of rows ("+s+")."));if(!(e<=o))throw new Error("bandPart(): numUpper ("+e+")"+(" must not be greater than the number of columns ("+o+")."));t<0&&(t=s),e<0&&(e=o);var l=V(yh(0,s,1,"int32"),[-1,1]),u=yh(0,o,1,"int32"),c=ge(l,u),h=nr(Qi(c,be(+t,"int32")),Zi(c,be(-e,"int32"))),d=ti([s,o],i.dtype);return V(sr(go(V(i,[-1,s,o])).map(function(p){return yn(h,p,d)})),r)}var FO=U({bandPart_:kO});function WO(n){var t;if(Array.isArray(n)){t=!1,E(n!=null&&n.length>0,function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"});for(var e=n[0].shape[0],i=function(l){E(n[l].shape[0]===e,function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: "+("("+n[l].shape[0]+" vs. "+e+")")})},r=1;r0)for(var c=0;c=2,function(){return"qr() requires input tensor to have a rank >= 2, but got rank "+n.rank}),n.rank===2)return jv(n,t);var e=n.shape.slice(0,n.shape.length-2).reduce(function(l,u){return l*u}),i=go(V(n,[e,n.shape[n.shape.length-2],n.shape[n.shape.length-1]]),0),r=[],a=[];i.forEach(function(l){var u=jv(l,t),c=u[0],h=u[1];r.push(c),a.push(h)});var s=V(sr(r,0),n.shape),o=V(sr(a,0),n.shape);return[s,o]}function jv(n,t){return t===void 0&&(t=!1),z.tidy(function(){E(n.shape.length===2,function(){return"qr2d() requires a 2D Tensor, but got a "+n.shape.length+"D Tensor."});for(var e=n.shape[0],i=n.shape[1],r=jg(e),a=$i(n),s=Xa([[1]],[1,1]),o=$i(s),l=e>=i?i:e,u=function(h){var d,p=a,f=o,m=r;d=z.tidy(function(){var g=ze(a,[h,h],[e-h,1]),v=vo(g),b=ze(a,[h,h],[1,1]),w=yn(Li(b,0),Xa([[-1]]),Xa([[1]])),S=ge(b,J(w,v)),L=Ie(g,S);L.shape[0]===1?o=$i(s):o=Rt([s,ze(L,[1,0],[L.shape[0]-1,L.shape[1]])],0);var N=vt(Ie(We(w,S),v)),C=ze(a,[h,0],[e-h,i]),R=J(N,o),D=ut(o);if(h===0)a=ge(C,We(R,We(D,C)));else{var k=ge(C,We(R,We(D,C)));a=Rt([ze(a,[0,0],[h,i]),k],0)}var W=ut(R),F=ze(r,[0,h],[e,r.shape[1]-h]);if(h===0)r=ge(F,We(We(F,o),W));else{var P=ge(F,We(We(F,o),W));r=Rt([ze(r,[0,0],[e,h]),P],1)}return[o,a,r]}),o=d[0],a=d[1],r=d[2],Mt([p,f,m])},c=0;ci&&(r=ze(r,[0,0],[e,i]),a=ze(a,[0,0],[i,i])),[r,a]})}var zO=U({qr_:BO});(function(n){n[n.NONE=0]="NONE",n[n.MEAN=1]="MEAN",n[n.SUM=2]="SUM",n[n.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(I.Reduction||(I.Reduction={}));function PO(n,t,e){e===void 0&&(e=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=O(n,"losses","computeWeightedLoss"),r=null;t!=null&&(r=O(t,"weights","computeWeightedLoss"));var a=r==null?i:J(i,r);if(e===I.Reduction.NONE)return a;if(e===I.Reduction.SUM)return Ae(a);if(e===I.Reduction.MEAN){if(r==null)return Ya(a);var s=i.size/r.size,o=Ie(Ae(a),Ae(r));return s>1?Ie(o,be(s)):o}if(e===I.Reduction.SUM_BY_NONZERO_WEIGHTS){if(r==null)return Ie(Ae(a),be(i.size));var l=J(r,Kr(i.shape)),u=ue(Ae(uo(l,be(0))),"float32");return Ie(Ae(a),u)}throw Error("Unknown reduction: "+e)}var ri=U({computeWeightedLoss_:PO});function _O(n,t,e,i){i===void 0&&(i=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var r=O(n,"labels","absoluteDifference"),a=O(t,"predictions","absoluteDifference"),s=null;e!=null&&(s=O(e,"weights","absoluteDifference")),Be(r.shape,a.shape,"Error in absoluteDifference: ");var o=Kt(ge(r,a));return ri(o,s,i)}var MO=U({absoluteDifference_:_O});function HO(n,t,e,i,r){r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"labels","cosineDistance"),s=O(t,"predictions","cosineDistance"),o=null;i!=null&&(o=O(i,"weights","cosineDistance")),Be(a.shape,s.shape,"Error in cosineDistance: ");var l=be(1),u=ge(l,Ae(J(a,s),e,!0));return ri(u,o,r)}var VO=U({cosineDistance_:HO});function qO(n,t,e,i){i===void 0&&(i=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var r=O(n,"labels","hingeLoss"),a=O(t,"predictions","hingeLoss"),s=null;e!=null&&(s=O(e,"weights","hingeLoss")),Be(r.shape,a.shape,"Error in hingeLoss: ");var o=be(1);r=ge(J(be(2),r),o);var l=Ka(ge(o,J(r,a)));return ri(l,s,i)}var GO=U({hingeLoss_:qO});function YO(n,t,e,i,r){i===void 0&&(i=1),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"labels","huberLoss"),s=O(t,"predictions","huberLoss"),o=null;e!=null&&(o=O(e,"weights","huberLoss")),Be(a.shape,s.shape,"Error in huberLoss: ");var l=be(i),u=Kt(ge(s,a)),c=lo(u,l),h=ge(u,c),d=fe(J(be(.5),Ye(c)),J(l,h));return ri(d,o,r)}var jO=U({huberLoss_:YO});function KO(n,t,e,i,r){i===void 0&&(i=1e-7),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"labels","logLoss"),s=O(t,"predictions","logLoss"),o=null;e!=null&&(o=O(e,"weights","logLoss")),Be(a.shape,s.shape,"Error in logLoss: ");var l=be(1),u=be(i),c=vt(J(a,er(fe(s,u)))),h=J(ge(l,a),er(fe(ge(l,s),u))),d=ge(c,h);return ri(d,o,r)}var $O=U({logLoss_:KO});function XO(n,t,e,i){i===void 0&&(i=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var r=O(n,"labels","meanSquaredError"),a=O(t,"predictions","meanSquaredError"),s=null;e!=null&&(s=O(e,"weights","meanSquaredError")),Be(r.shape,a.shape,"Error in meanSquaredError: ");var o=fo(r,a);return ri(o,s,i)}var JO=U({meanSquaredError_:XO});function ZO(n,t){var e=O(n,"labels","sigmoidCrossEntropyWithLogits"),i=O(t,"logits","sigmoidCrossEntropyWithLogits");Be(e.shape,i.shape,"Error in sigmoidCrossEntropyWithLogits: ");var r=Ka(i),a=J(i,e),s=lh(bn(vt(Kt(i))));return fe(ge(r,a),s)}function QO(n,t,e,i,r){i===void 0&&(i=0),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"multiClassLabels","sigmoidCrossEntropy"),s=O(t,"logits","sigmoidCrossEntropy"),o=null;if(e!=null&&(o=O(e,"weights","sigmoidCrossEntropy")),Be(a.shape,s.shape,"Error in sigmoidCrossEntropy: "),i>0){var l=be(i),u=be(1),c=be(.5);a=fe(J(a,ge(u,l)),J(c,l))}var h=ZO(a,s);return ri(h,o,r)}var eE=U({sigmoidCrossEntropy_:QO});function tE(n,t,e){if(e===void 0&&(e=-1),e===-1&&(e=t.rank-1),e!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet "+("supported. Labels / logits was rank "+t.rank+" ")+("and dim was "+e));var i=zn(function(r,a,s){var o=!0,l=ch(a,[e],o),u=ge(ue(a,"float32"),l);s([r,u]);var c=vt(J(u,r)),h=Ae(c,[e]),d=function(p,f){var m=f[0],g=f[1],v=rn(p.shape,[e]);return[J(V(p,v),ge(ue(m,"float32"),bn(g))),J(V(p,v),ge(bn(g),ue(m,"float32")))]};return{value:h,gradFunc:d}});return i(n,t)}function nE(n,t,e,i,r){i===void 0&&(i=0),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"onehotLabels","softmaxCrossEntropy"),s=O(t,"logits","softmaxCrossEntropy"),o=null;if(e!=null&&(o=O(e,"weights","softmaxCrossEntropy")),Be(a.shape,s.shape,"Error in softmaxCrossEntropy: "),i>0){var l=be(i),u=be(1),c=be(a.shape[1]);a=fe(J(a,ge(u,l)),Ie(l,c))}var h=tE(a,s);return ri(h,o,r)}var iE=U({softmaxCrossEntropy_:nE});var rE={fft:ho,ifft:$a,rfft:po,irfft:Ih},aE={hammingWindow:nO,hannWindow:Pv,frame:_v,stft:sO},sE={flipLeftRight:cO,resizeNearestNeighbor:Yv,resizeBilinear:Gv,rotateWithOffset:dO,cropAndResize:lO,nonMaxSuppression:fO,nonMaxSuppressionAsync:LO,nonMaxSuppressionWithScore:AO,nonMaxSuppressionWithScoreAsync:NO,nonMaxSuppressionPadded:CO,nonMaxSuppressionPaddedAsync:OO},oE={bandPart:FO,gramSchmidt:UO,qr:zO},lE={absoluteDifference:MO,computeWeightedLoss:ri,cosineDistance:VO,hingeLoss:GO,huberLoss:jO,logLoss:$O,meanSquaredError:JO,sigmoidCrossEntropy:eE,softmaxCrossEntropy:iE};var Ii=function(n){Zn(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.minimize=function(e,i,r){i===void 0&&(i=!1);var a=this.computeGradients(e,r),s=a.value,o=a.grads;if(r!=null){var l=r.map(function(u){return{name:u.name,tensor:o[u.name]}});this.applyGradients(l)}else this.applyGradients(o);return Mt(o),i?s:(s.dispose(),null)},Object.defineProperty(t.prototype,"iterations",{get:function(){return this.iterations_==null&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),t.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},t.prototype.computeGradients=function(e,i){return ev(e,i)},t.prototype.dispose=function(){this.iterations_!=null&&Mt(this.iterations_)},t.prototype.saveIterations=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){return this.iterations_==null&&(this.iterations_=0),[2,{name:"iter",tensor:be(this.iterations_,"int32")}]})})},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){throw new Error("getWeights() is not implemented for this optimizer yet.")})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){return pe(this,function(i){throw new Error("setWeights() is not implemented for this optimizer class "+(""+this.getClassName()))})})},t.prototype.extractIterations=function(e){return de(this,void 0,void 0,function(){var i;return pe(this,function(r){switch(r.label){case 0:return i=this,[4,e[0].tensor.data()];case 1:return i.iterations_=r.sent()[0],[2,e.slice(1)]}})})},t}(vg);Object.defineProperty(Ii,Symbol.hasInstance,{value:function(n){return n.minimize!=null&&n.computeGradients!=null&&n.applyGradients!=null}});var Ch=function(n){Zn(t,n);function t(e,i,r){r===void 0&&(r=null);var a=n.call(this)||this;return a.learningRate=e,a.rho=i,a.epsilon=r,a.accumulatedGrads=[],a.accumulatedUpdates=[],r==null&&(a.epsilon=z.backend.epsilon()),a}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a],l=!1;i.accumulatedGrads[s]==null&&(i.accumulatedGrads[s]={originalName:a+"/accum_grad",variable:mt(function(){return Ee(o).variable(l)})}),i.accumulatedUpdates[s]==null&&(i.accumulatedUpdates[s]={originalName:a+"/accum_var",variable:mt(function(){return Ee(o).variable(l)})});var u=Array.isArray(e)?e[s].tensor:e[a];if(u==null)return;var c=i.accumulatedGrads[s].variable,h=i.accumulatedUpdates[s].variable;mt(function(){var d=fe(J(c,i.rho),J(Ye(u),1-i.rho)),p=J(Ie(Vt(fe(h,i.epsilon)),Vt(fe(c,i.epsilon))),u),f=fe(J(h,i.rho),J(Ye(p),1-i.rho));c.assign(d),h.assign(f);var m=fe(J(p,-i.learningRate),o);o.assign(m)})}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedUpdates!=null&&(Mt(this.accumulatedGrads.map(function(e){return e.variable})),Mt(this.accumulatedUpdates.map(function(e){return e.variable})))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){var e;return pe(this,function(i){switch(i.label){case 0:return e=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[i.sent()].concat(e.map(function(r){return{name:r.originalName,tensor:r.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i,r;return pe(this,function(a){switch(a.label){case 0:return[4,this.extractIterations(e)];case 1:return e=a.sent(),i=e.length/2,r=!1,this.accumulatedGrads=e.slice(0,i).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),this.accumulatedUpdates=e.slice(i,i*2).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,i){return new e(i.learningRate,i.rho,i.epsilon)},t.className="Adadelta",t}(Ii);wi(Ch);var Rh=function(n){Zn(t,n);function t(e,i){i===void 0&&(i=.1);var r=n.call(this)||this;return r.learningRate=e,r.initialAccumulatorValue=i,r.accumulatedGrads=[],r}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a];if(i.accumulatedGrads[s]==null){var l=!1;i.accumulatedGrads[s]={originalName:a+"/accumulator",variable:mt(function(){return sh(o.shape,i.initialAccumulatorValue).variable(l)})}}var u=Array.isArray(e)?e[s].tensor:e[a];if(u==null)return;var c=i.accumulatedGrads[s].variable;mt(function(){var h=fe(c,Ye(u));c.assign(h);var d=fe(J(Ie(u,Vt(fe(h,z.backend.epsilon()))),-i.learningRate),o);o.assign(d)})}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedGrads!=null&&Mt(this.accumulatedGrads.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulatedGrads.map(function(i){return{name:i.originalName,tensor:i.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i;return pe(this,function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),i=!1,this.accumulatedGrads=e.map(function(a){return{originalName:a.name,variable:a.tensor.variable(i)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,i){return new e(i.learningRate,i.initialAccumulatorValue)},t.className="Adagrad",t}(Ii);wi(Rh);var Oh=function(n){Zn(t,n);function t(e,i,r,a){a===void 0&&(a=null);var s=n.call(this)||this;return s.learningRate=e,s.beta1=i,s.beta2=r,s.epsilon=a,s.accumulatedFirstMoment=[],s.accumulatedSecondMoment=[],mt(function(){s.accBeta1=be(i).variable(),s.accBeta2=be(r).variable()}),a==null&&(s.epsilon=z.backend.epsilon()),s}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);mt(function(){var a=ge(1,i.accBeta1),s=ge(1,i.accBeta2);r.forEach(function(o,l){var u=z.registeredVariables[o],c=!1;i.accumulatedFirstMoment[l]==null&&(i.accumulatedFirstMoment[l]={originalName:o+"/m",variable:mt(function(){return Ee(u).variable(c)})}),i.accumulatedSecondMoment[l]==null&&(i.accumulatedSecondMoment[l]={originalName:o+"/v",variable:mt(function(){return Ee(u).variable(c)})});var h=Array.isArray(e)?e[l].tensor:e[o];if(h==null)return;var d=i.accumulatedFirstMoment[l].variable,p=i.accumulatedSecondMoment[l].variable,f=fe(J(d,i.beta1),J(h,1-i.beta1)),m=fe(J(p,i.beta2),J(Ye(h),1-i.beta2)),g=Ie(f,a),v=Ie(m,s);d.assign(f),p.assign(m);var b=fe(J(Ie(g,fe(Vt(v),i.epsilon)),-i.learningRate),u);u.assign(b)}),i.accBeta1.assign(J(i.accBeta1,i.beta1)),i.accBeta2.assign(J(i.accBeta2,i.beta2))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Mt(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedSecondMoment!=null&&Mt(this.accumulatedSecondMoment.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){var e;return pe(this,function(i){switch(i.label){case 0:return e=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[i.sent()].concat(e.map(function(r){return{name:r.originalName,tensor:r.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i,r,a=this;return pe(this,function(s){switch(s.label){case 0:return[4,this.extractIterations(e)];case 1:return e=s.sent(),mt(function(){a.accBeta1.assign(ni(a.beta1,a.iterations_+1)),a.accBeta2.assign(ni(a.beta2,a.iterations_+1))}),i=e.length/2,r=!1,this.accumulatedFirstMoment=e.slice(0,i).map(function(o){return{originalName:o.name,variable:o.tensor.variable(r)}}),this.accumulatedSecondMoment=e.slice(i,i*2).map(function(o){return{originalName:o.name,variable:o.tensor.variable(r)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,i){return new e(i.learningRate,i.beta1,i.beta2,i.epsilon)},t.className="Adam",t}(Ii);wi(Oh);var Eh=function(n){Zn(t,n);function t(e,i,r,a,s){a===void 0&&(a=null),s===void 0&&(s=0);var o=n.call(this)||this;return o.learningRate=e,o.beta1=i,o.beta2=r,o.epsilon=a,o.decay=s,o.accumulatedFirstMoment=[],o.accumulatedWeightedInfNorm=[],mt(function(){o.iteration=be(0).variable(),o.accBeta1=be(i).variable()}),a==null&&(o.epsilon=z.backend.epsilon()),o}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);mt(function(){var a=ge(1,i.accBeta1),s=Ie(-i.learningRate,fe(J(i.iteration,i.decay),1));r.forEach(function(o,l){var u=z.registeredVariables[o],c=!1;i.accumulatedFirstMoment[l]==null&&(i.accumulatedFirstMoment[l]={originalName:o+"/m",variable:Ee(u).variable(c)}),i.accumulatedWeightedInfNorm[l]==null&&(i.accumulatedWeightedInfNorm[l]={originalName:o+"/v",variable:Ee(u).variable(c)});var h=Array.isArray(e)?e[l].tensor:e[o];if(h==null)return;var d=i.accumulatedFirstMoment[l].variable,p=i.accumulatedWeightedInfNorm[l].variable,f=fe(J(d,i.beta1),J(h,1-i.beta1)),m=J(p,i.beta2),g=Kt(h),v=jr(m,g);d.assign(f),p.assign(v);var b=fe(J(Ie(s,a),Ie(f,fe(v,i.epsilon))),u);u.assign(b)}),i.iteration.assign(fe(i.iteration,1)),i.accBeta1.assign(J(i.accBeta1,i.beta1))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Mt(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedWeightedInfNorm!=null&&Mt(this.accumulatedWeightedInfNorm.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){throw new Error("getWeights() is not implemented for Adamax yet.")})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){return pe(this,function(i){throw new Error("setWeights() is not implemented for Adamax yet.")})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,i){return new e(i.learningRate,i.beta1,i.beta2,i.epsilon,i.decay)},t.className="Adamax",t}(Ii);wi(Eh);var Lo=function(n){Zn(t,n);function t(e){var i=n.call(this)||this;return i.learningRate=e,i.setLearningRate(e),i}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=Array.isArray(e)?e[s].tensor:e[a];if(o==null)return;var l=z.registeredVariables[a];mt(function(){var u=fe(J(i.c,o),l);l.assign(u)})}),this.incrementIterations()},t.prototype.setLearningRate=function(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=wg(be(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()]]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){return pe(this,function(i){switch(i.label){case 0:return[4,this.extractIterations(e)];case 1:if(e=i.sent(),e.length!==0)throw new Error("SGD optimizer does not have settable weights.");return[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,i){return new e(i.learningRate)},t.className="SGD",t}(Ii);wi(Lo);var Dh=function(n){Zn(t,n);function t(e,i,r){r===void 0&&(r=!1);var a=n.call(this,e)||this;return a.learningRate=e,a.momentum=i,a.useNesterov=r,a.accumulations=[],a.m=be(a.momentum),a}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a];if(i.accumulations[s]==null){var l=!1;i.accumulations[s]={originalName:a+"/momentum",variable:mt(function(){return Ee(o).variable(l)})}}var u=i.accumulations[s].variable,c=Array.isArray(e)?e[s].tensor:e[a];if(c==null)return;mt(function(){var h,d=fe(J(i.m,u),c);i.useNesterov?h=fe(J(i.c,fe(c,J(d,i.m))),o):h=fe(J(i.c,d),o),u.assign(d),o.assign(h)})}),this.incrementIterations()},t.prototype.dispose=function(){this.m.dispose(),this.accumulations!=null&&Mt(this.accumulations.map(function(e){return e.variable}))},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulations.map(function(i){return{name:i.originalName,tensor:i.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i;return pe(this,function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),i=!1,this.accumulations=e.map(function(a){return{originalName:a.name,variable:a.tensor.variable(i)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,i){return new e(i.learningRate,i.momentum,i.useNesterov)},t.className="Momentum",t}(Lo);wi(Dh);var kh=function(n){Zn(t,n);function t(e,i,r,a,s){i===void 0&&(i=.9),r===void 0&&(r=0),a===void 0&&(a=null),s===void 0&&(s=!1);var o=n.call(this)||this;if(o.learningRate=e,o.decay=i,o.momentum=r,o.epsilon=a,o.accumulatedMeanSquares=[],o.accumulatedMoments=[],o.accumulatedMeanGrads=[],o.centered=s,a==null&&(o.epsilon=z.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.");return o}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a],l=!1;i.accumulatedMeanSquares[s]==null&&(i.accumulatedMeanSquares[s]={originalName:a+"/rms",variable:mt(function(){return Ee(o).variable(l)})}),i.accumulatedMoments[s]==null&&(i.accumulatedMoments[s]={originalName:a+"/momentum",variable:mt(function(){return Ee(o).variable(l)})}),i.accumulatedMeanGrads[s]==null&&i.centered&&(i.accumulatedMeanGrads[s]={originalName:a+"/mg",variable:mt(function(){return Ee(o).variable(l)})});var u=Array.isArray(e)?e[s].tensor:e[a];if(u==null)return;var c=i.accumulatedMeanSquares[s].variable,h=i.accumulatedMoments[s].variable;mt(function(){var d=fe(J(c,i.decay),J(Ye(u),1-i.decay));if(i.centered){var p=i.accumulatedMeanGrads[s].variable,f=fe(J(p,i.decay),J(u,1-i.decay)),m=Ie(J(u,i.learningRate),Vt(ge(d,fe(Ye(f),i.epsilon)))),g=fe(J(h,i.momentum),m);c.assign(d),p.assign(f),h.assign(g);var v=ge(o,g);o.assign(v)}else{var b=fe(J(c,i.decay),J(Ye(u),1-i.decay)),g=fe(J(h,i.momentum),Ie(J(u,i.learningRate),Vt(fe(b,i.epsilon))));c.assign(b),h.assign(g);var v=ge(o,g);o.assign(v)}})}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedMeanSquares!=null&&Mt(this.accumulatedMeanSquares.map(function(e){return e.variable})),this.accumulatedMeanGrads!=null&&this.centered&&Mt(this.accumulatedMeanGrads.map(function(e){return e.variable})),this.accumulatedMoments!=null&&Mt(this.accumulatedMoments.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){var e;return pe(this,function(i){switch(i.label){case 0:return e=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&e.push.apply(e,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[i.sent()].concat(e.map(function(r){return{name:r.originalName,tensor:r.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i,r;return pe(this,function(a){switch(a.label){case 0:return[4,this.extractIterations(e)];case 1:return e=a.sent(),i=this.centered?e.length/3:e.length/2,r=!1,this.accumulatedMeanSquares=e.slice(0,i).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),this.accumulatedMoments=e.slice(i,i*2).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),this.centered&&(this.accumulatedMeanGrads=e.slice(i*2,i*3).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}})),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,i){return new e(i.learningRate,i.decay,i.momentum,i.epsilon,i.centered)},t.className="RMSProp",t}(Ii);wi(kh);var or=function(){function n(){}return n.sgd=function(t){return new Lo(t)},n.momentum=function(t,e,i){return i===void 0&&(i=!1),new Dh(t,e,i)},n.rmsprop=function(t,e,i,r,a){return e===void 0&&(e=.9),i===void 0&&(i=0),r===void 0&&(r=null),a===void 0&&(a=!1),new kh(t,e,i,r,a)},n.adam=function(t,e,i,r){return t===void 0&&(t=.001),e===void 0&&(e=.9),i===void 0&&(i=.999),r===void 0&&(r=null),new Oh(t,e,i,r)},n.adadelta=function(t,e,i){return t===void 0&&(t=.001),e===void 0&&(e=.95),i===void 0&&(i=null),new Ch(t,e,i)},n.adamax=function(t,e,i,r,a){return t===void 0&&(t=.002),e===void 0&&(e=.9),i===void 0&&(i=.999),r===void 0&&(r=null),a===void 0&&(a=0),new Eh(t,e,i,r,a)},n.adagrad=function(t,e){return e===void 0&&(e=.1),new Rh(t,e)},n}();var uE={sgd:or.sgd,momentum:or.momentum,adadelta:or.adadelta,adagrad:or.adagrad,rmsprop:or.rmsprop,adamax:or.adamax,adam:or.adam};var cE=function(){return typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:function(n){return n()}}();function hE(){return new Promise(function(n){return cE(function(){return n()})})}function dE(n,t,e){var i=e*(typeof n=="number"?n:n[0]),r=t*(typeof n=="number"?n:n[1]);return[i,r]}function pE(n,t,e,i){i===void 0&&(i=!0);var r=[];if(i)r=r.concat(t.slice(0)),r.push(n[0]/e),r=r.concat(n.slice(1));else{r=r.concat(n[0]);for(var a=t.length,s=0;s=t*2+1||r%2===1?s.push(r):a.push(r);i.push.apply(i,a),i.push(0),i.push.apply(i,s)}return i}function mE(n,t,e,i){i===void 0&&(i=!0);var r=[];i?r.push(n[0]/e):r.push(n[0]*e);for(var a=1;a0&&(o=Ae(o,l)),V(o,e.shape)},s=function(){var o=n,l=gt(i.shape,r);return l.length>0&&(o=Ae(o,l)),V(o,i.shape)};return{a,b:s}}};var YE={kernelName:Ul,saveAllInputs:!0,gradFunc:function(n,t){var e={};return t.forEach(function(i,r){e[r]=function(){return n.clone()}}),e}};var jE={kernelName:Bl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ee(e)}}}};var KE={kernelName:zl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ee(e)}}}};var $E={kernelName:Pl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,Vt(ge(be(1),Ye(ue(e,"float32")))))}}}};var XE={kernelName:_l,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){var i=Vt(fe(be(1),Ye(ue(e,"float32"))));return Ie(n,i)}}}};var JE={kernelName:Vl,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=fe(Ye(e),Ye(i)),l=J(n,Ie(i,o)),u=gt(e.shape,r);return u.length>0&&(l=Ae(l,u)),V(l,e.shape)},s=function(){var o=fe(Ye(e),Ye(i)),l=vt(J(n,Ie(e,o))),u=gt(i.shape,r);return u.length>0&&(l=Ae(l,u)),V(l,i.shape)};return{a,b:s}}};var ZE={kernelName:Ml,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,fe(Ye(ue(e,"float32")),1))}}}};var QE={kernelName:Hl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,ge(be(1),Ye(ue(e,"float32"))))}}}};function eD(n,t,e,i,r,a,s){r===void 0&&(r=[1,1,1]);var o=O(n,"dy","avgPool3dBackprop"),l=O(t,"input","avgPool3dBackprop"),u=o,c=l,h=!1;l.rank===4&&(h=!0,u=V(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),c=V(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]])),E(u.rank===5,function(){return"Error in avgPool3dBackprop: dy must be rank 5 but got rank "+(u.rank+".")}),E(c.rank===5,function(){return"Error in avgPool3dBackprop: input must be rank 5 but got rank "+(c.rank+".")}),E(Ht(i,r),function(){return"Error in avgPool3dBackprop: Either strides or dilations "+("must be 1. Got strides "+i+" and dilations '"+r+"'")}),s!=null&&E(rt(a),function(){return"Error in maxPool3dBackprop: pad must be an integer when "+("using, dimRoundingMode "+s+" but got pad "+a+".")});var d=function(g){var v=Ha(c.shape,e,i,r,a,s);return g.avgPool3dBackprop(u,c,v)},p={dy:u,input:c},f={filterSize:e,strides:i,dilations:r,pad:a,dimRoundingMode:s},m=z.runKernelFunc(d,p,null,If,f);return h?V(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var tD=U({avgPool3dBackprop_:eD});var nD={kernelName:Gl,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.filterSize,s=r.strides,o=r.dilations,l=r.pad,u=r.dimRoundingMode,c=o??[1,1,1];return{x:function(){return tD(n,i,a,s,c,l,u)}}}};function iD(n,t,e,i,r){var a=O(n,"dy","avgPoolBackprop"),s=O(t,"input","avgPoolBackprop");E(s.rank===a.rank,function(){return"Rank of input ("+s.rank+") does not match rank of dy ("+a.rank+")"});var o=s,l=a,u=!1;s.rank===3&&(u=!0,o=V(s,[1,s.shape[0],s.shape[1],s.shape[2]]),l=V(a,[1,a.shape[0],a.shape[1],a.shape[2]])),E(l.rank===4,function(){return"Error in avgPoolBackprop: dy must be rank 4 but got rank "+(l.rank+".")}),E(o.rank===4,function(){return"Error in avgPoolBackprop: input must be rank 4 but got rank "+(o.rank+".")});var c=function(f){var m=Vr(o.shape,e,i,1,r);return f.avgPoolBackprop(l,o,m)},h={dy:l,input:o},d={filterSize:e,strides:i,pad:r},p=z.runKernelFunc(c,h,null,Lf,d);return u?V(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var rD=U({avgPoolBackprop_:iD});var aD={kernelName:ql,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.filterSize,s=r.strides,o=r.pad;return{x:function(){return rD(n,i,a,s,o)}}}};var sD={kernelName:Yl,inputsToSave:["a","b"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s=e,o=s.transposeA,l=s.transposeB;return!o&&!l?{a:function(){return We(n,a,!1,!0)},b:function(){return We(r,n,!0,!1)}}:!o&&l?{a:function(){return We(n,a,!1,!1)},b:function(){return We(n,r,!0,!1)}}:o&&!l?{a:function(){return We(a,n,!1,!0)},b:function(){return We(r,n,!1,!1)}}:{a:function(){return We(a,n,!0,!0)},b:function(){return We(n,r,!0,!0)}}}};var oD={kernelName:jl,gradFunc:function(n,t,e){var i=e,r=i.blockShape,a=i.crops;return{x:function(){return co(n,r,a)}}}};var lD={kernelName:Kl,gradFunc:function(n,t,e){for(var i=e,r=i.inputShape,a=i.shape,s=Array.from(a),o=r.length-1;o>=0;o--)if(r[o]===a[o])s[o]=1;else if(r[o]!==1)throw new Error("broadcastTo(): ["+r+"] cannot be broadcast to ["+a+"].");for(var l=[],o=0;o1&&l.push(o);return{x:function(){return Ae(n,l,!0)}}}};var uD={kernelName:Ws,gradFunc:function(n){return{x:function(){return n.clone()}}}};var cD={kernelName:$l,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var hD={kernelName:Xl,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.clipValueMin,s=r.clipValueMax;return{x:function(){return yn(nr(Zi(i,a),Qi(i,s)),n,Ee(n))}}}};var dD={kernelName:Jl,saveAllInputs:!0,gradFunc:function(n,t,e){var i=t.map(function(l){return l.shape}),r=e.axis,a=Qe(r,t[0].shape)[0],s=i.map(function(l){return l[a]}),o=Jr(n,s,a);return o.map(function(l){return function(){return l}})}};var pD={kernelName:Zl,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s=e,o=s.dilations,l=s.strides,u=s.pad,c=s.dataFormat;return E(Si(o),function(){return"Error in gradient of conv2D: dilation rates greater than 1 "+("are not yet supported in gradients. Got dilations '"+o+"'")}),{x:function(){return nh(r.shape,n,a,l,u,c)},filter:function(){return Nh(r,n,a.shape,l,u,c)}}}};var fD={kernelName:Ql,inputsToSave:["dy","filter"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s=e,o=s.strides,l=s.pad,u=s.dataFormat,c=s.dimRoundingMode;return{dy:function(){return Gr(n,a,o,l,u,1,c)},filter:function(){return Nh(n,r,a.shape,o,l,u,c)}}}};function mD(n,t,e,i,r){var a=n;n.rank===4&&(a=V(n,[1,n.shape[0],n.shape[1],n.shape[2],n.shape[3]]));var s=t;s.rank===4&&(s=V(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),E(a.rank===5,function(){return"Error in conv3dDerFilter: input must be rank 5, but got shape "+(a.shape+".")}),E(s.rank===5,function(){return"Error in conv3dDerFilter: dy must be rank 5, but got shape "+(s.shape+".")}),E(e.length===5,function(){return"Error in conv3dDerFilter: filterShape must be length 5, but got "+(e+".")}),E(a.shape[4]===e[3],function(){return"Error in conv3dDerFilter: depth of input "+a.shape[4]+") must "+("match input depth in filter ("+e[3]+".")}),E(s.shape[4]===e[4],function(){return"Error in conv3dDerFilter: depth of dy ("+s.shape[4]+") must "+("match output depth for filter ("+e[4]+").")});var o=function(c){var h=1,d=Ma(a.shape,e,i,h,r);return c.conv3dDerFilter(a,s,d)},l={x:a,y:s},u={strides:i,pad:r};return z.runKernelFunc(o,l,null,Nf,u)}var gD=U({conv3DBackpropFilter_:mD});var vD={kernelName:eu,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=e,r=i.dilations,a=i.strides,s=i.pad;E(Si(r),function(){return"Error in gradient of conv3D: dilation rates greater than 1 are "+("not yet supported in gradients. Got dilations '"+r+"'")});var o=t[0],l=t[1];return{x:function(){return _g(o.shape,n,l,a,s)},filter:function(){return gD(o,n,l.shape,a,s)}}}};var yD={kernelName:tu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(vt(Sh(ue(e,"float32"))),n)}}}};var bD={kernelName:nu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(Lh(ue(e,"float32")),n)}}}};var wD={kernelName:iu,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.axis,s=r.exclusive,o=r.reverse;return{x:function(){var l=an([a],i.rank),u=rh(n,a,s,!o);return l!=null&&(u=ut(u,l)),u}}}};var SD={kernelName:ru,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=e,r=i.dilations,a=i.strides,s=i.pad,o=i.dimRoundingMode,l=r??[1,1];E(Si(l),function(){return"Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations "+("'"+l+"'")});var u=t,c=u[0],h=u[1];E(c.rank===4,function(){return"Error in gradient of depthwiseConv2dNative: input must be "+("rank 4, but got rank "+c.rank+".")}),E(h.rank===4,function(){return"Error in gradient of depthwiseConv2dNative: filter must be "+("rank 4, but got rank "+h.rank+".")}),E(c.shape[3]===h.shape[2],function(){return"Error in gradient of depthwiseConv2d: number of input "+("channels ("+c.shape[3]+") must match the inChannels dimension ")+("in filter "+h.shape[2]+".")}),E(Ht(a,l),function(){return"Error in gradient of depthwiseConv2d: Either strides or "+("dilations must be 1. Got strides "+a+" and dilations ")+("'"+l+"'.")}),o!=null&&E(rt(s),function(){return"Error in depthwiseConv2d: pad must be an integer when using, "+("dimRoundingMode "+o+" but got pad "+s+".")});var d=Bn(c.shape,h.shape,a,l,s,o,!0);return{x:function(){return zv(c.shape,n,h,d)},filter:function(){return Bv(c,n,h.shape,d)}}}};var LD={kernelName:au,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s={x:r,filter:a,dy:n},o={x:r,filter:a,dy:n};return{x:function(){return z.runKernel(kf,s,e)},filter:function(){return z.runKernel(Ff,o,e)}}}};var ID={kernelName:su,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=Ie(n,ue(i,"float32")),l=gt(e.shape,r);return l.length>0?V(Ae(o,l),e.shape):o},s=function(){var o=J(n,ue(e,"float32")),l=gt(i.shape,r);l.length>0&&(o=V(Ae(o,l),i.shape));var u=Ye(i);return vt(Ie(o,ue(u,"float32")))};return{a,b:s}}};var AD={kernelName:ou,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0],i=function(a){return a.eluDer(n,e)},r={dy:n,y:e};return{x:function(){return z.runKernelFunc(i,r,null,Wf)}}}};var TD={kernelName:lu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0],i=J(bn(vt(Ye(e))),2/Math.sqrt(Math.PI));return{x:function(){return J(n,i)}}}};var ND={kernelName:uu,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,e)}}}};var xD={kernelName:cu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,bn(e))}}}};var CD={kernelName:hu,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var RD={kernelName:du,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=Ie(n,ue(i,"float32")),l=gt(e.shape,r);return l.length>0?V(Ae(o,l),e.shape):o},s=function(){var o=J(n,ue(e,"float32")),l=gt(i.shape,r);l.length>0&&(o=V(Ae(o,l),i.shape));var u=Ye(i);return vt(Ie(o,ue(u,"float32")))};return{a,b:s}}};var OD={kernelName:pu,inputsToSave:["x","mean","variance","scale"],gradFunc:function(n,t,e){var i=e.varianceEpsilon,r=t[0],a=t[1],s=t[2],o=t[3],l=o??be(1),u=gt(a.shape,r.shape),c=[];if(a.rank===1){for(var h=0;h0?V(Ae(n,o),e.shape):n},s=function(){var o=J(n,vt(to(Ie(e,i)))),l=gt(i.shape,r);return l.length>0?V(Ae(o,l),i.shape):o};return{a,b:s}}};var QD={kernelName:Eu,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=J(n,ue(i,"float32")),l=gt(e.shape,r);return l.length>0?V(Ae(o,l),e.shape):o},s=function(){var o=J(n,ue(e,"float32")),l=gt(i.shape,r);return l.length>0?V(Ae(o,l),i.shape):o};return{a,b:s}}};var ek={kernelName:Du,gradFunc:function(n){return{x:function(){return vt(n)}}}};var tk={kernelName:Fu,inputsToSave:["indices"],gradFunc:function(n,t){var e=t[0];return{indices:function(){return ti(e.shape,"float32")}}}};var nk={kernelName:ku,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var ey={kernelName:Wu,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e.paddings,a=r.map(function(s){return s[0]});return{x:function(){return ze(n,a,i.shape)}}}};var ik={kernelName:Uu,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:function(n,t){var e=t[0],i=t[1],r=t[2],a=e,s=i,o=et(a.shape,s.shape),l=function(){var c=ue(s,"float32"),h=J(n,J(c,ni(a,ge(c,be(1))))),d=gt(a.shape,o);return d.length>0&&(h=Ae(h,d)),V(h,a.shape)},u=function(){var c=Li(a,0),h=yn(c,er(a),Ee(a)),d=J(n,J(r,h)),p=gt(s.shape,o);return p.length>0&&(d=Ae(d,p)),V(d,s.shape)};return{a:l,b:u}}};var rk={kernelName:Bu,inputsToSave:["x","alpha"],gradFunc:function(n,t){var e=t[0],i=t[1],r=Li(e,0);return{x:function(){return yn(r,n,J(n,i))},alpha:function(){var a=yn(r,Ee(n),J(n,e)),s=gt(i.shape,n.shape);return s.length>0&&(a=Ae(a,s)),V(a,i.shape)}}}};var ak={kernelName:zu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,vt(Ye(e)))}}}};var sk={kernelName:Vu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0],i=J(Qi(e,6),Zr(e));return{x:function(){return J(n,ue(i,"float32"))}}}};var ok={kernelName:Pu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,ue(Zr(e),"float32"))}}}};var lk={kernelName:_u,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return V(n,e.shape)}}}};var uk={kernelName:Hu,inputsToSave:["images"],gradFunc:function(n,t,e){var i=t[0],r=function(o){var l=e.alignCorners;return o.resizeBilinearBackprop(n,i,l)},a={images:i},s=function(){return z.runKernelFunc(r,a,null,lm,e)};return{images:s}}};var ck={kernelName:Mu,inputsToSave:["images"],gradFunc:function(n,t,e){var i=t[0],r=function(o){var l=e.alignCorners;return o.resizeNearestNeighborBackprop(n,i,l)},a={images:i},s=function(){return z.runKernelFunc(r,a,null,om,e)};return{images:s}}};var hk={kernelName:qu,gradFunc:function(n,t,e){var i=e.dims,r=Qe(i,n.shape);return{x:function(){return ii(n,r)}}}};var dk={kernelName:Gu,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var pk={kernelName:Yu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return vt(Ie(n,J(ni(e,1.5),2)))}}}};var fk={kernelName:ju,inputsToSave:["condition"],gradFunc:function(n,t){var e=t[0];return{condition:function(){return ue(Ee(e),"float32")},t:function(){return J(n,ue(e,n.dtype))},e:function(){return J(n,ue(so(e),n.dtype))}}}};var mk={kernelName:Ku,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){var i=Li(e,be(0)),r=be(Kv),a=be($v),s=J(n,a),o=J(J(n,r),bn(ue(e,"float32")));return yn(i,s,o)}}}};var gk={kernelName:Qu,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,J(e,ge(be(1),e)))}}}};var vk={kernelName:Zu,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var yk={kernelName:Xu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(eo(ue(e,"float32")),n)}}}};var bk={kernelName:Ju,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(ih(ue(e,"float32")),n)}}}};var wk={kernelName:$u,inputsToSave:["x"],gradFunc:function(n,t,e){for(var i=t[0],r=e,a=r.begin,s=r.size,o=i.shape,l=jc(i,a,s),u=l[0],c=l[1],h=[],d=0;d0&&(o=Ae(o,l)),V(o,e.shape)},s=function(){var o=n,l=gt(i.shape,r);return l.length>0&&(o=Ae(o,l)),V(vt(o),i.shape)};return{a,b:s}}};var Ck={kernelName:nc,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=i.shape.slice(),a=e.axis,s=Qe(a,i.shape);s.forEach(function(u){r[u]=1});var o=V(n,r),l=J(o,Kr(i.shape,"float32"));return{x:function(){return l}}}};var Rk={kernelName:lc,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,Ye(eo(e)))}}}};var Ok={kernelName:uc,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(ge(be(1),Ye(e)),n)}}}};var Ek={kernelName:cc,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e.reps,a=function(){var s=Ee(i);if(i.rank===1)for(var o=0;o{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});var y=lr();var Wh=function(n,t){return Wh=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},Wh(n,t)};function Q(n,t){Wh(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var $t=function(){return $t=Object.assign||function(t){for(var e,i=1,r=arguments.length;i0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]1&&s===1&&i.unshift(a)}return i}function gt(n,t){for(var e=[],i=0;i1)&&e.unshift(a)}return e}function et(n,t){for(var e=[],i=Math.max(n.length,t.length),r=0;rt||i===n?e=!0:i=Ps(n,i+1);return i}function UN(n,t,e){for(var i=[],r=n.length,a=0;a0,function(){return"variableGrads() expects at least one of the input variables to "+("be trainable, but none of the "+a+" variables is ")+"trainable."});var s=!0,o=z.gradients(n,t,null,s),l=o.value,u=o.grads;E(u.some(function(h){return h!=null}),function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."}),E(l.rank===0,function(){return"The f passed in variableGrads(f) must return a scalar, but it "+("returned a rank-"+l.rank+" tensor")});var c={};return t.forEach(function(h,d){u[d]!=null&&(c[h.name]=u[d])}),r!=null&&r.forEach(function(h){return c[h.name]=null}),{value:l,grads:c}}function zn(n){return z.customGrad(n)}function ao(n){var t=n.filter(function(e){return e==null}).length;if(t>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function ix(n){var t=O(n,"x","neg"),e={x:t};return z.runKernelFunc(function(i){return i.neg(t)},e,null,ku)}var vt=U({neg_:ix});function rx(n){var t=O(n,"x","softplus"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.softplus(t);return r([t]),a},e,null,tc)}var ch=U({softplus_:rx});function ax(n){var t=O(n,"x","logSigmoid"),e=zn(function(i){var r=vt(ch(vt(i))),a=function(s){var o=J(s,Ji(vt(i)));return o};return{value:r,gradFunc:a}});return e(t)}var tv=U({logSigmoid_:ax});function sx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","max"),r=function(o,l){var u=Qe(t,i.shape),c=u,h=rn(c,i.rank),d=i;h!=null&&(d=ut(i,h),c=Un(c.length,d.rank));var p=o.max(d,c);h!=null&&d.dispose();var f=p;if(e){var m=nn(f.shape,Qe(t,i.shape));f=V(f,m),p.dispose()}return l([i,f]),f},a={x:i},s={reductionIndices:t,keepDims:e};return z.runKernelFunc(r,a,null,Tu,s)}var tr=U({max_:sx});function ox(n,t){var e,i=O(n,"a","sub"),r=O(t,"b","sub");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.subtract(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,lc)}var ge=U({sub_:ox});function lx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","sum");i.dtype==="bool"&&(i=ue(i,"int32"));var r=function(o,l){l([i]);var u=Qe(t,i.shape),c=rn(u,i.rank),h=u,d=i;c!=null&&(d=ut(i,c),h=Un(h.length,i.rank));var p=o.sum(d,h);if(e){var f=nn(p.shape,u);p=V(p,f)}return p},a={x:i},s={axis:t,keepDims:e};return z.runKernelFunc(r,a,null,ic,s)}var Ae=U({sum_:lx});function ux(n,t){t===void 0&&(t=-1);var e=O(n,"logits","logSoftmax");if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. "+("Logits was rank "+e.rank+" and axis was "+t));var i=function(s,o){var l=!0,u=tr(n,t,!0),c=ge(n,u),h=ge(ue(c,"float32"),er(Ae(yn(c),t,l)));return o([h]),h},r={logits:e},a={axis:t};return z.runKernelFunc(i,r,null,Iu,a)}var nv=U({logSoftmax_:ux});function cx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","logSumExp"),r=Qe(t,i.shape),a=tr(i,r,!0),s=ge(i,a),o=yn(s),l=Ae(o,r),u=er(l),c=fe(V(a,u.shape),u);if(e){var h=nn(c.shape,r);return V(c,h)}return c}var hh=U({logSumExp_:cx});function hx(n,t){var e=O(n,"a","logicalAnd","bool"),i=O(t,"b","logicalAnd","bool");et(e.shape,i.shape);var r={a:e,b:i};return z.runKernelFunc(function(a){return a.logicalAnd(e,i)},r,null,jf)}var nr=U({logicalAnd_:hx});function dx(n){var t=O(n,"x","logicalNot","bool"),e={x:t};return z.runKernelFunc(function(i){return i.logicalNot(t)},e,null,Kf)}var so=U({logicalNot_:dx});function px(n,t){var e=O(n,"a","logicalOr","bool"),i=O(t,"b","logicalOr","bool");et(e.shape,i.shape);var r={a:e,b:i};return z.runKernelFunc(function(a){return a.logicalOr(e,i)},r,null,$f)}var dh=U({logicalOr_:px});function fx(n,t){var e=O(n,"a","logicalXor","bool"),i=O(t,"b","logicalXor","bool");return et(e.shape,i.shape),nr(dh(n,t),so(nr(n,t)))}var iv=U({logicalXor_:fx});function mx(n,t,e,i,r){var a=O(n,"x","maxPool"),s=1,o=a,l=!1;a.rank===3&&(l=!0,o=V(a,[1,a.shape[0],a.shape[1],a.shape[2]])),E(o.rank===4,function(){return"Error in maxPool: input must be rank 4 but got rank "+o.rank+"."}),E(Ht(e,s),function(){return"Error in maxPool: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+s+"'")}),r!=null&&E(rt(i),function(){return"Error in maxPool: pad must be an integer when using, "+("dimRoundingMode "+r+" but got pad "+i+".")});var u=function(p,f){var m=Vr(o.shape,t,e,1,i,r),g;return m.filterWidth===1&&m.filterHeight===1&&hn(m.inShape,m.outShape)?g=o.clone():g=p.maxPool(o,m),f([o,g]),g},c={x:o},h={filterSize:t,strides:e,pad:i,dimRoundingMode:r},d=z.runKernelFunc(u,c,null,xu,h);return l?V(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var ph=U({maxPool_:mx});function gx(n,t,e,i,r,a,s){t===void 0&&(t=[1,1,1]),a===void 0&&(a="NDHWC"),s==null?s=[1,1,1]:At("dilations is deprecated, this field will be gone in v3.0.0.");var o=O(n,"x","maxPool3d"),l=o,u=!1;o.rank===4&&(u=!0,l=V(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),E(l.rank===5,function(){return"Error in maxPool3d: x must be rank 5 but got rank "+l.rank+"."}),E(a==="NDHWC",function(){return"Error in maxPool3d: Only NDHWC is currently supported, "+("but got dataFormat of "+a)}),E(Ht(e,s),function(){return"Error in maxPool3d: Either strides or dilations must be 1. "+("Got strides "+e+" and dilations '"+s+"'")}),r!=null&&E(rt(i),function(){return"Error in maxPool3d: pad must be an integer when using, "+("dimRoundingMode "+r+" but got pad "+i+".")});var c=function(f,m){s==null&&(s=[1,1,1]);var g=Ha(l.shape,t,e,s,i,r,a),v=f.maxPool3d(l,g);return m([l,v]),v},h={x:l},d={filterSize:t,strides:e,pad:i,dimRoundingMode:r,dataFormat:a,dilations:s},p=z.runKernelFunc(c,h,null,Cu,d);return u?V(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var vx=U({maxPool3d_:gx});function yx(n,t,e,i,r){r===void 0&&(r=!1);var a=O(n,"x","maxPoolWithArgmax"),s={x:a},o={filterSize:t,strides:e,pad:i,includeBatchInIndex:r},l=z.runKernel(Qf,s,o);return{result:l[0],indexes:l[1]}}var bx=U({maxPoolWithArgmax_:yx});function ti(n,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=ti(n,"float32"),i=ti(n,"float32");return mi(e,i)}var r=Ur(ot(n),t);return z.makeTensor(r,n,t)}function Kr(n,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=Kr(n,"float32"),i=ti(n,"float32");return mi(e,i)}var r=Tc(ot(n),t);return z.makeTensor(r,n,t)}function wx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","mean"),r=Qe(t,i.shape),a=Ag(i.shape,r),s=a[1],o=ot(s),l=zn(function(u){var c=be(o),h=c.dtype===u.dtype?u:ue(u,c.dtype),d=Ie(h,c),p=Ae(d,t,e),f=function(m){var g=u.shape.slice();r.forEach(function(w){g[w]=1});var v=V(m,g),b=Ie(J(v,Kr(u.shape,"float32")),o);return b};return{value:p,gradFunc:f}});return l(i)}var Ya=U({mean_:wx});function Sx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","min"),r=function(o,l){var u=Qe(t,i.shape),c=u,h=rn(c,i.rank),d=i;h!=null&&(d=ut(i,h),c=Un(c.length,i.rank));var p=o.min(d,c);h!=null&&d.dispose();var f=p;if(e){var m=nn(f.shape,u);f=V(p,m),p.dispose()}return l([i,f]),f},a={x:i},s={axis:t,keepDims:e};return z.runKernelFunc(r,a,null,Ru,s)}var oo=U({min_:Sx});function Lx(n,t){var e,i=O(n,"a","minimum"),r=O(t,"b","minimum");e=at(i,r),i=e[0],r=e[1],i.dtype==="bool"&&(i=ue(i,"int32"),r=ue(r,"int32")),et(i.shape,r.shape);var a=function(o,l){var u=o.minimum(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Ou)}var lo=U({minimum_:Lx});function Ix(n,t){var e,i=O(n,"a","mod"),r=O(t,"b","mod");e=at(i,r),i=e[0],r=e[1];var a=function(o,l){var u=o.mod(i,r);return l([i,r]),u},s={a:i,b:r};return z.runKernelFunc(a,s,null,Eu)}var fh=U({mod_:Ix});function Ax(n){var t=O(n,"x","square"),e={},i=[t],r=[];return z.runKernelFunc(function(a,s){return s([t]),a.square(t)},{x:t},null,"Square",e,i,r)}var Ye=U({square_:Ax});function Tx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1),n=O(n,"x","moments");var i=Qe(t,n.shape),r=Ya(n,i,e),a=r.shape;e||(a=nn(r.shape,i));var s=Ye(ge(ue(n,"float32"),V(r,a))),o=Ya(s,i,e);return{mean:r,variance:o}}var Nx=U({moments_:Tx});function xx(n,t,e,i){for(var r=O(t,"data","multiRNNCell"),a=za(e,"c","multiRNNCell"),s=za(i,"h","multiRNNCell"),o=r,l=[],u=0;u2)throw new Error("Rank of probabilities must be 1 or 2, but is "+s);e=e||Math.random();var o=s===1?V(r,[1,-1]):r,l=z.runKernelFunc(function(u){return u.multinomial(o,i,t,e)},{logits2D:o});return s===1?V(l,[l.size]):l}var Ox=U({multinomial_:Rx});function Ex(n,t){var e,i=O(n,"a","notEqual"),r=O(t,"b","notEqual");e=at(i,r),i=e[0],r=e[1],et(i.shape,r.shape);var a=function(o){return o.notEqual(i,r)},s={a:i,b:r};return z.runKernelFunc(a,s,null,em)}var uo=U({notEqual_:Ex});function Dx(n){var t=O(n,"input","real"),e=function(r){return r.real(t)},i={input:t};return z.runKernelFunc(e,i,null,sm)}var ja=U({real_:Dx});function kx(n){var t=O(n,"x","onesLike"),e=function(r,a){if(t.dtype==="complex64"){var s=mh(ja(t)),o=Ee(io(t));return mi(s,o)}return r.onesLike(t)},i={x:t};return z.runKernelFunc(e,i,null,Fu)}var mh=U({onesLike_:kx});function Fx(n,t){var e=O(n,"v1","outerProduct"),i=O(t,"v2","outerProduct");E(e.rank===1&&i.rank===1,function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+(e.rank+" and "+i.rank+".")});var r=V(e,[-1,1]),a=V(i,[1,-1]);return We(r,a)}var Wx=U({outerProduct_:Fx});function Ux(n,t,e){e===void 0&&(e=0);var i=O(n,"x","pad");if(i.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var r=function(o,l){return l([i]),o.pad(i,t,e)},a={paddings:t,constantValue:e},s={x:i};return z.runKernelFunc(r,s,null,Uu,a)}var ir=U({pad_:Ux});function Bx(n,t,e){return e===void 0&&(e=0),E(t.length===2,function(){return"Invalid number of paddings. Must be length of 2."}),ir(n,[t],e)}var zx=U({pad1d_:Bx});function Px(n,t,e){return e===void 0&&(e=0),E(t.length===2&&t[0].length===2&&t[1].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),ir(n,t,e)}var _x=U({pad2d_:Px});function Mx(n,t,e){return e===void 0&&(e=0),E(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),ir(n,t,e)}var Hx=U({pad3d_:Mx});function Vx(n,t,e){return e===void 0&&(e=0),E(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),ir(n,t,e)}var qx=U({pad4d_:Vx});function Gx(n,t,e){var i=O(n,"x","spaceToBatchND");E(i.rank>=1+t.length,function(){return"input rank "+i.rank+" should be > than [blockShape] "+t.length}),E(e.length===t.length,function(){return"paddings.shape[0] "+e.length+" must be equal to [blockShape] "+t.length}),E(i.shape.reduce(function(o,l,u){return u>0&&u<=t.length?o&&(l+e[u-1][0]+e[u-1][1])%t[u-1]===0:o},!0),function(){return"input spatial dimensions "+i.shape.slice(1)+" with paddings "+e.toString()+" must be divisible by blockShapes "+t.toString()});var r=function(o){return o.spaceToBatchND(i,t,e)},a={x:i},s={blockShape:t,paddings:e};return z.runKernelFunc(r,a,null,rc,s)}var co=U({spaceToBatchND_:Gx});function Kx(n,t,e,i,r,a){r==null&&(r=[1,1]),a==null&&(a=1),i===0&&(i="valid");var s=O(n,"x","maxPool"),o=s,l=!1;s.rank===3&&(l=!0,o=V(s,[1,s.shape[0],s.shape[1],s.shape[2]])),E(Ht(a,r),function(){return"Error in pool: Either strides or dilations must be 1. "+("Got strides "+a+" and dilations '"+r+"'")});var u=Vr(o.shape,t,a,r,i),c=[u.dilationHeight,u.dilationWidth],h;i==="same"?h=jx([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];var d=c[0]===1&&c[1]===1,p=Yx([u.inHeight,u.inWidth],c,h),f=p[0],m=p[1],g=d?i:"valid",v=d?o:co(o,c,f),b=e==="avg"?function(){return nh(v,t,a,g)}:function(){return ph(v,t,a,g)},w=b(),S=d?w:Js(w,c,m);return l?V(S,[S.shape[1],S.shape[2],S.shape[3]]):S}function Yx(n,t,e){var i=e.map(function(c){return c[0]}),r=e.map(function(c){return c[1]}),a=n.concat(i,r),s=t.map(function(c,h){return(c-a[h]%c)%c}),o=r.map(function(c,h){return c+s[h]}),l=t.map(function(c,h){return[i[h],o[h]]}),u=t.map(function(c,h){return[0,s[h]]});return[l,u]}function jx(n,t){var e=n.map(function(s,o){return s+(s-1)*(t[o]-1)}),i=e.map(function(s){return s-1}),r=i.map(function(s){return Math.floor(s/2)}),a=i.map(function(s,o){return s-r[o]});return i.map(function(s,o){return[r[o],a[o]]})}var rv=U({pool_:Kx});function $x(n,t){var e,i=O(n,"base","pow"),r=O(t,"exp","pow");e=at(i,r),i=e[0],r=e[1];var a={a:i,b:r},s=function(o,l){var u=o.pow(i,r);return l([i,r,u]),u};return z.runKernelFunc(s,a,null,Bu)}var ni=U({pow_:$x});function Xx(n,t){var e=O(n,"x","prelu"),i=O(t,"alpha","prelu"),r=function(s,o){var l=s.prelu(e,i);return o([e,i]),l},a={x:e,alpha:i};return z.runKernelFunc(r,a,null,zu)}var gh=U({prelu_:Xx});function Jx(n,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var i=O(n,"x","prod"),r=function(o){i.dtype==="bool"&&(i=ue(i,"int32"));var l=Qe(t,i.shape),u=rn(l,i.rank),c=l,h=i;u!=null&&(h=ut(i,u),c=Un(c.length,i.rank));var d=o.prod(h,c);if(e){var p=nn(d.shape,l);d=V(d,p)}return d},a={x:i},s={axis:t,keepDims:e};return z.runKernelFunc(r,a,null,rm,s)}var av=U({prod_:Jx});function Zx(n,t,e){var i=ot(n),r=null;if(e==null||e==="float32")r=new Float32Array(i);else if(e==="int32")r=new Int32Array(i);else if(e==="bool")r=new Uint8Array(i);else throw new Error("Unknown data type "+e);for(var a=0;a>>0,d-=l,d*=l,l=d>>>0,d-=l,l+=d*4294967296}return(l>>>0)*23283064365386963e-26};return u}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.alea=s})($r,n,!1)}),tC=rr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var h=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^h^h>>>8},o===(o|0)?l.x=o:u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor128=s})($r,n,!1)}),nC=rr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(h^h<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,o===(o|0)?l.x=o:u+=o;for(var c=0;c>>4),l.next()}function a(o,l){return l.x=o.x,l.y=o.y,l.z=o.z,l.w=o.w,l.v=o.v,l.d=o.d,l}function s(o,l){var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorwow=s})($r,n,!1)}),iC=rr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.x,h=l.i,d,p;return d=c[h],d^=d>>>7,p=d^d<<24,d=c[h+1&7],p^=d^d>>>10,d=c[h+3&7],p^=d^d>>>3,d=c[h+4&7],p^=d^d<<7,d=c[h+7&7],d=d^d<<13,p^=d^d<<9,c[h]=p,l.i=h+1&7,p};function u(c,h){var d,p,f=[];if(h===(h|0))p=f[0]=h;else for(h=""+h,d=0;d0;--d)c.next()}u(l,o)}function a(o,l){return l.x=o.x.slice(),l.i=o.i,l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.x&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorshift7=s})($r,n,!1)}),rC=rr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.w,h=l.X,d=l.i,p,f;return l.w=c=c+1640531527|0,f=h[d+34&127],p=h[d=d+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,f=h[d]=f^p,l.i=d,f+(c^c>>>16)|0};function u(c,h){var d,p,f,m,g,v=[],b=128;for(h===(h|0)?(p=h,h=null):(h=h+"\0",p=0,b=Math.max(b,h.length)),f=0,m=-32;m>>15,p^=p<<4,p^=p>>>13,m>=0&&(g=g+1640531527|0,d=v[m&127]^=p+g,f=d==0?f+1:0);for(f>=128&&(v[(h&&h.length||0)&127]=-1),f=127,m=4*128;m>0;--m)p=v[f+34&127],d=v[f=f+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,v[f]=p^d;c.w=g,c.X=v,c.i=f}u(l,o)}function a(o,l){return l.i=o.i,l.w=o.w,l.X=o.X.slice(),l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.X&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor4096=s})($r,n,!1)}),aC=rr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.b,d=l.c,p=l.d,f=l.a;return h=h<<25^h>>>7^d,d=d-p|0,p=p<<24^p>>>8^f,f=f-h|0,l.b=h=h<<20^h>>>12^d,l.c=d=d-p|0,l.d=p<<16^d>>>16^f,l.a=f-h|0},l.a=0,l.b=0,l.c=2654435769|0,l.d=1367130551,o===Math.floor(o)?(l.a=o/4294967296|0,l.b=o|0):u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.tychei=s})($r,n,!1)}),ar=rr(function(n){(function(t,e){var i=this,r=256,a=6,s=52,o="random",l=e.pow(r,a),u=e.pow(2,s),c=u*2,h=r-1,d;function p(S,L,N){var C=[];L=L==!0?{entropy:!0}:L||{};var R=v(g(L.entropy?[S,w(t)]:S??b(),3),C),D=new f(C),k=function(){for(var W=D.g(a),F=l,P=0;W=c;)W/=2,F/=2,P>>>=1;return(W+P)/F};return k.int32=function(){return D.g(4)|0},k.quick=function(){return D.g(4)/4294967296},k.double=k,v(w(D.S),t),(L.pass||N||function(W,F,P,H){return H&&(H.S&&m(H,D),W.state=function(){return m(D,{})}),P?(e[o]=W,F):W})(k,R,"global"in L?L.global:this==e,L.state)}e["seed"+o]=p;function f(S){var L,N=S.length,C=this,R=0,D=C.i=C.j=0,k=C.S=[];for(N||(S=[N++]);R=1||o===0);var l=Math.sqrt(-2*Math.log(o)/o);e=this.mean+this.stdDev*a*l,i=this.mean+this.stdDev*s*l,(!this.truncated||this.isValidTruncated(e))&&(r=!0)}return(!this.truncated||this.isValidTruncated(i))&&(this.nextVal=this.convertValue(i)),this.convertValue(e)},n.prototype.convertValue=function(t){return this.dtype==null||this.dtype==="float32"?t:Math.round(t)},n.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},n}(),oC=function(){function n(t,e,i,r){this.alpha=t,this.beta=1/e,this.dtype=i;var a=r||Math.random();this.randu=vh(a.toString()),this.randn=new yh(0,1,i,!1,this.randu()),t<1?this.d=t+2/3:this.d=t-1/3,this.c=1/Math.sqrt(9*this.d)}return n.prototype.nextValue=function(){for(var t,e,i,r,a,s;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,t=r*r,e=1-.331*t*t,i=.5*t+this.d*(1-s+Math.log(s)),a=this.randu(),a1;if(s||o||l)return ti([0],i);var u=Math.abs(Math.ceil((t-n)/e)),c=Ur(u,i);t0?o+l:o});t[a]=n.shape[e]-s}E(n.shape[e]===t.reduce(function(o,l){return o+l}),function(){return"The sum of sizes must match the size of the axis dimension."}),i=t}return i}function jC(n,t,e){e===void 0&&(e=0);var i=O(n,"x","split"),r=function(o,l){var u=Qe(e,i.shape)[0],c=pv(i,t,u);return o.split(i,c,u)},a={x:i},s={numOrSizeSplits:t,axis:e};return z.runKernelFunc(r,a,null,ac,s)}var Jr=U({split_:jC});function KC(n,t){E(n.dtype==="float32",function(){return"The dtype for rfft() must be real value but got "+n.dtype});var e=n.shape[n.shape.length-1],i=n.size/e,r;if(t!=null&&te){var o=n.shape.map(function(v){return v});o[n.shape.length-1]=t-e,r=Rt([n,ti(o)],n.shape.length-1),e=t}else r=n;var l=Ee(r),u=V(mi(r,l),[i,e]),c=ho(u),h=Math.floor(e/2)+1,d=ja(c),p=io(c),f=Jr(d,[h,e-h],d.shape.length-1),m=Jr(p,[h,e-h],p.shape.length-1),g=r.shape.slice();return g[r.shape.length-1]=h,V(mi(f[0],m[0]),g)}var po=U({rfft_:KC});function $C(n){var t=O(n,"x","sqrt"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.sqrt(t);return r([t]),a},e,null,nc)}var Vt=U({sqrt_:$C});function XC(n,t){var e,i=O(n,"a","squaredDifference"),r=O(t,"b","squaredDifference");e=at(i,r),i=e[0],r=e[1],et(i.shape,r.shape);var a=function(l,u){var c=l.squaredDifference(i,r);return u([i,r]),c},s={a:i,b:r},o={};return z.runKernelFunc(a,s,null,oc,o)}var fo=U({squaredDifference_:XC});function JC(n,t){var e=O(n,"x","squeeze");return V(e,wm(e.shape,t).newShape)}var mo=U({squeeze_:JC});function ZC(n,t){t===void 0&&(t=0);var e=za(n,"tensors","stack");if(E(e.length>=1,function(){return"Pass at least one tensor to tf.stack"}),e.length===1)return bn(e[0],t);var i=e[0].rank,r=e[0].shape,a=e[0].dtype;E(t<=i,function(){return"Axis must be <= rank of the tensor"}),e.forEach(function(o){Be(r,o.shape,"All tensors passed to stack must have matching shapes"),E(a===o.dtype,function(){return"All tensors passed to stack must have matching dtypes"})});var s=e.map(function(o){return bn(o,t)});return Rt(s,t)}var sr=U({stack_:ZC});function QC(n,t){t===void 0&&(t=0);var e=O(n,"x","step"),i={x:e},r={alpha:t};return z.runKernelFunc(function(a){return a.step(e,t)},i,null,gc,r)}var Zr=U({step_:QC});function eR(n,t,e,i,r,a,s,o,l){r===void 0&&(r=0),a===void 0&&(a=0),s===void 0&&(s=0),o===void 0&&(o=0),l===void 0&&(l=0);var u=O(n,"x","stridedSlice"),c=function(p){i==null&&(i=new Array(t.length));var f=js(s);if(f.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(s!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(s!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");var m=u.rank-t.length,g=js(o),v=u.shape.slice();g.forEach(function(W){t[W]=0,e[W]=1,v.splice(W,0,1)}),u=V(u,v);var b=mg(u.shape,f,m,t,e,i,r,a,s),w=b.begin,S=b.end,L=b.strides;t=w,e=S,i=L;var N=js(l);N.forEach(function(W){e[W]=t[W]+1,i[W]=1});var C=sg(t,e,i),R=C.filter(function(W,F){return N.indexOf(F)===-1}),D=i.every(function(W){return W===1});if(D)return V(ze(u,t,C),R);var k=p.stridedSlice(u,t,e,i);return V(k,R)},h={x:u},d={begin:t,end:e,strides:i,beginMask:r,endMask:a,ellipsisMask:s,newAxisMask:o,shrinkAxisMask:l};return z.runKernelFunc(c,h,null,dm,d)}var fv=U({stridedSlice_:eR});function tR(n){var t=O(n,"x","tan"),e={x:t};return z.runKernelFunc(function(i,r){var a=i.tan(t);return r([t]),a},e,null,uc)}var mv=U({tan_:tR});function Xa(n,t,e){if(Yi(n),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");var i=Fn(n,e);if(i.length!==2&&i.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return gi(n,t,i,e)}function nR(n,t,e){if(Yi(n),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");var i=Fn(n,e);if(i.length!==4&&i.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return gi(n,t,i,e)}function iR(n,t,e){if(Yi(n),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");var i=Fn(n,e);if(i.length!==5&&i.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return gi(n,t,i,e)}function rR(n,t,e){if(Yi(n),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");var i=Fn(n,e);if(i.length!==6&&i.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(i.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||i,gi(n,t,i,e)}function aR(n,t,e){t===void 0&&(t=1),e===void 0&&(e=!0);var i=O(n,"x","topk");if(i.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");var r=i.shape[i.shape.length-1];if(t>r)throw new Error("'k' passed to topk() must be <= the last dimension ("+r+") "+("but got "+t));var a={x:i},s={k:t,sorted:e},o=z.runKernelFunc(function(c){return c.topk(i,t,e)},a,null,pm,s),l=o[0],u=o[1];return{values:l,indices:u}}var gv=U({topk_:aR});function sR(n,t,e,i,r){if(t===void 0&&(t=0),e===void 0&&(e=1),i!=null&&i==="bool")throw new Error("Unsupported data type $ { dtype }");for(var a=new yh(t,e,i,!0,r),s=Wn(n,i),o=0;o0,function(){return"The input tensor must be at least 1D"});var i={x:e},r={axis:t},a=z.runKernel(fm,i,r),s=a[0],o=a[1];return{values:s,indices:o}}var vv=U({unique_:lR});function uR(n,t,e){var i=O(n,"x","unsortedSegmentSum"),r=O(t,"segmentIds","unsortedSegmentSum","int32");E(rt(e),function(){return"numSegments must be of dtype int"});var a={x:i,segmentIds:r},s={numSegments:e},o=function(l,u){var c=l.unsortedSegmentSum(i,r,e);return u([r]),c};return z.runKernelFunc(o,a,null,fc,s)}var Th=U({unsortedSegmentSum_:uR});function cR(n,t){t===void 0&&(t=0);var e=O(n,"x","unstack");E(t>=-e.shape.length&&t0,function(){return"mask cannot be scalar"}),Be(o.slice(a,a+s),r.shape,"mask's shape must match the first K dimensions of tensor's shape,"),l=1,u=a;u2)throw new Error("sparseIndices should be a scalar, vector, or matrix,"+(" but got shape "+n.shape+"."));var r=n.rank>0?n.shape[0]:1,a=n.rank>1?n.shape[1]:1;if(e.length!==a)throw new Error("outputShape has incorrect number of elements:,"+(" "+e.length+", should be: "+a+"."));var s=t.size;if(!(t.rank===0||t.rank===1&&s===r))throw new Error("sparseValues has incorrect shape "+(t.shape+", should be [] or ["+r+"]"));if(t.dtype!==i.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function UR(n,t,e,i){i===void 0&&(i=0);var r=O(n,"sparseIndices","sparseToDense","int32"),a=O(t,"sparseValues","sparseToDense"),s=O(i,"defaultValue","sparseToDense",a.dtype);WR(r,a,e,s);var o={sparseIndices:r,sparseValues:a,defaultValue:s},l={outputShape:e};return z.runKernelFunc(function(u){return u.sparseToDense(r,a,e,s)},o,null,hm,l)}var BR=U({sparseToDense_:UR});function zR(n,t){var e=O(t,"indices","gatherND","int32"),i=O(n,"x","gatherND"),r=function(s){return s.gatherND(i,e)},a={params:i,indices:e};return z.runKernelFunc(r,a,null,_f)}var PR=U({gatherND_:zR});function _R(n,t){if(t==null)return n.shape.slice();if(hn(n.shape,t))return t;if(n.shape.length===t.length){for(var e=[],i=0;i=0&&t<1,function(){return"rate must be a float in the range [0, 1), but got "+t+"."}),t===0)return n instanceof Y?r.clone():r;var a=_R(r,e),s=1-t,o=Ie(to(fe(sv(a,0,1,"float32",i),s)),s);return J(r,o)}var HR=U({dropout_:MR});function Uv(n){return Math.floor(Math.pow(2,Math.ceil(Math.log(n)/Math.log(2))))}function Nh(n,t,e){for(var i=1-n%2,r=new Float32Array(n),a=0;a1,function(){return"inTopK() expects the predictions to be of rank 2 or higher, "+("but got "+i.rank)}),E(i.rank-1===r.rank,function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+(i.rank+" and targets rank "+r.rank)}),Be(i.shape.slice(0,i.shape.length-1),r.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),a=i.shape[i.shape.length-1],E(e>0&&e<=a,function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last "+("dimension ("+a+"), but got "+e)}),[4,i.data()];case 1:return s=v.sent(),[4,r.data()];case 2:for(o=v.sent(),l=[s.length/a,a],u=l[0],c=l[1],h=Bs("bool",u),d=0;d0&&(e=Ae(e,i)),V(e,n.shape)}function wo(n,t,e){if(t==="linear")return n;if(t==="relu")return Ka(n);if(t==="elu")return sh(n);if(t==="relu6")return wh(n);if(t==="prelu")return gh(n,e);throw new Error("Unknown fused activation "+t+".")}var So=function(n,t){var e=n>0;return!e||t==="linear"};function YR(n){var t=n.x,e=n.filter,i=n.strides,r=n.pad,a=n.dataFormat,s=a===void 0?"NHWC":a,o=n.dilations,l=o===void 0?[1,1]:o,u=n.dimRoundingMode,c=n.bias,h=n.activation,d=h===void 0?"linear":h,p=n.preluActivationWeights;if(d=d||"linear",So(z.state.gradientDepth,d)===!1){var f=Gr(t,e,i,r,s,l,u);return c!=null&&(f=fe(f,c)),wo(f,d,p)}var m=O(t,"x","conv2d"),g=O(e,"filter","conv2d"),v=m,b=!1;m.rank===3&&(b=!0,v=V(m,[1,m.shape[0],m.shape[1],m.shape[2]])),E(v.rank===4,function(){return"Error in fused conv2d: input must be rank 4, but got rank "+(v.rank+".")}),E(g.rank===4,function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+(g.rank+".")}),u!=null&&E(rt(r),function(){return"Error in fused conv2d: pad must be an integer when using, "+("dimRoundingMode "+u+" but got pad "+r+".")}),E(v.shape[3]===g.shape[2],function(){return"Error in conv2d: depth of input ("+v.shape[3]+") must match "+("input depth for filter "+g.shape[2]+".")}),E(Ht(i,l),function(){return"Error in conv2D: Either strides or dilations must be 1. "+("Got strides "+i+" and dilations '"+l+"'")}),E(s==="NHWC",function(){return"Error in conv2d: got dataFormat of "+s+" but only NHWC is currently supported."});var w=Bn(v.shape,g.shape,i,l,r,u),S;c!=null&&(S=O(c,"bias","fused conv2d"),S=at(S,m)[0],et(w.outShape,S.shape));var L;p!=null&&(L=O(p,"prelu weights","fused conv2d"));var N=function(F,P){var H=P,_=H[0],j=H[1],K=H[2],q=H[3],G=yo(F,K,d);E(Si(l),function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 "+("are not yet supported in gradients. Got dilations '"+l+"'")});var Z=ih(j.shape,G,_,i,r),X=xh(j,G,_.shape,i,r),ee=[Z,X];if(q!=null){var ne=bo(q,G);ee.push(ne)}return ee},C=function(F){var P=F.fusedConv2d({input:v,filter:g,convInfo:w,bias:S,activation:d,preluActivationWeights:L});return P},R={x:v,filter:g,bias:S,preluActivationWeights:L},D={strides:i,pad:r,dataFormat:s,dilations:l,dimRoundingMode:u,activation:d};if(c==null){var k=zn(function(F,P,H){var _=z.runKernelFunc(C,R,null,bc,D);return H([P,F,_]),b&&(_=V(_,[_.shape[1],_.shape[2],_.shape[3]])),{value:_,gradFunc:N}});return k(v,g)}else{var W=zn(function(F,P,H,_){var j=z.runKernelFunc(C,R,null,bc,D);return _([P,F,j,H]),b&&(j=V(j,[j.shape[1],j.shape[2],j.shape[3]])),{value:j,gradFunc:N}});return W(v,g,S)}}var jR=U({fusedConv2d_:YR});function KR(n,t,e,i){var r=n;n.rank===3&&(r=V(n,[1,n.shape[0],n.shape[1],n.shape[2]]));var a=t;a.rank===3&&(a=V(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var s=function(l){return l.depthwiseConv2DDerFilter(r,a,i)},o={x:r,dy:a};return z.runKernelFunc(s,o,null,Of)}var Bv=U({depthwiseConv2dNativeBackpropFilter_:KR});function $R(n,t,e,i){var r=t,a=!1;t.rank===3&&(a=!0,r=V(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var s=function(u){return u.depthwiseConv2DDerInput(r,e,i)},o={dy:r},l=z.runKernelFunc(s,o,null,Ef);return a?V(l,[l.shape[1],l.shape[2],l.shape[3]]):l}var zv=U({depthwiseConv2dNativeBackpropInput_:$R});function XR(n){var t=n.x,e=n.filter,i=n.strides,r=n.pad,a=n.dataFormat,s=a===void 0?"NHWC":a,o=n.dilations,l=o===void 0?[1,1]:o,u=n.dimRoundingMode,c=n.bias,h=n.activation,d=h===void 0?"linear":h,p=n.preluActivationWeights;if(So(z.state.gradientDepth,d)===!1){var f=qa(t,e,i,r,s,l,u);return c!=null&&(f=fe(f,c)),wo(f,d,p)}var m=O(t,"x","depthwiseConv2d"),g=O(e,"filter","depthwiseConv2d"),v=m,b=!1;m.rank===3&&(b=!0,v=V(m,[1,m.shape[0],m.shape[1],m.shape[2]])),E(v.rank===4,function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got "+("rank "+v.rank+".")}),E(g.rank===4,function(){return"Error in fused depthwiseConv2d: filter must be rank 4, "+("but got rank "+g.rank+".")}),E(v.shape[3]===g.shape[2],function(){return"Error in fused depthwiseConv2d: number of input channels "+("("+v.shape[3]+") must match the inChannels dimension in ")+("filter "+g.shape[2]+".")}),l==null&&(l=[1,1]),E(Ht(i,l),function(){return"Error in fused depthwiseConv2d: Either strides or dilations must "+("be 1. Got strides "+i+" and dilations '"+l+"'")}),u!=null&&E(rt(r),function(){return"Error in fused depthwiseConv2d: pad must be an integer when "+("using dimRoundingMode "+u+" but got pad "+r+".")});var w=Bn(v.shape,g.shape,i,l,r,u,!0),S;c!=null&&(S=O(c,"bias","fused conv2d"),S=at(S,m)[0],et(w.outShape,S.shape));var L;p!=null&&(L=O(p,"prelu weights","fused depthwiseConv2d"));var N=function(F,P){E(Si(l),function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations "+("'"+l+"'")});var H=P[0],_=P[1],j=P[2],K=P[3],q=yo(F,j,d),G=zv(_.shape,q,H,w),Z=Bv(_,q,H.shape,w);if(K!=null){var X=bo(S,q);return[G,Z,X]}return[G,Z]},C=function(F){var P=F.fusedDepthwiseConv2D({input:v,filter:g,convInfo:w,bias:S,activation:d,preluActivationWeights:L});return P},R={x:v,filter:g,bias:S,preluActivationWeights:L},D={strides:i,pad:r,dataFormat:s,dilations:l,dimRoundingMode:u,activation:d};if(c==null){var k=zn(function(F,P,H){var _=z.runKernelFunc(C,R,null,wc,D);return H([P,F,_]),b&&(_=V(_,[_.shape[1],_.shape[2],_.shape[3]])),{value:_,gradFunc:N}});return k(v,g)}else{var W=zn(function(F,P,H,_){var j=z.runKernelFunc(C,R,null,wc,D);return _([P,F,j,H]),b&&(j=V(j,[j.shape[1],j.shape[2],j.shape[3]])),{value:j,gradFunc:N}});return W(v,g,S)}}var JR=U({fusedDepthwiseConv2d_:XR});function ZR(n){var t,e=n.a,i=n.b,r=n.transposeA,a=r===void 0?!1:r,s=n.transposeB,o=s===void 0?!1:s,l=n.bias,u=n.activation,c=u===void 0?"linear":u,h=n.preluActivationWeights;if(So(z.state.gradientDepth,c)===!1){var d=We(e,i,a,o);return l!=null&&(d=fe(d,l)),wo(d,c,h)}var p=O(e,"a","fused matMul"),f=O(i,"b","fused matMul");t=at(p,f),p=t[0],f=t[1];var m=a?p.shape[p.rank-2]:p.shape[p.rank-1],g=o?f.shape[f.rank-1]:f.shape[f.rank-2],v=a?p.shape[p.rank-1]:p.shape[p.rank-2],b=o?f.shape[f.rank-2]:f.shape[f.rank-1],w=p.shape.slice(0,-2),S=f.shape.slice(0,-2),L=ot(w),N=ot(S);E(p.rank>=2&&f.rank>=2&&p.rank===f.rank,function(){return"Error in fused matMul: inputs must have the same rank of at least "+("2, got ranks "+p.rank+" and "+f.rank+".")}),E(hn(w,S),function(){return"Error in fused matMul: outer dimensions ("+w+") and ("+(S+") of Tensors with shapes "+p.shape+" and ")+(f.shape+" must match.")}),E(m===g,function(){return"Error in fused matMul: inner shapes ("+m+") and ("+(g+") of Tensors with shapes "+p.shape+" and ")+(f.shape+" and transposeA="+a)+(" and transposeB="+o+" must match.")});var C=p.shape.slice(0,-2).concat([v,b]),R=a?V(p,[L,m,v]):V(p,[L,v,m]),D=o?V(f,[N,b,g]):V(f,[N,g,b]),k;l!=null&&(k=O(l,"bias","fused matMul"),k=at(k,p)[0],et(C,k.shape));var W;h!=null&&(W=O(h,"prelu weights","fused matMul"));var F=function(q,G){var Z=G[0],X=G[1],ee=G[2],ne=G[3],ie=yo(V(q,ee.shape),ee,c),te,re;if(!a&&!o?(te=We(ie,X,!1,!0),re=We(Z,ie,!0,!1)):!a&&o?(te=We(ie,X,!1,!1),re=We(ie,Z,!0,!1)):a&&!o?(te=We(X,ie,!1,!0),re=We(Z,ie,!1,!1)):(te=We(X,ie,!0,!0),re=We(ie,Z,!0,!0)),l!=null){var le=bo(ne,ie);return[te,re,le]}else return[te,re]},P=function(q){var G=q.fusedBatchMatMul({a:R,b:D,transposeA:a,transposeB:o,bias:k,activation:c,preluActivationWeights:W});return G},H={a:R,b:D,bias:k,preluActivationWeights:W},_={transposeA:a,transposeB:o,activation:c};if(l==null){var j=zn(function(q,G,Z){var X=z.runKernelFunc(P,H,null,yc,_);return Z([q,G,X]),{value:V(X,C),gradFunc:F}});return j(R,D)}else{var K=zn(function(q,G,Z,X){var ee=z.runKernelFunc(P,H,null,yc,_);return X([q,G,ee,Z]),{value:V(ee,C),gradFunc:F}});return K(R,D,k)}}var QR=U({fusedMatMul_:ZR});var eO={__proto__:null,conv2d:jR,depthwiseConv2d:JR,matMul:QR};function tO(n){return Nh(n,.54,.46)}var nO=U({hammingWindow_:tO});function iO(n){return Nh(n,.5,.5)}var Pv=U({hannWindow_:iO});function rO(n,t,e,i,r){i===void 0&&(i=!1),r===void 0&&(r=0);for(var a=0,s=[];a+t<=n.size;)s.push(ze(n,a,t)),a+=e;if(i)for(;a=1&&i[1]>=1,function(){return"cropSize must be atleast [1,1], but was "+i}),E(r==="bilinear"||r==="nearest",function(){return"method must be bilinear or nearest, but was "+r});var c=function(f){return f.cropAndResize(s,o,l,i,r,a)},h={image:s,boxes:o,boxInd:l},d={method:r,extrapolationValue:a,cropSize:i},p=z.runKernelFunc(c,h,null,Cf,d);return p}var lO=U({cropAndResize_:oO});function uO(n){var t=O(n,"image","flipLeftRight","float32");E(t.rank===4,function(){return"Error in flipLeftRight: image must be rank 4,"+("but got rank "+t.rank+".")});var e={image:t},i=z.runKernel(Pf,e,{});return i}var cO=U({flipLeftRight_:uO});function hO(n,t,e,i){e===void 0&&(e=0),i===void 0&&(i=.5);var r=O(n,"image","rotateWithOffset","float32");E(r.rank===4,function(){return"Error in rotateWithOffset: image must be rank 4,"+("but got rank "+r.rank+".")});var a={image:r},s={radians:t,fillValue:e,center:i},o=z.runKernel(mm,a,s);return o}var dO=U({rotateWithOffset_:hO});function Qr(n,t,e,i,r,a){i==null&&(i=.5),r==null&&(r=Number.NEGATIVE_INFINITY),a==null&&(a=0);var s=n.shape[0];return e=Math.min(e,s),E(0<=i&&i<=1,function(){return"iouThreshold must be in [0, 1], but was '"+i+"'"}),E(n.rank===2,function(){return"boxes must be a 2D tensor, but was of rank '"+n.rank+"'"}),E(n.shape[1]===4,function(){return"boxes must have 4 columns, but 2nd dimension was "+n.shape[1]}),E(t.rank===1,function(){return"scores must be a 1D tensor"}),E(t.shape[0]===s,function(){return"scores has incompatible shape with boxes. Expected "+s+", "+("but was "+t.shape[0])}),E(0<=a&&a<=1,function(){return"softNmsSigma must be in [0, 1], but was '"+a+"'"}),{maxOutputSize:e,iouThreshold:i,scoreThreshold:r,softNmsSigma:a}}function pO(n,t,e,i,r){i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY);var a=O(n,"boxes","nonMaxSuppression"),s=O(t,"scores","nonMaxSuppression"),o=Qr(a,s,e,i,r);e=o.maxOutputSize,i=o.iouThreshold,r=o.scoreThreshold;var l={maxOutputSize:e,iouThreshold:i,scoreThreshold:r};return z.runKernelFunc(function(u){return u.nonMaxSuppression(a,s,e,i,r)},{boxes:a,scores:s},null,tm,l)}var fO=U({nonMaxSuppression_:pO});function gO(n,t,e){var i=mO(n,t,e),r=i<0?-(i+1):i;n.splice(r,0,t)}function mO(n,t,e){return yO(n,t,e||vO)}function vO(n,t){return n>t?1:n>>1);var o=e(t,n[a]);o>0?i=a+1:(r=a,s=!o)}return s?i:-i-1}function Mv(n,t,e,i,r){return Ch(n,t,e,i,r,0).selectedIndices}function Hv(n,t,e,i,r,a){return Ch(n,t,e,i,r,0,!1,a,!0)}function Vv(n,t,e,i,r,a){return Ch(n,t,e,i,r,a,!0)}function Ch(n,t,e,i,r,a,s,o,l){s===void 0&&(s=!1),o===void 0&&(o=!1),l===void 0&&(l=!1);for(var u=[],c=0;cr&&u.push({score:t[c],boxIndex:c,suppressBeginIndex:0});u.sort(qv);for(var h=a>0?-.5/a:0,d=[],p=[];d.length0;){var f=u.pop(),m=f.score,g=f.boxIndex,v=f.suppressBeginIndex;if(m=v;--w){var S=bO(n,g,d[w]);if(S>=i){b=!0;break}if(f.score=f.score*wO(i,h,S),f.score<=r)break}f.suppressBeginIndex=d.length,b||(f.score===m?(d.push(g),p.push(f.score)):f.score>r&&gO(u,f,qv))}var L=d.length,N=e-L;o&&N>0&&(d.push.apply(d,new Array(N).fill(0)),p.push.apply(p,new Array(N).fill(0)));var C={selectedIndices:Xr(d,"int32")};return s&&(C.selectedScores=Xr(p,"float32")),l&&(C.validOutputs=be(L,"int32")),C}function bO(n,t,e){var i=n.subarray(t*4,t*4+4),r=n.subarray(e*4,e*4+4),a=Math.min(i[0],i[2]),s=Math.min(i[1],i[3]),o=Math.max(i[0],i[2]),l=Math.max(i[1],i[3]),u=Math.min(r[0],r[2]),c=Math.min(r[1],r[3]),h=Math.max(r[0],r[2]),d=Math.max(r[1],r[3]),p=(o-a)*(l-s),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;var m=Math.max(a,u),g=Math.max(s,c),v=Math.min(o,h),b=Math.min(l,d),w=Math.max(v-m,0)*Math.max(b-g,0);return w/(p+f-w)}function wO(n,t,e){var i=Math.exp(t*e*e);return e<=n?i:0}function qv(n,t){return n.score-t.score||n.score===t.score&&t.boxIndex-n.boxIndex}function SO(n,t,e,i,r){return i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),de(this,void 0,void 0,function(){var a,s,o,l,u,c,h;return pe(this,function(d){switch(d.label){case 0:return a=O(n,"boxes","nonMaxSuppressionAsync"),s=O(t,"scores","nonMaxSuppressionAsync"),o=Qr(a,s,e,i,r),e=o.maxOutputSize,i=o.iouThreshold,r=o.scoreThreshold,[4,Promise.all([a.data(),s.data()])];case 1:return l=d.sent(),u=l[0],c=l[1],h=Mv(u,c,e,i,r),a!==n&&a.dispose(),s!==t&&s.dispose(),[2,h]}})})}var LO=SO;function IO(n,t,e,i,r,a){i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=0);var s=O(n,"boxes","nonMaxSuppression"),o=O(t,"scores","nonMaxSuppression"),l=Qr(s,o,e,i,r,a);e=l.maxOutputSize,i=l.iouThreshold,r=l.scoreThreshold,a=l.softNmsSigma;var u={boxes:s,scores:o},c={maxOutputSize:e,iouThreshold:i,scoreThreshold:r,softNmsSigma:a},h=z.runKernel(im,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var AO=U({nonMaxSuppressionWithScore_:IO});function TO(n,t,e,i,r,a){return i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=0),de(this,void 0,void 0,function(){var s,o,l,u,c,h,d;return pe(this,function(p){switch(p.label){case 0:return s=O(n,"boxes","nonMaxSuppressionAsync"),o=O(t,"scores","nonMaxSuppressionAsync"),l=Qr(s,o,e,i,r,a),e=l.maxOutputSize,i=l.iouThreshold,r=l.scoreThreshold,a=l.softNmsSigma,[4,Promise.all([s.data(),o.data()])];case 1:return u=p.sent(),c=u[0],h=u[1],d=Vv(c,h,e,i,r,a),s!==n&&s.dispose(),o!==t&&o.dispose(),[2,d]}})})}var NO=TO;function xO(n,t,e,i,r,a){i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=!1);var s=O(n,"boxes","nonMaxSuppression"),o=O(t,"scores","nonMaxSuppression"),l=Qr(s,o,e,i,r,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:s,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:a},f=z.runKernel(nm,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var CO=U({nonMaxSuppressionPadded_:xO});function RO(n,t,e,i,r,a){return i===void 0&&(i=.5),r===void 0&&(r=Number.NEGATIVE_INFINITY),a===void 0&&(a=!1),de(this,void 0,void 0,function(){var s,o,l,u,c,h,d,p,f,m;return pe(this,function(g){switch(g.label){case 0:return s=O(n,"boxes","nonMaxSuppressionAsync"),o=O(t,"scores","nonMaxSuppressionAsync"),l=Qr(s,o,e,i,r,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[4,Promise.all([s.data(),o.data()])];case 1:return d=g.sent(),p=d[0],f=d[1],m=Hv(p,f,u,c,h,a),s!==n&&s.dispose(),o!==t&&o.dispose(),[2,m]}})})}var OO=RO;function EO(n,t,e){e===void 0&&(e=!1);var i=O(n,"images","resizeBilinear");E(i.rank===3||i.rank===4,function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got "+("rank "+i.rank+".")}),E(t.length===2,function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+(t+".")});var r=i,a=!1;i.rank===3&&(a=!0,r=V(i,[1,i.shape[0],i.shape[1],i.shape[2]]));var s=t[0],o=t[1],l=function(d,p){return p([r]),d.resizeBilinear(r,s,o,e)},u={images:r},c={alignCorners:e,size:t},h=z.runKernelFunc(l,u,null,Vu,c);return a?V(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Gv=U({resizeBilinear_:EO});function DO(n,t,e){e===void 0&&(e=!1);var i=O(n,"images","resizeNearestNeighbor");E(i.rank===3||i.rank===4,function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got "+("rank "+i.rank+".")}),E(t.length===2,function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+(t+".")}),E(i.dtype==="float32"||i.dtype==="int32",function(){return"`images` must have `int32` or `float32` as dtype"});var r=i,a=!1;i.rank===3&&(a=!0,r=V(i,[1,i.shape[0],i.shape[1],i.shape[2]]));var s=t[0],o=t[1],l={images:r},u={alignCorners:e,size:t},c=function(d,p){return p([r]),d.resizeNearestNeighbor(r,s,o,e)},h=z.runKernelFunc(c,l,null,Hu,u);return a?V(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Yv=U({resizeNearestNeighbor_:DO});function kO(n,t,e){E(t%1===0,function(){return"bandPart(): numLower must be an integer, got "+t+"."}),E(e%1===0,function(){return"bandPart(): numUpper must be an integer, got "+e+"."});var i=O(n,"a","bandPart");E(i.rank>=2,function(){return"bandPart(): Rank must be at least 2, got "+i.rank+"."});var r=i.shape,a=i.shape.slice(-2),s=a[0],o=a[1];if(!(t<=s))throw new Error("bandPart(): numLower ("+t+")"+(" must not be greater than the number of rows ("+s+")."));if(!(e<=o))throw new Error("bandPart(): numUpper ("+e+")"+(" must not be greater than the number of columns ("+o+")."));t<0&&(t=s),e<0&&(e=o);var l=V(bh(0,s,1,"int32"),[-1,1]),u=bh(0,o,1,"int32"),c=ge(l,u),h=nr(Qi(c,be(+t,"int32")),Zi(c,be(-e,"int32"))),d=ti([s,o],i.dtype);return V(sr(go(V(i,[-1,s,o])).map(function(p){return vn(h,p,d)})),r)}var FO=U({bandPart_:kO});function WO(n){var t;if(Array.isArray(n)){t=!1,E(n!=null&&n.length>0,function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"});for(var e=n[0].shape[0],i=function(l){E(n[l].shape[0]===e,function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: "+("("+n[l].shape[0]+" vs. "+e+")")})},r=1;r0)for(var c=0;c=2,function(){return"qr() requires input tensor to have a rank >= 2, but got rank "+n.rank}),n.rank===2)return jv(n,t);var e=n.shape.slice(0,n.shape.length-2).reduce(function(l,u){return l*u}),i=go(V(n,[e,n.shape[n.shape.length-2],n.shape[n.shape.length-1]]),0),r=[],a=[];i.forEach(function(l){var u=jv(l,t),c=u[0],h=u[1];r.push(c),a.push(h)});var s=V(sr(r,0),n.shape),o=V(sr(a,0),n.shape);return[s,o]}function jv(n,t){return t===void 0&&(t=!1),z.tidy(function(){E(n.shape.length===2,function(){return"qr2d() requires a 2D Tensor, but got a "+n.shape.length+"D Tensor."});for(var e=n.shape[0],i=n.shape[1],r=jg(e),a=$i(n),s=Xa([[1]],[1,1]),o=$i(s),l=e>=i?i:e,u=function(h){var d,p=a,f=o,m=r;d=z.tidy(function(){var g=ze(a,[h,h],[e-h,1]),v=vo(g),b=ze(a,[h,h],[1,1]),w=vn(Li(b,0),Xa([[-1]]),Xa([[1]])),S=ge(b,J(w,v)),L=Ie(g,S);L.shape[0]===1?o=$i(s):o=Rt([s,ze(L,[1,0],[L.shape[0]-1,L.shape[1]])],0);var N=vt(Ie(We(w,S),v)),C=ze(a,[h,0],[e-h,i]),R=J(N,o),D=ut(o);if(h===0)a=ge(C,We(R,We(D,C)));else{var k=ge(C,We(R,We(D,C)));a=Rt([ze(a,[0,0],[h,i]),k],0)}var W=ut(R),F=ze(r,[0,h],[e,r.shape[1]-h]);if(h===0)r=ge(F,We(We(F,o),W));else{var P=ge(F,We(We(F,o),W));r=Rt([ze(r,[0,0],[e,h]),P],1)}return[o,a,r]}),o=d[0],a=d[1],r=d[2],Mt([p,f,m])},c=0;ci&&(r=ze(r,[0,0],[e,i]),a=ze(a,[0,0],[i,i])),[r,a]})}var zO=U({qr_:BO});(function(n){n[n.NONE=0]="NONE",n[n.MEAN=1]="MEAN",n[n.SUM=2]="SUM",n[n.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(I.Reduction||(I.Reduction={}));function PO(n,t,e){e===void 0&&(e=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=O(n,"losses","computeWeightedLoss"),r=null;t!=null&&(r=O(t,"weights","computeWeightedLoss"));var a=r==null?i:J(i,r);if(e===I.Reduction.NONE)return a;if(e===I.Reduction.SUM)return Ae(a);if(e===I.Reduction.MEAN){if(r==null)return Ya(a);var s=i.size/r.size,o=Ie(Ae(a),Ae(r));return s>1?Ie(o,be(s)):o}if(e===I.Reduction.SUM_BY_NONZERO_WEIGHTS){if(r==null)return Ie(Ae(a),be(i.size));var l=J(r,Kr(i.shape)),u=ue(Ae(uo(l,be(0))),"float32");return Ie(Ae(a),u)}throw Error("Unknown reduction: "+e)}var ri=U({computeWeightedLoss_:PO});function _O(n,t,e,i){i===void 0&&(i=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var r=O(n,"labels","absoluteDifference"),a=O(t,"predictions","absoluteDifference"),s=null;e!=null&&(s=O(e,"weights","absoluteDifference")),Be(r.shape,a.shape,"Error in absoluteDifference: ");var o=jt(ge(r,a));return ri(o,s,i)}var MO=U({absoluteDifference_:_O});function HO(n,t,e,i,r){r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"labels","cosineDistance"),s=O(t,"predictions","cosineDistance"),o=null;i!=null&&(o=O(i,"weights","cosineDistance")),Be(a.shape,s.shape,"Error in cosineDistance: ");var l=be(1),u=ge(l,Ae(J(a,s),e,!0));return ri(u,o,r)}var VO=U({cosineDistance_:HO});function qO(n,t,e,i){i===void 0&&(i=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var r=O(n,"labels","hingeLoss"),a=O(t,"predictions","hingeLoss"),s=null;e!=null&&(s=O(e,"weights","hingeLoss")),Be(r.shape,a.shape,"Error in hingeLoss: ");var o=be(1);r=ge(J(be(2),r),o);var l=Ka(ge(o,J(r,a)));return ri(l,s,i)}var GO=U({hingeLoss_:qO});function YO(n,t,e,i,r){i===void 0&&(i=1),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"labels","huberLoss"),s=O(t,"predictions","huberLoss"),o=null;e!=null&&(o=O(e,"weights","huberLoss")),Be(a.shape,s.shape,"Error in huberLoss: ");var l=be(i),u=jt(ge(s,a)),c=lo(u,l),h=ge(u,c),d=fe(J(be(.5),Ye(c)),J(l,h));return ri(d,o,r)}var jO=U({huberLoss_:YO});function KO(n,t,e,i,r){i===void 0&&(i=1e-7),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"labels","logLoss"),s=O(t,"predictions","logLoss"),o=null;e!=null&&(o=O(e,"weights","logLoss")),Be(a.shape,s.shape,"Error in logLoss: ");var l=be(1),u=be(i),c=vt(J(a,er(fe(s,u)))),h=J(ge(l,a),er(fe(ge(l,s),u))),d=ge(c,h);return ri(d,o,r)}var $O=U({logLoss_:KO});function XO(n,t,e,i){i===void 0&&(i=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var r=O(n,"labels","meanSquaredError"),a=O(t,"predictions","meanSquaredError"),s=null;e!=null&&(s=O(e,"weights","meanSquaredError")),Be(r.shape,a.shape,"Error in meanSquaredError: ");var o=fo(r,a);return ri(o,s,i)}var JO=U({meanSquaredError_:XO});function ZO(n,t){var e=O(n,"labels","sigmoidCrossEntropyWithLogits"),i=O(t,"logits","sigmoidCrossEntropyWithLogits");Be(e.shape,i.shape,"Error in sigmoidCrossEntropyWithLogits: ");var r=Ka(i),a=J(i,e),s=uh(yn(vt(jt(i))));return fe(ge(r,a),s)}function QO(n,t,e,i,r){i===void 0&&(i=0),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"multiClassLabels","sigmoidCrossEntropy"),s=O(t,"logits","sigmoidCrossEntropy"),o=null;if(e!=null&&(o=O(e,"weights","sigmoidCrossEntropy")),Be(a.shape,s.shape,"Error in sigmoidCrossEntropy: "),i>0){var l=be(i),u=be(1),c=be(.5);a=fe(J(a,ge(u,l)),J(c,l))}var h=ZO(a,s);return ri(h,o,r)}var eE=U({sigmoidCrossEntropy_:QO});function tE(n,t,e){if(e===void 0&&(e=-1),e===-1&&(e=t.rank-1),e!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet "+("supported. Labels / logits was rank "+t.rank+" ")+("and dim was "+e));var i=zn(function(r,a,s){var o=!0,l=hh(a,[e],o),u=ge(ue(a,"float32"),l);s([r,u]);var c=vt(J(u,r)),h=Ae(c,[e]),d=function(p,f){var m=f[0],g=f[1],v=nn(p.shape,[e]);return[J(V(p,v),ge(ue(m,"float32"),yn(g))),J(V(p,v),ge(yn(g),ue(m,"float32")))]};return{value:h,gradFunc:d}});return i(n,t)}function nE(n,t,e,i,r){i===void 0&&(i=0),r===void 0&&(r=I.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=O(n,"onehotLabels","softmaxCrossEntropy"),s=O(t,"logits","softmaxCrossEntropy"),o=null;if(e!=null&&(o=O(e,"weights","softmaxCrossEntropy")),Be(a.shape,s.shape,"Error in softmaxCrossEntropy: "),i>0){var l=be(i),u=be(1),c=be(a.shape[1]);a=fe(J(a,ge(u,l)),Ie(l,c))}var h=tE(a,s);return ri(h,o,r)}var iE=U({softmaxCrossEntropy_:nE});var rE={fft:ho,ifft:$a,rfft:po,irfft:Ah},aE={hammingWindow:nO,hannWindow:Pv,frame:_v,stft:sO},sE={flipLeftRight:cO,resizeNearestNeighbor:Yv,resizeBilinear:Gv,rotateWithOffset:dO,cropAndResize:lO,nonMaxSuppression:fO,nonMaxSuppressionAsync:LO,nonMaxSuppressionWithScore:AO,nonMaxSuppressionWithScoreAsync:NO,nonMaxSuppressionPadded:CO,nonMaxSuppressionPaddedAsync:OO},oE={bandPart:FO,gramSchmidt:UO,qr:zO},lE={absoluteDifference:MO,computeWeightedLoss:ri,cosineDistance:VO,hingeLoss:GO,huberLoss:jO,logLoss:$O,meanSquaredError:JO,sigmoidCrossEntropy:eE,softmaxCrossEntropy:iE};var Ii=function(n){Zn(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.minimize=function(e,i,r){i===void 0&&(i=!1);var a=this.computeGradients(e,r),s=a.value,o=a.grads;if(r!=null){var l=r.map(function(u){return{name:u.name,tensor:o[u.name]}});this.applyGradients(l)}else this.applyGradients(o);return Mt(o),i?s:(s.dispose(),null)},Object.defineProperty(t.prototype,"iterations",{get:function(){return this.iterations_==null&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),t.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},t.prototype.computeGradients=function(e,i){return ev(e,i)},t.prototype.dispose=function(){this.iterations_!=null&&Mt(this.iterations_)},t.prototype.saveIterations=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){return this.iterations_==null&&(this.iterations_=0),[2,{name:"iter",tensor:be(this.iterations_,"int32")}]})})},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){throw new Error("getWeights() is not implemented for this optimizer yet.")})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){return pe(this,function(i){throw new Error("setWeights() is not implemented for this optimizer class "+(""+this.getClassName()))})})},t.prototype.extractIterations=function(e){return de(this,void 0,void 0,function(){var i;return pe(this,function(r){switch(r.label){case 0:return i=this,[4,e[0].tensor.data()];case 1:return i.iterations_=r.sent()[0],[2,e.slice(1)]}})})},t}(vg);Object.defineProperty(Ii,Symbol.hasInstance,{value:function(n){return n.minimize!=null&&n.computeGradients!=null&&n.applyGradients!=null}});var Rh=function(n){Zn(t,n);function t(e,i,r){r===void 0&&(r=null);var a=n.call(this)||this;return a.learningRate=e,a.rho=i,a.epsilon=r,a.accumulatedGrads=[],a.accumulatedUpdates=[],r==null&&(a.epsilon=z.backend.epsilon()),a}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a],l=!1;i.accumulatedGrads[s]==null&&(i.accumulatedGrads[s]={originalName:a+"/accum_grad",variable:mt(function(){return Ee(o).variable(l)})}),i.accumulatedUpdates[s]==null&&(i.accumulatedUpdates[s]={originalName:a+"/accum_var",variable:mt(function(){return Ee(o).variable(l)})});var u=Array.isArray(e)?e[s].tensor:e[a];if(u==null)return;var c=i.accumulatedGrads[s].variable,h=i.accumulatedUpdates[s].variable;mt(function(){var d=fe(J(c,i.rho),J(Ye(u),1-i.rho)),p=J(Ie(Vt(fe(h,i.epsilon)),Vt(fe(c,i.epsilon))),u),f=fe(J(h,i.rho),J(Ye(p),1-i.rho));c.assign(d),h.assign(f);var m=fe(J(p,-i.learningRate),o);o.assign(m)})}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedUpdates!=null&&(Mt(this.accumulatedGrads.map(function(e){return e.variable})),Mt(this.accumulatedUpdates.map(function(e){return e.variable})))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){var e;return pe(this,function(i){switch(i.label){case 0:return e=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[i.sent()].concat(e.map(function(r){return{name:r.originalName,tensor:r.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i,r;return pe(this,function(a){switch(a.label){case 0:return[4,this.extractIterations(e)];case 1:return e=a.sent(),i=e.length/2,r=!1,this.accumulatedGrads=e.slice(0,i).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),this.accumulatedUpdates=e.slice(i,i*2).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,i){return new e(i.learningRate,i.rho,i.epsilon)},t.className="Adadelta",t}(Ii);wi(Rh);var Oh=function(n){Zn(t,n);function t(e,i){i===void 0&&(i=.1);var r=n.call(this)||this;return r.learningRate=e,r.initialAccumulatorValue=i,r.accumulatedGrads=[],r}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a];if(i.accumulatedGrads[s]==null){var l=!1;i.accumulatedGrads[s]={originalName:a+"/accumulator",variable:mt(function(){return oh(o.shape,i.initialAccumulatorValue).variable(l)})}}var u=Array.isArray(e)?e[s].tensor:e[a];if(u==null)return;var c=i.accumulatedGrads[s].variable;mt(function(){var h=fe(c,Ye(u));c.assign(h);var d=fe(J(Ie(u,Vt(fe(h,z.backend.epsilon()))),-i.learningRate),o);o.assign(d)})}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedGrads!=null&&Mt(this.accumulatedGrads.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulatedGrads.map(function(i){return{name:i.originalName,tensor:i.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i;return pe(this,function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),i=!1,this.accumulatedGrads=e.map(function(a){return{originalName:a.name,variable:a.tensor.variable(i)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,i){return new e(i.learningRate,i.initialAccumulatorValue)},t.className="Adagrad",t}(Ii);wi(Oh);var Eh=function(n){Zn(t,n);function t(e,i,r,a){a===void 0&&(a=null);var s=n.call(this)||this;return s.learningRate=e,s.beta1=i,s.beta2=r,s.epsilon=a,s.accumulatedFirstMoment=[],s.accumulatedSecondMoment=[],mt(function(){s.accBeta1=be(i).variable(),s.accBeta2=be(r).variable()}),a==null&&(s.epsilon=z.backend.epsilon()),s}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);mt(function(){var a=ge(1,i.accBeta1),s=ge(1,i.accBeta2);r.forEach(function(o,l){var u=z.registeredVariables[o],c=!1;i.accumulatedFirstMoment[l]==null&&(i.accumulatedFirstMoment[l]={originalName:o+"/m",variable:mt(function(){return Ee(u).variable(c)})}),i.accumulatedSecondMoment[l]==null&&(i.accumulatedSecondMoment[l]={originalName:o+"/v",variable:mt(function(){return Ee(u).variable(c)})});var h=Array.isArray(e)?e[l].tensor:e[o];if(h==null)return;var d=i.accumulatedFirstMoment[l].variable,p=i.accumulatedSecondMoment[l].variable,f=fe(J(d,i.beta1),J(h,1-i.beta1)),m=fe(J(p,i.beta2),J(Ye(h),1-i.beta2)),g=Ie(f,a),v=Ie(m,s);d.assign(f),p.assign(m);var b=fe(J(Ie(g,fe(Vt(v),i.epsilon)),-i.learningRate),u);u.assign(b)}),i.accBeta1.assign(J(i.accBeta1,i.beta1)),i.accBeta2.assign(J(i.accBeta2,i.beta2))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Mt(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedSecondMoment!=null&&Mt(this.accumulatedSecondMoment.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){var e;return pe(this,function(i){switch(i.label){case 0:return e=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[i.sent()].concat(e.map(function(r){return{name:r.originalName,tensor:r.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i,r,a=this;return pe(this,function(s){switch(s.label){case 0:return[4,this.extractIterations(e)];case 1:return e=s.sent(),mt(function(){a.accBeta1.assign(ni(a.beta1,a.iterations_+1)),a.accBeta2.assign(ni(a.beta2,a.iterations_+1))}),i=e.length/2,r=!1,this.accumulatedFirstMoment=e.slice(0,i).map(function(o){return{originalName:o.name,variable:o.tensor.variable(r)}}),this.accumulatedSecondMoment=e.slice(i,i*2).map(function(o){return{originalName:o.name,variable:o.tensor.variable(r)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,i){return new e(i.learningRate,i.beta1,i.beta2,i.epsilon)},t.className="Adam",t}(Ii);wi(Eh);var Dh=function(n){Zn(t,n);function t(e,i,r,a,s){a===void 0&&(a=null),s===void 0&&(s=0);var o=n.call(this)||this;return o.learningRate=e,o.beta1=i,o.beta2=r,o.epsilon=a,o.decay=s,o.accumulatedFirstMoment=[],o.accumulatedWeightedInfNorm=[],mt(function(){o.iteration=be(0).variable(),o.accBeta1=be(i).variable()}),a==null&&(o.epsilon=z.backend.epsilon()),o}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);mt(function(){var a=ge(1,i.accBeta1),s=Ie(-i.learningRate,fe(J(i.iteration,i.decay),1));r.forEach(function(o,l){var u=z.registeredVariables[o],c=!1;i.accumulatedFirstMoment[l]==null&&(i.accumulatedFirstMoment[l]={originalName:o+"/m",variable:Ee(u).variable(c)}),i.accumulatedWeightedInfNorm[l]==null&&(i.accumulatedWeightedInfNorm[l]={originalName:o+"/v",variable:Ee(u).variable(c)});var h=Array.isArray(e)?e[l].tensor:e[o];if(h==null)return;var d=i.accumulatedFirstMoment[l].variable,p=i.accumulatedWeightedInfNorm[l].variable,f=fe(J(d,i.beta1),J(h,1-i.beta1)),m=J(p,i.beta2),g=jt(h),v=jr(m,g);d.assign(f),p.assign(v);var b=fe(J(Ie(s,a),Ie(f,fe(v,i.epsilon))),u);u.assign(b)}),i.iteration.assign(fe(i.iteration,1)),i.accBeta1.assign(J(i.accBeta1,i.beta1))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Mt(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedWeightedInfNorm!=null&&Mt(this.accumulatedWeightedInfNorm.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){throw new Error("getWeights() is not implemented for Adamax yet.")})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){return pe(this,function(i){throw new Error("setWeights() is not implemented for Adamax yet.")})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,i){return new e(i.learningRate,i.beta1,i.beta2,i.epsilon,i.decay)},t.className="Adamax",t}(Ii);wi(Dh);var Lo=function(n){Zn(t,n);function t(e){var i=n.call(this)||this;return i.learningRate=e,i.setLearningRate(e),i}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=Array.isArray(e)?e[s].tensor:e[a];if(o==null)return;var l=z.registeredVariables[a];mt(function(){var u=fe(J(i.c,o),l);l.assign(u)})}),this.incrementIterations()},t.prototype.setLearningRate=function(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=wg(be(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()]]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){return pe(this,function(i){switch(i.label){case 0:return[4,this.extractIterations(e)];case 1:if(e=i.sent(),e.length!==0)throw new Error("SGD optimizer does not have settable weights.");return[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,i){return new e(i.learningRate)},t.className="SGD",t}(Ii);wi(Lo);var kh=function(n){Zn(t,n);function t(e,i,r){r===void 0&&(r=!1);var a=n.call(this,e)||this;return a.learningRate=e,a.momentum=i,a.useNesterov=r,a.accumulations=[],a.m=be(a.momentum),a}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a];if(i.accumulations[s]==null){var l=!1;i.accumulations[s]={originalName:a+"/momentum",variable:mt(function(){return Ee(o).variable(l)})}}var u=i.accumulations[s].variable,c=Array.isArray(e)?e[s].tensor:e[a];if(c==null)return;mt(function(){var h,d=fe(J(i.m,u),c);i.useNesterov?h=fe(J(i.c,fe(c,J(d,i.m))),o):h=fe(J(i.c,d),o),u.assign(d),o.assign(h)})}),this.incrementIterations()},t.prototype.dispose=function(){this.m.dispose(),this.accumulations!=null&&Mt(this.accumulations.map(function(e){return e.variable}))},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){return pe(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulations.map(function(i){return{name:i.originalName,tensor:i.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i;return pe(this,function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),i=!1,this.accumulations=e.map(function(a){return{originalName:a.name,variable:a.tensor.variable(i)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,i){return new e(i.learningRate,i.momentum,i.useNesterov)},t.className="Momentum",t}(Lo);wi(kh);var Fh=function(n){Zn(t,n);function t(e,i,r,a,s){i===void 0&&(i=.9),r===void 0&&(r=0),a===void 0&&(a=null),s===void 0&&(s=!1);var o=n.call(this)||this;if(o.learningRate=e,o.decay=i,o.momentum=r,o.epsilon=a,o.accumulatedMeanSquares=[],o.accumulatedMoments=[],o.accumulatedMeanGrads=[],o.centered=s,a==null&&(o.epsilon=z.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.");return o}return t.prototype.applyGradients=function(e){var i=this,r=Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e);r.forEach(function(a,s){var o=z.registeredVariables[a],l=!1;i.accumulatedMeanSquares[s]==null&&(i.accumulatedMeanSquares[s]={originalName:a+"/rms",variable:mt(function(){return Ee(o).variable(l)})}),i.accumulatedMoments[s]==null&&(i.accumulatedMoments[s]={originalName:a+"/momentum",variable:mt(function(){return Ee(o).variable(l)})}),i.accumulatedMeanGrads[s]==null&&i.centered&&(i.accumulatedMeanGrads[s]={originalName:a+"/mg",variable:mt(function(){return Ee(o).variable(l)})});var u=Array.isArray(e)?e[s].tensor:e[a];if(u==null)return;var c=i.accumulatedMeanSquares[s].variable,h=i.accumulatedMoments[s].variable;mt(function(){var d=fe(J(c,i.decay),J(Ye(u),1-i.decay));if(i.centered){var p=i.accumulatedMeanGrads[s].variable,f=fe(J(p,i.decay),J(u,1-i.decay)),m=Ie(J(u,i.learningRate),Vt(ge(d,fe(Ye(f),i.epsilon)))),g=fe(J(h,i.momentum),m);c.assign(d),p.assign(f),h.assign(g);var v=ge(o,g);o.assign(v)}else{var b=fe(J(c,i.decay),J(Ye(u),1-i.decay)),g=fe(J(h,i.momentum),Ie(J(u,i.learningRate),Vt(fe(b,i.epsilon))));c.assign(b),h.assign(g);var v=ge(o,g);o.assign(v)}})}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedMeanSquares!=null&&Mt(this.accumulatedMeanSquares.map(function(e){return e.variable})),this.accumulatedMeanGrads!=null&&this.centered&&Mt(this.accumulatedMeanGrads.map(function(e){return e.variable})),this.accumulatedMoments!=null&&Mt(this.accumulatedMoments.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return de(this,void 0,void 0,function(){var e;return pe(this,function(i){switch(i.label){case 0:return e=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&e.push.apply(e,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[i.sent()].concat(e.map(function(r){return{name:r.originalName,tensor:r.variable}}))]}})})},t.prototype.setWeights=function(e){return de(this,void 0,void 0,function(){var i,r;return pe(this,function(a){switch(a.label){case 0:return[4,this.extractIterations(e)];case 1:return e=a.sent(),i=this.centered?e.length/3:e.length/2,r=!1,this.accumulatedMeanSquares=e.slice(0,i).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),this.accumulatedMoments=e.slice(i,i*2).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}}),this.centered&&(this.accumulatedMeanGrads=e.slice(i*2,i*3).map(function(s){return{originalName:s.name,variable:s.tensor.variable(r)}})),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,i){return new e(i.learningRate,i.decay,i.momentum,i.epsilon,i.centered)},t.className="RMSProp",t}(Ii);wi(Fh);var or=function(){function n(){}return n.sgd=function(t){return new Lo(t)},n.momentum=function(t,e,i){return i===void 0&&(i=!1),new kh(t,e,i)},n.rmsprop=function(t,e,i,r,a){return e===void 0&&(e=.9),i===void 0&&(i=0),r===void 0&&(r=null),a===void 0&&(a=!1),new Fh(t,e,i,r,a)},n.adam=function(t,e,i,r){return t===void 0&&(t=.001),e===void 0&&(e=.9),i===void 0&&(i=.999),r===void 0&&(r=null),new Eh(t,e,i,r)},n.adadelta=function(t,e,i){return t===void 0&&(t=.001),e===void 0&&(e=.95),i===void 0&&(i=null),new Rh(t,e,i)},n.adamax=function(t,e,i,r,a){return t===void 0&&(t=.002),e===void 0&&(e=.9),i===void 0&&(i=.999),r===void 0&&(r=null),a===void 0&&(a=0),new Dh(t,e,i,r,a)},n.adagrad=function(t,e){return e===void 0&&(e=.1),new Oh(t,e)},n}();var uE={sgd:or.sgd,momentum:or.momentum,adadelta:or.adadelta,adagrad:or.adagrad,rmsprop:or.rmsprop,adamax:or.adamax,adam:or.adam};var cE=function(){return typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:function(n){return n()}}();function hE(){return new Promise(function(n){return cE(function(){return n()})})}function dE(n,t,e){var i=e*(typeof n=="number"?n:n[0]),r=t*(typeof n=="number"?n:n[1]);return[i,r]}function pE(n,t,e,i){i===void 0&&(i=!0);var r=[];if(i)r=r.concat(t.slice(0)),r.push(n[0]/e),r=r.concat(n.slice(1));else{r=r.concat(n[0]);for(var a=t.length,s=0;s=t*2+1||r%2===1?s.push(r):a.push(r);i.push.apply(i,a),i.push(0),i.push.apply(i,s)}return i}function mE(n,t,e,i){i===void 0&&(i=!0);var r=[];i?r.push(n[0]/e):r.push(n[0]*e);for(var a=1;a0&&(o=Ae(o,l)),V(o,e.shape)},s=function(){var o=n,l=gt(i.shape,r);return l.length>0&&(o=Ae(o,l)),V(o,i.shape)};return{a,b:s}}};var YE={kernelName:Bl,saveAllInputs:!0,gradFunc:function(n,t){var e={};return t.forEach(function(i,r){e[r]=function(){return n.clone()}}),e}};var jE={kernelName:zl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ee(e)}}}};var KE={kernelName:Pl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ee(e)}}}};var $E={kernelName:_l,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,Vt(ge(be(1),Ye(ue(e,"float32")))))}}}};var XE={kernelName:Ml,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){var i=Vt(fe(be(1),Ye(ue(e,"float32"))));return Ie(n,i)}}}};var JE={kernelName:ql,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=fe(Ye(e),Ye(i)),l=J(n,Ie(i,o)),u=gt(e.shape,r);return u.length>0&&(l=Ae(l,u)),V(l,e.shape)},s=function(){var o=fe(Ye(e),Ye(i)),l=vt(J(n,Ie(e,o))),u=gt(i.shape,r);return u.length>0&&(l=Ae(l,u)),V(l,i.shape)};return{a,b:s}}};var ZE={kernelName:Hl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,fe(Ye(ue(e,"float32")),1))}}}};var QE={kernelName:Vl,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,ge(be(1),Ye(ue(e,"float32"))))}}}};function eD(n,t,e,i,r,a,s){r===void 0&&(r=[1,1,1]);var o=O(n,"dy","avgPool3dBackprop"),l=O(t,"input","avgPool3dBackprop"),u=o,c=l,h=!1;l.rank===4&&(h=!0,u=V(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),c=V(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]])),E(u.rank===5,function(){return"Error in avgPool3dBackprop: dy must be rank 5 but got rank "+(u.rank+".")}),E(c.rank===5,function(){return"Error in avgPool3dBackprop: input must be rank 5 but got rank "+(c.rank+".")}),E(Ht(i,r),function(){return"Error in avgPool3dBackprop: Either strides or dilations "+("must be 1. Got strides "+i+" and dilations '"+r+"'")}),s!=null&&E(rt(a),function(){return"Error in maxPool3dBackprop: pad must be an integer when "+("using, dimRoundingMode "+s+" but got pad "+a+".")});var d=function(g){var v=Ha(c.shape,e,i,r,a,s);return g.avgPool3dBackprop(u,c,v)},p={dy:u,input:c},f={filterSize:e,strides:i,dilations:r,pad:a,dimRoundingMode:s},m=z.runKernelFunc(d,p,null,If,f);return h?V(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var tD=U({avgPool3dBackprop_:eD});var nD={kernelName:Yl,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.filterSize,s=r.strides,o=r.dilations,l=r.pad,u=r.dimRoundingMode,c=o??[1,1,1];return{x:function(){return tD(n,i,a,s,c,l,u)}}}};function iD(n,t,e,i,r){var a=O(n,"dy","avgPoolBackprop"),s=O(t,"input","avgPoolBackprop");E(s.rank===a.rank,function(){return"Rank of input ("+s.rank+") does not match rank of dy ("+a.rank+")"});var o=s,l=a,u=!1;s.rank===3&&(u=!0,o=V(s,[1,s.shape[0],s.shape[1],s.shape[2]]),l=V(a,[1,a.shape[0],a.shape[1],a.shape[2]])),E(l.rank===4,function(){return"Error in avgPoolBackprop: dy must be rank 4 but got rank "+(l.rank+".")}),E(o.rank===4,function(){return"Error in avgPoolBackprop: input must be rank 4 but got rank "+(o.rank+".")});var c=function(f){var m=Vr(o.shape,e,i,1,r);return f.avgPoolBackprop(l,o,m)},h={dy:l,input:o},d={filterSize:e,strides:i,pad:r},p=z.runKernelFunc(c,h,null,Lf,d);return u?V(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var rD=U({avgPoolBackprop_:iD});var aD={kernelName:Gl,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.filterSize,s=r.strides,o=r.pad;return{x:function(){return rD(n,i,a,s,o)}}}};var sD={kernelName:jl,inputsToSave:["a","b"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s=e,o=s.transposeA,l=s.transposeB;return!o&&!l?{a:function(){return We(n,a,!1,!0)},b:function(){return We(r,n,!0,!1)}}:!o&&l?{a:function(){return We(n,a,!1,!1)},b:function(){return We(n,r,!0,!1)}}:o&&!l?{a:function(){return We(a,n,!1,!0)},b:function(){return We(r,n,!1,!1)}}:{a:function(){return We(a,n,!0,!0)},b:function(){return We(n,r,!0,!0)}}}};var oD={kernelName:Kl,gradFunc:function(n,t,e){var i=e,r=i.blockShape,a=i.crops;return{x:function(){return co(n,r,a)}}}};var lD={kernelName:$l,gradFunc:function(n,t,e){for(var i=e,r=i.inputShape,a=i.shape,s=Array.from(a),o=r.length-1;o>=0;o--)if(r[o]===a[o])s[o]=1;else if(r[o]!==1)throw new Error("broadcastTo(): ["+r+"] cannot be broadcast to ["+a+"].");for(var l=[],o=0;o1&&l.push(o);return{x:function(){return Ae(n,l,!0)}}}};var uD={kernelName:Ws,gradFunc:function(n){return{x:function(){return n.clone()}}}};var cD={kernelName:Xl,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var hD={kernelName:Jl,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.clipValueMin,s=r.clipValueMax;return{x:function(){return vn(nr(Zi(i,a),Qi(i,s)),n,Ee(n))}}}};var dD={kernelName:Zl,saveAllInputs:!0,gradFunc:function(n,t,e){var i=t.map(function(l){return l.shape}),r=e.axis,a=Qe(r,t[0].shape)[0],s=i.map(function(l){return l[a]}),o=Jr(n,s,a);return o.map(function(l){return function(){return l}})}};var pD={kernelName:Ql,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s=e,o=s.dilations,l=s.strides,u=s.pad,c=s.dataFormat;return E(Si(o),function(){return"Error in gradient of conv2D: dilation rates greater than 1 "+("are not yet supported in gradients. Got dilations '"+o+"'")}),{x:function(){return ih(r.shape,n,a,l,u,c)},filter:function(){return xh(r,n,a.shape,l,u,c)}}}};var fD={kernelName:eu,inputsToSave:["dy","filter"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s=e,o=s.strides,l=s.pad,u=s.dataFormat,c=s.dimRoundingMode;return{dy:function(){return Gr(n,a,o,l,u,1,c)},filter:function(){return xh(n,r,a.shape,o,l,u,c)}}}};function mD(n,t,e,i,r){var a=n;n.rank===4&&(a=V(n,[1,n.shape[0],n.shape[1],n.shape[2],n.shape[3]]));var s=t;s.rank===4&&(s=V(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),E(a.rank===5,function(){return"Error in conv3dDerFilter: input must be rank 5, but got shape "+(a.shape+".")}),E(s.rank===5,function(){return"Error in conv3dDerFilter: dy must be rank 5, but got shape "+(s.shape+".")}),E(e.length===5,function(){return"Error in conv3dDerFilter: filterShape must be length 5, but got "+(e+".")}),E(a.shape[4]===e[3],function(){return"Error in conv3dDerFilter: depth of input "+a.shape[4]+") must "+("match input depth in filter ("+e[3]+".")}),E(s.shape[4]===e[4],function(){return"Error in conv3dDerFilter: depth of dy ("+s.shape[4]+") must "+("match output depth for filter ("+e[4]+").")});var o=function(c){var h=1,d=Ma(a.shape,e,i,h,r);return c.conv3dDerFilter(a,s,d)},l={x:a,y:s},u={strides:i,pad:r};return z.runKernelFunc(o,l,null,Nf,u)}var gD=U({conv3DBackpropFilter_:mD});var vD={kernelName:tu,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=e,r=i.dilations,a=i.strides,s=i.pad;E(Si(r),function(){return"Error in gradient of conv3D: dilation rates greater than 1 are "+("not yet supported in gradients. Got dilations '"+r+"'")});var o=t[0],l=t[1];return{x:function(){return _g(o.shape,n,l,a,s)},filter:function(){return gD(o,n,l.shape,a,s)}}}};var yD={kernelName:nu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(vt(Lh(ue(e,"float32"))),n)}}}};var bD={kernelName:iu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(Ih(ue(e,"float32")),n)}}}};var wD={kernelName:ru,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e,a=r.axis,s=r.exclusive,o=r.reverse;return{x:function(){var l=rn([a],i.rank),u=ah(n,a,s,!o);return l!=null&&(u=ut(u,l)),u}}}};var SD={kernelName:au,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=e,r=i.dilations,a=i.strides,s=i.pad,o=i.dimRoundingMode,l=r??[1,1];E(Si(l),function(){return"Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations "+("'"+l+"'")});var u=t,c=u[0],h=u[1];E(c.rank===4,function(){return"Error in gradient of depthwiseConv2dNative: input must be "+("rank 4, but got rank "+c.rank+".")}),E(h.rank===4,function(){return"Error in gradient of depthwiseConv2dNative: filter must be "+("rank 4, but got rank "+h.rank+".")}),E(c.shape[3]===h.shape[2],function(){return"Error in gradient of depthwiseConv2d: number of input "+("channels ("+c.shape[3]+") must match the inChannels dimension ")+("in filter "+h.shape[2]+".")}),E(Ht(a,l),function(){return"Error in gradient of depthwiseConv2d: Either strides or "+("dilations must be 1. Got strides "+a+" and dilations ")+("'"+l+"'.")}),o!=null&&E(rt(s),function(){return"Error in depthwiseConv2d: pad must be an integer when using, "+("dimRoundingMode "+o+" but got pad "+s+".")});var d=Bn(c.shape,h.shape,a,l,s,o,!0);return{x:function(){return zv(c.shape,n,h,d)},filter:function(){return Bv(c,n,h.shape,d)}}}};var LD={kernelName:su,inputsToSave:["x","filter"],gradFunc:function(n,t,e){var i=t,r=i[0],a=i[1],s={x:r,filter:a,dy:n},o={x:r,filter:a,dy:n};return{x:function(){return z.runKernel(kf,s,e)},filter:function(){return z.runKernel(Ff,o,e)}}}};var ID={kernelName:ou,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=Ie(n,ue(i,"float32")),l=gt(e.shape,r);return l.length>0?V(Ae(o,l),e.shape):o},s=function(){var o=J(n,ue(e,"float32")),l=gt(i.shape,r);l.length>0&&(o=V(Ae(o,l),i.shape));var u=Ye(i);return vt(Ie(o,ue(u,"float32")))};return{a,b:s}}};var AD={kernelName:lu,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0],i=function(a){return a.eluDer(n,e)},r={dy:n,y:e};return{x:function(){return z.runKernelFunc(i,r,null,Wf)}}}};var TD={kernelName:uu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0],i=J(yn(vt(Ye(e))),2/Math.sqrt(Math.PI));return{x:function(){return J(n,i)}}}};var ND={kernelName:cu,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,e)}}}};var xD={kernelName:hu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,yn(e))}}}};var CD={kernelName:du,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var RD={kernelName:pu,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=Ie(n,ue(i,"float32")),l=gt(e.shape,r);return l.length>0?V(Ae(o,l),e.shape):o},s=function(){var o=J(n,ue(e,"float32")),l=gt(i.shape,r);l.length>0&&(o=V(Ae(o,l),i.shape));var u=Ye(i);return vt(Ie(o,ue(u,"float32")))};return{a,b:s}}};var OD={kernelName:fu,inputsToSave:["x","mean","variance","scale"],gradFunc:function(n,t,e){var i=e.varianceEpsilon,r=t[0],a=t[1],s=t[2],o=t[3],l=o??be(1),u=gt(a.shape,r.shape),c=[];if(a.rank===1){for(var h=0;h0?V(Ae(n,o),e.shape):n},s=function(){var o=J(n,vt(to(Ie(e,i)))),l=gt(i.shape,r);return l.length>0?V(Ae(o,l),i.shape):o};return{a,b:s}}};var QD={kernelName:Du,inputsToSave:["a","b"],gradFunc:function(n,t){var e=t[0],i=t[1],r=et(e.shape,i.shape),a=function(){var o=J(n,ue(i,"float32")),l=gt(e.shape,r);return l.length>0?V(Ae(o,l),e.shape):o},s=function(){var o=J(n,ue(e,"float32")),l=gt(i.shape,r);return l.length>0?V(Ae(o,l),i.shape):o};return{a,b:s}}};var ek={kernelName:ku,gradFunc:function(n){return{x:function(){return vt(n)}}}};var tk={kernelName:Wu,inputsToSave:["indices"],gradFunc:function(n,t){var e=t[0];return{indices:function(){return ti(e.shape,"float32")}}}};var nk={kernelName:Fu,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var ey={kernelName:Uu,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e.paddings,a=r.map(function(s){return s[0]});return{x:function(){return ze(n,a,i.shape)}}}};var ik={kernelName:Bu,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:function(n,t){var e=t[0],i=t[1],r=t[2],a=e,s=i,o=et(a.shape,s.shape),l=function(){var c=ue(s,"float32"),h=J(n,J(c,ni(a,ge(c,be(1))))),d=gt(a.shape,o);return d.length>0&&(h=Ae(h,d)),V(h,a.shape)},u=function(){var c=Li(a,0),h=vn(c,er(a),Ee(a)),d=J(n,J(r,h)),p=gt(s.shape,o);return p.length>0&&(d=Ae(d,p)),V(d,s.shape)};return{a:l,b:u}}};var rk={kernelName:zu,inputsToSave:["x","alpha"],gradFunc:function(n,t){var e=t[0],i=t[1],r=Li(e,0);return{x:function(){return vn(r,n,J(n,i))},alpha:function(){var a=vn(r,Ee(n),J(n,e)),s=gt(i.shape,n.shape);return s.length>0&&(a=Ae(a,s)),V(a,i.shape)}}}};var ak={kernelName:Pu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,vt(Ye(e)))}}}};var sk={kernelName:qu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0],i=J(Qi(e,6),Zr(e));return{x:function(){return J(n,ue(i,"float32"))}}}};var ok={kernelName:_u,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,ue(Zr(e),"float32"))}}}};var lk={kernelName:Mu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return V(n,e.shape)}}}};var uk={kernelName:Vu,inputsToSave:["images"],gradFunc:function(n,t,e){var i=t[0],r=function(o){var l=e.alignCorners;return o.resizeBilinearBackprop(n,i,l)},a={images:i},s=function(){return z.runKernelFunc(r,a,null,lm,e)};return{images:s}}};var ck={kernelName:Hu,inputsToSave:["images"],gradFunc:function(n,t,e){var i=t[0],r=function(o){var l=e.alignCorners;return o.resizeNearestNeighborBackprop(n,i,l)},a={images:i},s=function(){return z.runKernelFunc(r,a,null,om,e)};return{images:s}}};var hk={kernelName:Gu,gradFunc:function(n,t,e){var i=e.dims,r=Qe(i,n.shape);return{x:function(){return ii(n,r)}}}};var dk={kernelName:Yu,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var pk={kernelName:ju,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return vt(Ie(n,J(ni(e,1.5),2)))}}}};var fk={kernelName:Ku,inputsToSave:["condition"],gradFunc:function(n,t){var e=t[0];return{condition:function(){return ue(Ee(e),"float32")},t:function(){return J(n,ue(e,n.dtype))},e:function(){return J(n,ue(so(e),n.dtype))}}}};var mk={kernelName:$u,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){var i=Li(e,be(0)),r=be(Kv),a=be($v),s=J(n,a),o=J(J(n,r),yn(ue(e,"float32")));return vn(i,s,o)}}}};var gk={kernelName:ec,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(n,J(e,ge(be(1),e)))}}}};var vk={kernelName:Qu,gradFunc:function(n){return{x:function(){return Ee(n)}}}};var yk={kernelName:Ju,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(eo(ue(e,"float32")),n)}}}};var bk={kernelName:Zu,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(rh(ue(e,"float32")),n)}}}};var wk={kernelName:Xu,inputsToSave:["x"],gradFunc:function(n,t,e){for(var i=t[0],r=e,a=r.begin,s=r.size,o=i.shape,l=Kc(i,a,s),u=l[0],c=l[1],h=[],d=0;d0&&(o=Ae(o,l)),V(o,e.shape)},s=function(){var o=n,l=gt(i.shape,r);return l.length>0&&(o=Ae(o,l)),V(vt(o),i.shape)};return{a,b:s}}};var Ck={kernelName:ic,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=i.shape.slice(),a=e.axis,s=Qe(a,i.shape);s.forEach(function(u){r[u]=1});var o=V(n,r),l=J(o,Kr(i.shape,"float32"));return{x:function(){return l}}}};var Rk={kernelName:uc,inputsToSave:["x"],gradFunc:function(n,t){var e=t[0];return{x:function(){return Ie(n,Ye(eo(e)))}}}};var Ok={kernelName:cc,outputsToSave:[!0],gradFunc:function(n,t){var e=t[0];return{x:function(){return J(ge(be(1),Ye(e)),n)}}}};var Ek={kernelName:hc,inputsToSave:["x"],gradFunc:function(n,t,e){var i=t[0],r=e.reps,a=function(){var s=Ee(i);if(i.rank===1)for(var o=0;o{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});var y=lr();var Uh=function(n,t){return Uh=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},Uh(n,t)};function Q(n,t){Uh(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var Kt=function(){return Kt=Object.assign||function(t){for(var e,i=1,r=arguments.length;i0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]t?1:0}function Io(n,t){return-1*Mk(n,t)}function Ti(n){if(n==null)return n;for(var t=[],e=0,i=n;e=0),_n(i>=e),Array.isArray(n)&&n.length>=e&&n.length<=i&&n.every(function(r){return typeof r===t})}function Tt(n,t){Array.isArray(n)?(y.util.assert(n.length>0,function(){return t+" is unexpectedly an empty array."}),n.forEach(function(e,i){return Tt(e,"element "+(i+1)+" of "+t)})):y.util.assert(Number.isInteger(n)&&n>0,function(){return"Expected "+t+" to be a positive integer, but got "+(ay(n)+".")})}function ay(n){return n===null?"null":Array.isArray(n)?"["+n.map(function(t){return ay(t)}).join(",")+"]":typeof n=="string"?'"'+n+'"':""+n}function Vk(n,t){var e=y.util.now(),i,r=function(){for(var a=[],s=0;s0){var e=n+"_"+t;return ta.set(e,1),e}else return n}var e3=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function my(n){return!!n.match(e3)}function t3(n){return n===parseInt(n.toString(),10)}function Ni(n,t,e){t==null&&(t=0),e==null&&(e=n.length);for(var i=1,r=t;r= 2"+(" but got x shape = "+n.shape+" and y shape = "+t.shape));if(t.rank>=3){var r=n.shape.slice(-1)[0],a=t.shape.slice(-2)[0];if(r!==a)throw new Te("If rank y >= 3, then the second last dim"+(" of y must equal the last dim of x but got x shape = "+n.shape+" and ")+(" y shape = "+t.shape))}if(n.rank===2&&t.rank===2){var s=!1,o=!1;return y.fused.matMul({a:n,b:t,transposeA:s,transposeB:o,bias:i?qh(n.rank,i,Sn()):null,activation:e})}else{var l=n.shape.slice(),u=l.pop();n=n.reshape([-1,u]);var c=t.shape.slice(),h=c.pop(),a=c.pop(),d=c.concat([h]),p=Array.from({length:t.rank},function(b,w){return w===0?t.rank-2:w<=t.rank-2?w-1:w});t=t.transpose(p).reshape([a,-1]);var f=l.concat(d),s=!1,o=!1;return y.fused.matMul({a:n,b:t,transposeA:s,transposeB:o,bias:i?qh(n.rank,i,Sn()):null,activation:e}).reshape(f)}}function wy(n,t,e){return y.tidy(function(){return Array.isArray(t)?t=y.tensor1d(t,"int32"):t=t.toInt(),y.gather(n,t,e)})}function ns(n){return y.mul(n,n)}function qh(n,t,e){var i=t.shape;if(t.rank!==1&&t.rank!==n)throw new M("Unexpected bias dimensions: "+t.rank+("; expected it to be 1 or "+n));if(n===5){if(e==="channelsFirst")return i.length===1?t.reshape([1,i[0],1,1,1]):t.reshape([1,i[3],i[0],i[1],i[2]]);if(e==="channelsLast")return i.length===1?t.reshape([1,1,1,1,i[0]]):t.reshape([1].concat(i))}else if(n===4){if(e==="channelsFirst")return i.length===1?t.reshape([1,i[0],1,1]):t.reshape([1,i[2],i[0],i[1]]);if(e==="channelsLast")return i.length===1?t.reshape([1,1,1,i[0]]):t.reshape([1].concat(i))}else if(n===3){if(e==="channelsFirst")return i.length===1?t.reshape([1,i[0],1]):t.reshape([1,i[1],i[0]]);if(e==="channelsLast")return i.length===1?t.reshape([1,1,i[0]]):t.reshape([1].concat(i))}else if(n<3)return t;throw new M("Unsupported input rank by biasAdd: "+t.rank)}function Hn(n,t,e){return y.tidy(function(){return e==null&&(e=Sn()),ht(e),n.add(qh(n.rank,t,e))})}function a3(n,t){if(t===void 0&&(t=1),t!==1)throw new Te("Support for alpha values other than 1 ("+t+") is not implemented yet.");return y.elu(n)}function s3(n){return y.tidy(function(){return y.div(n,y.abs(n).add(1))})}function Sy(n,t,e,i){return y.tidy(function(){return y.dropout(n,t,e,i)})}function o3(n){return y.tidy(function(){var t=y.add(.5,y.mul(.2,n));return y.clipByValue(t,0,1)})}function is(n,t,e){return e===void 0&&(e=!1),e?n():t()}var l3=["fanIn","fanOut","fanAvg"],u3=["normal","uniform","truncatedNormal"];function c3(n){ea(l3,"FanMode",n)}function h3(n){ea(u3,"Distribution",n)}var fn=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.fromConfigUsesCustomObjects=function(){return!1},t.prototype.getConfig=function(){return{}},t}(y.serialization.Serializable),Ly=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.apply=function(e,i){return y.zeros(e,i)},t.className="Zeros",t}(fn);y.serialization.registerClass(Ly);var Gh=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.apply=function(e,i){return y.ones(e,i)},t.className="Ones",t}(fn);y.serialization.registerClass(Gh);var Iy=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(typeof e!="object")throw new M("Expected argument of type ConstantConfig but got "+e);if(e.value===void 0)throw new M("config must have value set but got "+e);return i.value=e.value,i}return t.prototype.apply=function(e,i){var r=this;return y.tidy(function(){return y.mul(y.scalar(r.value),y.ones(e,i))})},t.prototype.getConfig=function(){return{value:this.value}},t.className="Constant",t}(fn);y.serialization.registerClass(Iy);var Ay=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.DEFAULT_MINVAL=-.05,i.DEFAULT_MAXVAL=.05,i.minval=e.minval||i.DEFAULT_MINVAL,i.maxval=e.maxval||i.DEFAULT_MAXVAL,i.seed=e.seed,i}return t.prototype.apply=function(e,i){return y.randomUniform(e,this.minval,this.maxval,i)},t.prototype.getConfig=function(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}},t.className="RandomUniform",t}(fn);y.serialization.registerClass(Ay);var Ty=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.DEFAULT_MEAN=0,i.DEFAULT_STDDEV=.05,i.mean=e.mean||i.DEFAULT_MEAN,i.stddev=e.stddev||i.DEFAULT_STDDEV,i.seed=e.seed,i}return t.prototype.apply=function(e,i){if(i=i||"float32",i!=="float32"&&i!=="int32")throw new Te("randomNormal does not support dType "+i+".");return To(e,this.mean,this.stddev,i,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="RandomNormal",t}(fn);y.serialization.registerClass(Ty);var Ny=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.DEFAULT_MEAN=0,i.DEFAULT_STDDEV=.05,i.mean=e.mean||i.DEFAULT_MEAN,i.stddev=e.stddev||i.DEFAULT_STDDEV,i.seed=e.seed,i}return t.prototype.apply=function(e,i){if(i=i||"float32",i!=="float32"&&i!=="int32")throw new Te("truncatedNormal does not support dType "+i+".");return y.truncatedNormal(e,this.mean,this.stddev,i,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="TruncatedNormal",t}(fn);y.serialization.registerClass(Ny);var xy=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.gain=e.gain!=null?e.gain:1,i}return t.prototype.apply=function(e,i){var r=this;return y.tidy(function(){if(e.length!==2||e[0]!==e[1])throw new M("Identity matrix initializer can only be used for 2D square matrices.");return y.mul(r.gain,y.eye(e[0]))})},t.prototype.getConfig=function(){return{gain:this.gain}},t.className="Identity",t}(fn);y.serialization.registerClass(xy);function d3(n,t){t===void 0&&(t="channelsLast");var e,i;if(ht(t),n.length===2)e=n[0],i=n[1];else if([3,4,5].indexOf(n.length)!==-1){if(t==="channelsFirst"){var r=Ni(n,2);e=n[1]*r,i=n[0]*r}else if(t==="channelsLast"){var r=Ni(n,0,n.length-2);e=n[n.length-2]*r,i=n[n.length-1]*r}}else{var a=Ni(n);e=Math.sqrt(a),i=Math.sqrt(a)}return[e,i]}var Xt=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(e.scale<0)throw new M("scale must be a positive float. Got: "+e.scale);return i.scale=e.scale==null?1:e.scale,i.mode=e.mode==null?"fanIn":e.mode,c3(i.mode),i.distribution=e.distribution==null?"normal":e.distribution,h3(i.distribution),i.seed=e.seed,i}return t.prototype.apply=function(e,i){var r=d3(e),a=r[0],s=r[1],o=this.scale;if(this.mode==="fanIn"?o/=Math.max(1,a):this.mode==="fanOut"?o/=Math.max(1,s):o/=Math.max(1,(a+s)/2),this.distribution==="normal"){var l=Math.sqrt(o);if(i=i||"float32",i!=="float32"&&i!=="int32")throw new Te(this.getClassName()+" does not support dType "+i+".");return y.truncatedNormal(e,0,l,i,this.seed)}else{var u=Math.sqrt(3*o);return y.randomUniform(e,-u,u,i)}},t.prototype.getConfig=function(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}},t.className="VarianceScaling",t}(fn);y.serialization.registerClass(Xt);var Yh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return Xt.className},t.className="GlorotUniform",t}(Xt);y.serialization.registerClass(Yh);var jh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return Xt.className},t.className="GlorotNormal",t}(Xt);y.serialization.registerClass(jh);var Kh=function(n){Q(t,n);function t(e){return n.call(this,{scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return Xt.className},t.className="HeNormal",t}(Xt);y.serialization.registerClass(Kh);var $h=function(n){Q(t,n);function t(e){return n.call(this,{scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return Xt.className},t.className="HeUniform",t}(Xt);y.serialization.registerClass($h);var Xh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return Xt.className},t.className="LeCunNormal",t}(Xt);y.serialization.registerClass(Xh);var Jh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return Xt.className},t.className="LeCunNormal",t}(Xt);y.serialization.registerClass(Jh);var Cy=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(i.DEFAULT_GAIN=1,i.gain=e.gain==null?i.DEFAULT_GAIN:e.gain,i.seed=e.seed,i.seed!=null)throw new Te("Random seed is not implemented for Orthogonal Initializer yet.");return i}return t.prototype.apply=function(e,i){var r=this;return y.tidy(function(){if(e.length<2)throw new Te("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn("Orthogonal initializer is being called on a matrix with more "+("than 2000 ("+e[0]*e[1]+") elements: ")+"Slowness may result.");var a=e[0]>e[1]?[e[1],e[0]]:e,s=To(a,0,1,"float32"),o=y.linalg.gramSchmidt(s);return e[0]>e[1]&&(o=o.transpose()),y.mul(r.gain,o)})},t.prototype.getConfig=function(){return{gain:this.gain,seed:this.seed}},t.className="Orthogonal",t}(fn);y.serialization.registerClass(Cy);var Ry={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function Oy(n,t){return t===void 0&&(t={}),Ja(n,y.serialization.SerializationMap.getMap().classNameMap,t,"initializer")}function st(n){return Bh(n)}function tt(n){if(typeof n=="string"){var t=n in Ry?Ry[n]:n;if(t==="GlorotNormal")return new jh;if(t==="GlorotUniform")return new Yh;if(t==="HeNormal")return new Kh;if(t==="HeUniform")return new $h;if(t==="LeCunNormal")return new Xh;if(t==="LeCunUniform")return new Jh;var e={};return e.className=t,e.config={},Oy(e)}else return n instanceof fn?n:Oy(n)}function p3(){return new Ly}function f3(){return new Gh}function m3(n){return new Iy(n)}function g3(n){return new Ay(n)}function v3(n){return new Ty(n)}function y3(n){return new Ny(n)}function b3(n){return new xy(n)}function w3(n){return new Xt(n)}function S3(n){return new Yh(n)}function L3(n){return new jh(n)}function I3(n){return new Kh(n)}function A3(n){return new $h(n)}function T3(n){return new Xh(n)}function N3(n){return new Jh(n)}function x3(n){return new Cy(n)}var C3={__proto__:null,zeros:p3,ones:f3,constant:m3,randomUniform:g3,randomNormal:v3,truncatedNormal:y3,identity:b3,varianceScaling:w3,glorotUniform:S3,glorotNormal:L3,heNormal:I3,heUniform:A3,leCunNormal:T3,leCunUniform:N3,orthogonal:x3};var R3=0;function Ey(){return R3++}var No={};function xo(n){return n===void 0&&(n=""),n in No||(No[n]=0),No[n]+=1,n+No[n].toString()}function Zh(n){return Array.isArray(n)&&Array.isArray(n[0])}function Co(n){return n.length===0?[]:Array.isArray(n[0])?n:[n]}function xe(n){var t;if(Array.isArray(n)){if(n.length!==1)throw new M("Expected Tensor length to be 1; got "+n.length);t=n[0]}else t=n;return t}function je(n){if(Array.isArray(n)&&Array.isArray(n[0])){if(n.length===1)return n=n,n[0];throw new M("Expected exactly 1 Shape; got "+n.length)}else return n}function Ro(n){for(var t=0,e=0,i=n;e1)throw new Ai("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use `getInputAt(nodeIndex)` instead.');if(this.inboundNodes.length===0)throw new Ai("Layer "+this.name+" is not connected, no input to return.");return qt(this.getNodeAtIndex(0,"input").inputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"output",{get:function(){if(this.inboundNodes.length===0)throw new Ai("Layer "+this.name+" has no inbound nodes.");if(this.inboundNodes.length>1)throw new Ai("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use `getOutputAt(nodeIndex)` instead.');return qt(this.getNodeAtIndex(0,"output").outputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"losses",{get:function(){return this._losses},enumerable:!0,configurable:!0}),t.prototype.calculateLosses=function(){return this.losses.map(function(e){return e()})},Object.defineProperty(t.prototype,"updates",{get:function(){return this._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"built",{get:function(){return this._built},set:function(e){this._built=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainable",{get:function(){return this.trainable_},set:function(e){this._trainableWeights.forEach(function(i){return i.trainable=e}),this.trainable_=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable_?this._trainableWeights.filter(function(e){return e.trainable}):[]},set:function(e){this._trainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this._trainableWeights.filter(function(e){return!e.trainable}).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)},set:function(e){this._nonTrainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"weights",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"stateful",{get:function(){return this._stateful},enumerable:!0,configurable:!0}),t.prototype.resetStates=function(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")},t.prototype.assertInputCompatibility=function(e){if(e=Je(e),this.inputSpec==null||this.inputSpec.length===0)return;var i=Je(this.inputSpec);if(e.length!==i.length)throw new M("Layer "+this.name+" expects "+i.length+" inputs, "+("but it received "+e.length+" input tensors. ")+("Input received: "+e));for(var r=0;r=0?l[c]:l[l.length+c];if(h!=null&&[h,null].indexOf(d)===-1)throw new M("Input "+r+" is incompatible with layer "+(this.name+": expected axis "+c+" of input shape to ")+("have value "+h+" but got shape "+l+"."))}}if(s.shape!=null)for(var p=0;p0&&Array.isArray(R[0])?v=R.map(function(W,F){return new In(D,W,r,Je(e),i,r.name,F)}):v=new In(D,R,r,Je(e),i,r.name),r.addInboundNode(e,v,null,null,C,R,i),r._refCount++,r.activityRegularizer!=null)throw new Te("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return v}})},t.prototype.warnOnIncompatibleInputShape=function(e){if(this.batchInputShape==null)return;if(e.length!==this.batchInputShape.length)console.warn("The rank of the input tensor provided (shape: "+(JSON.stringify(e)+") does not match that of the ")+("batchInputShape ("+JSON.stringify(this.batchInputShape)+") ")+("of the layer "+this.name));else{var i=!1;this.batchInputShape.forEach(function(r,a){r!=null&&e[a]!=null&&e[a]!==r&&(i=!0)}),i&&console.warn("The shape of the input tensor "+("("+JSON.stringify(e)+") does not ")+("match the expectation of layer "+this.name+": ")+(""+JSON.stringify(this.batchInputShape)))}},Object.defineProperty(t.prototype,"outputShape",{get:function(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new Ai("The layer "+this.name+" has never been called and thus has no defined output shape.");for(var e=[],i=0,r=this.inboundNodes;i0)&&(t=n.sourceLayer,e=n.nodeIndex),t.inboundNodes.length===0)return[n];var i=t.inboundNodes[e];if(i.inboundLayers.length===0)return i.inputTensors;for(var r=[],a=0;a0?[4,Promise.all(t)]:[3,2];case 1:for(o=u.sent(),l=0;l=0&&Number.isInteger(t),function(){return"Verbosity level is expected to be an integer >= 0, "+("but got "+t)}),n.checkForDuplicate(e),n.constructors[t]==null&&(n.constructors[t]=[]),n.constructors[t].push(e)},n.checkForDuplicate=function(t){for(var e in n.constructors){var i=n.constructors[+e];i.forEach(function(r){if(r===t)throw new M("Duplicate callback constructor.")})}},n.clear=function(){n.constructors={}},n.createCallbacks=function(t){var e=[];for(var i in n.constructors){var r=+i;t>=r&&e.push.apply(e,n.constructors[r])}return e.map(function(a){return new a})},n.constructors={},n}();function Vy(n,t,e,i,r,a,s,o,l){var u=new Py,c=[new U3].concat(Hy.createCallbacks(t));n!=null&&c.push.apply(c,n),c.push(u);var h=new zy(c);return h.setParams({epochs:e,initialEpoch:i,samples:r,steps:a,batchSize:s,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function An(n,t,e){return t===void 0&&(t={}),e===void 0&&(e=!1),Ja(n,y.serialization.SerializationMap.getMap().classNameMap,t,"layer",e)}function Eo(n,t){return y.tidy(function(){n.dtype!=="float32"&&(n=n.asType("float32"));var e=y.sum(ns(n),t,!0),i=y.fill(e.shape,yt()),r=y.sqrt(y.maximum(e,i));return y.div(n,r)})}function pr(n,t){return y.tidy(function(){return y.mean(ns(y.sub(t,n)),-1)})}function Do(n,t){return y.tidy(function(){return y.mean(y.abs(y.sub(t,n)),-1)})}function ra(n,t){return y.tidy(function(){var e=y.sub(n,t),i=y.clipByValue(y.abs(n),yt(),Number.MAX_VALUE),r=y.abs(y.div(e,i));return y.mul(100,y.mean(r,-1))})}function B3(n,t){return y.tidy(function(){var e=y.clipByValue(t,yt(),Number.MAX_VALUE),i=y.log(y.add(1,e)),r=y.clipByValue(n,yt(),Number.MAX_VALUE),a=y.log(y.add(1,r));return y.mean(ns(y.sub(i,a)),-1)})}function z3(n,t){return y.tidy(function(){var e=y.maximum(0,y.sub(1,y.mul(n,t)));return y.mean(ns(e),-1)})}function P3(n,t){return y.tidy(function(){var e=y.maximum(0,y.sub(1,y.mul(n,t)));return y.mean(e,-1)})}function _3(n,t){return y.tidy(function(){var e=y.sum(y.mul(n,t),-1),i=y.max(y.mul(y.sub(1,n),t),-1);return y.maximum(0,y.add(1,y.sub(i,e)))})}function M3(n,t){return y.tidy(function(){var e=Math.log(2),i=y.sub(t,n),r=y.sub(y.add(i,y.softplus(y.mul(-2,i))),e);return y.mean(r,-1)})}function as(n,t,e){return e===void 0&&(e=!1),y.tidy(function(){if(e)t=y.softmax(t);else{var i=y.sum(t,t.shape.length-1,!0);t=y.div(t,i)}return t=y.clipByValue(t,yt(),1-yt()),y.neg(y.sum(y.mul(n.toFloat(),y.log(t)),t.shape.length-1))})}function ko(n,t,e){return e===void 0&&(e=!1),y.tidy(function(){var i=y.floor(i3(n)).toInt();t=y.clipByValue(t,yt(),1-yt());var r=t.shape,a=y.oneHot(i,r[r.length-1]).reshape(r);return as(a,t,e)})}function H3(n,t){if(!y.util.arraysEqual(n.shape,t.shape))throw new M("logits and labels must have the same shape, but got shapes "+(JSON.stringify(n.shape)+" and "+JSON.stringify(t.shape)));return y.tidy(function(){var e=t.relu(),i=t.abs().neg();return e.sub(t.mul(n)).add(i.exp().log1p())})}function Fo(n,t){return y.tidy(function(){var e;return e=y.clipByValue(t,yt(),1-yt()),e=y.log(y.div(e,y.sub(1,e))),y.mean(H3(n,e),-1)})}function V3(n,t){return y.tidy(function(){var e=y.clipByValue(n,yt(),1),i=y.clipByValue(t,yt(),1);return y.sum(y.mul(n,y.log(y.div(e,i))),-1)})}function q3(n,t){return y.tidy(function(){var e=y.log(y.add(yt(),t));return y.mean(y.sub(t,y.mul(n,e)),-1)})}function td(n,t){return y.tidy(function(){var e=Eo(n,-1),i=Eo(t,-1),r=y.mul(e,i);return y.neg(y.sum(r,-1))})}var Wo={meanSquaredError:pr,meanAbsoluteError:Do,meanAbsolutePercentageError:ra,meanSquaredLogarithmicError:B3,squaredHinge:z3,hinge:P3,categoricalHinge:_3,logcosh:M3,categoricalCrossentropy:as,sparseCategoricalCrossentropy:ko,binaryCrossentropy:Fo,kullbackLeiblerDivergence:V3,poisson:q3,cosineProximity:td};function nd(n){if(typeof n=="string"){if(n in Wo)return Wo[n];var t="Unknown loss "+n;throw n.toLowerCase().includes("softmaxcrossentropy")&&(t="Unknown loss "+n+'. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy'),new M(t)}else return n}function id(n,t){return y.tidy(function(){var e=y.mul(.5,y.onesLike(t)),i=es(y.greater(t,e),n.dtype);return y.mean(y.equal(n,i),-1)})}function rd(n,t){return y.tidy(function(){return es(y.equal(y.argMax(n,-1),y.argMax(t,-1)),"float32")})}function qy(n,t){return y.tidy(function(){return y.logicalAnd(n.equal(1),t.equal(1)).sum().cast("float32")})}function G3(n,t){return y.tidy(function(){return y.logicalAnd(n.equal(1),t.equal(0)).sum().cast("float32")})}function Y3(n,t){return y.tidy(function(){return y.logicalAnd(n.equal(0),t.equal(1)).sum().cast("float32")})}function Gy(n,t){return y.tidy(function(){var e=qy(n,t),i=Y3(n,t),r=e.add(i);return y.where(y.greater(r,0),e.div(r),0).cast("float32")})}function j3(n,t){return y.tidy(function(){var e=qy(n,t),i=G3(n,t),r=e.add(i);return y.where(y.greater(r,0),e.div(r),0).cast("float32")})}function Yy(n,t){return Fo(n,t)}function jy(n,t){return n.rank===t.rank&&(n=n.squeeze([n.rank-1])),t=t.argMax(-1),t.dtype!==n.dtype&&(t=t.asType(n.dtype)),y.equal(n,t).asType("float32")}var K3=pr,$3=pr,X3=Do,J3=Do,Z3=ra,Q3=ra,ad=as,e4=td,Ky=ko,Uo={binaryAccuracy:id,categoricalAccuracy:rd,precision:Gy,categoricalCrossentropy:ad,sparseCategoricalCrossentropy:Ky,mse:K3,MSE:$3,mae:X3,MAE:J3,mape:Z3,MAPE:Q3,cosine:e4};function t4(n){if(typeof n=="string"&&n in Uo)return Uo[n];if(typeof n!="string"&&n!=null)return n;throw new M("Unknown metric "+n)}function Bo(n){if(_n(n!==null,"Unknown LossOrMetricFn "+n),typeof n=="string")return n;for(var t=void 0,e=0,i=Object.keys(Wo);e$y&&console.warn('User-defined metadata of model "'+t+'" is too large in '+("size (length="+i.length+" when serialized). It is not ")+"recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= "+($y+"."))}}function sd(n){if(n===null)return!0;if(typeof n=="object")if(Object.getPrototypeOf(n)===Object.prototype){for(var t=Object.keys(n),e=0,i=t;e1||o.length===1&&o[0].inboundLayers.length>1){t=!1;break}i.push.apply(i,o)}if(t)for(var l=0,u=n.layers;l0&&(i=i.slice(0,i.length-1)+" "),i+=n[r],i=i.slice(0,t[r]),i+=" ".repeat(t[r]-i.length);e(i)}function a4(n,t,e){var i;try{i=JSON.stringify(n.outputShape)}catch(o){i="multiple"}var r=n.name,a=n.getClassName(),s=[r+" ("+a+")",i,n.countParams().toString()];zo(s,t,e)}function s4(n,t,e,i){var r;try{r=JSON.stringify(n.outputShape)}catch(v){r="multiple"}for(var a=[],s=0,o=n.inboundNodes;s0&&e.indexOf(l)===-1)continue;for(var u=0;ui.maxNumTensors&&(i.maxNumTensors=w),w0,function(){return"Expected at least one fetch, got none"});var e=[],i={};if(n.length===1){var r=Qy(n[0],t);e=r.sorted,i=r.recipientMap}else for(var a=new Set,s=0,o=n;s0;){var c=l[l.length-1];if(e.has(c.name)){l.pop();continue}var h=u[u.length-1]===l.length-1;if(c.inputs.length===0||h)l.pop(),i.push(c),e.add(c.name),h&&u.pop();else{u.push(l.length-1);for(var d=0,p=c.inputs;d1 nodes"),_n(c===0,"input layer has >1 tensors"),i.inputLayers.push(l),i.inputLayersNodeIndices.push(u),i.inputLayersTensorIndices.push(c)}i.inputNames=[],i.outputNames=[],i.feedInputShapes=[],i.feedInputNames=[],i.feedOutputNames=[];for(var p=0;p=0;)ft.splice(ft.indexOf(_t),1);L.push(_t)},C=[],R=[],D=0,k=i.outputs;Dcn?1:0});for(var he=0,ye=le;he0)throw new M("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];for(var e=[],i=0,r=this.layers;i0)throw new M(v.length+" of "+a+" weights are not set: "+(""+v))}ed(d)},t.prototype.updatedConfig=function(){var e=this.getConfig(),i={};return i.className=this.getClassName(),i.config=e,i.kerasVersion="tfjs-layers "+ld,i.backend="TensorFlow.js",i},t.prototype.toJSON=function(e,i){i===void 0&&(i=!0);var r=od(this.updatedConfig());return i?JSON.stringify(r):r},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){e=Je(e);for(var a=new aa,s=0;s1)for(var c=0,h=u;c0){for(var m=[],g=0;g0&&G.apply(qt(X),ee)}function c(G){var Z=G.name,X=An(G,i.customObjects!=null?i.customObjects:{});X.setFastWeightInitDuringBuild(a),s[Z]=X;var ee=G.inboundNodes;ee.forEach(function(ne){if(!(ne instanceof Array))throw new M("Corrupted configuration, expected array for nodeData: "+ne);l(X,ne)})}for(var h=i.name,d=i.layers,p=0,f=d;p0&&typeof n[Object.keys(n)[0]]=="object"){var r=[];return t.forEach(function(a){a in n?r.push(n[a]):r.push(null)}),r}else throw new Error("The model has multiple ("+i+") outputs, "+("so "+e+" must be either an array with ")+(i+" elements or an object with "+t+" keys. ")+("Provided "+e+" not understood: "+JSON.stringify(n)))}function eb(n,t){return p4(n,t,"classWeight")}function tb(n,t,e,i){return Se(this,void 0,void 0,function(){var r,a,s,o,l;return ve(this,function(u){switch(u.label){case 0:if(t!=null||i!=null)throw new Error("Support sampleWeight is not implemented yet");return e!=null?(r=y.tidy(function(){if(n.shape.length===1)return n.clone();if(n.shape.length===2)if(n.shape[1]>1){var c=1;return n.argMax(c)}else{if(n.shape[1]===1)return n.reshape([n.shape[0]]);throw new Error("Encountered unexpected last-dimension size ("+n.shape[1]+") during handling of class weights. The size is expected to be >= 1.")}else throw new Error("Unexpected rank of target (y) tensor ("+n.rank+") during handling of class weights. The rank is expected to be 1 or 2.")}),o=(s=Array).from,[4,r.data()]):[3,2];case 1:return a=o.apply(s,[u.sent()]),y.dispose(r),l=[],a.forEach(function(c){if(e[c]==null)throw new Error("classWeight must contain all classes in the training data. "+("The class "+c+" exists in the data but not in ")+"classWeight");l.push(e[c])}),[2,y.tensor1d(l,"float32")];case 2:return[2,null]}})})}function f4(n,t){return y.mul(n,t)}var m4=32;function ib(n,t){var e,i,r=t;e=r.xs,i=r.ys,y.util.assert(e!=null&&i!=null,function(){return"A Dataset iterator for fitDataset() is expected to generate objects of the form `{xs: xVal, ys: yVal}`, where the two values may be `tf.Tensor`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates "+(""+t)});var a=nb("input",n.inputNames,e),s=nb("output",n.outputNames,i),o=a[0].shape[0];y.util.assert(a.length===n.inputs.length,function(){return"LayersModel has "+n.inputs.length+" inputs, but the dataset "+("provides "+a.length+" inputs. (Expected input keys: ")+(JSON.stringify(n.inputNames)+")")}),y.util.assert(s.length===n.outputs.length,function(){return"LayersModel has "+n.outputs.length+" outputs, but the dataset "+("provides "+s.length+" outputs. (Expected output keys: ")+(JSON.stringify(n.outputNames)+")")});for(var l=function(d){y.util.assert(a[d].shape[0]===o,function(){return"Batch size mismatch: input "+(n.inputNames[d]+" has "+a[d].shape[0]+"; ")+("expected "+o+" based on input "+n.inputNames[0]+".")})},u=0;u0&&Number.isInteger(e.epochs),function(){return"For fitDataset(), config.epochs is expected to be a positive "+("integer, but got "+e.epochs)}),y.util.assert(!i||e.batchesPerEpoch>0&&Number.isInteger(e.batchesPerEpoch),function(){return"For fitDataset(), config.batchesPerEpoch is expected to be a "+("positive integer if specified, but got "+e.batchesPerEpoch)}),y.util.assert(e.validationSplit==null,function(){return"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."}),n.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");n.isTraining=!0,X.label=1;case 1:return X.trys.push([1,,26,27]),r=e.validationData!=null,a=void 0,s=void 0,r&&(rb(e.validationData)?y.util.assert(e.validationBatches==null||e.validationBatches>0&&Number.isInteger(e.validationBatches),function(){return"For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, "+("but got "+e.validationBatches)}):(o=g4(e.validationData),a=o.xs,s=o.ys)),l=n.makeTrainFunction(),u=n.getDedupedMetricsNames(),c=void 0,r?c=u.slice().concat(u.map(function(ee){return"val_"+ee})):c=u.slice(),h=My(e.callbacks,e.yieldEvery),d=e.verbose==null?1:e.verbose,p=Vy(h,d,e.epochs,null,null,v4(t,e),null,r,c),f=p.callbackList,m=p.history,f.setModel(n),n.history=m,[4,f.onTrainBegin()];case 2:return X.sent(),n.stopTraining_=!1,g=e.initialEpoch==null?0:e.initialEpoch,[4,t.iterator()];case 3:v=X.sent(),X.label=4;case 4:return g=e.batchesPerEpoch:L.done)?r?(G=void 0,rb(e.validationData)?(Z=Je,[4,n.evaluateDataset(e.validationData,{batches:e.validationBatches})]):[3,17]):[3,19]:[3,20];case 16:return G=Z.apply(void 0,[X.sent()]),[3,18];case 17:G=Je(n.evaluate(a,s,{batchSize:e.validationBatchSize==null?m4:e.validationBatchSize,verbose:0})),X.label=18;case 18:for(F=0;F0)throw new Te("Verbose mode is not implemented yet.");return y.util.assert(!i||e.batches>0&&Number.isInteger(e.batches),function(){return"Test loop expects `batches` to be a positive integer, but "+("received "+JSON.stringify(e.batches))}),b4(t)?(o=t,[3,3]):[3,1];case 1:return[4,t.iterator()];case 2:o=f.sent(),f.label=3;case 3:s=o,l=0,u=0,c=function(){var m;return ve(this,function(g){switch(g.label){case 0:return[4,s.next()];case 1:return m=g.sent(),a=y.tidy(function(){if(m.value){var v=ib(n,m.value),b=v.xs,w=v.ys,S=b.concat(w),L=y.tidy(function(){return r(S)});if(y.dispose(S),u===0)for(var N=0;N0&&y.dispose(W)},N=0;N0&&Number.isInteger(n),function(){return"batchSize is required to be a positive integer, but got "+n})}function ls(n,t,e){return n==null?[null]:Array.isArray(n)?n.map(function(i){return dr(i,t,e-t)}):dr(n,t,e-t)}function hd(n,t){return y.tidy(function(){return n==null?null:Array.isArray(n)?n.map(function(e){return hd(e,t)}):wy(n,t.dtype==="int32"?t:t.toInt())})}function dd(n,t){for(var e=[],i=0,r=null;i=n&&(r=n),e.push([i,r]),i=r;return e}function S4(n,t,e,i,r,a,s,o,l,u,c,h,d,p,f){return Se(this,void 0,void 0,function(){var m,g,v,b,w,S,L,N,C;return ve(this,function(R){switch(R.label){case 0:if(r==null&&(r=32),a==null&&(a=1),c==null&&(c=!0),d==null&&(d=0),m=!1,l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new M("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");return g=n.checkNumSamples(e,r,p,"steps_per_epoch"),g!=null&&(v=Ln(0,g)),s==null&&(s=1),b=Vy(o,s,a,d,g,p,r,m,h),w=b.callbackList,S=b.history,w.setModel(n),n.history=S,[4,w.onTrainBegin()];case 1:R.sent(),n.stopTraining_=!1,L=function(D){var k,W,F,P,H,_;return ve(this,function(j){switch(j.label){case 0:return[4,w.onEpochBegin(D)];case 1:if(j.sent(),k={},!(p!=null))return[3,2];throw new Te("stepsPerEpoch mode is not implemented yet.");case 2:if(c==="batch")throw new Te("batch shuffling is not implemneted yet");c&&y.util.shuffle(v),W=y.tensor1d(v),F=dd(g,r),P=function(K){var q;return ve(this,function(G){switch(G.label){case 0:return q={},[4,w.onBatchBegin(K,q)];case 1:return G.sent(),y.tidy(function(){var Z=F[K][0],X=F[K][1],ee=dr(W,Z,X-Z);q.batch=K,q.size=X-Z;for(var ne=hd(e,ee),ie=t(ne),te=0;te0))return[3,4];if(f=!0,i.validationData.length===2)s=i.validationData[0],o=i.validationData[1];else throw i.validationData.length===3?new Te("validationData including sample weights is not supported yet."):new M("When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; "+(i.validationData+" is invalid."));return g=!0,[4,n.standardizeUserData(s,o,null,null,g,h)];case 3:return v=W.sent(),l=v[0],u=v[1],m=l.concat(u),[3,5];case 4:i.validationSplit!=null&&i.validationSplit>0&&i.validationSplit<1?(f=!0,b=Math.floor(r[0].shape[0]*(1-i.validationSplit)),w=r[0].shape[0],l=ls(r,b,w),r=ls(r,0,b),u=ls(a,b,w),a=ls(a,0,b),m=l.concat(u)):i.validationSteps!=null&&(f=!0),W.label=5;case 5:return S=r.concat(a).concat(c),n.checkTrainableWeightsConsistency(),L=n.makeTrainFunction(),N=n.getDedupedMetricsNames(),C=void 0,R=void 0,f?(n.makeTestFunction(),C=n.testFunction,R=N.slice().concat(N.map(function(F){return"val_"+F}))):(C=null,m=[],R=N.slice()),D=My(i.callbacks,i.yieldEvery),[4,S4(n,L,S,N,h,i.epochs,i.verbose,D,C,m,i.shuffle,R,i.initialEpoch,null,null)];case 6:return k=W.sent(),[2,k];case 7:return n.isTraining=!1,fr(r,t),fr(a,e),fr(l,s),fr(u,o),c!=null&&y.dispose(c),[7];case 8:return[2]}})})}function ab(n){var t=[];n instanceof y.Tensor&&(n=[n]);for(var e=0;e0)a=!0;else if(sb(n)){for(var s in n)if(n.hasOwnProperty(s)){a=!0;break}}else a=!0;if(a)throw new M("Error when checking model "+r+" expected no data, "+("but got "+n))}return[]}if(n==null)return t.map(function(g){return null});var o;if(sb(n)){n=n,o=[];for(var l=0,u=t;l1)throw new M("The model "+r+" expects "+t.length+" Tensor(s), "+("but only received one Tensor. Found: Tensor with shape "+n.shape));o=[n]}if(o=ab(o),e!=null)for(var h=0;h=0&&f!==m)throw new M("Error when checking "+r+": expected "+t[h]+" "+("to have shape ["+e[h]+"], but got array with shape ")+("["+d.shape+"]."))}}return o}function A4(n,t,e){var i=Ti(n.map(function(a){return a.shape[0]}));i.sort();var r=Ti(t.map(function(a){return a.shape[0]}));if(r.sort(),i.length>1)throw new M("All input Tensors (x) should have the same number of samples. Got array shapes: "+(""+JSON.stringify(n.map(function(a){return a.shape}))));if(r.length>1)throw new M("All target Tensors (y) should have the same number of samples. Got array shapes: "+(""+JSON.stringify(t.map(function(a){return a.shape}))));if(i.length>0&&r.length>0&&!y.util.arraysEqual(i,r))throw new M("Input Tensors should have the same number of samples as target "+("Tensors. Found "+i[0]+" input sample(s) and "+r[0]+" target ")+"sample(s).")}function T4(n,t,e){for(var i=[pr,Fo,as],r=0;r1)throw new M("The model expects "+t.length+" "+r+" Tensors, but only received one Tensor. Found: array with shape "+(JSON.stringify(n.shape)+"."));a=[n]}if(e!=null)for(var s=0;s1&&(i.metricsTensors.push([b,v]),i.metricsNames.push(i.outputNames[v]+"_loss"))}});var m=N4(e.metrics,this.outputNames),g=function(v,b,w){i.outputNames.length>1&&(b=i.outputNames[v]+"_"+b),i.metricsNames.push(b),i.metricsTensors.push([w,v])};hr("metric",function(){for(var v=function(w){if(f.indexOf(w)!==-1)return"continue";var S=m[w],L=function(N){for(var C="",R,D,k,W=function(_){if(typeof _=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(_)!==-1){var j=i.internalOutputShapes[w];j[j.length-1]===1||i.lossFunctions[w]===Fo?["accuracy","acc"].indexOf(_)!==-1?D=id:["crossentropy","ce"].indexOf(_)!==-1&&(D=Yy):i.lossFunctions[w]===ko?["accuracy","acc"].indexOf(_)!==-1?D=jy:["crossentropy","ce"].indexOf(_)!==-1&&(D=Ky):["accuracy","acc"].indexOf(_)!==-1?D=rd:["crossentropy","ce"].indexOf(_)!==-1&&(D=ad);var K=void 0;["accuracy","acc"].indexOf(_)!==-1?K="acc":["crossentropy","ce"].indexOf(_)!==-1&&(K="ce"),k=D,R=C+K}else{var q=t4(_);k=q,R=C+Bo(_)}var G;hr(R,function(){G=k}),g(w,R,G)},F=0,P=N;F0){var d=[];throw i.forEach(function(p,f){p==null&&d.push(e[f])}),new M("Cannot find SymbolicTensors for output name(s): "+(""+JSON.stringify(d)))}return i},t.prototype.predictLoop=function(e,i,r){var a=this;return i===void 0&&(i=32),r===void 0&&(r=!1),y.tidy(function(){var s=a.checkNumSamples(e);if(r)throw new Te("Verbose predictLoop() is not implemented yet.");for(var o=dd(s,i),l=a.outputs.map(function(h){return[]}),u=function(h){var d=y.tidy(function(){var p=o[h][0],f=o[h][1],m=ls(e,p,f),g=[];if(Array.isArray(m))for(var v=0;v0&&e[0].shape[0]%a!==0)throw new M("In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size "+(a+". Found: "+e[0].shape[0]+" sample(s)."));return[e,i]},t.prototype.standardizeUserData=function(e,i,r,a,s,o){return s===void 0&&(s=!0),Se(this,void 0,void 0,function(){var l,u,c,h,d,p,f,m;return ve(this,function(g){switch(g.label){case 0:if(l=this.standardizeUserDataXY(e,i,s,o),u=l[0],c=l[1],r!=null)throw new Error("sample weight is not supported yet.");if(h=null,!(a!=null))return[3,4];d=eb(a,this.outputNames),h=[],p=0,g.label=1;case 1:return p0)throw new Te("Verbose mode is not implemented yet.");if(s!=null)throw new Te("steps mode in testLoop() is not implemented yet");for(var c=dd(l,r),h=y.tensor1d(Ln(0,l)),d=0;d1){var o=ry(e.slice(0,r),a);s+="_"+o}i.push(s)}return i},t.prototype.makeTrainFunction=function(){var e=this;return function(i){var r=[],a=i.slice(0,e.inputs.length),s=i.slice(e.inputs.length,e.inputs.length+e.outputs.length),o=i.slice(e.inputs.length+e.outputs.length,e.inputs.length+e.outputs.length*2),l=[],u=function(){for(var p=[],f=0;f1&&f1)throw new M("Found more than one ("+r.length+") save handlers for "+("URL '"+e+"'"));e=r[0]}if(e.save==null)throw new M("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[4,y.io.encodeWeights(this.getNamedWeights(i))];case 1:return a=w.sent(),s=!1,o=null,l=this.toJSON(o,s),u={modelTopology:l,format:x4,generatedBy:"TensorFlow.js tfjs-layers v"+ld,convertedBy:null},c=i==null?!1:i.includeOptimizer,c&&this.optimizer!=null?(u.trainingConfig=this.getTrainingConfig(),h="optimizer",g=(m=y.io).encodeWeights,[4,this.optimizer.getWeights()]):[3,4];case 2:return[4,g.apply(m,[w.sent(),h])];case 3:d=w.sent(),p=d.data,f=d.specs,(b=a.specs).push.apply(b,f),a.data=y.io.concatenateArrayBuffers([a.data,p]),w.label=4;case 4:return this.userDefinedMetadata!=null&&(v=!0,Xy(this.userDefinedMetadata,this.name,v),u.userDefinedMetadata=this.userDefinedMetadata),u.weightData=a.data,u.weightSpecs=a.specs,[2,e.save(u)]}})})},t.prototype.setUserDefinedMetadata=function(e){Xy(e,this.name),this.userDefinedMetadata=e},t.prototype.getUserDefinedMetadata=function(){return this.userDefinedMetadata},t.className="Model",t}(d4);y.serialization.registerClass(Ri);var C4=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.className="Functional",t}(Ri);y.serialization.registerClass(C4);function R4(n,t){return Se(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u;return ve(this,function(c){switch(c.label){case 0:return"modelTopology"in n||(n={modelTopology:n}),n=n,e=n.modelTopology,e.model_config!=null&&(e=e.model_config),i=ss(e),r=An(i,t),n.weightsManifest!=null?[4,y.io.loadWeights(n.weightsManifest,n.pathPrefix,r.weights.map(function(h){return h.originalName}))]:[3,2];case 1:for(a=c.sent(),s={},o=0,l=r.weights;o1)throw new M("Found more than one ("+e.length+") load handlers for "+("URL '"+n+"'"));n=e[0]}return[2,O4(n,void 0,t)]})})}function O4(n,t,e){return Se(this,void 0,void 0,function(){var i,r,a,s,o,l,u,c,h;return ve(this,function(d){switch(d.label){case 0:if(e==null&&(e={}),n.load==null)throw new M("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,n.load()];case 1:if(i=d.sent(),r=i.modelTopology,r.model_config!=null&&(r=r.model_config),a=e.strict==null?!0:e.strict,s=i.weightData!=null&&i.weightSpecs!=null&&a,o=An(ss(r),t,s),l=i.trainingConfig,l!=null&&o.loadTrainingConfig(l),i.userDefinedMetadata!=null&&o.setUserDefinedMetadata(i.userDefinedMetadata),!(i.weightData!=null))return[3,4];if(i.weightSpecs==null)throw new M("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");return u=D4(i.weightData,i.weightSpecs),c=u.modelWeights,h=u.optimizerWeights,o.loadWeights(c,a),o.optimizer!=null&&h.length>0?[4,o.optimizer.setWeights(h)]:[3,3];case 2:d.sent(),d.label=3;case 3:y.dispose(c),y.dispose(h.map(function(p){return p.tensor})),d.label=4;case 4:return[2,o]}})})}function D4(n,t){var e=y.io.decodeWeights(n,t),i={},r=[];return t.forEach(function(a){a.group==="optimizer"?r.push({name:a.name,tensor:e[a.name]}):i[a.name]=e[a.name]}),{modelWeights:i,optimizerWeights:r}}var fd=function(n){Q(t,n);function t(e){var i=n.call(this,{inputs:[],outputs:[]})||this;if(e=e||{},i.trainable=!0,i.built=!1,i.name=e.name!=null?e.name:xo("sequential_"),e.layers!=null)for(var r=0,a=e.layers;r 0 "+("but got "+JSON.stringify(e.filters)))},t}(Lb),yd=function(n){Q(t,n);function t(e){var i=n.call(this,2,e)||this;return t.verifyArgs(e),i}return t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this);return delete e.rank,e},t.verifyArgs=function(e){if(typeof e.kernelSize!="number"&&!Ph(e.kernelSize,"number",1,2))throw new M("Conv2D expects config.kernelSize to be number or number[] with "+("length 1 or 2, but received "+JSON.stringify(e.kernelSize)+"."))},t.className="Conv2D",t}(Mo);y.serialization.registerClass(yd);var Ib=function(n){Q(t,n);function t(e){var i=n.call(this,3,e)||this;return t.verifyArgs(e),i}return t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this);return delete e.rank,e},t.verifyArgs=function(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new M("Conv3D expects config.kernelSize to be number or"+(" [number, number, number], but received "+JSON.stringify(e.kernelSize)+"."))},t.className="Conv3D",t}(Mo);y.serialization.registerClass(Ib);var Ab=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;if(i.inputSpec=[new Nt({ndim:4})],i.padding!=="same"&&i.padding!=="valid")throw new M("Conv2DTranspose currently supports only padding modes 'same' "+("and 'valid', but received padding mode "+i.padding));return i}return t.prototype.build=function(e){var i;if(e=je(e),e.length!==4)throw new M("Input should have rank 4; Received input shape: "+JSON.stringify(e));var r=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[r]==null)throw new M("The channel dimension of the inputs should be defined. Found `None`.");var a=e[r],s=this.kernelSize.concat([this.filters,a]);this.kernel=this.addWeight("kernel",s,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Nt({ndim:4,axes:(i={},i[r]=a,i)})],this.built=!0},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=xe(e);if(a.shape.length!==4)throw new M("Conv2DTranspose.call() expects input tensor to be rank-4, but "+("received a tensor of rank-"+a.shape.length));var s=a.shape,o=s[0],l,u;r.dataFormat==="channelsFirst"?(l=2,u=3):(l=1,u=2);var c=s[l],h=s[u],d=r.kernelSize[0],p=r.kernelSize[1],f=r.strides[0],m=r.strides[1],g=_o(c,f,d,r.padding),v=_o(h,m,p,r.padding),b=[o,g,v,r.filters];r.dataFormat!=="channelsLast"&&(a=y.transpose(a,[0,2,3,1]));var w=y.conv2dTranspose(a,r.kernel.read(),b,r.strides,r.padding);return r.dataFormat!=="channelsLast"&&(w=y.transpose(w,[0,3,1,2])),r.bias!=null&&(w=Hn(w,r.bias.read(),r.dataFormat)),r.activation!=null&&(w=r.activation.apply(w)),w})},t.prototype.computeOutputShape=function(e){e=je(e);var i=e.slice(),r,a,s;this.dataFormat==="channelsFirst"?(r=1,a=2,s=3):(r=3,a=1,s=2);var o=this.kernelSize[0],l=this.kernelSize[1],u=this.strides[0],c=this.strides[1];return i[r]=this.filters,i[a]=_o(i[a],u,o,this.padding),i[s]=_o(i[s],c,l,this.padding),i},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this);return delete e.dilationRate,e},t.className="Conv2DTranspose",t}(yd);y.serialization.registerClass(Ab);var Q4=function(n){Q(t,n);function t(e,i){var r=n.call(this,e,i)||this;if(r.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",r.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",r.depthwiseKernel=null,r.pointwiseKernel=null,i.filters==null)throw new M("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(i.kernelInitializer!=null||i.kernelRegularizer!=null||i.kernelConstraint!=null)throw new M("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(i.padding!=null&&i.padding!=="same"&&i.padding!=="valid")throw new M("SeparableConv"+r.rank+"D supports only padding modes: "+("'same' and 'valid', but received "+JSON.stringify(i.padding)));return r.depthMultiplier=i.depthMultiplier==null?1:i.depthMultiplier,r.depthwiseInitializer=tt(i.depthwiseInitializer||r.DEFAULT_DEPTHWISE_INITIALIZER),r.depthwiseRegularizer=nt(i.depthwiseRegularizer),r.depthwiseConstraint=wt(i.depthwiseConstraint),r.pointwiseInitializer=tt(i.depthwiseInitializer||r.DEFAULT_POINTWISE_INITIALIZER),r.pointwiseRegularizer=nt(i.pointwiseRegularizer),r.pointwiseConstraint=wt(i.pointwiseConstraint),r}return t.prototype.build=function(e){var i;if(e=je(e),e.length1&&(t=n.slice(1,n.length)),n=n[0]}function r(a){return a==null||Array.isArray(a)?a:[a]}return t=r(t),e=r(e),{inputs:n,initialState:t,constants:e}}function Eb(n,t,e,i,r,a,s,o){return i===void 0&&(i=!1),s===void 0&&(s=!1),o===void 0&&(o=!1),y.tidy(function(){var l=t.shape.length;if(l<3)throw new M("Input should be at least 3D, but is "+l+"D.");var u=[1,0].concat(Ln(2,l));if(t=y.transpose(t,u),a!=null)throw new Te("The rnn() functoin of the deeplearn.js backend does not support constants yet.");s&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),r!=null&&(r=r.asType("bool").asType("float32"),r.rank===l-1&&(r=y.expandDims(r,-1)),r=y.transpose(r,u)),i&&(t=y.reverse(t,0),r!=null&&(r=y.reverse(r,0)));var c=[],h,d=e,p=t.shape[0],f=y.unstack(t),m;r!=null&&(m=y.unstack(r));for(var g=function(S){var L=f[S],N=y.tidy(function(){return n(L,d)});if(r==null)h=N[0],d=N[1];else{var C=y.tidy(function(){var R=m[S],D=y.onesLike(R).sub(R),k=N[0].mul(R).add(d[0].mul(D)),W=d.map(function(F,P){return N[1][P].mul(R).add(F.mul(D))});return{output:k,newStates:W}});h=C.output,d=C.newStates}o&&c.push(h)},v=0;v1?Mh(r,[1,a]):r}):i.cell.stateSize>1?[Mh(r,[1,i.cell.stateSize])]:[r]})},Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable?this.cell.trainableWeights:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights},enumerable:!0,configurable:!0}),t.prototype.setFastWeightInitDuringBuild=function(e){n.prototype.setFastWeightInitDuringBuild.call(this,e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(i.numConstants=this.numConstants);var r=this.cell.getConfig();return this.getClassName()===t.className&&(i.cell={className:this.cell.getClassName(),config:r}),$t({},r,e,i)},t.fromConfig=function(e,i,r){r===void 0&&(r={});var a=i.cell,s=An(a,r);return new e(Object.assign(i,{cell:s}))},t.className="RNN",t}(De);y.serialization.registerClass(Di);var oa=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t}(De),wd=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.DEFAULT_ACTIVATION="tanh",i.DEFAULT_KERNEL_INITIALIZER="glorotNormal",i.DEFAULT_RECURRENT_INITIALIZER="orthogonal",i.DEFAULT_BIAS_INITIALIZER="zeros",i.units=e.units,Tt(i.units,"units"),i.activation=Ei(e.activation==null?i.DEFAULT_ACTIVATION:e.activation),i.useBias=e.useBias==null?!0:e.useBias,i.kernelInitializer=tt(e.kernelInitializer||i.DEFAULT_KERNEL_INITIALIZER),i.recurrentInitializer=tt(e.recurrentInitializer||i.DEFAULT_RECURRENT_INITIALIZER),i.biasInitializer=tt(e.biasInitializer||i.DEFAULT_BIAS_INITIALIZER),i.kernelRegularizer=nt(e.kernelRegularizer),i.recurrentRegularizer=nt(e.recurrentRegularizer),i.biasRegularizer=nt(e.biasRegularizer),i.kernelConstraint=wt(e.kernelConstraint),i.recurrentConstraint=wt(e.recurrentConstraint),i.biasConstraint=wt(e.biasConstraint),i.dropout=na([1,xi([0,e.dropout==null?0:e.dropout])]),i.recurrentDropout=na([1,xi([0,e.recurrentDropout==null?0:e.recurrentDropout])]),i.stateSize=i.units,i.dropoutMask=null,i.recurrentDropoutMask=null,i}return t.prototype.build=function(e){e=je(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){if(e=e,e.length!==2)throw new M("SimpleRNNCell expects 2 input Tensors, got "+e.length+".");var a=e[1];e=e[0];var s=i.training==null?!1:i.training;01){for(var s=[0],o=2;o1)throw new M("Can not merge tensors with different batch sizes. "+("Got tensors with shapes: "+JSON.stringify(e)+"."));for(var o=e[0]==null?null:e[0].slice(1),l=1;l1){var S=Ln(1,h).concat([0]);a.push(y.transpose(c,S)),p=!0}else a.push(c)}var L=r.mergeFunction(a),N=L.rank;if(p){if(N==null){var C=L.shape,R=C.length,v=C[R-1],b=[v].concat(C.slice(0,C.length-1));L=y.transpose(L.reshape([-1,v]),[1,0]).reshape(b)}else if(N>1){var S=[N-1].concat(Ln(0,N-1));L=y.transpose(L,S)}}return L}}else return r.mergeFunction(e)})},t.prototype.computeOutputShape=function(e){e=e;var i;e[0]==null?i=null:i=e[0].slice(1);for(var r=1;r1)throw new M("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))},t.prototype.mergeFunction=function(e){var i=this;return y.tidy(function(){return Vh(e,i.axis)})},t.prototype.computeOutputShape=function(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new M("A `Concatenate` layer should be called on a list of inputs.");for(var i=e,r=i[0].slice(),a=this.axis<0?r.length+this.axis:this.axis,s=0,o=i.slice(1);s3||t.shape.length>3)throw new Te("batchDot is not implemented for tensors of 4D or higher rank yet");if(y.util.assert(n.shape.length>=2,function(){return"batchDot requires the rank of x to be >= 2, "+("but got "+n.shape.length)}),y.util.assert(n.shape.length>=2,function(){return"batchDot requires the rank of y to be >= 2, "+("but got "+t.shape.length)}),typeof e=="number"&&(e=[e,e]),n.dtype==="complex64"||t.dtype==="complex64")throw new Te("batchDot is not implemented for complex64-type Tensors yet.");var i=n.shape.length,r=t.shape.length;e==null&&(e=[i-1,r-2]);var a=e;return y.tidy(function(){var s;if(i>r){s=i-r;for(var o=[],l=0;li){s=r-i;for(var o=[],l=0;l0){var d=void 0;i>r?d=i+r-3:d=i-1;for(var p=[],l=d;l3||r.length>3)throw new Te("Dot layer does not support tensors of 4D or higher rank yet.");var a=this.interpretAxes(i,r);if(i[a[0]]!==r[a[1]])throw new M("Dimension incompatibility: "+(i[a[0]]+" !== "+r[a[1]]))},t.prototype.mergeFunction=function(e){if(e.length!==2)throw new M("A `Dot` layer must be called on exactly 2 inputs, "+("but received "+e.length+" input(s)."));var i=e[0],r=e[1],a;return Array.isArray(this.axes)?a=this.axes.map(function(s,o){return us(s,e[o].shape.length)}):a=[us(this.axes,i.shape.length),us(this.axes,r.shape.length)],this.normalize&&(i=Eo(i,a[0]),r=Eo(r,a[1])),nF(i,r,a)},t.prototype.interpretAxes=function(e,i){var r;return Array.isArray(this.axes)?r=this.axes:r=[us(this.axes,e.length),us(this.axes,i.length)],r},t.prototype.computeOutputShape=function(e){y.util.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),function(){return"A `Dot` layer should be called on a list of exactly 2 inputs."});var i=e[0].slice(),r=e[1].slice();if(i.length>3||r.length>3)throw new Te("Dot layer does not support tensors of 4D or higher rank yet.");var a=this.interpretAxes(i,r);i.splice(a[0],1),r.splice(a[1],1),r.splice(0,1);var s=i.concat(r);return s.length===1&&s.push(1),s},t.prototype.computeMask=function(e,i){return null},t.prototype.getConfig=function(){var e={axes:this.axes,normalize:this.normalize},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.className="Dot",t}(mr);y.serialization.registerClass(Jb);var Zb=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i.stddev=e.stddev,i}return t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={stddev:this.stddev};return Object.assign(i,e),i},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){r.invokeCallHook(e,i);var a=xe(e),s=function(){return To(a.shape,0,r.stddev).add(a)},o=is(s,function(){return a},i.training||!1);return o})},t.className="GaussianNoise",t}(De);y.serialization.registerClass(Zb);var Qb=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i.rate=e.rate,i}return t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={rate:this.rate};return Object.assign(i,e),i},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){r.invokeCallHook(e,i);var a=xe(e);if(r.rate>0&&r.rate<1){var s=function(){var o=Math.sqrt(r.rate/(1-r.rate));return a.mul(To(a.shape,1,o))};return is(s,function(){return a},i.training||!1)}return a})},t.className="GaussianDropout",t}(De);y.serialization.registerClass(Qb);var ew=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i.rate=e.rate,i.noiseShape=e.noiseShape,i}return t.prototype._getNoiseShape=function(e){return this.noiseShape||xe(e).shape},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={rate:this.rate};return Object.assign(i,e),i},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){if(r.rate<1&&r.rate>0){var a=r._getNoiseShape(e),s=function(){var o=xe(e),l=1.6732632423543772,u=1.0507009873554805,c=-l*u,h=y.greaterEqual(y.randomUniform(a),r.rate);h=es(h,"float32");var d=Math.pow((1-r.rate)*(1+r.rate*Math.pow(c,2)),-.5),p=-d*c*r.rate,f=o.mul(h).add(h.add(-1).mul(c));return f.mul(d).add(p)};return is(s,function(){return xe(e)},i.training||!1)}return e})},t.className="AlphaDropout",t}(De);y.serialization.registerClass(ew);function cs(n,t,e,i,r,a){a===void 0&&(a=.001);var s;if(n.rank===2)s=y.batchNorm2d(n,t,e,i,r,a);else if(n.rank===3)s=y.batchNorm3d(n,t,e,i,r,a);else if(n.rank===4)s=y.batchNorm4d(n,t,e,i,r,a);else throw new Te("batchNormalization is not implemented for array of rank "+n.rank+" yet");return s}function iF(n,t,e,i,r){return r===void 0&&(r=.001),y.tidy(function(){var a=y.moments(n,i),s=a.mean,o=a.variance,l=cs(n,s,o,e,t,r);return[l,s,o]})}function rF(n,t,e,i,r){return r===void 0&&(r=.001),y.tidy(function(){for(var a=y.moments(n,i),s=a.mean,o=a.variance,l=[],u=0,c=Ln(0,n.rank);u=0?this.axis:this.axis+e.length,a=e[r];if(a==null)throw new M("Axis "+r+" of input tensor should have a defined dimension but the layer received an input with shape "+(JSON.stringify(e)+"."));this.inputSpec=[new Nt({ndim:e.length,axes:(i={},i[r]=a,i)})];var s=[a];this.scale&&(this.gamma=this.addWeight("gamma",s,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",s,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",s,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",s,null,this.movingVarianceInitializer,null,!1),this.built=!0},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=i.training==null?!1:i.training,s=xe(e),o=s.shape,l=o.length,u=Ln(0,l),c=r.axis>=0?r.axis:r.axis+l;u.splice(c,1);var h=ur(1,l);h[c]=o[c];var d=u.slice();d.sort();var p=!y.util.arraysEqual(d,Ln(0,l).slice(0,l-1)),f=function(){if(p){var L=r.movingMean.read().reshape(h),N=r.movingVariance.read().reshape(h),C=r.center?r.beta.read().reshape(h):null,R=r.scale?r.gamma.read().reshape(h):null;return cs(s,L,N,C,R,r.epsilon)}else return cs(s,r.movingMean.read(),r.movingVariance.read(),r.beta==null?null:r.beta.read(),r.gamma==null?null:r.gamma.read(),r.epsilon)};if(!a)return f();var m=aF(s,r.gamma.read(),r.beta.read(),u,r.epsilon),g=m[0],v=m[1],b=m[2],w=function(L,N,C){y.tidy(function(){var R=1-C,D=L.read(),k=D.sub(N).mul(R);L.write(D.sub(k))})},S=function(){w(r.movingMean,v,r.momentum),w(r.movingVariance,b,r.momentum)};return S(),g})},t.prototype.getConfig=function(){var e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:st(this.betaInitializer),gammaInitializer:st(this.gammaInitializer),movingMeanInitializer:st(this.movingMeanInitializer),movingVarianceInitializer:st(this.movingVarianceInitializer),betaRegularizer:Ke(this.betaRegularizer),gammaRegularizer:Ke(this.gammaRegularizer),betaConstraint:bt(this.betaConstraint),gammaConstraint:bt(this.gammaConstraint)},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.className="BatchNormalization",t}(De);y.serialization.registerClass(tw);var nw=function(n){Q(t,n);function t(e){var i=this;if(e==null&&(e={}),i=n.call(this,e)||this,i.axis=e.axis==null?-1:e.axis,typeof i.axis=="number"){if(!Number.isInteger(i.axis))throw new Error("Expected axis to be an integer, but received "+i.axis)}else if(Array.isArray(i.axis))for(var r=0,a=i.axis;r=i)throw new Error("Invalid axis: "+o)}if(this.axis.length!==Ti(this.axis).length)throw new Error("Found duplicate axes in: "+this.axis);var l=this.axis.map(function(c){return e[c]}),u=!0;this.scale?this.gamma=this.addWeight("gamma",l,"float32",this.gammaInitializer,this.gammaRegularizer,u):this.gamma=null,this.center?this.beta=this.addWeight("beta",l,"float32",this.betaInitializer,this.betaRegularizer,u):this.beta=null,this.built=!0},t.prototype.call=function(e,i){var r=this,a=xe(e),s=a.shape,o=s.length;return y.tidy(function(){for(var l=!0,u=y.moments(a,r.axis,l),c=u.mean,h=u.variance,d=ur(1,o),p=0,f=r.axis;p=0?i=e[2]+this.padding[0][0]+this.padding[0][1]:i=null,e[3]!=null&&e[3]>=0?r=e[3]+this.padding[1][0]+this.padding[1][1]:r=null,[e[0],e[1],i,r]):(e[1]!=null&&e[1]>=0?i=e[1]+this.padding[0][0]+this.padding[0][1]:i=null,e[2]!=null&&e[2]>=0?r=e[2]+this.padding[1][0]+this.padding[1][1]:r=null,[e[0],i,r,e[3]])},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){return sF(xe(e),r.padding,r.dataFormat)})},t.prototype.getConfig=function(){var e={padding:this.padding,dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.className="ZeroPadding2D",t}(De);y.serialization.registerClass(iw);function Vo(n,t,e,i,r,a){return y.tidy(function(){ht(r),py(a),sn(i),e==null&&(e=[1,1]),i==null&&(i="valid"),r==null&&(r=Sn()),a==null&&(a="max"),n=vd(n,r);var s,o=i==="same"?"same":"valid";return a==="max"?s=y.maxPool(n,t,e,o):s=y.avgPool(n,t,e,o),r==="channelsFirst"&&(s=y.transpose(s,[0,3,1,2])),s})}function rw(n,t,e,i,r,a){return y.tidy(function(){ht(r),py(a),sn(i),e==null&&(e=[1,1,1]),i==null&&(i="valid"),r==null&&(r=Sn()),a==null&&(a="max"),n=wb(n,r);var s,o=i==="same"?"same":"valid";return a==="max"?s=y.maxPool3d(n,t,e,o):s=y.avgPool3d(n,t,e,o),r==="channelsFirst"&&(s=y.transpose(s,[0,4,1,2,3])),s})}var aw=function(n){Q(t,n);function t(e){var i=this;if(e.poolSize==null&&(e.poolSize=2),i=n.call(this,e)||this,typeof e.poolSize=="number")i.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")i.poolSize=e.poolSize;else throw new M("poolSize for 1D convolutional layer must be a number or an Array of a single number, but received "+(""+JSON.stringify(e.poolSize)));if(Tt(i.poolSize,"poolSize"),e.strides==null)i.strides=i.poolSize;else if(typeof e.strides=="number")i.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")i.strides=e.strides;else throw new M("strides for 1D convolutional layer must be a number or an Array of a single number, but received "+(""+JSON.stringify(e.strides)));return Tt(i.strides,"strides"),i.padding=e.padding==null?"valid":e.padding,sn(i.padding),i.inputSpec=[new Nt({ndim:3})],i}return t.prototype.computeOutputShape=function(e){e=je(e);var i=Tn(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],i,e[2]]},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){r.invokeCallHook(e,i),e=ts(xe(e),2);var a=r.poolingFunction(xe(e),[r.poolSize[0],1],[r.strides[0],1],r.padding,"channelsLast");return y.squeeze(a,[2])})},t.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),sw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),sn(a),Vo(e,i,r,a,s,"max")},t.className="MaxPooling1D",t}(aw);y.serialization.registerClass(sw);var ow=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),sn(a),Vo(e,i,r,a,s,"avg")},t.className="AveragePooling1D",t}(aw);y.serialization.registerClass(ow);var lw=function(n){Q(t,n);function t(e){var i=this;if(e.poolSize==null&&(e.poolSize=[2,2]),i=n.call(this,e)||this,i.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)i.strides=i.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new M("If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length "+(e.strides.length+"."));i.strides=e.strides}else i.strides=[e.strides,e.strides];return Tt(i.poolSize,"poolSize"),Tt(i.strides,"strides"),i.padding=e.padding==null?"valid":e.padding,i.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,ht(i.dataFormat),sn(i.padding),i.inputSpec=[new Nt({ndim:4})],i}return t.prototype.computeOutputShape=function(e){e=je(e);var i=this.dataFormat==="channelsFirst"?e[2]:e[1],r=this.dataFormat==="channelsFirst"?e[3]:e[2];return i=Tn(i,this.poolSize[0],this.padding,this.strides[0]),r=Tn(r,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],i,r]:[e[0],i,r,e[3]]},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){return r.invokeCallHook(e,i),r.poolingFunction(xe(e),r.poolSize,r.strides,r.padding,r.dataFormat)})},t.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),uw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),sn(a),Vo(e,i,r,a,s,"max")},t.className="MaxPooling2D",t}(lw);y.serialization.registerClass(uw);var cw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),sn(a),Vo(e,i,r,a,s,"avg")},t.className="AveragePooling2D",t}(lw);y.serialization.registerClass(cw);var hw=function(n){Q(t,n);function t(e){var i=this;if(e.poolSize==null&&(e.poolSize=[2,2,2]),i=n.call(this,e)||this,i.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)i.strides=i.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new M("If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length "+(e.strides.length+"."));i.strides=e.strides}else i.strides=[e.strides,e.strides,e.strides];return Tt(i.poolSize,"poolSize"),Tt(i.strides,"strides"),i.padding=e.padding==null?"valid":e.padding,i.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,ht(i.dataFormat),sn(i.padding),i.inputSpec=[new Nt({ndim:5})],i}return t.prototype.computeOutputShape=function(e){e=je(e);var i=this.dataFormat==="channelsFirst"?e[2]:e[1],r=this.dataFormat==="channelsFirst"?e[3]:e[2],a=this.dataFormat==="channelsFirst"?e[4]:e[3];return i=Tn(i,this.poolSize[0],this.padding,this.strides[0]),r=Tn(r,this.poolSize[1],this.padding,this.strides[1]),a=Tn(a,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],i,r,a]:[e[0],i,r,a,e[4]]},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){return r.invokeCallHook(e,i),r.poolingFunction(xe(e),r.poolSize,r.strides,r.padding,r.dataFormat)})},t.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),dw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),sn(a),rw(e,i,r,a,s,"max")},t.className="MaxPooling3D",t}(hw);y.serialization.registerClass(dw);var pw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),sn(a),rw(e,i,r,a,s,"avg")},t.className="AveragePooling3D",t}(hw);y.serialization.registerClass(pw);var fw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.inputSpec=[new Nt({ndim:3})],i}return t.prototype.computeOutputShape=function(e){return[e[0],e[2]]},t.prototype.call=function(e,i){throw new Te},t}(De),mw=function(n){Q(t,n);function t(e){return n.call(this,e||{})||this}return t.prototype.call=function(e,i){return y.tidy(function(){var r=xe(e);return y.mean(r,1)})},t.className="GlobalAveragePooling1D",t}(fw);y.serialization.registerClass(mw);var gw=function(n){Q(t,n);function t(e){return n.call(this,e||{})||this}return t.prototype.call=function(e,i){return y.tidy(function(){var r=xe(e);return y.max(r,1)})},t.className="GlobalMaxPooling1D",t}(fw);y.serialization.registerClass(gw);var vw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,ht(i.dataFormat),i.inputSpec=[new Nt({ndim:4})],i}return t.prototype.computeOutputShape=function(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]},t.prototype.call=function(e,i){throw new Te},t.prototype.getConfig=function(){var e={dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),yw=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=xe(e);return r.dataFormat==="channelsLast"?y.mean(a,[1,2]):y.mean(a,[2,3])})},t.className="GlobalAveragePooling2D",t}(vw);y.serialization.registerClass(yw);var bw=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=xe(e);return r.dataFormat==="channelsLast"?y.max(a,[1,2]):y.max(a,[2,3])})},t.className="GlobalMaxPooling2D",t}(vw);y.serialization.registerClass(bw);var ww=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.layer=e.layer,i}return t.prototype.build=function(e){this.built=!0},Object.defineProperty(t.prototype,"trainable",{get:function(){return this.layer!=null?this.layer.trainable:!1},set:function(e){this.layer!=null&&(this.layer.trainable=e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.layer.trainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.layer.nonTrainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"updates",{get:function(){return this.layer._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"losses",{get:function(){return this.layer.losses},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.layer.getWeights()},t.prototype.setWeights=function(e){this.layer.setWeights(e)},t.prototype.getConfig=function(){var e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.prototype.setFastWeightInitDuringBuild=function(e){n.prototype.setFastWeightInitDuringBuild.call(this,e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)},t.fromConfig=function(e,i,r){r===void 0&&(r={});var a=i.layer,s=An(a,r);delete i.layer;var o={layer:s};return Object.assign(o,i),new e(o)},t}(De),Sw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i}return t.prototype.build=function(e){if(e=je(e),e.length<3)throw new M("TimeDistributed layer expects an input shape >= 3D, but received "+("input shape "+JSON.stringify(e)));this.inputSpec=[{shape:e}];var i=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(i),this.layer.built=!0),n.prototype.build.call(this,e)},t.prototype.computeOutputShape=function(e){e=je(e);var i=[e[0]].concat(e.slice(2)),r=this.layer.computeOutputShape(i),a=e[1];return[r[0],a].concat(r.slice(1))},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){e=xe(e);var a=function(l,u){var c=xe(r.layer.call(l,i));return[c,[]]},s=Eb(a,e,[],!1,null,null,!1,!0),o=s[1];return o})},t.className="TimeDistributed",t}(ww);y.serialization.registerClass(Sw);function oF(n){ea(Zk,"BidirectionalMergeMode",n)}var lF="concat",Lw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this,r=e.layer.getConfig(),a={};a.className=e.layer.getClassName(),a.config=r,i.forwardLayer=An(a),r.goBackwards=!(r.goBackwards===!0);var s={};if(s.className=e.layer.getClassName(),s.config=r,i.backwardLayer=An(s),i.forwardLayer.name="forward_"+i.forwardLayer.name,i.backwardLayer.name="backward_"+i.backwardLayer.name,i.mergeMode=e.mergeMode===void 0?lF:e.mergeMode,oF(i.mergeMode),e.weights)throw new Te("weights support is not implemented for Bidirectional layer yet.");return i._stateful=e.layer.stateful,i.returnSequences=e.layer.returnSequences,i.returnState=e.layer.returnState,i.supportsMasking=!0,i._trainable=!0,i.inputSpec=e.layer.inputSpec,i.numConstants=null,i}return Object.defineProperty(t.prototype,"trainable",{get:function(){return this._trainable},set:function(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())},t.prototype.setWeights=function(e){var i=e.length,r=Math.floor(i/2);this.forwardLayer.setWeights(e.slice(0,r)),this.backwardLayer.setWeights(e.slice(r))},t.prototype.computeOutputShape=function(e){var i=this.forwardLayer.computeOutputShape(e);Array.isArray(i)&&Array.isArray(i[0])||(i=[i]),i=i;var r,a,s;return this.returnState&&(s=i.slice(1)),r=i[0],r=r,this.mergeMode==="concat"?(r[r.length-1]*=2,a=[r]):this.mergeMode==null?a=[r,r.slice()]:a=[r],this.returnState?this.mergeMode==null?a.concat(s).concat(s.slice()):[r].concat(s).concat(s.slice()):qt(a)},t.prototype.apply=function(e,i){var r=i==null?null:i.initialState,a=i==null?null:i.constants;i==null&&(i={});var s=Ob(e,r,a,this.numConstants);if(e=s.inputs,r=s.initialState,a=s.constants,Array.isArray(e)&&(r=e.slice(1),e=e[0]),(r==null||r.length===0)&&a==null)return n.prototype.apply.call(this,e,i);var o=[],l=[];if(r!=null){var u=r.length;if(u%2>0)throw new M("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");i.initialState=r,o.push.apply(o,r);var c=r.map(function(w){return new Nt({shape:w.shape})});this.forwardLayer.stateSpec=c.slice(0,u/2),this.backwardLayer.stateSpec=c.slice(u/2),l.push.apply(l,c)}if(a!=null)throw new Te("Support for constants in Bidirectional layers is not implemented yet.");for(var h=o[0]instanceof In,d=0,p=o;dt}var Rw=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(e==null&&(e={}),e.restoreBestWeights)throw new Te("restoreBestWeights = True is not implemented in EarlyStopping yet.");return i.monitor=e.monitor||"val_loss",i.minDelta=Math.abs(e.minDelta||0),i.patience=e.patience||0,i.verbose=e.verbose||0,i.mode=e.mode||"auto",i.baseline=e.baseline,["auto","min","max"].indexOf(i.mode)===-1&&(console.warn("EarlyStopping mode '"+i.mode+"' is invalid. Falling back to mode 'auto'."),i.mode="auto"),i.mode==="min"?i.monitorFunc=qo:i.mode==="max"||i.monitor.indexOf("acc")!==-1?i.monitorFunc=Cw:i.monitorFunc=qo,i.monitorFunc===qo&&(i.minDelta*=-1),i}return t.prototype.onTrainBegin=function(e){return Se(this,void 0,void 0,function(){return ve(this,function(i){return this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===qo?Infinity:-Infinity,[2]})})},t.prototype.onEpochEnd=function(e,i){return Se(this,void 0,void 0,function(){var r;return ve(this,function(a){switch(a.label){case 0:return[4,Ci(i)];case 1:return a.sent(),r=this.getMonitorValue(i),r==null?[2]:(this.monitorFunc(r-this.minDelta,this.best)?(this.best=r,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)),[2])}})})},t.prototype.onTrainEnd=function(e){return Se(this,void 0,void 0,function(){return ve(this,function(i){return this.stoppedEpoch>0&&this.verbose&&console.log("Epoch "+this.stoppedEpoch+": early stopping."),[2]})})},t.prototype.getMonitorValue=function(e){e==null&&(e={});var i=e[this.monitor];return i==null&&console.warn("Metric for EarlyStopping "+this.monitor+" is not available. "+("Available metrics are: "+Object.keys(e))),i},t}(xw);function _W(n){return new Rw(n)}var MW={earlyStopping:_W};Xe.Callback=xw;Xe.CallbackList=zy;Xe.CustomCallback=_y;Xe.EarlyStopping=Rw;Xe.History=Py;Xe.InputSpec=Nt;Xe.LayerVariable=ky;Xe.LayersModel=Ri;Xe.RNN=Di;Xe.Sequential=fd;Xe.SymbolicTensor=In;Xe.callbacks=MW;Xe.constraints=Kk;Xe.initializers=C3;Xe.input=ub;Xe.layers=yW;Xe.loadLayersModel=W4;Xe.metrics=FW;Xe.model=k4;Xe.models=WW;Xe.registerCallbackConstructor=U4;Xe.regularizers=PW;Xe.sequential=F4;Xe.version_layers=ld});var Gw=Le(gr=>{"use strict";Object.defineProperty(gr,"__esModule",{value:!0});var B=lr();var Ew=Object.assign||function(t){for(var e,i=1,r=arguments.length;i0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]0?Object.keys(h).forEach(function(g){var v=si(g)[0],b=l[v];b&&(b.signatureKey=h[g],u.push(b))}):u=a;var f={};t.library!=null&&t.library.function!=null&&(f=t.library.function.reduce(function(g,v){return g[v.signature.name]=i.mapFunction(v),g},{}));var m={nodes:l,inputs:u,outputs:c,weights:s,placeholders:a,signature:e,functions:f};return o.length>0&&(m.initNodes=o),m},n.prototype.mapSignatureEntries=function(t){return Object.keys(t||{}).reduce(function(e,i){return e[t[i].name]=i,e},{})},n.prototype.mapNode=function(t){var e=kw(t.op)||this.opMappers[t.op]||{};t.attr==null&&(t.attr={});var i={name:t.name,op:t.op,category:e.category,inputNames:(t.input||[]).map(function(r){return r.startsWith("^")?r.substr(1):r}),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:t.attr};return e.inputs!=null&&(i.inputParams=e.inputs.reduce(function(r,a){return r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r},{})),e.attrs!=null&&(i.attrParams=e.attrs.reduce(function(r,a){var s=a.type,o=void 0;switch(a.type){case"string":o=Cd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Cd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":o=Ud(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Ud(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":o=Od(t.attr,a.tfName,a.defaultValue||0),o===void 0&&!!a.tfDeprecatedName&&(o=Od(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":o=Wd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Wd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":o=Rd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Rd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":o=zd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=zd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":o=Fd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Fd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":o=Bd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Bd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":o=Dd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Dd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":o=kd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=kd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":o=Fw(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Fw(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error("Unsupported param type: "+a.type+" for op: "+t.op)}return r[a.name]={value:o,type:s},r},{})),i},n.prototype.mapFunction=function(t){var e=this,i=t.nodeDef,r=[],a=[],s={};i!=null&&(s=i.reduce(function(d,p){return d[p.name]=e.mapNode(p),p.op==="Const"&&a.push(d[p.name]),d},{}));var o=[],l=[];t.signature.inputArg.forEach(function(d){var p=si(d.name)[0],f={name:p,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:Ed(d.type),type:"dtype"}},children:[]};f.signatureKey=d.name,o.push(f),s[p]=f});var u=Object.keys(s);u.forEach(function(d){var p=s[d];p.inputNames.forEach(function(f){var m=si(f)[0];p.inputs.push(s[m]),s[m].children.push(p)})});var c=t.ret;t.signature.outputArg.forEach(function(d){var p=si(c[d.name]),f=p[0],m=p[1],g=s[f];g!=null&&(g.defaultOutput=m,l.push(g))});var h=this.mapArgsToSignature(t);return{nodes:s,inputs:o,outputs:l,weights:a,placeholders:r,signature:h}},n.prototype.mapArgsToSignature=function(t){var e=this;return{methodName:t.signature.name,inputs:t.signature.inputArg.reduce(function(i,r){return i[r.name]=e.mapArgToTensorInfo(r),i},{}),outputs:t.signature.outputArg.reduce(function(i,r){return i[r.name]=e.mapArgToTensorInfo(r,t.ret),i},{})}},n.prototype.mapArgToTensorInfo=function(t,e){var i=t.name;return e!=null&&(i=e[i]),{name:i,dtype:t.type}},n}();function IU(n){var t=B.env().global;if(typeof t.atob!="undefined")return t.atob(n);if(typeof Buffer!="undefined")return new Buffer(n,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function Uw(n,t){var e=Array.isArray(n)?String.fromCharCode.apply(null,n):IU(n);return t?e:e.toLowerCase()}function Cd(n,t,e,i){i===void 0&&(i=!1);var r=n[t];return r!=null?Uw(r.s,i):e}function Rd(n,t,e){var i=n[t];return i?i.b:e}function Od(n,t,e){var i=n[t]||{},r=i.i!=null?i.i:i.f!=null?i.f:e;return typeof r=="number"?r:parseInt(r,10)}function Ed(n){typeof n=="string"&&(n=xn[n]);switch(n){case xn.DT_FLOAT:return"float32";case xn.DT_INT32:case xn.DT_INT64:case xn.DT_INT8:case xn.DT_UINT8:return"int32";case xn.DT_BOOL:return"bool";case xn.DT_DOUBLE:return"float32";case xn.DT_STRING:return"string";default:return null}}function Fw(n,t,e){var i=n[t];return i&&i.func?i.func.name:e}function Dd(n,t,e){var i=n[t];return i&&i.type?Ed(i.type):e}function kd(n,t,e){var i=n[t];return i&&i.list&&i.list.type?i.list.type.map(function(r){return Ed(r)}):e}function Bw(n){return n.unknownRank?void 0:n.dim!=null?n.dim.map(function(t){return typeof t.size=="number"?t.size:parseInt(t.size,10)}):[]}function Fd(n,t,e){var i=n[t];return i&&i.shape?Bw(i.shape):e}function Wd(n,t,e){var i=n[t];return i?((i.list.f&&i.list.f.length?i.list.f:i.list.i)||[]).map(function(r){return typeof r=="number"?r:parseInt(r,10)}):e}function Ud(n,t,e,i){i===void 0&&(i=!1);var r=n[t];return r&&r.list&&r.list.s?r.list.s.map(function(a){return Uw(a,i)}):e}function Bd(n,t,e){var i=n[t];return i&&i.list&&i.list.shape?i.list.shape.map(function(r){return Bw(r)}):e}function zd(n,t,e){var i=n[t];return i&&i.list&&i.list.b?i.list.b:e}var AU=function(){function n(t,e,i){var r=this;this.node=t,this.tensorMap=e,this.context=i,this.inputs=[],this.attrs={},this.inputs=t.inputNames.map(function(a){return r.getInput(a)}),t.rawAttrs!=null&&(this.attrs=Object.keys(t.rawAttrs).reduce(function(a,s){return a[s]=r.getAttr(s),a},{}))}return n.prototype.getInput=function(t){return Gt(t,this.tensorMap,this.context)},n.prototype.getAttr=function(t,e){var i=this.node.rawAttrs[t];if(i.tensor!=null)return Gt(t,this.tensorMap,this.context);if(i.i!=null||i.f!=null)return Od(this.node.rawAttrs,t,e);if(i.s!=null)return Cd(this.node.rawAttrs,t,e);if(i.b!=null)return Rd(this.node.rawAttrs,t,e);if(i.shape!=null)return Fd(this.node.rawAttrs,t,e);if(i.type!=null)return Dd(this.node.rawAttrs,t,e);if(i.list!=null){if(i.list.i!=null||i.list.f!=null)return Wd(this.node.rawAttrs,t,e);if(i.list.s!=null)return Ud(this.node.rawAttrs,t,e);if(i.list.shape!=null)return Bd(this.node.rawAttrs,t,e);if(i.list.b!=null)return zd(this.node.rawAttrs,t,e);if(i.list.type!=null)return kd(this.node.rawAttrs,t,e)}return e},n}();var TU=function(n,t,e){switch(n.op){case"BiasAdd":case"AddV2":case"Add":return[B.add(A("a",n,t,e),A("b",n,t,e))];case"AddN":return[B.addN(A("tensors",n,t,e))];case"FloorMod":case"Mod":return[B.mod(A("a",n,t,e),A("b",n,t,e))];case"Mul":return[B.mul(A("a",n,t,e),A("b",n,t,e))];case"RealDiv":case"Div":return[B.div(A("a",n,t,e),A("b",n,t,e))];case"DivNoNan":return[B.divNoNan(A("a",n,t,e),A("b",n,t,e))];case"FloorDiv":return[B.floorDiv(A("a",n,t,e),A("b",n,t,e))];case"Sub":return[B.sub(A("a",n,t,e),A("b",n,t,e))];case"Minimum":return[B.minimum(A("a",n,t,e),A("b",n,t,e))];case"Maximum":return[B.maximum(A("a",n,t,e),A("b",n,t,e))];case"Pow":return[B.pow(A("a",n,t,e),A("b",n,t,e))];case"SquaredDifference":return[B.squaredDifference(A("a",n,t,e),A("b",n,t,e))];default:throw TypeError("Node type "+n.op+" is not implemented")}};var NU=function(n,t,e){switch(n.op){case"Abs":case"ComplexAbs":return[B.abs(A("x",n,t,e))];case"Acos":return[B.acos(A("x",n,t,e))];case"Acosh":return[B.acosh(A("x",n,t,e))];case"Asin":return[B.asin(A("x",n,t,e))];case"Asinh":return[B.asinh(A("x",n,t,e))];case"Atan":return[B.atan(A("x",n,t,e))];case"Atan2":return[B.atan2(A("x",n,t,e),A("y",n,t,e))];case"Atanh":return[B.atanh(A("x",n,t,e))];case"Ceil":return[B.ceil(A("x",n,t,e))];case"Complex":return[B.complex(A("real",n,t,e),A("imag",n,t,e))];case"Cos":return[B.cos(A("x",n,t,e))];case"Cosh":return[B.cosh(A("x",n,t,e))];case"Elu":return[B.elu(A("x",n,t,e))];case"Erf":return[B.erf(A("x",n,t,e))];case"Exp":return[B.exp(A("x",n,t,e))];case"Expm1":return[B.expm1(A("x",n,t,e))];case"Floor":return[B.floor(A("x",n,t,e))];case"Log":return[B.log(A("x",n,t,e))];case"Log1p":return[B.log1p(A("x",n,t,e))];case"Imag":return[B.imag(A("x",n,t,e))];case"Neg":return[B.neg(A("x",n,t,e))];case"Reciprocal":return[B.reciprocal(A("x",n,t,e))];case"Real":return[B.real(A("x",n,t,e))];case"Relu":return[B.relu(A("x",n,t,e))];case"Round":return[B.round(A("x",n,t,e))];case"Selu":return[B.selu(A("x",n,t,e))];case"Sigmoid":return[B.sigmoid(A("x",n,t,e))];case"Sin":return[B.sin(A("x",n,t,e))];case"Sign":return[B.sign(A("x",n,t,e))];case"Sinh":return[B.sinh(A("x",n,t,e))];case"Softplus":return[B.softplus(A("x",n,t,e))];case"Sqrt":return[B.sqrt(A("x",n,t,e))];case"Square":return[B.square(A("x",n,t,e))];case"Tanh":return[B.tanh(A("x",n,t,e))];case"Tan":return[B.tan(A("x",n,t,e))];case"Relu6":case"ClipByValue":return[B.clipByValue(A("x",n,t,e),A("clipValueMin",n,t,e),A("clipValueMax",n,t,e))];case"Rsqrt":return[B.rsqrt(Gt(n.inputNames[0],t,e))];case"Prod":return[B.prod(A("x",n,t,e),A("axes",n,t,e))];case"LeakyRelu":return[B.leakyRelu(A("x",n,t,e),A("alpha",n,t,e))];case"Prelu":return[B.prelu(A("x",n,t,e),A("alpha",n,t,e))];default:throw TypeError("Node type "+n.op+" is not implemented")}};function mn(n,t,e){e===void 0&&(e=""),B.util.assert(xU(n,t),function(){return e+(" Shapes "+n+" and "+t+" must match")})}function xU(n,t){if(n.length!==t.length)return!1;for(var e=0;e=this.size())throw new Error("Tried to read from index "+t+", but array size is: "+this.size());var e=this.tensors[t];if(e.cleared)throw new Error("TensorArray "+this.name+": Could not read index "+t+" twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).");return this.clearAfterRead&&(e.cleared=!0),e.read=!0,e.tensor},n.prototype.readMany=function(t){var e=this;return t.map(function(i){return e.read(i)})},n.prototype.write=function(t,e){if(this.closed_)throw new Error("TensorArray "+this.name+" has already been closed.");if(t<0||!this.dynamicSize&&t>=this.maxSize)throw new Error("Tried to write to index "+t+", but array is not resizeable and size is: "+this.maxSize);var i=this.tensors[t]||{};if(e.dtype!==this.dtype)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+`, - because the value dtype is `+e.dtype+", but TensorArray dtype is "+this.dtype+".");if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=e.shape),mn(this.elementShape,e.shape,"TensorArray "+this.name+": Could not write to TensorArray index "+t+"."),i.read)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+", because it has already been read.");if(i.written)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+", because it has already been written.");i.tensor=e,B.keep(e),i.written=!0,this.tensors[t]=i},n.prototype.writeMany=function(t,e){var i=this;if(t.length!==e.length)throw new Error("TensorArray "+this.name+": could not write multiple tensors,"+("because the index size: "+t.length+" is not the same as tensors size: "+e.length+"."));t.forEach(function(r,a){return i.write(r,e[a])})},n.prototype.gather=function(t,e){if(!!e&&e!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but gather requested dtype "+e);if(t)t=t.slice(0,this.size());else{t=[];for(var i=0;i=this.maxSize)throw new Error("Max index must be < array size ("+i+" vs. "+this.maxSize+")");this.writeMany(t,B.unstack(e,0))},n.prototype.split=function(t,e){var i=this;if(e.dtype!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but tensor has dtype "+e.dtype);var r=0,a=t.map(function(c){return r+=c,r});if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to +`+("2. The custom "+i+" is defined in JavaScript, ")+"but is not registered properly with tf.serialization.registerClass().");if(p!=null){for(var f={},m=0,g=Object.keys(dn);mt?1:0}function Io(n,t){return-1*Mk(n,t)}function Ti(n){if(n==null)return n;for(var t=[],e=0,i=n;e=0),_n(i>=e),Array.isArray(n)&&n.length>=e&&n.length<=i&&n.every(function(r){return typeof r===t})}function Tt(n,t){Array.isArray(n)?(y.util.assert(n.length>0,function(){return t+" is unexpectedly an empty array."}),n.forEach(function(e,i){return Tt(e,"element "+(i+1)+" of "+t)})):y.util.assert(Number.isInteger(n)&&n>0,function(){return"Expected "+t+" to be a positive integer, but got "+(ay(n)+".")})}function ay(n){return n===null?"null":Array.isArray(n)?"["+n.map(function(t){return ay(t)}).join(",")+"]":typeof n=="string"?'"'+n+'"':""+n}function Vk(n,t){var e=y.util.now(),i,r=function(){for(var a=[],s=0;s0){var e=n+"_"+t;return ta.set(e,1),e}else return n}var e3=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function my(n){return!!n.match(e3)}function t3(n){return n===parseInt(n.toString(),10)}function Ni(n,t,e){t==null&&(t=0),e==null&&(e=n.length);for(var i=1,r=t;r= 2"+(" but got x shape = "+n.shape+" and y shape = "+t.shape));if(t.rank>=3){var r=n.shape.slice(-1)[0],a=t.shape.slice(-2)[0];if(r!==a)throw new Te("If rank y >= 3, then the second last dim"+(" of y must equal the last dim of x but got x shape = "+n.shape+" and ")+(" y shape = "+t.shape))}if(n.rank===2&&t.rank===2){var s=!1,o=!1;return y.fused.matMul({a:n,b:t,transposeA:s,transposeB:o,bias:i?Gh(n.rank,i,wn()):null,activation:e})}else{var l=n.shape.slice(),u=l.pop();n=n.reshape([-1,u]);var c=t.shape.slice(),h=c.pop(),a=c.pop(),d=c.concat([h]),p=Array.from({length:t.rank},function(b,w){return w===0?t.rank-2:w<=t.rank-2?w-1:w});t=t.transpose(p).reshape([a,-1]);var f=l.concat(d),s=!1,o=!1;return y.fused.matMul({a:n,b:t,transposeA:s,transposeB:o,bias:i?Gh(n.rank,i,wn()):null,activation:e}).reshape(f)}}function wy(n,t,e){return y.tidy(function(){return Array.isArray(t)?t=y.tensor1d(t,"int32"):t=t.toInt(),y.gather(n,t,e)})}function ns(n){return y.mul(n,n)}function Gh(n,t,e){var i=t.shape;if(t.rank!==1&&t.rank!==n)throw new M("Unexpected bias dimensions: "+t.rank+("; expected it to be 1 or "+n));if(n===5){if(e==="channelsFirst")return i.length===1?t.reshape([1,i[0],1,1,1]):t.reshape([1,i[3],i[0],i[1],i[2]]);if(e==="channelsLast")return i.length===1?t.reshape([1,1,1,1,i[0]]):t.reshape([1].concat(i))}else if(n===4){if(e==="channelsFirst")return i.length===1?t.reshape([1,i[0],1,1]):t.reshape([1,i[2],i[0],i[1]]);if(e==="channelsLast")return i.length===1?t.reshape([1,1,1,i[0]]):t.reshape([1].concat(i))}else if(n===3){if(e==="channelsFirst")return i.length===1?t.reshape([1,i[0],1]):t.reshape([1,i[1],i[0]]);if(e==="channelsLast")return i.length===1?t.reshape([1,1,i[0]]):t.reshape([1].concat(i))}else if(n<3)return t;throw new M("Unsupported input rank by biasAdd: "+t.rank)}function Hn(n,t,e){return y.tidy(function(){return e==null&&(e=wn()),ht(e),n.add(Gh(n.rank,t,e))})}function a3(n,t){if(t===void 0&&(t=1),t!==1)throw new Te("Support for alpha values other than 1 ("+t+") is not implemented yet.");return y.elu(n)}function s3(n){return y.tidy(function(){return y.div(n,y.abs(n).add(1))})}function Sy(n,t,e,i){return y.tidy(function(){return y.dropout(n,t,e,i)})}function o3(n){return y.tidy(function(){var t=y.add(.5,y.mul(.2,n));return y.clipByValue(t,0,1)})}function is(n,t,e){return e===void 0&&(e=!1),e?n():t()}var l3=["fanIn","fanOut","fanAvg"],u3=["normal","uniform","truncatedNormal"];function c3(n){ea(l3,"FanMode",n)}function h3(n){ea(u3,"Distribution",n)}var pn=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.fromConfigUsesCustomObjects=function(){return!1},t.prototype.getConfig=function(){return{}},t}(y.serialization.Serializable),Ly=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.apply=function(e,i){return y.zeros(e,i)},t.className="Zeros",t}(pn);y.serialization.registerClass(Ly);var Yh=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.apply=function(e,i){return y.ones(e,i)},t.className="Ones",t}(pn);y.serialization.registerClass(Yh);var Iy=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(typeof e!="object")throw new M("Expected argument of type ConstantConfig but got "+e);if(e.value===void 0)throw new M("config must have value set but got "+e);return i.value=e.value,i}return t.prototype.apply=function(e,i){var r=this;return y.tidy(function(){return y.mul(y.scalar(r.value),y.ones(e,i))})},t.prototype.getConfig=function(){return{value:this.value}},t.className="Constant",t}(pn);y.serialization.registerClass(Iy);var Ay=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.DEFAULT_MINVAL=-.05,i.DEFAULT_MAXVAL=.05,i.minval=e.minval||i.DEFAULT_MINVAL,i.maxval=e.maxval||i.DEFAULT_MAXVAL,i.seed=e.seed,i}return t.prototype.apply=function(e,i){return y.randomUniform(e,this.minval,this.maxval,i)},t.prototype.getConfig=function(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}},t.className="RandomUniform",t}(pn);y.serialization.registerClass(Ay);var Ty=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.DEFAULT_MEAN=0,i.DEFAULT_STDDEV=.05,i.mean=e.mean||i.DEFAULT_MEAN,i.stddev=e.stddev||i.DEFAULT_STDDEV,i.seed=e.seed,i}return t.prototype.apply=function(e,i){if(i=i||"float32",i!=="float32"&&i!=="int32")throw new Te("randomNormal does not support dType "+i+".");return To(e,this.mean,this.stddev,i,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="RandomNormal",t}(pn);y.serialization.registerClass(Ty);var Ny=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.DEFAULT_MEAN=0,i.DEFAULT_STDDEV=.05,i.mean=e.mean||i.DEFAULT_MEAN,i.stddev=e.stddev||i.DEFAULT_STDDEV,i.seed=e.seed,i}return t.prototype.apply=function(e,i){if(i=i||"float32",i!=="float32"&&i!=="int32")throw new Te("truncatedNormal does not support dType "+i+".");return y.truncatedNormal(e,this.mean,this.stddev,i,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="TruncatedNormal",t}(pn);y.serialization.registerClass(Ny);var xy=function(n){Q(t,n);function t(e){var i=n.call(this)||this;return i.gain=e.gain!=null?e.gain:1,i}return t.prototype.apply=function(e,i){var r=this;return y.tidy(function(){if(e.length!==2||e[0]!==e[1])throw new M("Identity matrix initializer can only be used for 2D square matrices.");return y.mul(r.gain,y.eye(e[0]))})},t.prototype.getConfig=function(){return{gain:this.gain}},t.className="Identity",t}(pn);y.serialization.registerClass(xy);function d3(n,t){t===void 0&&(t="channelsLast");var e,i;if(ht(t),n.length===2)e=n[0],i=n[1];else if([3,4,5].indexOf(n.length)!==-1){if(t==="channelsFirst"){var r=Ni(n,2);e=n[1]*r,i=n[0]*r}else if(t==="channelsLast"){var r=Ni(n,0,n.length-2);e=n[n.length-2]*r,i=n[n.length-1]*r}}else{var a=Ni(n);e=Math.sqrt(a),i=Math.sqrt(a)}return[e,i]}var $t=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(e.scale<0)throw new M("scale must be a positive float. Got: "+e.scale);return i.scale=e.scale==null?1:e.scale,i.mode=e.mode==null?"fanIn":e.mode,c3(i.mode),i.distribution=e.distribution==null?"normal":e.distribution,h3(i.distribution),i.seed=e.seed,i}return t.prototype.apply=function(e,i){var r=d3(e),a=r[0],s=r[1],o=this.scale;if(this.mode==="fanIn"?o/=Math.max(1,a):this.mode==="fanOut"?o/=Math.max(1,s):o/=Math.max(1,(a+s)/2),this.distribution==="normal"){var l=Math.sqrt(o);if(i=i||"float32",i!=="float32"&&i!=="int32")throw new Te(this.getClassName()+" does not support dType "+i+".");return y.truncatedNormal(e,0,l,i,this.seed)}else{var u=Math.sqrt(3*o);return y.randomUniform(e,-u,u,i)}},t.prototype.getConfig=function(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}},t.className="VarianceScaling",t}(pn);y.serialization.registerClass($t);var jh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return $t.className},t.className="GlorotUniform",t}($t);y.serialization.registerClass(jh);var Kh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return $t.className},t.className="GlorotNormal",t}($t);y.serialization.registerClass(Kh);var $h=function(n){Q(t,n);function t(e){return n.call(this,{scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return $t.className},t.className="HeNormal",t}($t);y.serialization.registerClass($h);var Xh=function(n){Q(t,n);function t(e){return n.call(this,{scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return $t.className},t.className="HeUniform",t}($t);y.serialization.registerClass(Xh);var Jh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return $t.className},t.className="LeCunNormal",t}($t);y.serialization.registerClass(Jh);var Zh=function(n){Q(t,n);function t(e){return n.call(this,{scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})||this}return t.prototype.getClassName=function(){return $t.className},t.className="LeCunNormal",t}($t);y.serialization.registerClass(Zh);var Cy=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(i.DEFAULT_GAIN=1,i.gain=e.gain==null?i.DEFAULT_GAIN:e.gain,i.seed=e.seed,i.seed!=null)throw new Te("Random seed is not implemented for Orthogonal Initializer yet.");return i}return t.prototype.apply=function(e,i){var r=this;return y.tidy(function(){if(e.length<2)throw new Te("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn("Orthogonal initializer is being called on a matrix with more "+("than 2000 ("+e[0]*e[1]+") elements: ")+"Slowness may result.");var a=e[0]>e[1]?[e[1],e[0]]:e,s=To(a,0,1,"float32"),o=y.linalg.gramSchmidt(s);return e[0]>e[1]&&(o=o.transpose()),y.mul(r.gain,o)})},t.prototype.getConfig=function(){return{gain:this.gain,seed:this.seed}},t.className="Orthogonal",t}(pn);y.serialization.registerClass(Cy);var Ry={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function Oy(n,t){return t===void 0&&(t={}),Ja(n,y.serialization.SerializationMap.getMap().classNameMap,t,"initializer")}function st(n){return zh(n)}function tt(n){if(typeof n=="string"){var t=n in Ry?Ry[n]:n;if(t==="GlorotNormal")return new Kh;if(t==="GlorotUniform")return new jh;if(t==="HeNormal")return new $h;if(t==="HeUniform")return new Xh;if(t==="LeCunNormal")return new Jh;if(t==="LeCunUniform")return new Zh;var e={};return e.className=t,e.config={},Oy(e)}else return n instanceof pn?n:Oy(n)}function p3(){return new Ly}function f3(){return new Yh}function m3(n){return new Iy(n)}function g3(n){return new Ay(n)}function v3(n){return new Ty(n)}function y3(n){return new Ny(n)}function b3(n){return new xy(n)}function w3(n){return new $t(n)}function S3(n){return new jh(n)}function L3(n){return new Kh(n)}function I3(n){return new $h(n)}function A3(n){return new Xh(n)}function T3(n){return new Jh(n)}function N3(n){return new Zh(n)}function x3(n){return new Cy(n)}var C3={__proto__:null,zeros:p3,ones:f3,constant:m3,randomUniform:g3,randomNormal:v3,truncatedNormal:y3,identity:b3,varianceScaling:w3,glorotUniform:S3,glorotNormal:L3,heNormal:I3,heUniform:A3,leCunNormal:T3,leCunUniform:N3,orthogonal:x3};var R3=0;function Ey(){return R3++}var No={};function xo(n){return n===void 0&&(n=""),n in No||(No[n]=0),No[n]+=1,n+No[n].toString()}function Qh(n){return Array.isArray(n)&&Array.isArray(n[0])}function Co(n){return n.length===0?[]:Array.isArray(n[0])?n:[n]}function xe(n){var t;if(Array.isArray(n)){if(n.length!==1)throw new M("Expected Tensor length to be 1; got "+n.length);t=n[0]}else t=n;return t}function je(n){if(Array.isArray(n)&&Array.isArray(n[0])){if(n.length===1)return n=n,n[0];throw new M("Expected exactly 1 Shape; got "+n.length)}else return n}function Ro(n){for(var t=0,e=0,i=n;e1)throw new Ai("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use `getInputAt(nodeIndex)` instead.');if(this.inboundNodes.length===0)throw new Ai("Layer "+this.name+" is not connected, no input to return.");return qt(this.getNodeAtIndex(0,"input").inputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"output",{get:function(){if(this.inboundNodes.length===0)throw new Ai("Layer "+this.name+" has no inbound nodes.");if(this.inboundNodes.length>1)throw new Ai("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use `getOutputAt(nodeIndex)` instead.');return qt(this.getNodeAtIndex(0,"output").outputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"losses",{get:function(){return this._losses},enumerable:!0,configurable:!0}),t.prototype.calculateLosses=function(){return this.losses.map(function(e){return e()})},Object.defineProperty(t.prototype,"updates",{get:function(){return this._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"built",{get:function(){return this._built},set:function(e){this._built=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainable",{get:function(){return this.trainable_},set:function(e){this._trainableWeights.forEach(function(i){return i.trainable=e}),this.trainable_=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable_?this._trainableWeights.filter(function(e){return e.trainable}):[]},set:function(e){this._trainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this._trainableWeights.filter(function(e){return!e.trainable}).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)},set:function(e){this._nonTrainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"weights",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"stateful",{get:function(){return this._stateful},enumerable:!0,configurable:!0}),t.prototype.resetStates=function(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")},t.prototype.assertInputCompatibility=function(e){if(e=Je(e),this.inputSpec==null||this.inputSpec.length===0)return;var i=Je(this.inputSpec);if(e.length!==i.length)throw new M("Layer "+this.name+" expects "+i.length+" inputs, "+("but it received "+e.length+" input tensors. ")+("Input received: "+e));for(var r=0;r=0?l[c]:l[l.length+c];if(h!=null&&[h,null].indexOf(d)===-1)throw new M("Input "+r+" is incompatible with layer "+(this.name+": expected axis "+c+" of input shape to ")+("have value "+h+" but got shape "+l+"."))}}if(s.shape!=null)for(var p=0;p0&&Array.isArray(R[0])?v=R.map(function(W,F){return new Ln(D,W,r,Je(e),i,r.name,F)}):v=new Ln(D,R,r,Je(e),i,r.name),r.addInboundNode(e,v,null,null,C,R,i),r._refCount++,r.activityRegularizer!=null)throw new Te("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return v}})},t.prototype.warnOnIncompatibleInputShape=function(e){if(this.batchInputShape==null)return;if(e.length!==this.batchInputShape.length)console.warn("The rank of the input tensor provided (shape: "+(JSON.stringify(e)+") does not match that of the ")+("batchInputShape ("+JSON.stringify(this.batchInputShape)+") ")+("of the layer "+this.name));else{var i=!1;this.batchInputShape.forEach(function(r,a){r!=null&&e[a]!=null&&e[a]!==r&&(i=!0)}),i&&console.warn("The shape of the input tensor "+("("+JSON.stringify(e)+") does not ")+("match the expectation of layer "+this.name+": ")+(""+JSON.stringify(this.batchInputShape)))}},Object.defineProperty(t.prototype,"outputShape",{get:function(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new Ai("The layer "+this.name+" has never been called and thus has no defined output shape.");for(var e=[],i=0,r=this.inboundNodes;i0)&&(t=n.sourceLayer,e=n.nodeIndex),t.inboundNodes.length===0)return[n];var i=t.inboundNodes[e];if(i.inboundLayers.length===0)return i.inputTensors;for(var r=[],a=0;a0?[4,Promise.all(t)]:[3,2];case 1:for(o=u.sent(),l=0;l=0&&Number.isInteger(t),function(){return"Verbosity level is expected to be an integer >= 0, "+("but got "+t)}),n.checkForDuplicate(e),n.constructors[t]==null&&(n.constructors[t]=[]),n.constructors[t].push(e)},n.checkForDuplicate=function(t){for(var e in n.constructors){var i=n.constructors[+e];i.forEach(function(r){if(r===t)throw new M("Duplicate callback constructor.")})}},n.clear=function(){n.constructors={}},n.createCallbacks=function(t){var e=[];for(var i in n.constructors){var r=+i;t>=r&&e.push.apply(e,n.constructors[r])}return e.map(function(a){return new a})},n.constructors={},n}();function Vy(n,t,e,i,r,a,s,o,l){var u=new Py,c=[new U3].concat(Hy.createCallbacks(t));n!=null&&c.push.apply(c,n),c.push(u);var h=new zy(c);return h.setParams({epochs:e,initialEpoch:i,samples:r,steps:a,batchSize:s,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function In(n,t,e){return t===void 0&&(t={}),e===void 0&&(e=!1),Ja(n,y.serialization.SerializationMap.getMap().classNameMap,t,"layer",e)}function Eo(n,t){return y.tidy(function(){n.dtype!=="float32"&&(n=n.asType("float32"));var e=y.sum(ns(n),t,!0),i=y.fill(e.shape,yt()),r=y.sqrt(y.maximum(e,i));return y.div(n,r)})}function pr(n,t){return y.tidy(function(){return y.mean(ns(y.sub(t,n)),-1)})}function Do(n,t){return y.tidy(function(){return y.mean(y.abs(y.sub(t,n)),-1)})}function ra(n,t){return y.tidy(function(){var e=y.sub(n,t),i=y.clipByValue(y.abs(n),yt(),Number.MAX_VALUE),r=y.abs(y.div(e,i));return y.mul(100,y.mean(r,-1))})}function B3(n,t){return y.tidy(function(){var e=y.clipByValue(t,yt(),Number.MAX_VALUE),i=y.log(y.add(1,e)),r=y.clipByValue(n,yt(),Number.MAX_VALUE),a=y.log(y.add(1,r));return y.mean(ns(y.sub(i,a)),-1)})}function z3(n,t){return y.tidy(function(){var e=y.maximum(0,y.sub(1,y.mul(n,t)));return y.mean(ns(e),-1)})}function P3(n,t){return y.tidy(function(){var e=y.maximum(0,y.sub(1,y.mul(n,t)));return y.mean(e,-1)})}function _3(n,t){return y.tidy(function(){var e=y.sum(y.mul(n,t),-1),i=y.max(y.mul(y.sub(1,n),t),-1);return y.maximum(0,y.add(1,y.sub(i,e)))})}function M3(n,t){return y.tidy(function(){var e=Math.log(2),i=y.sub(t,n),r=y.sub(y.add(i,y.softplus(y.mul(-2,i))),e);return y.mean(r,-1)})}function as(n,t,e){return e===void 0&&(e=!1),y.tidy(function(){if(e)t=y.softmax(t);else{var i=y.sum(t,t.shape.length-1,!0);t=y.div(t,i)}return t=y.clipByValue(t,yt(),1-yt()),y.neg(y.sum(y.mul(n.toFloat(),y.log(t)),t.shape.length-1))})}function ko(n,t,e){return e===void 0&&(e=!1),y.tidy(function(){var i=y.floor(i3(n)).toInt();t=y.clipByValue(t,yt(),1-yt());var r=t.shape,a=y.oneHot(i,r[r.length-1]).reshape(r);return as(a,t,e)})}function H3(n,t){if(!y.util.arraysEqual(n.shape,t.shape))throw new M("logits and labels must have the same shape, but got shapes "+(JSON.stringify(n.shape)+" and "+JSON.stringify(t.shape)));return y.tidy(function(){var e=t.relu(),i=t.abs().neg();return e.sub(t.mul(n)).add(i.exp().log1p())})}function Fo(n,t){return y.tidy(function(){var e;return e=y.clipByValue(t,yt(),1-yt()),e=y.log(y.div(e,y.sub(1,e))),y.mean(H3(n,e),-1)})}function V3(n,t){return y.tidy(function(){var e=y.clipByValue(n,yt(),1),i=y.clipByValue(t,yt(),1);return y.sum(y.mul(n,y.log(y.div(e,i))),-1)})}function q3(n,t){return y.tidy(function(){var e=y.log(y.add(yt(),t));return y.mean(y.sub(t,y.mul(n,e)),-1)})}function nd(n,t){return y.tidy(function(){var e=Eo(n,-1),i=Eo(t,-1),r=y.mul(e,i);return y.neg(y.sum(r,-1))})}var Wo={meanSquaredError:pr,meanAbsoluteError:Do,meanAbsolutePercentageError:ra,meanSquaredLogarithmicError:B3,squaredHinge:z3,hinge:P3,categoricalHinge:_3,logcosh:M3,categoricalCrossentropy:as,sparseCategoricalCrossentropy:ko,binaryCrossentropy:Fo,kullbackLeiblerDivergence:V3,poisson:q3,cosineProximity:nd};function id(n){if(typeof n=="string"){if(n in Wo)return Wo[n];var t="Unknown loss "+n;throw n.toLowerCase().includes("softmaxcrossentropy")&&(t="Unknown loss "+n+'. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy'),new M(t)}else return n}function rd(n,t){return y.tidy(function(){var e=y.mul(.5,y.onesLike(t)),i=es(y.greater(t,e),n.dtype);return y.mean(y.equal(n,i),-1)})}function ad(n,t){return y.tidy(function(){return es(y.equal(y.argMax(n,-1),y.argMax(t,-1)),"float32")})}function qy(n,t){return y.tidy(function(){return y.logicalAnd(n.equal(1),t.equal(1)).sum().cast("float32")})}function G3(n,t){return y.tidy(function(){return y.logicalAnd(n.equal(1),t.equal(0)).sum().cast("float32")})}function Y3(n,t){return y.tidy(function(){return y.logicalAnd(n.equal(0),t.equal(1)).sum().cast("float32")})}function Gy(n,t){return y.tidy(function(){var e=qy(n,t),i=Y3(n,t),r=e.add(i);return y.where(y.greater(r,0),e.div(r),0).cast("float32")})}function j3(n,t){return y.tidy(function(){var e=qy(n,t),i=G3(n,t),r=e.add(i);return y.where(y.greater(r,0),e.div(r),0).cast("float32")})}function Yy(n,t){return Fo(n,t)}function jy(n,t){return n.rank===t.rank&&(n=n.squeeze([n.rank-1])),t=t.argMax(-1),t.dtype!==n.dtype&&(t=t.asType(n.dtype)),y.equal(n,t).asType("float32")}var K3=pr,$3=pr,X3=Do,J3=Do,Z3=ra,Q3=ra,sd=as,e4=nd,Ky=ko,Uo={binaryAccuracy:rd,categoricalAccuracy:ad,precision:Gy,categoricalCrossentropy:sd,sparseCategoricalCrossentropy:Ky,mse:K3,MSE:$3,mae:X3,MAE:J3,mape:Z3,MAPE:Q3,cosine:e4};function t4(n){if(typeof n=="string"&&n in Uo)return Uo[n];if(typeof n!="string"&&n!=null)return n;throw new M("Unknown metric "+n)}function Bo(n){if(_n(n!==null,"Unknown LossOrMetricFn "+n),typeof n=="string")return n;for(var t=void 0,e=0,i=Object.keys(Wo);e$y&&console.warn('User-defined metadata of model "'+t+'" is too large in '+("size (length="+i.length+" when serialized). It is not ")+"recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= "+($y+"."))}}function od(n){if(n===null)return!0;if(typeof n=="object")if(Object.getPrototypeOf(n)===Object.prototype){for(var t=Object.keys(n),e=0,i=t;e1||o.length===1&&o[0].inboundLayers.length>1){t=!1;break}i.push.apply(i,o)}if(t)for(var l=0,u=n.layers;l0&&(i=i.slice(0,i.length-1)+" "),i+=n[r],i=i.slice(0,t[r]),i+=" ".repeat(t[r]-i.length);e(i)}function a4(n,t,e){var i;try{i=JSON.stringify(n.outputShape)}catch(o){i="multiple"}var r=n.name,a=n.getClassName(),s=[r+" ("+a+")",i,n.countParams().toString()];zo(s,t,e)}function s4(n,t,e,i){var r;try{r=JSON.stringify(n.outputShape)}catch(v){r="multiple"}for(var a=[],s=0,o=n.inboundNodes;s0&&e.indexOf(l)===-1)continue;for(var u=0;ui.maxNumTensors&&(i.maxNumTensors=w),w0,function(){return"Expected at least one fetch, got none"});var e=[],i={};if(n.length===1){var r=Qy(n[0],t);e=r.sorted,i=r.recipientMap}else for(var a=new Set,s=0,o=n;s0;){var c=l[l.length-1];if(e.has(c.name)){l.pop();continue}var h=u[u.length-1]===l.length-1;if(c.inputs.length===0||h)l.pop(),i.push(c),e.add(c.name),h&&u.pop();else{u.push(l.length-1);for(var d=0,p=c.inputs;d1 nodes"),_n(c===0,"input layer has >1 tensors"),i.inputLayers.push(l),i.inputLayersNodeIndices.push(u),i.inputLayersTensorIndices.push(c)}i.inputNames=[],i.outputNames=[],i.feedInputShapes=[],i.feedInputNames=[],i.feedOutputNames=[];for(var p=0;p=0;)ft.splice(ft.indexOf(_t),1);L.push(_t)},C=[],R=[],D=0,k=i.outputs;Dun?1:0});for(var he=0,ye=le;he0)throw new M("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];for(var e=[],i=0,r=this.layers;i0)throw new M(v.length+" of "+a+" weights are not set: "+(""+v))}td(d)},t.prototype.updatedConfig=function(){var e=this.getConfig(),i={};return i.className=this.getClassName(),i.config=e,i.kerasVersion="tfjs-layers "+ud,i.backend="TensorFlow.js",i},t.prototype.toJSON=function(e,i){i===void 0&&(i=!0);var r=ld(this.updatedConfig());return i?JSON.stringify(r):r},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){e=Je(e);for(var a=new aa,s=0;s1)for(var c=0,h=u;c0){for(var m=[],g=0;g0&&G.apply(qt(X),ee)}function c(G){var Z=G.name,X=In(G,i.customObjects!=null?i.customObjects:{});X.setFastWeightInitDuringBuild(a),s[Z]=X;var ee=G.inboundNodes;ee.forEach(function(ne){if(!(ne instanceof Array))throw new M("Corrupted configuration, expected array for nodeData: "+ne);l(X,ne)})}for(var h=i.name,d=i.layers,p=0,f=d;p0&&typeof n[Object.keys(n)[0]]=="object"){var r=[];return t.forEach(function(a){a in n?r.push(n[a]):r.push(null)}),r}else throw new Error("The model has multiple ("+i+") outputs, "+("so "+e+" must be either an array with ")+(i+" elements or an object with "+t+" keys. ")+("Provided "+e+" not understood: "+JSON.stringify(n)))}function eb(n,t){return p4(n,t,"classWeight")}function tb(n,t,e,i){return Se(this,void 0,void 0,function(){var r,a,s,o,l;return ve(this,function(u){switch(u.label){case 0:if(t!=null||i!=null)throw new Error("Support sampleWeight is not implemented yet");return e!=null?(r=y.tidy(function(){if(n.shape.length===1)return n.clone();if(n.shape.length===2)if(n.shape[1]>1){var c=1;return n.argMax(c)}else{if(n.shape[1]===1)return n.reshape([n.shape[0]]);throw new Error("Encountered unexpected last-dimension size ("+n.shape[1]+") during handling of class weights. The size is expected to be >= 1.")}else throw new Error("Unexpected rank of target (y) tensor ("+n.rank+") during handling of class weights. The rank is expected to be 1 or 2.")}),o=(s=Array).from,[4,r.data()]):[3,2];case 1:return a=o.apply(s,[u.sent()]),y.dispose(r),l=[],a.forEach(function(c){if(e[c]==null)throw new Error("classWeight must contain all classes in the training data. "+("The class "+c+" exists in the data but not in ")+"classWeight");l.push(e[c])}),[2,y.tensor1d(l,"float32")];case 2:return[2,null]}})})}function f4(n,t){return y.mul(n,t)}var m4=32;function ib(n,t){var e,i,r=t;e=r.xs,i=r.ys,y.util.assert(e!=null&&i!=null,function(){return"A Dataset iterator for fitDataset() is expected to generate objects of the form `{xs: xVal, ys: yVal}`, where the two values may be `tf.Tensor`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates "+(""+t)});var a=nb("input",n.inputNames,e),s=nb("output",n.outputNames,i),o=a[0].shape[0];y.util.assert(a.length===n.inputs.length,function(){return"LayersModel has "+n.inputs.length+" inputs, but the dataset "+("provides "+a.length+" inputs. (Expected input keys: ")+(JSON.stringify(n.inputNames)+")")}),y.util.assert(s.length===n.outputs.length,function(){return"LayersModel has "+n.outputs.length+" outputs, but the dataset "+("provides "+s.length+" outputs. (Expected output keys: ")+(JSON.stringify(n.outputNames)+")")});for(var l=function(d){y.util.assert(a[d].shape[0]===o,function(){return"Batch size mismatch: input "+(n.inputNames[d]+" has "+a[d].shape[0]+"; ")+("expected "+o+" based on input "+n.inputNames[0]+".")})},u=0;u0&&Number.isInteger(e.epochs),function(){return"For fitDataset(), config.epochs is expected to be a positive "+("integer, but got "+e.epochs)}),y.util.assert(!i||e.batchesPerEpoch>0&&Number.isInteger(e.batchesPerEpoch),function(){return"For fitDataset(), config.batchesPerEpoch is expected to be a "+("positive integer if specified, but got "+e.batchesPerEpoch)}),y.util.assert(e.validationSplit==null,function(){return"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."}),n.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");n.isTraining=!0,X.label=1;case 1:return X.trys.push([1,,26,27]),r=e.validationData!=null,a=void 0,s=void 0,r&&(rb(e.validationData)?y.util.assert(e.validationBatches==null||e.validationBatches>0&&Number.isInteger(e.validationBatches),function(){return"For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, "+("but got "+e.validationBatches)}):(o=g4(e.validationData),a=o.xs,s=o.ys)),l=n.makeTrainFunction(),u=n.getDedupedMetricsNames(),c=void 0,r?c=u.slice().concat(u.map(function(ee){return"val_"+ee})):c=u.slice(),h=My(e.callbacks,e.yieldEvery),d=e.verbose==null?1:e.verbose,p=Vy(h,d,e.epochs,null,null,v4(t,e),null,r,c),f=p.callbackList,m=p.history,f.setModel(n),n.history=m,[4,f.onTrainBegin()];case 2:return X.sent(),n.stopTraining_=!1,g=e.initialEpoch==null?0:e.initialEpoch,[4,t.iterator()];case 3:v=X.sent(),X.label=4;case 4:return g=e.batchesPerEpoch:L.done)?r?(G=void 0,rb(e.validationData)?(Z=Je,[4,n.evaluateDataset(e.validationData,{batches:e.validationBatches})]):[3,17]):[3,19]:[3,20];case 16:return G=Z.apply(void 0,[X.sent()]),[3,18];case 17:G=Je(n.evaluate(a,s,{batchSize:e.validationBatchSize==null?m4:e.validationBatchSize,verbose:0})),X.label=18;case 18:for(F=0;F0)throw new Te("Verbose mode is not implemented yet.");return y.util.assert(!i||e.batches>0&&Number.isInteger(e.batches),function(){return"Test loop expects `batches` to be a positive integer, but "+("received "+JSON.stringify(e.batches))}),b4(t)?(o=t,[3,3]):[3,1];case 1:return[4,t.iterator()];case 2:o=f.sent(),f.label=3;case 3:s=o,l=0,u=0,c=function(){var m;return ve(this,function(g){switch(g.label){case 0:return[4,s.next()];case 1:return m=g.sent(),a=y.tidy(function(){if(m.value){var v=ib(n,m.value),b=v.xs,w=v.ys,S=b.concat(w),L=y.tidy(function(){return r(S)});if(y.dispose(S),u===0)for(var N=0;N0&&y.dispose(W)},N=0;N0&&Number.isInteger(n),function(){return"batchSize is required to be a positive integer, but got "+n})}function ls(n,t,e){return n==null?[null]:Array.isArray(n)?n.map(function(i){return dr(i,t,e-t)}):dr(n,t,e-t)}function dd(n,t){return y.tidy(function(){return n==null?null:Array.isArray(n)?n.map(function(e){return dd(e,t)}):wy(n,t.dtype==="int32"?t:t.toInt())})}function pd(n,t){for(var e=[],i=0,r=null;i=n&&(r=n),e.push([i,r]),i=r;return e}function S4(n,t,e,i,r,a,s,o,l,u,c,h,d,p,f){return Se(this,void 0,void 0,function(){var m,g,v,b,w,S,L,N,C;return ve(this,function(R){switch(R.label){case 0:if(r==null&&(r=32),a==null&&(a=1),c==null&&(c=!0),d==null&&(d=0),m=!1,l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new M("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");return g=n.checkNumSamples(e,r,p,"steps_per_epoch"),g!=null&&(v=Sn(0,g)),s==null&&(s=1),b=Vy(o,s,a,d,g,p,r,m,h),w=b.callbackList,S=b.history,w.setModel(n),n.history=S,[4,w.onTrainBegin()];case 1:R.sent(),n.stopTraining_=!1,L=function(D){var k,W,F,P,H,_;return ve(this,function(j){switch(j.label){case 0:return[4,w.onEpochBegin(D)];case 1:if(j.sent(),k={},!(p!=null))return[3,2];throw new Te("stepsPerEpoch mode is not implemented yet.");case 2:if(c==="batch")throw new Te("batch shuffling is not implemneted yet");c&&y.util.shuffle(v),W=y.tensor1d(v),F=pd(g,r),P=function(K){var q;return ve(this,function(G){switch(G.label){case 0:return q={},[4,w.onBatchBegin(K,q)];case 1:return G.sent(),y.tidy(function(){var Z=F[K][0],X=F[K][1],ee=dr(W,Z,X-Z);q.batch=K,q.size=X-Z;for(var ne=dd(e,ee),ie=t(ne),te=0;te0))return[3,4];if(f=!0,i.validationData.length===2)s=i.validationData[0],o=i.validationData[1];else throw i.validationData.length===3?new Te("validationData including sample weights is not supported yet."):new M("When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; "+(i.validationData+" is invalid."));return g=!0,[4,n.standardizeUserData(s,o,null,null,g,h)];case 3:return v=W.sent(),l=v[0],u=v[1],m=l.concat(u),[3,5];case 4:i.validationSplit!=null&&i.validationSplit>0&&i.validationSplit<1?(f=!0,b=Math.floor(r[0].shape[0]*(1-i.validationSplit)),w=r[0].shape[0],l=ls(r,b,w),r=ls(r,0,b),u=ls(a,b,w),a=ls(a,0,b),m=l.concat(u)):i.validationSteps!=null&&(f=!0),W.label=5;case 5:return S=r.concat(a).concat(c),n.checkTrainableWeightsConsistency(),L=n.makeTrainFunction(),N=n.getDedupedMetricsNames(),C=void 0,R=void 0,f?(n.makeTestFunction(),C=n.testFunction,R=N.slice().concat(N.map(function(F){return"val_"+F}))):(C=null,m=[],R=N.slice()),D=My(i.callbacks,i.yieldEvery),[4,S4(n,L,S,N,h,i.epochs,i.verbose,D,C,m,i.shuffle,R,i.initialEpoch,null,null)];case 6:return k=W.sent(),[2,k];case 7:return n.isTraining=!1,fr(r,t),fr(a,e),fr(l,s),fr(u,o),c!=null&&y.dispose(c),[7];case 8:return[2]}})})}function ab(n){var t=[];n instanceof y.Tensor&&(n=[n]);for(var e=0;e0)a=!0;else if(sb(n)){for(var s in n)if(n.hasOwnProperty(s)){a=!0;break}}else a=!0;if(a)throw new M("Error when checking model "+r+" expected no data, "+("but got "+n))}return[]}if(n==null)return t.map(function(g){return null});var o;if(sb(n)){n=n,o=[];for(var l=0,u=t;l1)throw new M("The model "+r+" expects "+t.length+" Tensor(s), "+("but only received one Tensor. Found: Tensor with shape "+n.shape));o=[n]}if(o=ab(o),e!=null)for(var h=0;h=0&&f!==m)throw new M("Error when checking "+r+": expected "+t[h]+" "+("to have shape ["+e[h]+"], but got array with shape ")+("["+d.shape+"]."))}}return o}function A4(n,t,e){var i=Ti(n.map(function(a){return a.shape[0]}));i.sort();var r=Ti(t.map(function(a){return a.shape[0]}));if(r.sort(),i.length>1)throw new M("All input Tensors (x) should have the same number of samples. Got array shapes: "+(""+JSON.stringify(n.map(function(a){return a.shape}))));if(r.length>1)throw new M("All target Tensors (y) should have the same number of samples. Got array shapes: "+(""+JSON.stringify(t.map(function(a){return a.shape}))));if(i.length>0&&r.length>0&&!y.util.arraysEqual(i,r))throw new M("Input Tensors should have the same number of samples as target "+("Tensors. Found "+i[0]+" input sample(s) and "+r[0]+" target ")+"sample(s).")}function T4(n,t,e){for(var i=[pr,Fo,as],r=0;r1)throw new M("The model expects "+t.length+" "+r+" Tensors, but only received one Tensor. Found: array with shape "+(JSON.stringify(n.shape)+"."));a=[n]}if(e!=null)for(var s=0;s1&&(i.metricsTensors.push([b,v]),i.metricsNames.push(i.outputNames[v]+"_loss"))}});var m=N4(e.metrics,this.outputNames),g=function(v,b,w){i.outputNames.length>1&&(b=i.outputNames[v]+"_"+b),i.metricsNames.push(b),i.metricsTensors.push([w,v])};hr("metric",function(){for(var v=function(w){if(f.indexOf(w)!==-1)return"continue";var S=m[w],L=function(N){for(var C="",R,D,k,W=function(_){if(typeof _=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(_)!==-1){var j=i.internalOutputShapes[w];j[j.length-1]===1||i.lossFunctions[w]===Fo?["accuracy","acc"].indexOf(_)!==-1?D=rd:["crossentropy","ce"].indexOf(_)!==-1&&(D=Yy):i.lossFunctions[w]===ko?["accuracy","acc"].indexOf(_)!==-1?D=jy:["crossentropy","ce"].indexOf(_)!==-1&&(D=Ky):["accuracy","acc"].indexOf(_)!==-1?D=ad:["crossentropy","ce"].indexOf(_)!==-1&&(D=sd);var K=void 0;["accuracy","acc"].indexOf(_)!==-1?K="acc":["crossentropy","ce"].indexOf(_)!==-1&&(K="ce"),k=D,R=C+K}else{var q=t4(_);k=q,R=C+Bo(_)}var G;hr(R,function(){G=k}),g(w,R,G)},F=0,P=N;F0){var d=[];throw i.forEach(function(p,f){p==null&&d.push(e[f])}),new M("Cannot find SymbolicTensors for output name(s): "+(""+JSON.stringify(d)))}return i},t.prototype.predictLoop=function(e,i,r){var a=this;return i===void 0&&(i=32),r===void 0&&(r=!1),y.tidy(function(){var s=a.checkNumSamples(e);if(r)throw new Te("Verbose predictLoop() is not implemented yet.");for(var o=pd(s,i),l=a.outputs.map(function(h){return[]}),u=function(h){var d=y.tidy(function(){var p=o[h][0],f=o[h][1],m=ls(e,p,f),g=[];if(Array.isArray(m))for(var v=0;v0&&e[0].shape[0]%a!==0)throw new M("In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size "+(a+". Found: "+e[0].shape[0]+" sample(s)."));return[e,i]},t.prototype.standardizeUserData=function(e,i,r,a,s,o){return s===void 0&&(s=!0),Se(this,void 0,void 0,function(){var l,u,c,h,d,p,f,m;return ve(this,function(g){switch(g.label){case 0:if(l=this.standardizeUserDataXY(e,i,s,o),u=l[0],c=l[1],r!=null)throw new Error("sample weight is not supported yet.");if(h=null,!(a!=null))return[3,4];d=eb(a,this.outputNames),h=[],p=0,g.label=1;case 1:return p0)throw new Te("Verbose mode is not implemented yet.");if(s!=null)throw new Te("steps mode in testLoop() is not implemented yet");for(var c=pd(l,r),h=y.tensor1d(Sn(0,l)),d=0;d1){var o=ry(e.slice(0,r),a);s+="_"+o}i.push(s)}return i},t.prototype.makeTrainFunction=function(){var e=this;return function(i){var r=[],a=i.slice(0,e.inputs.length),s=i.slice(e.inputs.length,e.inputs.length+e.outputs.length),o=i.slice(e.inputs.length+e.outputs.length,e.inputs.length+e.outputs.length*2),l=[],u=function(){for(var p=[],f=0;f1&&f1)throw new M("Found more than one ("+r.length+") save handlers for "+("URL '"+e+"'"));e=r[0]}if(e.save==null)throw new M("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[4,y.io.encodeWeights(this.getNamedWeights(i))];case 1:return a=w.sent(),s=!1,o=null,l=this.toJSON(o,s),u={modelTopology:l,format:x4,generatedBy:"TensorFlow.js tfjs-layers v"+ud,convertedBy:null},c=i==null?!1:i.includeOptimizer,c&&this.optimizer!=null?(u.trainingConfig=this.getTrainingConfig(),h="optimizer",g=(m=y.io).encodeWeights,[4,this.optimizer.getWeights()]):[3,4];case 2:return[4,g.apply(m,[w.sent(),h])];case 3:d=w.sent(),p=d.data,f=d.specs,(b=a.specs).push.apply(b,f),a.data=y.io.concatenateArrayBuffers([a.data,p]),w.label=4;case 4:return this.userDefinedMetadata!=null&&(v=!0,Xy(this.userDefinedMetadata,this.name,v),u.userDefinedMetadata=this.userDefinedMetadata),u.weightData=a.data,u.weightSpecs=a.specs,[2,e.save(u)]}})})},t.prototype.setUserDefinedMetadata=function(e){Xy(e,this.name),this.userDefinedMetadata=e},t.prototype.getUserDefinedMetadata=function(){return this.userDefinedMetadata},t.className="Model",t}(d4);y.serialization.registerClass(Ri);var C4=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.className="Functional",t}(Ri);y.serialization.registerClass(C4);function R4(n,t){return Se(this,void 0,void 0,function(){var e,i,r,a,s,o,l,u;return ve(this,function(c){switch(c.label){case 0:return"modelTopology"in n||(n={modelTopology:n}),n=n,e=n.modelTopology,e.model_config!=null&&(e=e.model_config),i=ss(e),r=In(i,t),n.weightsManifest!=null?[4,y.io.loadWeights(n.weightsManifest,n.pathPrefix,r.weights.map(function(h){return h.originalName}))]:[3,2];case 1:for(a=c.sent(),s={},o=0,l=r.weights;o1)throw new M("Found more than one ("+e.length+") load handlers for "+("URL '"+n+"'"));n=e[0]}return[2,O4(n,void 0,t)]})})}function O4(n,t,e){return Se(this,void 0,void 0,function(){var i,r,a,s,o,l,u,c,h;return ve(this,function(d){switch(d.label){case 0:if(e==null&&(e={}),n.load==null)throw new M("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,n.load()];case 1:if(i=d.sent(),r=i.modelTopology,r.model_config!=null&&(r=r.model_config),a=e.strict==null?!0:e.strict,s=i.weightData!=null&&i.weightSpecs!=null&&a,o=In(ss(r),t,s),l=i.trainingConfig,l!=null&&o.loadTrainingConfig(l),i.userDefinedMetadata!=null&&o.setUserDefinedMetadata(i.userDefinedMetadata),!(i.weightData!=null))return[3,4];if(i.weightSpecs==null)throw new M("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");return u=D4(i.weightData,i.weightSpecs),c=u.modelWeights,h=u.optimizerWeights,o.loadWeights(c,a),o.optimizer!=null&&h.length>0?[4,o.optimizer.setWeights(h)]:[3,3];case 2:d.sent(),d.label=3;case 3:y.dispose(c),y.dispose(h.map(function(p){return p.tensor})),d.label=4;case 4:return[2,o]}})})}function D4(n,t){var e=y.io.decodeWeights(n,t),i={},r=[];return t.forEach(function(a){a.group==="optimizer"?r.push({name:a.name,tensor:e[a.name]}):i[a.name]=e[a.name]}),{modelWeights:i,optimizerWeights:r}}var md=function(n){Q(t,n);function t(e){var i=n.call(this,{inputs:[],outputs:[]})||this;if(e=e||{},i.trainable=!0,i.built=!1,i.name=e.name!=null?e.name:xo("sequential_"),e.layers!=null)for(var r=0,a=e.layers;r 0 "+("but got "+JSON.stringify(e.filters)))},t}(Lb),bd=function(n){Q(t,n);function t(e){var i=n.call(this,2,e)||this;return t.verifyArgs(e),i}return t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this);return delete e.rank,e},t.verifyArgs=function(e){if(typeof e.kernelSize!="number"&&!_h(e.kernelSize,"number",1,2))throw new M("Conv2D expects config.kernelSize to be number or number[] with "+("length 1 or 2, but received "+JSON.stringify(e.kernelSize)+"."))},t.className="Conv2D",t}(Mo);y.serialization.registerClass(bd);var Ib=function(n){Q(t,n);function t(e){var i=n.call(this,3,e)||this;return t.verifyArgs(e),i}return t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this);return delete e.rank,e},t.verifyArgs=function(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new M("Conv3D expects config.kernelSize to be number or"+(" [number, number, number], but received "+JSON.stringify(e.kernelSize)+"."))},t.className="Conv3D",t}(Mo);y.serialization.registerClass(Ib);var Ab=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;if(i.inputSpec=[new Nt({ndim:4})],i.padding!=="same"&&i.padding!=="valid")throw new M("Conv2DTranspose currently supports only padding modes 'same' "+("and 'valid', but received padding mode "+i.padding));return i}return t.prototype.build=function(e){var i;if(e=je(e),e.length!==4)throw new M("Input should have rank 4; Received input shape: "+JSON.stringify(e));var r=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[r]==null)throw new M("The channel dimension of the inputs should be defined. Found `None`.");var a=e[r],s=this.kernelSize.concat([this.filters,a]);this.kernel=this.addWeight("kernel",s,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Nt({ndim:4,axes:(i={},i[r]=a,i)})],this.built=!0},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=xe(e);if(a.shape.length!==4)throw new M("Conv2DTranspose.call() expects input tensor to be rank-4, but "+("received a tensor of rank-"+a.shape.length));var s=a.shape,o=s[0],l,u;r.dataFormat==="channelsFirst"?(l=2,u=3):(l=1,u=2);var c=s[l],h=s[u],d=r.kernelSize[0],p=r.kernelSize[1],f=r.strides[0],m=r.strides[1],g=_o(c,f,d,r.padding),v=_o(h,m,p,r.padding),b=[o,g,v,r.filters];r.dataFormat!=="channelsLast"&&(a=y.transpose(a,[0,2,3,1]));var w=y.conv2dTranspose(a,r.kernel.read(),b,r.strides,r.padding);return r.dataFormat!=="channelsLast"&&(w=y.transpose(w,[0,3,1,2])),r.bias!=null&&(w=Hn(w,r.bias.read(),r.dataFormat)),r.activation!=null&&(w=r.activation.apply(w)),w})},t.prototype.computeOutputShape=function(e){e=je(e);var i=e.slice(),r,a,s;this.dataFormat==="channelsFirst"?(r=1,a=2,s=3):(r=3,a=1,s=2);var o=this.kernelSize[0],l=this.kernelSize[1],u=this.strides[0],c=this.strides[1];return i[r]=this.filters,i[a]=_o(i[a],u,o,this.padding),i[s]=_o(i[s],c,l,this.padding),i},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this);return delete e.dilationRate,e},t.className="Conv2DTranspose",t}(bd);y.serialization.registerClass(Ab);var Q4=function(n){Q(t,n);function t(e,i){var r=n.call(this,e,i)||this;if(r.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",r.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",r.depthwiseKernel=null,r.pointwiseKernel=null,i.filters==null)throw new M("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(i.kernelInitializer!=null||i.kernelRegularizer!=null||i.kernelConstraint!=null)throw new M("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(i.padding!=null&&i.padding!=="same"&&i.padding!=="valid")throw new M("SeparableConv"+r.rank+"D supports only padding modes: "+("'same' and 'valid', but received "+JSON.stringify(i.padding)));return r.depthMultiplier=i.depthMultiplier==null?1:i.depthMultiplier,r.depthwiseInitializer=tt(i.depthwiseInitializer||r.DEFAULT_DEPTHWISE_INITIALIZER),r.depthwiseRegularizer=nt(i.depthwiseRegularizer),r.depthwiseConstraint=wt(i.depthwiseConstraint),r.pointwiseInitializer=tt(i.depthwiseInitializer||r.DEFAULT_POINTWISE_INITIALIZER),r.pointwiseRegularizer=nt(i.pointwiseRegularizer),r.pointwiseConstraint=wt(i.pointwiseConstraint),r}return t.prototype.build=function(e){var i;if(e=je(e),e.length1&&(t=n.slice(1,n.length)),n=n[0]}function r(a){return a==null||Array.isArray(a)?a:[a]}return t=r(t),e=r(e),{inputs:n,initialState:t,constants:e}}function Eb(n,t,e,i,r,a,s,o){return i===void 0&&(i=!1),s===void 0&&(s=!1),o===void 0&&(o=!1),y.tidy(function(){var l=t.shape.length;if(l<3)throw new M("Input should be at least 3D, but is "+l+"D.");var u=[1,0].concat(Sn(2,l));if(t=y.transpose(t,u),a!=null)throw new Te("The rnn() functoin of the deeplearn.js backend does not support constants yet.");s&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),r!=null&&(r=r.asType("bool").asType("float32"),r.rank===l-1&&(r=y.expandDims(r,-1)),r=y.transpose(r,u)),i&&(t=y.reverse(t,0),r!=null&&(r=y.reverse(r,0)));var c=[],h,d=e,p=t.shape[0],f=y.unstack(t),m;r!=null&&(m=y.unstack(r));for(var g=function(S){var L=f[S],N=y.tidy(function(){return n(L,d)});if(r==null)h=N[0],d=N[1];else{var C=y.tidy(function(){var R=m[S],D=y.onesLike(R).sub(R),k=N[0].mul(R).add(d[0].mul(D)),W=d.map(function(F,P){return N[1][P].mul(R).add(F.mul(D))});return{output:k,newStates:W}});h=C.output,d=C.newStates}o&&c.push(h)},v=0;v1?Hh(r,[1,a]):r}):i.cell.stateSize>1?[Hh(r,[1,i.cell.stateSize])]:[r]})},Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable?this.cell.trainableWeights:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights},enumerable:!0,configurable:!0}),t.prototype.setFastWeightInitDuringBuild=function(e){n.prototype.setFastWeightInitDuringBuild.call(this,e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(i.numConstants=this.numConstants);var r=this.cell.getConfig();return this.getClassName()===t.className&&(i.cell={className:this.cell.getClassName(),config:r}),Kt({},r,e,i)},t.fromConfig=function(e,i,r){r===void 0&&(r={});var a=i.cell,s=In(a,r);return new e(Object.assign(i,{cell:s}))},t.className="RNN",t}(De);y.serialization.registerClass(Di);var oa=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t}(De),Sd=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.DEFAULT_ACTIVATION="tanh",i.DEFAULT_KERNEL_INITIALIZER="glorotNormal",i.DEFAULT_RECURRENT_INITIALIZER="orthogonal",i.DEFAULT_BIAS_INITIALIZER="zeros",i.units=e.units,Tt(i.units,"units"),i.activation=Ei(e.activation==null?i.DEFAULT_ACTIVATION:e.activation),i.useBias=e.useBias==null?!0:e.useBias,i.kernelInitializer=tt(e.kernelInitializer||i.DEFAULT_KERNEL_INITIALIZER),i.recurrentInitializer=tt(e.recurrentInitializer||i.DEFAULT_RECURRENT_INITIALIZER),i.biasInitializer=tt(e.biasInitializer||i.DEFAULT_BIAS_INITIALIZER),i.kernelRegularizer=nt(e.kernelRegularizer),i.recurrentRegularizer=nt(e.recurrentRegularizer),i.biasRegularizer=nt(e.biasRegularizer),i.kernelConstraint=wt(e.kernelConstraint),i.recurrentConstraint=wt(e.recurrentConstraint),i.biasConstraint=wt(e.biasConstraint),i.dropout=na([1,xi([0,e.dropout==null?0:e.dropout])]),i.recurrentDropout=na([1,xi([0,e.recurrentDropout==null?0:e.recurrentDropout])]),i.stateSize=i.units,i.dropoutMask=null,i.recurrentDropoutMask=null,i}return t.prototype.build=function(e){e=je(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){if(e=e,e.length!==2)throw new M("SimpleRNNCell expects 2 input Tensors, got "+e.length+".");var a=e[1];e=e[0];var s=i.training==null?!1:i.training;01){for(var s=[0],o=2;o1)throw new M("Can not merge tensors with different batch sizes. "+("Got tensors with shapes: "+JSON.stringify(e)+"."));for(var o=e[0]==null?null:e[0].slice(1),l=1;l1){var S=Sn(1,h).concat([0]);a.push(y.transpose(c,S)),p=!0}else a.push(c)}var L=r.mergeFunction(a),N=L.rank;if(p){if(N==null){var C=L.shape,R=C.length,v=C[R-1],b=[v].concat(C.slice(0,C.length-1));L=y.transpose(L.reshape([-1,v]),[1,0]).reshape(b)}else if(N>1){var S=[N-1].concat(Sn(0,N-1));L=y.transpose(L,S)}}return L}}else return r.mergeFunction(e)})},t.prototype.computeOutputShape=function(e){e=e;var i;e[0]==null?i=null:i=e[0].slice(1);for(var r=1;r1)throw new M("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))},t.prototype.mergeFunction=function(e){var i=this;return y.tidy(function(){return qh(e,i.axis)})},t.prototype.computeOutputShape=function(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new M("A `Concatenate` layer should be called on a list of inputs.");for(var i=e,r=i[0].slice(),a=this.axis<0?r.length+this.axis:this.axis,s=0,o=i.slice(1);s3||t.shape.length>3)throw new Te("batchDot is not implemented for tensors of 4D or higher rank yet");if(y.util.assert(n.shape.length>=2,function(){return"batchDot requires the rank of x to be >= 2, "+("but got "+n.shape.length)}),y.util.assert(n.shape.length>=2,function(){return"batchDot requires the rank of y to be >= 2, "+("but got "+t.shape.length)}),typeof e=="number"&&(e=[e,e]),n.dtype==="complex64"||t.dtype==="complex64")throw new Te("batchDot is not implemented for complex64-type Tensors yet.");var i=n.shape.length,r=t.shape.length;e==null&&(e=[i-1,r-2]);var a=e;return y.tidy(function(){var s;if(i>r){s=i-r;for(var o=[],l=0;li){s=r-i;for(var o=[],l=0;l0){var d=void 0;i>r?d=i+r-3:d=i-1;for(var p=[],l=d;l3||r.length>3)throw new Te("Dot layer does not support tensors of 4D or higher rank yet.");var a=this.interpretAxes(i,r);if(i[a[0]]!==r[a[1]])throw new M("Dimension incompatibility: "+(i[a[0]]+" !== "+r[a[1]]))},t.prototype.mergeFunction=function(e){if(e.length!==2)throw new M("A `Dot` layer must be called on exactly 2 inputs, "+("but received "+e.length+" input(s)."));var i=e[0],r=e[1],a;return Array.isArray(this.axes)?a=this.axes.map(function(s,o){return us(s,e[o].shape.length)}):a=[us(this.axes,i.shape.length),us(this.axes,r.shape.length)],this.normalize&&(i=Eo(i,a[0]),r=Eo(r,a[1])),nF(i,r,a)},t.prototype.interpretAxes=function(e,i){var r;return Array.isArray(this.axes)?r=this.axes:r=[us(this.axes,e.length),us(this.axes,i.length)],r},t.prototype.computeOutputShape=function(e){y.util.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),function(){return"A `Dot` layer should be called on a list of exactly 2 inputs."});var i=e[0].slice(),r=e[1].slice();if(i.length>3||r.length>3)throw new Te("Dot layer does not support tensors of 4D or higher rank yet.");var a=this.interpretAxes(i,r);i.splice(a[0],1),r.splice(a[1],1),r.splice(0,1);var s=i.concat(r);return s.length===1&&s.push(1),s},t.prototype.computeMask=function(e,i){return null},t.prototype.getConfig=function(){var e={axes:this.axes,normalize:this.normalize},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.className="Dot",t}(mr);y.serialization.registerClass(Jb);var Zb=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i.stddev=e.stddev,i}return t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={stddev:this.stddev};return Object.assign(i,e),i},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){r.invokeCallHook(e,i);var a=xe(e),s=function(){return To(a.shape,0,r.stddev).add(a)},o=is(s,function(){return a},i.training||!1);return o})},t.className="GaussianNoise",t}(De);y.serialization.registerClass(Zb);var Qb=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i.rate=e.rate,i}return t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={rate:this.rate};return Object.assign(i,e),i},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){r.invokeCallHook(e,i);var a=xe(e);if(r.rate>0&&r.rate<1){var s=function(){var o=Math.sqrt(r.rate/(1-r.rate));return a.mul(To(a.shape,1,o))};return is(s,function(){return a},i.training||!1)}return a})},t.className="GaussianDropout",t}(De);y.serialization.registerClass(Qb);var ew=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i.rate=e.rate,i.noiseShape=e.noiseShape,i}return t.prototype._getNoiseShape=function(e){return this.noiseShape||xe(e).shape},t.prototype.computeOutputShape=function(e){return e},t.prototype.getConfig=function(){var e=n.prototype.getConfig.call(this),i={rate:this.rate};return Object.assign(i,e),i},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){if(r.rate<1&&r.rate>0){var a=r._getNoiseShape(e),s=function(){var o=xe(e),l=1.6732632423543772,u=1.0507009873554805,c=-l*u,h=y.greaterEqual(y.randomUniform(a),r.rate);h=es(h,"float32");var d=Math.pow((1-r.rate)*(1+r.rate*Math.pow(c,2)),-.5),p=-d*c*r.rate,f=o.mul(h).add(h.add(-1).mul(c));return f.mul(d).add(p)};return is(s,function(){return xe(e)},i.training||!1)}return e})},t.className="AlphaDropout",t}(De);y.serialization.registerClass(ew);function cs(n,t,e,i,r,a){a===void 0&&(a=.001);var s;if(n.rank===2)s=y.batchNorm2d(n,t,e,i,r,a);else if(n.rank===3)s=y.batchNorm3d(n,t,e,i,r,a);else if(n.rank===4)s=y.batchNorm4d(n,t,e,i,r,a);else throw new Te("batchNormalization is not implemented for array of rank "+n.rank+" yet");return s}function iF(n,t,e,i,r){return r===void 0&&(r=.001),y.tidy(function(){var a=y.moments(n,i),s=a.mean,o=a.variance,l=cs(n,s,o,e,t,r);return[l,s,o]})}function rF(n,t,e,i,r){return r===void 0&&(r=.001),y.tidy(function(){for(var a=y.moments(n,i),s=a.mean,o=a.variance,l=[],u=0,c=Sn(0,n.rank);u=0?this.axis:this.axis+e.length,a=e[r];if(a==null)throw new M("Axis "+r+" of input tensor should have a defined dimension but the layer received an input with shape "+(JSON.stringify(e)+"."));this.inputSpec=[new Nt({ndim:e.length,axes:(i={},i[r]=a,i)})];var s=[a];this.scale&&(this.gamma=this.addWeight("gamma",s,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",s,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",s,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",s,null,this.movingVarianceInitializer,null,!1),this.built=!0},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=i.training==null?!1:i.training,s=xe(e),o=s.shape,l=o.length,u=Sn(0,l),c=r.axis>=0?r.axis:r.axis+l;u.splice(c,1);var h=ur(1,l);h[c]=o[c];var d=u.slice();d.sort();var p=!y.util.arraysEqual(d,Sn(0,l).slice(0,l-1)),f=function(){if(p){var L=r.movingMean.read().reshape(h),N=r.movingVariance.read().reshape(h),C=r.center?r.beta.read().reshape(h):null,R=r.scale?r.gamma.read().reshape(h):null;return cs(s,L,N,C,R,r.epsilon)}else return cs(s,r.movingMean.read(),r.movingVariance.read(),r.beta==null?null:r.beta.read(),r.gamma==null?null:r.gamma.read(),r.epsilon)};if(!a)return f();var m=aF(s,r.gamma.read(),r.beta.read(),u,r.epsilon),g=m[0],v=m[1],b=m[2],w=function(L,N,C){y.tidy(function(){var R=1-C,D=L.read(),k=D.sub(N).mul(R);L.write(D.sub(k))})},S=function(){w(r.movingMean,v,r.momentum),w(r.movingVariance,b,r.momentum)};return S(),g})},t.prototype.getConfig=function(){var e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:st(this.betaInitializer),gammaInitializer:st(this.gammaInitializer),movingMeanInitializer:st(this.movingMeanInitializer),movingVarianceInitializer:st(this.movingVarianceInitializer),betaRegularizer:Ke(this.betaRegularizer),gammaRegularizer:Ke(this.gammaRegularizer),betaConstraint:bt(this.betaConstraint),gammaConstraint:bt(this.gammaConstraint)},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.className="BatchNormalization",t}(De);y.serialization.registerClass(tw);var nw=function(n){Q(t,n);function t(e){var i=this;if(e==null&&(e={}),i=n.call(this,e)||this,i.axis=e.axis==null?-1:e.axis,typeof i.axis=="number"){if(!Number.isInteger(i.axis))throw new Error("Expected axis to be an integer, but received "+i.axis)}else if(Array.isArray(i.axis))for(var r=0,a=i.axis;r=i)throw new Error("Invalid axis: "+o)}if(this.axis.length!==Ti(this.axis).length)throw new Error("Found duplicate axes in: "+this.axis);var l=this.axis.map(function(c){return e[c]}),u=!0;this.scale?this.gamma=this.addWeight("gamma",l,"float32",this.gammaInitializer,this.gammaRegularizer,u):this.gamma=null,this.center?this.beta=this.addWeight("beta",l,"float32",this.betaInitializer,this.betaRegularizer,u):this.beta=null,this.built=!0},t.prototype.call=function(e,i){var r=this,a=xe(e),s=a.shape,o=s.length;return y.tidy(function(){for(var l=!0,u=y.moments(a,r.axis,l),c=u.mean,h=u.variance,d=ur(1,o),p=0,f=r.axis;p=0?i=e[2]+this.padding[0][0]+this.padding[0][1]:i=null,e[3]!=null&&e[3]>=0?r=e[3]+this.padding[1][0]+this.padding[1][1]:r=null,[e[0],e[1],i,r]):(e[1]!=null&&e[1]>=0?i=e[1]+this.padding[0][0]+this.padding[0][1]:i=null,e[2]!=null&&e[2]>=0?r=e[2]+this.padding[1][0]+this.padding[1][1]:r=null,[e[0],i,r,e[3]])},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){return sF(xe(e),r.padding,r.dataFormat)})},t.prototype.getConfig=function(){var e={padding:this.padding,dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.className="ZeroPadding2D",t}(De);y.serialization.registerClass(iw);function Vo(n,t,e,i,r,a){return y.tidy(function(){ht(r),py(a),an(i),e==null&&(e=[1,1]),i==null&&(i="valid"),r==null&&(r=wn()),a==null&&(a="max"),n=yd(n,r);var s,o=i==="same"?"same":"valid";return a==="max"?s=y.maxPool(n,t,e,o):s=y.avgPool(n,t,e,o),r==="channelsFirst"&&(s=y.transpose(s,[0,3,1,2])),s})}function rw(n,t,e,i,r,a){return y.tidy(function(){ht(r),py(a),an(i),e==null&&(e=[1,1,1]),i==null&&(i="valid"),r==null&&(r=wn()),a==null&&(a="max"),n=wb(n,r);var s,o=i==="same"?"same":"valid";return a==="max"?s=y.maxPool3d(n,t,e,o):s=y.avgPool3d(n,t,e,o),r==="channelsFirst"&&(s=y.transpose(s,[0,4,1,2,3])),s})}var aw=function(n){Q(t,n);function t(e){var i=this;if(e.poolSize==null&&(e.poolSize=2),i=n.call(this,e)||this,typeof e.poolSize=="number")i.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")i.poolSize=e.poolSize;else throw new M("poolSize for 1D convolutional layer must be a number or an Array of a single number, but received "+(""+JSON.stringify(e.poolSize)));if(Tt(i.poolSize,"poolSize"),e.strides==null)i.strides=i.poolSize;else if(typeof e.strides=="number")i.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")i.strides=e.strides;else throw new M("strides for 1D convolutional layer must be a number or an Array of a single number, but received "+(""+JSON.stringify(e.strides)));return Tt(i.strides,"strides"),i.padding=e.padding==null?"valid":e.padding,an(i.padding),i.inputSpec=[new Nt({ndim:3})],i}return t.prototype.computeOutputShape=function(e){e=je(e);var i=An(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],i,e[2]]},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){r.invokeCallHook(e,i),e=ts(xe(e),2);var a=r.poolingFunction(xe(e),[r.poolSize[0],1],[r.strides[0],1],r.padding,"channelsLast");return y.squeeze(a,[2])})},t.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),sw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),an(a),Vo(e,i,r,a,s,"max")},t.className="MaxPooling1D",t}(aw);y.serialization.registerClass(sw);var ow=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),an(a),Vo(e,i,r,a,s,"avg")},t.className="AveragePooling1D",t}(aw);y.serialization.registerClass(ow);var lw=function(n){Q(t,n);function t(e){var i=this;if(e.poolSize==null&&(e.poolSize=[2,2]),i=n.call(this,e)||this,i.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)i.strides=i.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new M("If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length "+(e.strides.length+"."));i.strides=e.strides}else i.strides=[e.strides,e.strides];return Tt(i.poolSize,"poolSize"),Tt(i.strides,"strides"),i.padding=e.padding==null?"valid":e.padding,i.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,ht(i.dataFormat),an(i.padding),i.inputSpec=[new Nt({ndim:4})],i}return t.prototype.computeOutputShape=function(e){e=je(e);var i=this.dataFormat==="channelsFirst"?e[2]:e[1],r=this.dataFormat==="channelsFirst"?e[3]:e[2];return i=An(i,this.poolSize[0],this.padding,this.strides[0]),r=An(r,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],i,r]:[e[0],i,r,e[3]]},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){return r.invokeCallHook(e,i),r.poolingFunction(xe(e),r.poolSize,r.strides,r.padding,r.dataFormat)})},t.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),uw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),an(a),Vo(e,i,r,a,s,"max")},t.className="MaxPooling2D",t}(lw);y.serialization.registerClass(uw);var cw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),an(a),Vo(e,i,r,a,s,"avg")},t.className="AveragePooling2D",t}(lw);y.serialization.registerClass(cw);var hw=function(n){Q(t,n);function t(e){var i=this;if(e.poolSize==null&&(e.poolSize=[2,2,2]),i=n.call(this,e)||this,i.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)i.strides=i.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new M("If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length "+(e.strides.length+"."));i.strides=e.strides}else i.strides=[e.strides,e.strides,e.strides];return Tt(i.poolSize,"poolSize"),Tt(i.strides,"strides"),i.padding=e.padding==null?"valid":e.padding,i.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,ht(i.dataFormat),an(i.padding),i.inputSpec=[new Nt({ndim:5})],i}return t.prototype.computeOutputShape=function(e){e=je(e);var i=this.dataFormat==="channelsFirst"?e[2]:e[1],r=this.dataFormat==="channelsFirst"?e[3]:e[2],a=this.dataFormat==="channelsFirst"?e[4]:e[3];return i=An(i,this.poolSize[0],this.padding,this.strides[0]),r=An(r,this.poolSize[1],this.padding,this.strides[1]),a=An(a,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],i,r,a]:[e[0],i,r,a,e[4]]},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){return r.invokeCallHook(e,i),r.poolingFunction(xe(e),r.poolSize,r.strides,r.padding,r.dataFormat)})},t.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),dw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),an(a),rw(e,i,r,a,s,"max")},t.className="MaxPooling3D",t}(hw);y.serialization.registerClass(dw);var pw=function(n){Q(t,n);function t(e){return n.call(this,e)||this}return t.prototype.poolingFunction=function(e,i,r,a,s){return ht(s),an(a),rw(e,i,r,a,s,"avg")},t.className="AveragePooling3D",t}(hw);y.serialization.registerClass(pw);var fw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.inputSpec=[new Nt({ndim:3})],i}return t.prototype.computeOutputShape=function(e){return[e[0],e[2]]},t.prototype.call=function(e,i){throw new Te},t}(De),mw=function(n){Q(t,n);function t(e){return n.call(this,e||{})||this}return t.prototype.call=function(e,i){return y.tidy(function(){var r=xe(e);return y.mean(r,1)})},t.className="GlobalAveragePooling1D",t}(fw);y.serialization.registerClass(mw);var gw=function(n){Q(t,n);function t(e){return n.call(this,e||{})||this}return t.prototype.call=function(e,i){return y.tidy(function(){var r=xe(e);return y.max(r,1)})},t.className="GlobalMaxPooling1D",t}(fw);y.serialization.registerClass(gw);var vw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,ht(i.dataFormat),i.inputSpec=[new Nt({ndim:4})],i}return t.prototype.computeOutputShape=function(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]},t.prototype.call=function(e,i){throw new Te},t.prototype.getConfig=function(){var e={dataFormat:this.dataFormat},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t}(De),yw=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=xe(e);return r.dataFormat==="channelsLast"?y.mean(a,[1,2]):y.mean(a,[2,3])})},t.className="GlobalAveragePooling2D",t}(vw);y.serialization.registerClass(yw);var bw=function(n){Q(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.call=function(e,i){var r=this;return y.tidy(function(){var a=xe(e);return r.dataFormat==="channelsLast"?y.max(a,[1,2]):y.max(a,[2,3])})},t.className="GlobalMaxPooling2D",t}(vw);y.serialization.registerClass(bw);var ww=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.layer=e.layer,i}return t.prototype.build=function(e){this.built=!0},Object.defineProperty(t.prototype,"trainable",{get:function(){return this.layer!=null?this.layer.trainable:!1},set:function(e){this.layer!=null&&(this.layer.trainable=e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.layer.trainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.layer.nonTrainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"updates",{get:function(){return this.layer._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"losses",{get:function(){return this.layer.losses},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.layer.getWeights()},t.prototype.setWeights=function(e){this.layer.setWeights(e)},t.prototype.getConfig=function(){var e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},i=n.prototype.getConfig.call(this);return Object.assign(e,i),e},t.prototype.setFastWeightInitDuringBuild=function(e){n.prototype.setFastWeightInitDuringBuild.call(this,e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)},t.fromConfig=function(e,i,r){r===void 0&&(r={});var a=i.layer,s=In(a,r);delete i.layer;var o={layer:s};return Object.assign(o,i),new e(o)},t}(De),Sw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this;return i.supportsMasking=!0,i}return t.prototype.build=function(e){if(e=je(e),e.length<3)throw new M("TimeDistributed layer expects an input shape >= 3D, but received "+("input shape "+JSON.stringify(e)));this.inputSpec=[{shape:e}];var i=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(i),this.layer.built=!0),n.prototype.build.call(this,e)},t.prototype.computeOutputShape=function(e){e=je(e);var i=[e[0]].concat(e.slice(2)),r=this.layer.computeOutputShape(i),a=e[1];return[r[0],a].concat(r.slice(1))},t.prototype.call=function(e,i){var r=this;return y.tidy(function(){e=xe(e);var a=function(l,u){var c=xe(r.layer.call(l,i));return[c,[]]},s=Eb(a,e,[],!1,null,null,!1,!0),o=s[1];return o})},t.className="TimeDistributed",t}(ww);y.serialization.registerClass(Sw);function oF(n){ea(Zk,"BidirectionalMergeMode",n)}var lF="concat",Lw=function(n){Q(t,n);function t(e){var i=n.call(this,e)||this,r=e.layer.getConfig(),a={};a.className=e.layer.getClassName(),a.config=r,i.forwardLayer=In(a),r.goBackwards=!(r.goBackwards===!0);var s={};if(s.className=e.layer.getClassName(),s.config=r,i.backwardLayer=In(s),i.forwardLayer.name="forward_"+i.forwardLayer.name,i.backwardLayer.name="backward_"+i.backwardLayer.name,i.mergeMode=e.mergeMode===void 0?lF:e.mergeMode,oF(i.mergeMode),e.weights)throw new Te("weights support is not implemented for Bidirectional layer yet.");return i._stateful=e.layer.stateful,i.returnSequences=e.layer.returnSequences,i.returnState=e.layer.returnState,i.supportsMasking=!0,i._trainable=!0,i.inputSpec=e.layer.inputSpec,i.numConstants=null,i}return Object.defineProperty(t.prototype,"trainable",{get:function(){return this._trainable},set:function(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())},t.prototype.setWeights=function(e){var i=e.length,r=Math.floor(i/2);this.forwardLayer.setWeights(e.slice(0,r)),this.backwardLayer.setWeights(e.slice(r))},t.prototype.computeOutputShape=function(e){var i=this.forwardLayer.computeOutputShape(e);Array.isArray(i)&&Array.isArray(i[0])||(i=[i]),i=i;var r,a,s;return this.returnState&&(s=i.slice(1)),r=i[0],r=r,this.mergeMode==="concat"?(r[r.length-1]*=2,a=[r]):this.mergeMode==null?a=[r,r.slice()]:a=[r],this.returnState?this.mergeMode==null?a.concat(s).concat(s.slice()):[r].concat(s).concat(s.slice()):qt(a)},t.prototype.apply=function(e,i){var r=i==null?null:i.initialState,a=i==null?null:i.constants;i==null&&(i={});var s=Ob(e,r,a,this.numConstants);if(e=s.inputs,r=s.initialState,a=s.constants,Array.isArray(e)&&(r=e.slice(1),e=e[0]),(r==null||r.length===0)&&a==null)return n.prototype.apply.call(this,e,i);var o=[],l=[];if(r!=null){var u=r.length;if(u%2>0)throw new M("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");i.initialState=r,o.push.apply(o,r);var c=r.map(function(w){return new Nt({shape:w.shape})});this.forwardLayer.stateSpec=c.slice(0,u/2),this.backwardLayer.stateSpec=c.slice(u/2),l.push.apply(l,c)}if(a!=null)throw new Te("Support for constants in Bidirectional layers is not implemented yet.");for(var h=o[0]instanceof Ln,d=0,p=o;dt}var Rw=function(n){Q(t,n);function t(e){var i=n.call(this)||this;if(e==null&&(e={}),e.restoreBestWeights)throw new Te("restoreBestWeights = True is not implemented in EarlyStopping yet.");return i.monitor=e.monitor||"val_loss",i.minDelta=Math.abs(e.minDelta||0),i.patience=e.patience||0,i.verbose=e.verbose||0,i.mode=e.mode||"auto",i.baseline=e.baseline,["auto","min","max"].indexOf(i.mode)===-1&&(console.warn("EarlyStopping mode '"+i.mode+"' is invalid. Falling back to mode 'auto'."),i.mode="auto"),i.mode==="min"?i.monitorFunc=qo:i.mode==="max"||i.monitor.indexOf("acc")!==-1?i.monitorFunc=Cw:i.monitorFunc=qo,i.monitorFunc===qo&&(i.minDelta*=-1),i}return t.prototype.onTrainBegin=function(e){return Se(this,void 0,void 0,function(){return ve(this,function(i){return this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===qo?Infinity:-Infinity,[2]})})},t.prototype.onEpochEnd=function(e,i){return Se(this,void 0,void 0,function(){var r;return ve(this,function(a){switch(a.label){case 0:return[4,Ci(i)];case 1:return a.sent(),r=this.getMonitorValue(i),r==null?[2]:(this.monitorFunc(r-this.minDelta,this.best)?(this.best=r,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)),[2])}})})},t.prototype.onTrainEnd=function(e){return Se(this,void 0,void 0,function(){return ve(this,function(i){return this.stoppedEpoch>0&&this.verbose&&console.log("Epoch "+this.stoppedEpoch+": early stopping."),[2]})})},t.prototype.getMonitorValue=function(e){e==null&&(e={});var i=e[this.monitor];return i==null&&console.warn("Metric for EarlyStopping "+this.monitor+" is not available. "+("Available metrics are: "+Object.keys(e))),i},t}(xw);function _W(n){return new Rw(n)}var MW={earlyStopping:_W};Xe.Callback=xw;Xe.CallbackList=zy;Xe.CustomCallback=_y;Xe.EarlyStopping=Rw;Xe.History=Py;Xe.InputSpec=Nt;Xe.LayerVariable=ky;Xe.LayersModel=Ri;Xe.RNN=Di;Xe.Sequential=md;Xe.SymbolicTensor=Ln;Xe.callbacks=MW;Xe.constraints=Kk;Xe.initializers=C3;Xe.input=ub;Xe.layers=yW;Xe.loadLayersModel=W4;Xe.metrics=FW;Xe.model=k4;Xe.models=WW;Xe.registerCallbackConstructor=U4;Xe.regularizers=PW;Xe.sequential=F4;Xe.version_layers=ud});var Gw=Le(gr=>{"use strict";Object.defineProperty(gr,"__esModule",{value:!0});var B=lr();var Ew=Object.assign||function(t){for(var e,i=1,r=arguments.length;i0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]0?Object.keys(h).forEach(function(g){var v=si(g)[0],b=l[v];b&&(b.signatureKey=h[g],u.push(b))}):u=a;var f={};t.library!=null&&t.library.function!=null&&(f=t.library.function.reduce(function(g,v){return g[v.signature.name]=i.mapFunction(v),g},{}));var m={nodes:l,inputs:u,outputs:c,weights:s,placeholders:a,signature:e,functions:f};return o.length>0&&(m.initNodes=o),m},n.prototype.mapSignatureEntries=function(t){return Object.keys(t||{}).reduce(function(e,i){return e[t[i].name]=i,e},{})},n.prototype.mapNode=function(t){var e=kw(t.op)||this.opMappers[t.op]||{};t.attr==null&&(t.attr={});var i={name:t.name,op:t.op,category:e.category,inputNames:(t.input||[]).map(function(r){return r.startsWith("^")?r.substr(1):r}),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:t.attr};return e.inputs!=null&&(i.inputParams=e.inputs.reduce(function(r,a){return r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r},{})),e.attrs!=null&&(i.attrParams=e.attrs.reduce(function(r,a){var s=a.type,o=void 0;switch(a.type){case"string":o=Rd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Rd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":o=Bd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Bd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":o=Ed(t.attr,a.tfName,a.defaultValue||0),o===void 0&&!!a.tfDeprecatedName&&(o=Ed(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":o=Ud(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Ud(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":o=Od(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Od(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":o=Pd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Pd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":o=Wd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Wd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":o=zd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=zd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":o=kd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=kd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":o=Fd(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Fd(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":o=Fw(t.attr,a.tfName,a.defaultValue),o===void 0&&!!a.tfDeprecatedName&&(o=Fw(t.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error("Unsupported param type: "+a.type+" for op: "+t.op)}return r[a.name]={value:o,type:s},r},{})),i},n.prototype.mapFunction=function(t){var e=this,i=t.nodeDef,r=[],a=[],s={};i!=null&&(s=i.reduce(function(d,p){return d[p.name]=e.mapNode(p),p.op==="Const"&&a.push(d[p.name]),d},{}));var o=[],l=[];t.signature.inputArg.forEach(function(d){var p=si(d.name)[0],f={name:p,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:Dd(d.type),type:"dtype"}},children:[]};f.signatureKey=d.name,o.push(f),s[p]=f});var u=Object.keys(s);u.forEach(function(d){var p=s[d];p.inputNames.forEach(function(f){var m=si(f)[0];p.inputs.push(s[m]),s[m].children.push(p)})});var c=t.ret;t.signature.outputArg.forEach(function(d){var p=si(c[d.name]),f=p[0],m=p[1],g=s[f];g!=null&&(g.defaultOutput=m,l.push(g))});var h=this.mapArgsToSignature(t);return{nodes:s,inputs:o,outputs:l,weights:a,placeholders:r,signature:h}},n.prototype.mapArgsToSignature=function(t){var e=this;return{methodName:t.signature.name,inputs:t.signature.inputArg.reduce(function(i,r){return i[r.name]=e.mapArgToTensorInfo(r),i},{}),outputs:t.signature.outputArg.reduce(function(i,r){return i[r.name]=e.mapArgToTensorInfo(r,t.ret),i},{})}},n.prototype.mapArgToTensorInfo=function(t,e){var i=t.name;return e!=null&&(i=e[i]),{name:i,dtype:t.type}},n}();function IU(n){var t=B.env().global;if(typeof t.atob!="undefined")return t.atob(n);if(typeof Buffer!="undefined")return new Buffer(n,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function Uw(n,t){var e=Array.isArray(n)?String.fromCharCode.apply(null,n):IU(n);return t?e:e.toLowerCase()}function Rd(n,t,e,i){i===void 0&&(i=!1);var r=n[t];return r!=null?Uw(r.s,i):e}function Od(n,t,e){var i=n[t];return i?i.b:e}function Ed(n,t,e){var i=n[t]||{},r=i.i!=null?i.i:i.f!=null?i.f:e;return typeof r=="number"?r:parseInt(r,10)}function Dd(n){typeof n=="string"&&(n=Nn[n]);switch(n){case Nn.DT_FLOAT:return"float32";case Nn.DT_INT32:case Nn.DT_INT64:case Nn.DT_INT8:case Nn.DT_UINT8:return"int32";case Nn.DT_BOOL:return"bool";case Nn.DT_DOUBLE:return"float32";case Nn.DT_STRING:return"string";default:return null}}function Fw(n,t,e){var i=n[t];return i&&i.func?i.func.name:e}function kd(n,t,e){var i=n[t];return i&&i.type?Dd(i.type):e}function Fd(n,t,e){var i=n[t];return i&&i.list&&i.list.type?i.list.type.map(function(r){return Dd(r)}):e}function Bw(n){return n.unknownRank?void 0:n.dim!=null?n.dim.map(function(t){return typeof t.size=="number"?t.size:parseInt(t.size,10)}):[]}function Wd(n,t,e){var i=n[t];return i&&i.shape?Bw(i.shape):e}function Ud(n,t,e){var i=n[t];return i?((i.list.f&&i.list.f.length?i.list.f:i.list.i)||[]).map(function(r){return typeof r=="number"?r:parseInt(r,10)}):e}function Bd(n,t,e,i){i===void 0&&(i=!1);var r=n[t];return r&&r.list&&r.list.s?r.list.s.map(function(a){return Uw(a,i)}):e}function zd(n,t,e){var i=n[t];return i&&i.list&&i.list.shape?i.list.shape.map(function(r){return Bw(r)}):e}function Pd(n,t,e){var i=n[t];return i&&i.list&&i.list.b?i.list.b:e}var AU=function(){function n(t,e,i){var r=this;this.node=t,this.tensorMap=e,this.context=i,this.inputs=[],this.attrs={},this.inputs=t.inputNames.map(function(a){return r.getInput(a)}),t.rawAttrs!=null&&(this.attrs=Object.keys(t.rawAttrs).reduce(function(a,s){return a[s]=r.getAttr(s),a},{}))}return n.prototype.getInput=function(t){return Gt(t,this.tensorMap,this.context)},n.prototype.getAttr=function(t,e){var i=this.node.rawAttrs[t];if(i.tensor!=null)return Gt(t,this.tensorMap,this.context);if(i.i!=null||i.f!=null)return Ed(this.node.rawAttrs,t,e);if(i.s!=null)return Rd(this.node.rawAttrs,t,e);if(i.b!=null)return Od(this.node.rawAttrs,t,e);if(i.shape!=null)return Wd(this.node.rawAttrs,t,e);if(i.type!=null)return kd(this.node.rawAttrs,t,e);if(i.list!=null){if(i.list.i!=null||i.list.f!=null)return Ud(this.node.rawAttrs,t,e);if(i.list.s!=null)return Bd(this.node.rawAttrs,t,e);if(i.list.shape!=null)return zd(this.node.rawAttrs,t,e);if(i.list.b!=null)return Pd(this.node.rawAttrs,t,e);if(i.list.type!=null)return Fd(this.node.rawAttrs,t,e)}return e},n}();var TU=function(n,t,e){switch(n.op){case"BiasAdd":case"AddV2":case"Add":return[B.add(A("a",n,t,e),A("b",n,t,e))];case"AddN":return[B.addN(A("tensors",n,t,e))];case"FloorMod":case"Mod":return[B.mod(A("a",n,t,e),A("b",n,t,e))];case"Mul":return[B.mul(A("a",n,t,e),A("b",n,t,e))];case"RealDiv":case"Div":return[B.div(A("a",n,t,e),A("b",n,t,e))];case"DivNoNan":return[B.divNoNan(A("a",n,t,e),A("b",n,t,e))];case"FloorDiv":return[B.floorDiv(A("a",n,t,e),A("b",n,t,e))];case"Sub":return[B.sub(A("a",n,t,e),A("b",n,t,e))];case"Minimum":return[B.minimum(A("a",n,t,e),A("b",n,t,e))];case"Maximum":return[B.maximum(A("a",n,t,e),A("b",n,t,e))];case"Pow":return[B.pow(A("a",n,t,e),A("b",n,t,e))];case"SquaredDifference":return[B.squaredDifference(A("a",n,t,e),A("b",n,t,e))];default:throw TypeError("Node type "+n.op+" is not implemented")}};var NU=function(n,t,e){switch(n.op){case"Abs":case"ComplexAbs":return[B.abs(A("x",n,t,e))];case"Acos":return[B.acos(A("x",n,t,e))];case"Acosh":return[B.acosh(A("x",n,t,e))];case"Asin":return[B.asin(A("x",n,t,e))];case"Asinh":return[B.asinh(A("x",n,t,e))];case"Atan":return[B.atan(A("x",n,t,e))];case"Atan2":return[B.atan2(A("x",n,t,e),A("y",n,t,e))];case"Atanh":return[B.atanh(A("x",n,t,e))];case"Ceil":return[B.ceil(A("x",n,t,e))];case"Complex":return[B.complex(A("real",n,t,e),A("imag",n,t,e))];case"Cos":return[B.cos(A("x",n,t,e))];case"Cosh":return[B.cosh(A("x",n,t,e))];case"Elu":return[B.elu(A("x",n,t,e))];case"Erf":return[B.erf(A("x",n,t,e))];case"Exp":return[B.exp(A("x",n,t,e))];case"Expm1":return[B.expm1(A("x",n,t,e))];case"Floor":return[B.floor(A("x",n,t,e))];case"Log":return[B.log(A("x",n,t,e))];case"Log1p":return[B.log1p(A("x",n,t,e))];case"Imag":return[B.imag(A("x",n,t,e))];case"Neg":return[B.neg(A("x",n,t,e))];case"Reciprocal":return[B.reciprocal(A("x",n,t,e))];case"Real":return[B.real(A("x",n,t,e))];case"Relu":return[B.relu(A("x",n,t,e))];case"Round":return[B.round(A("x",n,t,e))];case"Selu":return[B.selu(A("x",n,t,e))];case"Sigmoid":return[B.sigmoid(A("x",n,t,e))];case"Sin":return[B.sin(A("x",n,t,e))];case"Sign":return[B.sign(A("x",n,t,e))];case"Sinh":return[B.sinh(A("x",n,t,e))];case"Softplus":return[B.softplus(A("x",n,t,e))];case"Sqrt":return[B.sqrt(A("x",n,t,e))];case"Square":return[B.square(A("x",n,t,e))];case"Tanh":return[B.tanh(A("x",n,t,e))];case"Tan":return[B.tan(A("x",n,t,e))];case"Relu6":case"ClipByValue":return[B.clipByValue(A("x",n,t,e),A("clipValueMin",n,t,e),A("clipValueMax",n,t,e))];case"Rsqrt":return[B.rsqrt(Gt(n.inputNames[0],t,e))];case"Prod":return[B.prod(A("x",n,t,e),A("axes",n,t,e))];case"LeakyRelu":return[B.leakyRelu(A("x",n,t,e),A("alpha",n,t,e))];case"Prelu":return[B.prelu(A("x",n,t,e),A("alpha",n,t,e))];default:throw TypeError("Node type "+n.op+" is not implemented")}};function fn(n,t,e){e===void 0&&(e=""),B.util.assert(xU(n,t),function(){return e+(" Shapes "+n+" and "+t+" must match")})}function xU(n,t){if(n.length!==t.length)return!1;for(var e=0;e=this.size())throw new Error("Tried to read from index "+t+", but array size is: "+this.size());var e=this.tensors[t];if(e.cleared)throw new Error("TensorArray "+this.name+": Could not read index "+t+" twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).");return this.clearAfterRead&&(e.cleared=!0),e.read=!0,e.tensor},n.prototype.readMany=function(t){var e=this;return t.map(function(i){return e.read(i)})},n.prototype.write=function(t,e){if(this.closed_)throw new Error("TensorArray "+this.name+" has already been closed.");if(t<0||!this.dynamicSize&&t>=this.maxSize)throw new Error("Tried to write to index "+t+", but array is not resizeable and size is: "+this.maxSize);var i=this.tensors[t]||{};if(e.dtype!==this.dtype)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+`, + because the value dtype is `+e.dtype+", but TensorArray dtype is "+this.dtype+".");if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=e.shape),fn(this.elementShape,e.shape,"TensorArray "+this.name+": Could not write to TensorArray index "+t+"."),i.read)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+", because it has already been read.");if(i.written)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+", because it has already been written.");i.tensor=e,B.keep(e),i.written=!0,this.tensors[t]=i},n.prototype.writeMany=function(t,e){var i=this;if(t.length!==e.length)throw new Error("TensorArray "+this.name+": could not write multiple tensors,"+("because the index size: "+t.length+" is not the same as tensors size: "+e.length+"."));t.forEach(function(r,a){return i.write(r,e[a])})},n.prototype.gather=function(t,e){if(!!e&&e!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but gather requested dtype "+e);if(t)t=t.slice(0,this.size());else{t=[];for(var i=0;i=this.maxSize)throw new Error("Max index must be < array size ("+i+" vs. "+this.maxSize+")");this.writeMany(t,B.unstack(e,0))},n.prototype.split=function(t,e){var i=this;if(e.dtype!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but tensor has dtype "+e.dtype);var r=0,a=t.map(function(c){return r+=c,r});if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - `+r+", and tensor's shape is: "+e.shape);if(!this.dynamicSize&&t.length!==this.maxSize)throw new Error("TensorArray's size is not equal to the size of lengths ("+this.maxSize+" vs. "+t.length+"), and the TensorArray is not marked as dynamically resizeable");var s=r===0?0:e.size/r,o=[];B.tidy(function(){e=B.reshape(e,[1,r,s]);for(var c=0;cthis.maxNumElements)throw new Error("TensorListResize input size "+t+" is greater maxNumElement "+this.maxNumElements+".");this.tensors.length=t},n.prototype.getItem=function(t,e,i){if(i!==this.elementDtype)throw new Error("Invalid data types; op elements "+i+", but list elements "+this.elementDtype);if(t<0||t>this.tensors.length)throw new Error("Trying to access element "+t+" in a list with "+this.tensors.length+" elements.");if(this.tensors[t]==null)throw new Error("element at index "+t+" is null.");return mn(this.tensors[t].shape,e,"TensorList shape mismatch: "),this.tensors[t]},n.prototype.setItem=function(t,e){if(e.dtype!==this.elementDtype)throw new Error("Invalid data types; op elements "+e.dtype+", but list elements "+this.elementDtype);if(t<0||this.maxNumElements!==-1&&t>=this.maxNumElements)throw new Error("Trying to set element "+t+" in a list with max "+this.maxNumElements+" elements.");mn(this.elementShape,e.shape,"TensorList shape mismatch: "),B.keep(e),this.tensors[t]=e},n.prototype.gather=function(t,e,i){var r=this;if(e!==this.elementDtype)throw new Error("Invalid data types; op elements "+e+", but list elements "+this.elementDtype);return mn(this.elementShape,i,"TensorList shape mismatch: "),t=t.slice(0,this.size()),t.length===0?B.tensor([],[0].concat(this.elementShape)):B.tidy(function(){var a=t.map(function(s){return B.reshape(r.tensors[s],i)});return B.stack(a,0)})},n.prototype.concat=function(t,e){var i=this;if(!!t&&t!==this.elementDtype)throw new Error("TensorList dtype is "+this.elementDtype+" but concat requested dtype "+t);return mn(this.elementShape,e,"TensorList shape mismatch: "),this.size()===0?B.tensor([],[0].concat(this.elementShape)):B.tidy(function(){var r=i.tensors.map(function(a){return B.reshape(a,e)});return B.concat(r,0)})},n}();function RU(n,t,e){var i=n.dtype;if(n.shape.length<1)throw new Error("Tensor must be at least a vector, but saw shape: "+n.shape);if(n.dtype!==e)throw new Error("Invalid data types; op elements "+n.dtype+", but list elements "+e);var r=n.shape.slice(1);mn(r,t,"TensorList shape mismatch: ");var a=B.unstack(n);return new jo(a,t,i)}function OU(n,t,e){return new jo([],n,t,e)}function EU(n,t,e,i){if(t.length!==n.shape[0])throw new Error("Expected len(indices) == tensor.shape[0], but saw: "+t.length+" vs. "+n.shape[0]);var r=Math.max.apply(Math,t);if(i!=null&&i!==-1&&r>=i)throw new Error("Max index must be < array size ("+r+" vs. "+i+")");var a=new jo([],e,n.dtype,i),s=B.unstack(n,0);return t.forEach(function(o,l){a.setItem(o,s[l])}),a}function DU(n,t,e){var i=0,r=t.map(function(u){return i+=u,i});if(i!==n.shape[0])throw new Error(`Expected sum of lengths to be equal to + `+r+", and tensor's shape is: "+e.shape);if(!this.dynamicSize&&t.length!==this.maxSize)throw new Error("TensorArray's size is not equal to the size of lengths ("+this.maxSize+" vs. "+t.length+"), and the TensorArray is not marked as dynamically resizeable");var s=r===0?0:e.size/r,o=[];B.tidy(function(){e=B.reshape(e,[1,r,s]);for(var c=0;cthis.maxNumElements)throw new Error("TensorListResize input size "+t+" is greater maxNumElement "+this.maxNumElements+".");this.tensors.length=t},n.prototype.getItem=function(t,e,i){if(i!==this.elementDtype)throw new Error("Invalid data types; op elements "+i+", but list elements "+this.elementDtype);if(t<0||t>this.tensors.length)throw new Error("Trying to access element "+t+" in a list with "+this.tensors.length+" elements.");if(this.tensors[t]==null)throw new Error("element at index "+t+" is null.");return fn(this.tensors[t].shape,e,"TensorList shape mismatch: "),this.tensors[t]},n.prototype.setItem=function(t,e){if(e.dtype!==this.elementDtype)throw new Error("Invalid data types; op elements "+e.dtype+", but list elements "+this.elementDtype);if(t<0||this.maxNumElements!==-1&&t>=this.maxNumElements)throw new Error("Trying to set element "+t+" in a list with max "+this.maxNumElements+" elements.");fn(this.elementShape,e.shape,"TensorList shape mismatch: "),B.keep(e),this.tensors[t]=e},n.prototype.gather=function(t,e,i){var r=this;if(e!==this.elementDtype)throw new Error("Invalid data types; op elements "+e+", but list elements "+this.elementDtype);return fn(this.elementShape,i,"TensorList shape mismatch: "),t=t.slice(0,this.size()),t.length===0?B.tensor([],[0].concat(this.elementShape)):B.tidy(function(){var a=t.map(function(s){return B.reshape(r.tensors[s],i)});return B.stack(a,0)})},n.prototype.concat=function(t,e){var i=this;if(!!t&&t!==this.elementDtype)throw new Error("TensorList dtype is "+this.elementDtype+" but concat requested dtype "+t);return fn(this.elementShape,e,"TensorList shape mismatch: "),this.size()===0?B.tensor([],[0].concat(this.elementShape)):B.tidy(function(){var r=i.tensors.map(function(a){return B.reshape(a,e)});return B.concat(r,0)})},n}();function RU(n,t,e){var i=n.dtype;if(n.shape.length<1)throw new Error("Tensor must be at least a vector, but saw shape: "+n.shape);if(n.dtype!==e)throw new Error("Invalid data types; op elements "+n.dtype+", but list elements "+e);var r=n.shape.slice(1);fn(r,t,"TensorList shape mismatch: ");var a=B.unstack(n);return new jo(a,t,i)}function OU(n,t,e){return new jo([],n,t,e)}function EU(n,t,e,i){if(t.length!==n.shape[0])throw new Error("Expected len(indices) == tensor.shape[0], but saw: "+t.length+" vs. "+n.shape[0]);var r=Math.max.apply(Math,t);if(i!=null&&i!==-1&&r>=i)throw new Error("Max index must be < array size ("+r+" vs. "+i+")");var a=new jo([],e,n.dtype,i),s=B.unstack(n,0);return t.forEach(function(o,l){a.setItem(o,s[l])}),a}function DU(n,t,e){var i=0,r=t.map(function(u){return i+=u,i});if(i!==n.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - `+i+", and tensor's shape is: "+n.shape);for(var a=i===0?0:n.size/i,s=B.tidy(function(){var u=[];n=B.reshape(n,[1,i,a]);for(var c=0;c1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")},n.prototype.nextIteration=function(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;var t=Object.assign({},this.contexts[this.contexts.length-1]);t.iterationId+=1,t.id=this.lastId,this.contexts.splice(-1,1,t),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")},n.prototype.getWeight=function(t){return this.weightMap[t]},n.prototype.addTensorArray=function(t){this.tensorArrayMap[t.id]=t},n.prototype.getTensorArray=function(t){return this.tensorArrayMap[t]},n.prototype.addTensorList=function(t){this.tensorListMap[t.id]=t},n.prototype.getTensorList=function(t){return this.tensorListMap[t]},n.prototype.dispose=function(t){for(var e in this.tensorArrayMap)this.tensorArrayMap[e].clearAndClose(t);for(var e in this.tensorListMap)this.tensorListMap[e].clearAndClose(t)},n}();function Hw(n,t,e,i){var r=new Set,a=[],s=null,o=null,l=new Set,u=Object.keys(n).map(function(p){return Zt(p)[0]}),c=[];i!=null&&(c=i.map(function(p){return Zt(p.name)[0]}));for(var h=t.slice();h.length>0;){var d=h.pop();if((Mw(d)||$U(d))&&(s==null&&(s=d,o=s.children.map(function(p){return p.name}).filter(function(p){return r.has(p)}))),r.add(d.name),e[d.name]!=null)continue;if(u.indexOf(d.name)!==-1)continue;if(c.indexOf(d.name)!==-1)continue;if(d.inputs.length===0){a.push(d.name);continue}d.inputs.forEach(function(p){if(l.has(p.name))return;l.add(p.name),h.push(p)})}return{inputs:n,outputs:t,usedNodes:r,missingInputs:a,dynamicNode:s,syncInputs:o}}function XU(n,t,e){var i=e.usedNodes,r=e.inputs,a=[],s=Object.keys(r).map(function(h){return Zt(h)[0]}).map(function(h){return n.nodes[h]}),o=n.initNodes;s.forEach(function(h){i.has(h.name)&&a.push(h)}),n.weights.forEach(function(h){i.has(h.name)&&a.push(h)}),o!=null&&o.forEach(function(h){i.has(h.name)&&a.push(h)});for(var l=new Set,u=[];a.length>0;){var c=a.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(function(h){!l.has(h.name)&&i.has(h.name)&&h.inputs.every(function(d){return l.has(d.name)})&&a.push(h)})}return u}var JU=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],ZU=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"];function Mw(n){return JU.indexOf(n.op)>=0}function $U(n){return ZU.indexOf(n.op)>=0}var Vw=function(){function n(t,e){var i=this;this.graph=t,this.parent=e,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=t.outputs,this._inputs=t.inputs,this._initNodes=t.initNodes,this._signature=t.signature,this._functions=t.functions,t.functions!=null&&Object.keys(t.functions).forEach(function(r){i._functionExecutorMap[r]=new n(t.functions[r],i)})}return Object.defineProperty(n.prototype,"weightIds",{get:function(){return this.parent?this.parent.weightIds:this._weightIds},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"functionExecutorMap",{get:function(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"weightMap",{get:function(){return this.parent?this.parent.weightMap:this._weightMap},set:function(t){var e=Object.keys(t).map(function(i){return t[i].map(function(r){return r.id})});this._weightIds=[].concat.apply([],e),this._weightMap=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputs",{get:function(){return this._inputs.map(function(t){return{name:t.name,shape:t.attrParams.shape?t.attrParams.shape.value:void 0,dtype:t.attrParams.dtype?t.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputs",{get:function(){return this._outputs.map(function(t){return{name:t.name,shape:t.attrParams.shape?t.attrParams.shape.value:void 0,dtype:t.attrParams.dtype?t.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputNodes",{get:function(){return this._inputs.map(function(t){return t.signatureKey||t.name})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputNodes",{get:function(){return this._outputs.map(function(t){var e=t.signatureKey||t.name;return t.defaultOutput?e+":"+t.defaultOutput:e})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"functions",{get:function(){var t=this;return Object.keys(this._functions).reduce(function(e,i){return e[i]=t._functions[i].signature,e},{})},enumerable:!0,configurable:!0}),n.prototype.getCompilationKey=function(t,e){var i=t.map(function(a){return a.name}).sort(),r=e.map(function(a){return a.name}).sort();return i.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)},n.prototype.compile=function(t,e){var i=Hw(t,e,this.weightMap,this._initNodes),r=i.missingInputs,a=i.dynamicNode,s=i.syncInputs;if(a!=null)throw new Error("This execution contains the node '"+a.name+"', which has "+("the dynamic op '"+a.op+"'. Please use ")+"model.executeAsync() instead. Alternatively, to avoid the "+("dynamic ops, specify the inputs ["+s+"]"));if(r.length>0){var o=e.map(function(u){return u.name}),l=Object.keys(t);throw new Error("Cannot compute the outputs ["+o+"] from the provided inputs "+("["+l+"]. Missing the following inputs: ["+r+"]"))}return XU(this.graph,this.weightMap,i)},n.prototype.execute=function(t,e){var i=this;t=this.mapInputs(t);var r=Object.keys(t).sort();this.checkInputs(t),this.checkInputShapeAndType(t),e=this.mapOutputs(e),this.checkOutputs(e);var a=r.map(function(d){return i.graph.nodes[Zt(d)[0]]}),s=e.map(function(d){return Zt(d)[0]}),o=s.map(function(d){return i.graph.nodes[d]});o.length===0&&(o=this._outputs);var l=this.getCompilationKey(a,o),u=this.compiledMap.get(l);u==null&&(u=this.compile(t,o),this.compiledMap.set(l,u));var c={},h={};return B.tidy(function(){var d=new _w(i.weightMap,c,h,i.functionExecutorMap),p=Ew({},i.weightMap);Object.keys(t).forEach(function(w){var S=Zt(w),L=S[0],N=S[1],C=[];C[N]=t[w],p[L]=C});for(var f=i.getFrozenTensorIds(p),m={},g=0;g0?(w=this.processStack(s,f,e,m,b,v,o,g,c),[4,Promise.all(w)]):[3,3];case 2:return C.sent(),[3,1];case 3:if(d==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead."),S=l.filter(function(R){return!Mw(R)&&!Gt(R.name,m,e)}).map(function(R){return R.name}),S.length>0)throw L="",d!=null&&(L="Alternatively, to avoid the dynamic ops, use model.execute() "+("and specify the inputs ["+p+"]")),new Error("Cannot compute the outputs ["+S+"] from the provided "+("inputs ["+a+"]. Consider providing the following inputs: ")+("["+h+"]. "+L));return[2,m]}})})},n.prototype.processStack=function(t,e,i,r,a,s,o,l,u){for(var c=this,h=[],d=function(){var f=e.pop();i.currentContext=f.contexts;var m="";if(f.node.op==="Enter"&&A("isConstant",f.node,r,i)&&(m=si(f.node.name,i)[0]),t.indexOf(f.node)===-1){var g=Pw(f.node,r,i);m||(m=si(f.node.name,i)[0]);var v=i.currentContext;g instanceof Promise?h.push(g.then(function(b){return r[m]=b,i.currentContext=v,c.checkTensorForDisposal(m,f.node,r,i,s,o,l),c.processChildNodes(f.node,e,i,r,a,u),b})):(r[m]=g,p.checkTensorForDisposal(m,f.node,r,i,s,o,l),p.processChildNodes(f.node,e,i,r,a,u))}else p.processChildNodes(f.node,e,i,r,a,u)},p=this;e.length>0;)d();return h},n.prototype.processChildNodes=function(t,e,i,r,a,s){t.children.forEach(function(o){var l=si(o.name,i)[0];if(a[l]||!s.has(o.name))return;o.op==="Merge"?o.inputNames.some(function(u){return!!Gt(u,r,i)})&&(a[l]=!0,e.push({contexts:i.currentContext,node:o})):o.inputNames.every(function(u){return!!Gt(u,r,i)})&&(a[l]=!0,e.push({contexts:i.currentContext,node:o}))})},n.prototype.dispose=function(){var t=this;Object.keys(this.weightMap).forEach(function(e){return t.weightMap[e].forEach(function(i){return i.dispose()})})},n.prototype.checkInputShapeAndType=function(t){var e=this;Object.keys(t).forEach(function(i){var r=t[i],a=Zt(i)[0],s=e.graph.nodes[a];if(s.attrParams.shape&&s.attrParams.shape.value){var o=s.attrParams.shape.value,l=o.length===r.shape.length&&r.shape.every(function(u,c){return o[c]===-1||o[c]===u});B.util.assert(l,function(){return"The shape of dict['"+s.name+"'] provided in "+("model.execute(dict) must be ["+o+"], but was ")+("["+r.shape+"]")})}s.attrParams.dtype&&s.attrParams.dtype.value&&B.util.assert(r.dtype===s.attrParams.dtype.value,function(){return"The dtype of dict['"+s.name+"'] provided in model.execute(dict) must be "+(s.attrParams.dtype.value+", but was "+r.dtype)})})},n.prototype.mapInputs=function(t){var e={};for(var i in t)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[i]!=null){var r=this._signature.inputs[i];e[r.name]=t[i]}else e[i]=t[i];return e},n.prototype.checkInputs=function(t){var e=this,i=Object.keys(t).filter(function(r){var a=Zt(r)[0];return e.graph.nodes[a]==null});if(i.length>0)throw new Error("The dict provided in model.execute(dict) has "+("keys: ["+i+"] that are not part of graph"))},n.prototype.mapOutputs=function(t){var e=this;return t.map(function(i){if(e._signature!=null&&e._signature.outputs!=null&&e._signature.outputs[i]!=null){var r=e._signature.outputs[i];return r.name}return i},{})},n.prototype.checkOutputs=function(t){var e=this;t.forEach(function(i){var r=Zt(i)[0];if(!e.graph.nodes[r])throw new Error("The output '"+i+"' is not found in the graph")})},n}();var QU="?tfjs-format=file",eB="model.json",qw=function(){function n(t,e){e===void 0&&(e={}),this.modelUrl=t,this.loadOptions=e,this.version="n/a",e==null&&(this.loadOptions={})}return Object.defineProperty(n.prototype,"modelVersion",{get:function(){return this.version},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputNodes",{get:function(){return this.executor.inputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputNodes",{get:function(){return this.executor.outputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputs",{get:function(){return this.executor.inputs},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputs",{get:function(){return this.executor.outputs},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"weights",{get:function(){return this.executor.weightMap},enumerable:!0,configurable:!0}),n.prototype.findIOHandler=function(){var t=this.modelUrl;if(t.load!=null)this.handler=t;else if(this.loadOptions.requestInit!=null)this.handler=B.io.browserHTTPRequest(t,this.loadOptions);else{var e=B.io.getLoadHandlers(t,this.loadOptions);if(e.length===0)e.push(B.io.browserHTTPRequest(t,this.loadOptions));else if(e.length>1)throw new Error("Found more than one ("+e.length+") load handlers for "+("URL '"+[t]+"'"));this.handler=e[0]}},n.prototype.load=function(){return Vn(this,void 0,void 0,function(){var t;return Nn(this,function(e){switch(e.label){case 0:if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,this.handler.load()];case 1:return t=e.sent(),[2,this.loadSync(t)]}})})},n.prototype.loadSync=function(t){this.artifacts=t;var e=this.artifacts.modelTopology,i={};this.artifacts.userDefinedMetadata!=null&&(i=this.artifacts.userDefinedMetadata.signature),this.version=e.versions.producer+"."+e.versions.minConsumer;var r=B.io.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new Vw(Ww.Instance.transformGraph(e,i)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),t.modelInitializer!=null){var a=Ww.Instance.transformGraph(t.modelInitializer);this.initializer=new Vw(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.execute({},[])}return!0},n.prototype.save=function(t,e){return Vn(this,void 0,void 0,function(){var i;return Nn(this,function(r){if(typeof t=="string"){if(i=B.io.getSaveHandlers(t),i.length===0)throw new Error("Cannot find any save handlers for URL '"+t+"'");if(i.length>1)throw new Error("Found more than one ("+i.length+") save handlers for "+("URL '"+t+"'"));t=i[0]}if(t.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[2,t.save(this.artifacts)]})})},n.prototype.predict=function(t,e){return this.execute(t,this.outputNodes)},n.prototype.normalizeInputs=function(t){if(!(t instanceof B.Tensor)&&!Array.isArray(t))return t;if(t=Array.isArray(t)?t:[t],t.length!==this.inputNodes.length)throw new Error("Input tensor count mismatch,"+("the graph model has "+this.inputNodes.length+" placeholders, ")+("while there are "+t.length+" input tensors."));return this.inputNodes.reduce(function(e,i,r){return e[i]=t[r],e},{})},n.prototype.normalizeOutputs=function(t){return t=t||this.outputNodes,Array.isArray(t)?t:[t]},n.prototype.execute=function(t,e){t=this.normalizeInputs(t),e=this.normalizeOutputs(e);var i=this.executor.execute(t,e);return i.length>1?i:i[0]},n.prototype.executeAsync=function(t,e){return Vn(this,void 0,void 0,function(){var i;return Nn(this,function(r){switch(r.label){case 0:return t=this.normalizeInputs(t),e=this.normalizeOutputs(e),[4,this.executor.executeAsync(t,e)];case 1:return i=r.sent(),[2,i.length>1?i:i[0]]}})})},n.prototype.convertTensorMapToTensorsMap=function(t){return Object.keys(t).reduce(function(e,i){return e[i]=[t[i]],e},{})},n.prototype.dispose=function(){this.executor.dispose(),this.initializer&&this.initializer.dispose()},n}();function tB(n,t){return t===void 0&&(t={}),Vn(this,void 0,void 0,function(){var e;return Nn(this,function(i){switch(i.label){case 0:if(n==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");return t==null&&(t={}),t.fromTFHub&&(n.load==null&&(n.endsWith("/")||(n=n+"/"),n=""+n+eB+QU)),e=new qw(n,t),[4,e.load()];case 1:return i.sent(),[2,e]}})})}var nB="2.6.0";gr.GraphModel=qw;gr.deregisterOp=VW;gr.loadGraphModel=tB;gr.registerOp=HW;gr.version_converter=nB});var h0=Le(Yt=>{"use strict";Object.defineProperty(Yt,"__esModule",{value:!0});var Ne=lr();var _d=function(n,t){return _d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},_d(n,t)};function Ve(n,t){_d(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function se(n,t,e,i){return new(e||(e=Promise))(function(r,a){function s(u){try{l(i.next(u))}catch(c){a(c)}}function o(u){try{l(i.throw(u))}catch(c){a(c)}}function l(u){u.done?r(u.value):new e(function(c){c(u.value)}).then(s,o)}l((i=i.apply(n,t||[])).next())})}function oe(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]>>0,d-=l,d*=l,l=d>>>0,d-=l,l+=d*4294967296}return(l>>>0)*23283064365386963e-26};return u}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.alea=s})(la,n,!1)}),rB=vr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var h=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^h^h>>>8},o===(o|0)?l.x=o:u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor128=s})(la,n,!1)}),aB=vr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(h^h<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,o===(o|0)?l.x=o:u+=o;for(var c=0;c>>4),l.next()}function a(o,l){return l.x=o.x,l.y=o.y,l.z=o.z,l.w=o.w,l.v=o.v,l.d=o.d,l}function s(o,l){var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorwow=s})(la,n,!1)}),sB=vr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.x,h=l.i,d,p;return d=c[h],d^=d>>>7,p=d^d<<24,d=c[h+1&7],p^=d^d>>>10,d=c[h+3&7],p^=d^d>>>3,d=c[h+4&7],p^=d^d<<7,d=c[h+7&7],d=d^d<<13,p^=d^d<<9,c[h]=p,l.i=h+1&7,p};function u(c,h){var d,p,f=[];if(h===(h|0))p=f[0]=h;else for(h=""+h,d=0;d0;--d)c.next()}u(l,o)}function a(o,l){return l.x=o.x.slice(),l.i=o.i,l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.x&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorshift7=s})(la,n,!1)}),oB=vr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.w,h=l.X,d=l.i,p,f;return l.w=c=c+1640531527|0,f=h[d+34&127],p=h[d=d+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,f=h[d]=f^p,l.i=d,f+(c^c>>>16)|0};function u(c,h){var d,p,f,m,g,v=[],b=128;for(h===(h|0)?(p=h,h=null):(h=h+"\0",p=0,b=Math.max(b,h.length)),f=0,m=-32;m>>15,p^=p<<4,p^=p>>>13,m>=0&&(g=g+1640531527|0,d=v[m&127]^=p+g,f=d==0?f+1:0);for(f>=128&&(v[(h&&h.length||0)&127]=-1),f=127,m=4*128;m>0;--m)p=v[f+34&127],d=v[f=f+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,v[f]=p^d;c.w=g,c.X=v,c.i=f}u(l,o)}function a(o,l){return l.i=o.i,l.w=o.w,l.X=o.X.slice(),l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.X&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor4096=s})(la,n,!1)}),lB=vr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.b,d=l.c,p=l.d,f=l.a;return h=h<<25^h>>>7^d,d=d-p|0,p=p<<24^p>>>8^f,f=f-h|0,l.b=h=h<<20^h>>>12^d,l.c=d=d-p|0,l.d=p<<16^d>>>16^f,l.a=f-h|0},l.a=0,l.b=0,l.c=2654435769|0,l.d=1367130551,o===Math.floor(o)?(l.a=o/4294967296|0,l.b=o|0):u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.tychei=s})(la,n,!1)}),yr=vr(function(n){(function(t,e){var i=this,r=256,a=6,s=52,o="random",l=e.pow(r,a),u=e.pow(2,s),c=u*2,h=r-1,d;function p(S,L,N){var C=[];L=L==!0?{entropy:!0}:L||{};var R=v(g(L.entropy?[S,w(t)]:S??b(),3),C),D=new f(C),k=function(){for(var W=D.g(a),F=l,P=0;W=c;)W/=2,F/=2,P>>>=1;return(W+P)/F};return k.int32=function(){return D.g(4)|0},k.quick=function(){return D.g(4)/4294967296},k.double=k,v(w(D.S),t),(L.pass||N||function(W,F,P,H){return H&&(H.S&&m(H,D),W.state=function(){return m(D,{})}),P?(e[o]=W,F):W})(k,R,"global"in L?L.global:this==e,L.state)}e["seed"+o]=p;function f(S){var L,N=S.length,C=this,R=0,D=C.i=C.j=0,k=C.S=[];for(N||(S=[N++]);R=this.items.length?[2,{value:null,done:!0}]:(e=this.items[this.trav],this.trav++,[2,{value:mB(e),done:!1}])})})},t}(xt),yB=function(n){Ve(t,n);function t(e){var i=n.call(this)||this;return i.nextFn=e,i}return t.prototype.summary=function(){return"Function call"},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){try{return[2,this.nextFn()]}catch(i){throw i.message="Error thrown while iterating through a dataset: "+i.message,i}return[2]})})},t}(xt),LB=function(n){Ve(t,n);function t(e){var i=n.call(this)||this;return i.upstream=e,i.lastRead=Promise.resolve({value:null,done:!1}),i}return t.prototype.summary=function(){return this.upstream.summary()+" -> Serial"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return[2,this.upstream.next()]})})},t}(xt),IB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.maxCount=i,r.count=0,r.lastRead=Promise.resolve({value:null,done:!1}),r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Skip"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:return this.count++ Take"},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return this.count++>=this.maxCount?[2,{value:null,done:!0}]:[2,this.upstream.next()]})})},t}(xt),TB=function(n){Ve(t,n);function t(e,i,r){r===void 0&&(r=!0);var a=n.call(this)||this;return a.upstream=e,a.batchSize=i,a.enableSmallLastBatch=r,a.lastRead=Promise.resolve({value:null,done:!1}),a}return t.prototype.summary=function(){return this.upstream.summary()+" -> RowMajorBatch"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e,i;return oe(this,function(r){switch(r.label){case 0:e=[],r.label=1;case 1:return e.length0?[2,{value:e,done:!1}]:[2,{value:null,done:!0}]:(e.push(i.value),[3,1]);case 3:return[2,{value:e,done:!1}]}})})},t}(xt),NB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.predicate=i,r.lastRead=Promise.resolve({value:null,done:!1}),r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Filter"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:return[4,this.upstream.next()];case 1:return e=i.sent(),e.done||this.predicate(e.value)?[2,e]:(Ne.dispose(e.value),[3,0]);case 2:return[2]}})})},t}(xt),xB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.transform=i,r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Map"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s,o,l;return oe(this,function(u){switch(u.label){case 0:return[4,this.upstream.next()];case 1:if(e=u.sent(),e.done)return[2,{value:null,done:!0}];for(i=Ne.tensor_util.getTensorsInContainer(e.value),r=this.transform(e.value),a=Ne.tensor_util.getTensorsInContainer(r),s=0,o=i;s handleErrors"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.upstream.next()];case 2:return[2,i.sent()];case 3:return e=i.sent(),this.handler(e)?[3,4]:[2,{value:null,done:!0}];case 4:return[3,0];case 5:return[2]}})})},t}(xt),Qw=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.transform=i,r}return t.prototype.summary=function(){return this.upstream.summary()+" -> AsyncMap"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s,o,l;return oe(this,function(u){switch(u.label){case 0:return[4,this.upstream.next()];case 1:return e=u.sent(),e.done?[2,{value:null,done:!0}]:(i=Ne.tensor_util.getTensorsInContainer(e.value),[4,this.transform(e.value)]);case 2:for(r=u.sent(),a=Ne.tensor_util.getTensorsInContainer(r),s=0,o=i;s Flatmap"},t.prototype.pump=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s,o,l;return oe(this,function(u){switch(u.label){case 0:return[4,this.upstream.next()];case 1:if(e=u.sent(),e.done)return[2,!1];for(i=Ne.tensor_util.getTensorsInContainer(e.value),r=this.transform(e.value),a=Ne.tensor_util.getTensorsInContainer(r),this.outputQueue.pushAll(r),s=0,o=i;s Chained"},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return this.lastRead=this.readFromChain(this.lastRead),[2,this.lastRead]})})},t.prototype.readFromChain=function(e){return se(this,void 0,void 0,function(){var i,r;return oe(this,function(a){switch(a.label){case 0:return[4,e];case 1:return a.sent(),this.iterator==null?[4,this.moreIterators.next()]:[3,3];case 2:if(i=a.sent(),i.done)return[2,{value:null,done:!0}];this.iterator=i.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler)),a.label=3;case 3:return[4,this.iterator.next()];case 4:return r=a.sent(),r.done?(this.iterator=null,[2,this.readFromChain(e)]):[2,r]}})})},t}(xt),Fi;(function(n){n[n.FAIL=0]="FAIL",n[n.SHORTEST=1]="SHORTEST",n[n.LONGEST=2]="LONGEST"})(Fi||(Fi={}));var wB=function(n){Ve(t,n);function t(e,i){i===void 0&&(i=Fi.FAIL);var r=n.call(this)||this;return r.iterators=e,r.mismatchMode=i,r.count=0,r.currentPromise=null,r}return t.prototype.summary=function(){var e="TODO: fill in upstream of zip summaries";return"{"+e+"} -> Zip"},t.prototype.nextState=function(e){return se(this,void 0,void 0,function(){function i(o){if(o instanceof xt){var l=o.next();return{value:l.then(function(u){return r++,u.done&&a++,u.value}),recurse:!1}}else return{value:null,recurse:!0}}var r,a,s;return oe(this,function(o){switch(o.label){case 0:return[4,e];case 1:return o.sent(),r=0,a=0,[4,$w(this.iterators,i)];case 2:if(s=o.sent(),r===a)return[2,{value:null,done:!0}];if(a>0)switch(this.mismatchMode){case Fi.FAIL:throw new Error("Zipped streams should have the same length. "+("Mismatched at element "+this.count+"."));case Fi.SHORTEST:return[2,{value:null,done:!0}];case Fi.LONGEST:}return this.count++,[2,{value:s,done:!1}]}})})},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return this.currentPromise=this.nextState(this.currentPromise),[2,this.currentPromise]})})},t}(xt),e0=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.bufferSize=i,r.buffer=new Xw(i),r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Prefetch"},t.prototype.refill=function(){for(;!this.buffer.isFull();){var e=this.upstream.next();this.buffer.push(e)}},t.prototype.next=function(){return this.refill(),this.buffer.shift()},t}(xt),OB=function(n){Ve(t,n);function t(e,i,r){var a=n.call(this,e,i)||this;return a.upstream=e,a.windowSize=i,a.upstreamExhausted=!1,a.random=Yw(r||Ne.util.now().toString()),a.lastRead=Promise.resolve({value:null,done:!1}),a}return t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.randomInt=function(e){return Math.floor(this.random()*e)},t.prototype.chooseIndex=function(){return this.randomInt(this.buffer.length())},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e,i;return oe(this,function(r){switch(r.label){case 0:this.upstreamExhausted||this.refill(),r.label=1;case 1:return this.buffer.isEmpty()?[3,3]:(e=this.chooseIndex(),[4,this.buffer.shuffleExcise(e)]);case 2:if(i=r.sent(),i.done)this.upstreamExhausted=!0;else return this.refill(),[2,i];return[3,1];case 3:return[2,{value:null,done:!0}]}})})},t}(e0);var hs=function(){function n(){this.size=null}return n.prototype.batch=function(t,e){var i=this;e===void 0&&(e=!0);var r=this;Ne.util.assert(t>0,function(){return`batchSize needs to be positive, but it is - `+t});var a;return this.size===Infinity||this.size==null?a=this.size:e?a=Math.ceil(this.size/t):a=Math.floor(this.size/t),Qt(function(){return se(i,void 0,void 0,function(){return oe(this,function(s){switch(s.label){case 0:return[4,r.iterator()];case 1:return[2,s.sent().columnMajorBatch(t,e,EB)]}})})},a)},n.prototype.concatenate=function(t){var e=this,i=this,r;return this.size===Infinity||t.size===Infinity?r=Infinity:this.size!=null&&t.size!=null?r=this.size+t.size:r=null,Qt(function(){return se(e,void 0,void 0,function(){var a,s;return oe(this,function(o){switch(o.label){case 0:return[4,i.iterator()];case 1:return s=(a=o.sent()).concatenate,[4,t.iterator()];case 2:return[2,s.apply(a,[o.sent()])]}})})},r)},n.prototype.filter=function(t){var e=this,i=this,r;return this.size===Infinity?r=Infinity:r=null,Qt(function(){return se(e,void 0,void 0,function(){return oe(this,function(a){switch(a.label){case 0:return[4,i.iterator()];case 1:return[2,a.sent().filter(function(s){return Ne.tidy(function(){return t(s)})})]}})})},r)},n.prototype.forEachAsync=function(t){return se(this,void 0,void 0,function(){return oe(this,function(e){switch(e.label){case 0:return[4,this.iterator()];case 1:return[2,e.sent().forEachAsync(t)]}})})},n.prototype.map=function(t){var e=this,i=this;return Qt(function(){return se(e,void 0,void 0,function(){return oe(this,function(r){switch(r.label){case 0:return[4,i.iterator()];case 1:return[2,r.sent().map(function(a){return Ne.tidy(function(){return t(a)})})]}})})},this.size)},n.prototype.mapAsync=function(t){var e=this,i=this;return Qt(function(){return se(e,void 0,void 0,function(){return oe(this,function(r){switch(r.label){case 0:return[4,i.iterator()];case 1:return[2,r.sent().mapAsync(t)]}})})},this.size)},n.prototype.prefetch=function(t){var e=this;if(t==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");var i=this;return Qt(function(){return se(e,void 0,void 0,function(){return oe(this,function(r){switch(r.label){case 0:return[4,i.iterator()];case 1:return[2,r.sent().prefetch(t)]}})})},this.size)},n.prototype.repeat=function(t){var e=this,i=this,r;return this.size!=null&&t>0?r=this.size*t:t===0?r=0:this.size!=null&&(t===void 0||t<0)?r=Infinity:r=null,Qt(function(){return se(e,void 0,void 0,function(){var a,s=this;return oe(this,function(o){return a=Md(function(){return se(s,void 0,void 0,function(){var l;return oe(this,function(u){switch(u.label){case 0:return l={},[4,i.iterator()];case 1:return[2,(l.value=u.sent(),l.done=!1,l)]}})})}),[2,bB(a.take(t))]})})},r)},n.prototype.skip=function(t){var e=this,i=this,r;return this.size!=null&&t>=0&&this.size>=t?r=this.size-t:this.size!=null&&(this.sizet?r=t:this.size!=null&&this.size<=t?r=this.size:r=null,Qt(function(){return se(e,void 0,void 0,function(){return oe(this,function(a){switch(a.label){case 0:return[4,i.iterator()];case 1:return[2,a.sent().take(t)]}})})},r)},n.prototype.toArray=function(){return se(this,void 0,void 0,function(){return oe(this,function(t){switch(t.label){case 0:if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return[4,this.iterator()];case 1:return[2,t.sent().toArray()]}})})},n.prototype.toArrayForTest=function(){return se(this,void 0,void 0,function(){return oe(this,function(t){switch(t.label){case 0:if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return[4,this.iterator()];case 1:return[2,t.sent().toArrayForTest()]}})})},n.MAX_BUFFER_SIZE=1e4,n}();function Qt(n,t){return t===void 0&&(t=null),new(function(e){Ve(i,e);function i(){var r=e!==null&&e.apply(this,arguments)||this;return r.size=t,r}return i.prototype.iterator=function(){return se(this,void 0,void 0,function(){return oe(this,function(r){return[2,n()]})})},i}(hs))}function DB(n){var t=this;return Qt(function(){return se(t,void 0,void 0,function(){return oe(this,function(e){return[2,Jw(n)]})})},n.length)}function kB(n){var t=this;if(!ua(n))throw new Error("The argument to zip() must be an object or array.");var e;if(Array.isArray(n))for(var i=0;i1}),Ne.util.assert(r.length===0,function(){return"Duplicate column names found: "+r.toString()}),this.columnConfigs){for(a=0,s=Object.keys(this.columnConfigs);a14||!Number.isInteger(r))throw new Error("Invalid fftSize: it must be a power of 2 between "+("2 to 4 and 2 to 14, but got "+i.fftSize));if(i.numFrames=e.numFramesPerSpectrogram||43,i.sampleRateHz=e.sampleRateHz,i.columnTruncateLength=e.columnTruncateLength||i.fftSize,i.audioTrackConstraints=e.audioTrackConstraints,i.smoothingTimeConstant=e.smoothingTimeConstant||0,i.includeSpectrogram=!(e.includeSpectrogram===!1),i.includeWaveform=e.includeWaveform===!0,!i.includeSpectrogram&&!i.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.");return i}return t.prototype.summary=function(){return"microphone"},t.create=function(e){return e===void 0&&(e={}),se(this,void 0,void 0,function(){var i;return oe(this,function(r){switch(r.label){case 0:if(Ne.env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");return i=new t(e),[4,i.start()];case 1:return r.sent(),[2,i]}})})},t.prototype.start=function(){return se(this,void 0,void 0,function(){var e,i,r,a;return oe(this,function(s){switch(s.label){case 0:return s.trys.push([0,2,,3]),e=this,[4,navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})];case 1:return e.stream=s.sent(),[3,3];case 2:throw i=s.sent(),new Error("Error thrown while initializing video stream: "+i.message);case 3:if(!this.stream)throw new Error("Could not obtain audio from microphone.");if(r=window.AudioContext||window.webkitAudioContext,this.audioContext=new r,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error("Mismatch in sampling rate: "+("Expected: "+this.sampleRateHz+"; ")+("Actual: "+this.audioContext.sampleRate));return a=this.audioContext.createMediaStreamSource(this.stream),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,a.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize),[2]}})})},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s;return oe(this,function(o){switch(o.label){case 0:return this.isClosed?[2,{value:null,done:!0}]:[4,this.getAudioData()];case 1:return r=o.sent(),this.includeSpectrogram&&(a=this.flattenQueue(r.freqDataQueue),e=this.getTensorFromAudioDataArray(a,[this.numFrames,this.columnTruncateLength,1])),this.includeWaveform&&(s=this.flattenQueue(r.timeDataQueue),i=this.getTensorFromAudioDataArray(s,[this.numFrames*this.fftSize,1])),[2,{value:{spectrogram:e,waveform:i},done:!1}]}})})},t.prototype.capture=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){switch(e.label){case 0:return[4,this.next()];case 1:return[2,e.sent().value]}})})},t.prototype.getAudioData=function(){return se(this,void 0,void 0,function(){var e,i,r,a=this;return oe(this,function(s){return e=[],i=[],r=0,[2,new Promise(function(o){var l=setInterval(function(){a.includeSpectrogram&&(a.analyser.getFloatFrequencyData(a.freqData),a.freqData[0]===-Infinity&&o({freqDataQueue:e,timeDataQueue:i}),e.push(a.freqData.slice(0,a.columnTruncateLength))),a.includeWaveform&&(a.analyser.getFloatTimeDomainData(a.timeData),i.push(a.timeData.slice())),++r===a.numFrames&&(clearInterval(l),o({freqDataQueue:e,timeDataQueue:i}))},a.fftSize/a.sampleRateHz*1e3)})]})})},t.prototype.stop=function(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())},t.prototype.toArray=function(){throw new Error("Can not convert infinite audio stream to array.")},t.prototype.getSampleRate=function(){return this.sampleRateHz},t.prototype.flattenQueue=function(e){var i=e[0].length,r=new Float32Array(e.length*i);return e.forEach(function(a,s){return r.set(a,s*i)}),r},t.prototype.getTensorFromAudioDataArray=function(e,i){var r=new Float32Array(Ne.util.sizeFromShape(i));return r.set(e,r.length-e.length),Ne.tensor(r,i)},t}(xt);var UB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;if(r.webcamVideoElement=e,r.webcamConfig=i,r.isClosed=!0,r.resize=!1,r.needToResize())if(r.resize=!0,r.cropSize=[r.webcamConfig.resizeHeight,r.webcamConfig.resizeWidth],r.cropBoxInd=Ne.tensor1d([0],"int32"),r.webcamConfig.centerCrop){var a=r.webcamConfig.resizeWidth*1/r.webcamVideoElement.width,s=r.webcamConfig.resizeHeight*1/r.webcamVideoElement.height,o=(1-a)/2,l=(1-s)/2,u=o+a,c=s+l;r.cropBox=Ne.tensor2d([l,o,c,u],[1,4])}else r.cropBox=Ne.tensor2d([0,0,1,1],[1,4]);return r}return t.prototype.summary=function(){return"webcam"},t.create=function(e,i){return i===void 0&&(i={}),se(this,void 0,void 0,function(){var r;return oe(this,function(a){switch(a.label){case 0:if(Ne.env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!i.resizeWidth||!i.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=i.resizeWidth,e.height=i.resizeHeight}return r=new t(e,i),[4,r.start()];case 1:return a.sent(),[2,r]}})})},t.prototype.start=function(){return se(this,void 0,void 0,function(){var e,i,r=this;return oe(this,function(a){switch(a.label){case 0:this.webcamConfig.facingMode&&Ne.util.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",function(){return"Invalid webcam facing mode: "+r.webcamConfig.facingMode+". Please provide 'user' or 'environment'"}),a.label=1;case 1:return a.trys.push([1,3,,4]),e=this,[4,navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})];case 2:return e.stream=a.sent(),[3,4];case 3:throw i=a.sent(),i.message="Error thrown while initializing video stream: "+i.message,i;case 4:if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(s){console.log(s),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,[2,new Promise(function(s){r.webcamVideoElement.onloadedmetadata=function(){s()}})]}})})},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){if(this.isClosed)return[2,{value:null,done:!0}];try{e=Ne.browser.fromPixels(this.webcamVideoElement)}catch(r){throw new Error("Error thrown converting video to pixels: "+JSON.stringify(r))}if(this.resize)try{return[2,{value:this.cropAndResizeFrame(e),done:!1}]}catch(r){throw new Error("Error thrown cropping the video: "+r.message)}finally{e.dispose()}else return[2,{value:e,done:!1}];return[2]})})},t.prototype.needToResize=function(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))},t.prototype.cropAndResizeFrame=function(e){var i=this;return Ne.tidy(function(){var r=e.toFloat().expandDims(0),a;a=Ne.image.cropAndResize(r,i.cropBox,i.cropBoxInd,i.cropSize,"bilinear");var s=a.shape;return a.reshape(s.slice(1))})},t.prototype.capture=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){switch(e.label){case 0:return[4,this.next()];case 1:return[2,e.sent().value]}})})},t.prototype.stop=function(){var e=this.stream.getTracks();e.forEach(function(i){return i.stop()});try{this.webcamVideoElement.srcObject=null}catch(i){console.log(i),this.webcamVideoElement.src=null}this.isClosed=!0},t.prototype.toArray=function(){throw new Error("Can not convert infinite video stream to array.")},t}(xt);var a0=function(){function n(){}return n}();var s0=function(n){Ve(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.split=function(e){return new BB(this,e)},t}(xt),BB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.impl=new zB(e,i),r}return t.prototype.summary=function(){return this.impl.summary()},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return[2,this.impl.next()]})})},t}(s0),zB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.separator=i,r.carryover="",r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Split('"+this.separator+"')"},t.prototype.pump=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s;return oe(this,function(o){switch(o.label){case 0:return[4,this.upstream.next()];case 1:if(e=o.sent(),e.done)return this.carryover===""?[2,!1]:(this.outputQueue.push(this.carryover),this.carryover="",[2,!0]);for(i=e.value.split(this.separator),i[0]=this.carryover+i[0],r=0,a=i.slice(0,-1);r Utf8"},t.prototype.pump=function(){return se(this,void 0,void 0,function(){var e,i,r;return oe(this,function(a){switch(a.label){case 0:return[4,this.upstream.next()];case 1:return e=a.sent(),e.done?[2,!1]:(i=e.value,Ne.env().get("IS_BROWSER")?r=this.decoder.decode(i,{stream:!0}):r=this.decoder.write(Buffer.from(i.buffer)),this.outputQueue.push(r),[2,!0])}})})},t}(Hd);var o0=function(n){Ve(t,n);function t(e,i){i===void 0&&(i={});var r=n.call(this)||this;return r.file=e,r.options=i,Ne.util.assert(e instanceof Uint8Array||(Ne.env().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),function(){return"FileChunkIterator only supports File, Blob and Uint8Array right now."}),r.offset=i.offset||0,r.chunkSize=i.chunkSize||1024*1024,r}return t.prototype.summary=function(){return"FileChunks "+this.file},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r=this;return oe(this,function(a){switch(a.label){case 0:return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?[2,{value:null,done:!0}]:(e=new Promise(function(s,o){var l=r.offset+r.chunkSize;if(r.file instanceof Uint8Array)s(new Uint8Array(r.file.slice(r.offset,l)));else{var u=new FileReader;u.onload=function(h){var d=u.result;if(d instanceof ArrayBuffer&&(d=new Uint8Array(d)),!(d instanceof Uint8Array))return o(new TypeError("FileReader returned unknown type."));s(d)},u.onabort=function(h){return o(new Error("Aborted"))},u.onerror=function(h){return o(new Error(h.type))};var c=r.file.slice(r.offset,l);u.readAsArrayBuffer(c)}r.offset=l}),i={},[4,e]);case 1:return[2,(i.value=a.sent(),i.done=!1,i)]}})})},t}(_B);function VB(n,t){return t===void 0&&(t={}),se(this,void 0,void 0,function(){var e,i,r,a,s;return oe(this,function(o){switch(o.label){case 0:return typeof n=="string"?e=n:(e=n.url,i=HB(n)),[4,Ne.util.fetch(e,i)];case 1:return r=o.sent(),r.ok?(s=Uint8Array.bind,[4,r.arrayBuffer()]):[3,3];case 2:return a=new(s.apply(Uint8Array,[void 0,o.sent()])),[2,new o0(a,t)];case 3:throw new Error(r.statusText)}})})}var HB=function(n){var t={method:n.method,headers:n.headers,body:n.body,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,referrer:n.referrer,integrity:n.integrity};return t};function l0(n){return typeof n=="string"&&n.substr(0,7)==="file://"}var u0=function(n){Ve(t,n);function t(e,i){i===void 0&&(i={});var r=n.call(this)||this;return r.input=e,r.options=i,r}return t.prototype.iterator=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){return l0(this.input)&&Ne.env().get("IS_NODE")&&(e=require("fs"),this.input=e.readFileSync(this.input.substr(7))),[2,new o0(this.input,this.options)]})})},t}(a0);var c0=function(n){Ve(t,n);function t(e,i){i===void 0&&(i={});var r=n.call(this)||this;return r.url=e,r.fileOptions=i,r}return t.prototype.iterator=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return l0(this.url)?[2,new u0(this.url,this.fileOptions).iterator()]:[2,VB(this.url,this.fileOptions)]})})},t}(a0);function qB(n,t){return t===void 0&&(t={}),new r0(new c0(n),t)}function GB(n){var t=this,e=Md(n);return Qt(function(){return se(t,void 0,void 0,function(){return oe(this,function(i){return[2,e]})})})}function YB(n){var t=this;return Qt(function(){return se(t,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:return[4,n()];case 1:return e=i.sent(),[2,Md(function(){return e.next()})]}})})})}function jB(n,t){return se(this,void 0,void 0,function(){return oe(this,function(e){return[2,UB.create(n,t)]})})}function KB(n){return se(this,void 0,void 0,function(){return oe(this,function(t){return[2,WB.create(n)]})})}var $B="2.6.0";Yt.CSVDataset=r0;Yt.Dataset=hs;Yt.FileDataSource=u0;Yt.TextLineDataset=t0;Yt.URLDataSource=c0;Yt.array=DB;Yt.csv=qB;Yt.func=GB;Yt.generator=YB;Yt.microphone=KB;Yt.version_data=$B;Yt.webcam=jB;Yt.zip=kB});var p0=Le((d0,qd)=>{(function(n,t,e){function i(o){var l=this,u=s();l.next=function(){var c=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=c-(l.c=c|0)},l.c=1,l.s0=u(" "),l.s1=u(" "),l.s2=u(" "),l.s0-=u(o),l.s0<0&&(l.s0+=1),l.s1-=u(o),l.s1<0&&(l.s1+=1),l.s2-=u(o),l.s2<0&&(l.s2+=1),u=null}function r(o,l){return l.c=o.c,l.s0=o.s0,l.s1=o.s1,l.s2=o.s2,l}function a(o,l){var u=new i(o),c=l&&l.state,h=u.next;return h.int32=function(){return u.next()*4294967296|0},h.double=function(){return h()+(h()*2097152|0)*11102230246251565e-32},h.quick=h,c&&(typeof c=="object"&&r(c,u),h.state=function(){return r(u,{})}),h}function s(){var o=4022871197,l=function(u){u=u.toString();for(var c=0;c>>0,h-=o,h*=o,o=h>>>0,h-=o,o+=h*4294967296}return(o>>>0)*23283064365386963e-26};return l}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.alea=a})(d0,typeof qd=="object"&&qd,typeof define=="function"&&define)});var m0=Le((f0,Gd)=>{(function(n,t,e){function i(s){var o=this,l="";o.x=0,o.y=0,o.z=0,o.w=0,o.next=function(){var c=o.x^o.x<<11;return o.x=o.y,o.y=o.z,o.z=o.w,o.w^=o.w>>>19^c^c>>>8},s===(s|0)?o.x=s:l+=s;for(var u=0;u>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xor128=a})(f0,typeof Gd=="object"&&Gd,typeof define=="function"&&define)});var v0=Le((g0,Yd)=>{(function(n,t,e){function i(s){var o=this,l="";o.next=function(){var c=o.x^o.x>>>2;return o.x=o.y,o.y=o.z,o.z=o.w,o.w=o.v,(o.d=o.d+362437|0)+(o.v=o.v^o.v<<4^(c^c<<1))|0},o.x=0,o.y=0,o.z=0,o.w=0,o.v=0,s===(s|0)?o.x=s:l+=s;for(var u=0;u>>4),o.next()}function r(s,o){return o.x=s.x,o.y=s.y,o.z=s.z,o.w=s.w,o.v=s.v,o.d=s.d,o}function a(s,o){var l=new i(s),u=o&&o.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xorwow=a})(g0,typeof Yd=="object"&&Yd,typeof define=="function"&&define)});var b0=Le((y0,jd)=>{(function(n,t,e){function i(s){var o=this;o.next=function(){var u=o.x,c=o.i,h,d,p;return h=u[c],h^=h>>>7,d=h^h<<24,h=u[c+1&7],d^=h^h>>>10,h=u[c+3&7],d^=h^h>>>3,h=u[c+4&7],d^=h^h<<7,h=u[c+7&7],h=h^h<<13,d^=h^h<<9,u[c]=d,o.i=c+1&7,d};function l(u,c){var h,d,p=[];if(c===(c|0))d=p[0]=c;else for(c=""+c,h=0;h0;--h)u.next()}l(o,s)}function r(s,o){return o.x=s.x.slice(),o.i=s.i,o}function a(s,o){s==null&&(s=+new Date);var l=new i(s),u=o&&o.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.x&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xorshift7=a})(y0,typeof jd=="object"&&jd,typeof define=="function"&&define)});var S0=Le((w0,Kd)=>{(function(n,t,e){function i(s){var o=this;o.next=function(){var u=o.w,c=o.X,h=o.i,d,p;return o.w=u=u+1640531527|0,p=c[h+34&127],d=c[h=h+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,p=c[h]=p^d,o.i=h,p+(u^u>>>16)|0};function l(u,c){var h,d,p,f,m,g=[],v=128;for(c===(c|0)?(d=c,c=null):(c=c+"\0",d=0,v=Math.max(v,c.length)),p=0,f=-32;f>>15,d^=d<<4,d^=d>>>13,f>=0&&(m=m+1640531527|0,h=g[f&127]^=d+m,p=h==0?p+1:0);for(p>=128&&(g[(c&&c.length||0)&127]=-1),p=127,f=4*128;f>0;--f)d=g[p+34&127],h=g[p=p+1&127],d^=d<<13,h^=h<<17,d^=d>>>15,h^=h>>>12,g[p]=d^h;u.w=m,u.X=g,u.i=p}l(o,s)}function r(s,o){return o.i=s.i,o.w=s.w,o.X=s.X.slice(),o}function a(s,o){s==null&&(s=+new Date);var l=new i(s),u=o&&o.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.X&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xor4096=a})(w0,typeof Kd=="object"&&Kd,typeof define=="function"&&define)});var I0=Le((L0,$d)=>{(function(n,t,e){function i(s){var o=this,l="";o.next=function(){var c=o.b,h=o.c,d=o.d,p=o.a;return c=c<<25^c>>>7^h,h=h-d|0,d=d<<24^d>>>8^p,p=p-c|0,o.b=c=c<<20^c>>>12^h,o.c=h=h-d|0,o.d=d<<16^h>>>16^p,o.a=p-c|0},o.a=0,o.b=0,o.c=2654435769|0,o.d=1367130551,s===Math.floor(s)?(o.a=s/4294967296|0,o.b=s|0):l+=s;for(var u=0;u>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.tychei=a})(L0,typeof $d=="object"&&$d,typeof define=="function"&&define)});var A0=Le((vV,Jo)=>{(function(n,t){var e=this,i=256,r=6,a=52,s="random",o=t.pow(i,r),l=t.pow(2,a),u=l*2,c=i-1,h;function d(w,S,L){var N=[];S=S==!0?{entropy:!0}:S||{};var C=g(m(S.entropy?[w,b(n)]:w??v(),3),N),R=new p(N),D=function(){for(var k=R.g(r),W=o,F=0;k=u;)k/=2,W/=2,F>>>=1;return(k+F)/W};return D.int32=function(){return R.g(4)|0},D.quick=function(){return R.g(4)/4294967296},D.double=D,g(b(R.S),n),(S.pass||L||function(k,W,F,P){return P&&(P.S&&f(P,R),k.state=function(){return f(R,{})}),F?(t[s]=k,W):k})(D,C,"global"in S?S.global:this==t,S.state)}t["seed"+s]=d;function p(w){var S,L=w.length,N=this,C=0,R=N.i=N.j=0,D=N.S=[];for(L||(w=[L++]);C{var XB=p0(),JB=m0(),ZB=v0(),QB=b0(),ez=S0(),tz=I0(),br=A0();br.alea=XB;br.xor128=JB;br.xorwow=ZB;br.xorshift7=QB;br.xor4096=ez;br.tychei=tz;T0.exports=br});var Z0=Le(ps=>{"use strict";Object.defineProperty(ps,"__esModule",{value:!0});var T=lr(),nz=N0();var Xd=function(n,t){return Xd=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},Xd(n,t)};function iz(n,t){Xd(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function x0(n,t,e,i){function r(a){return a instanceof e?a:new e(function(s){s(a)})}return new(e||(e=Promise))(function(a,s){function o(c){try{u(i.next(c))}catch(h){s(h)}}function l(c){try{u(i.throw(c))}catch(h){s(h)}}function u(c){c.done?a(c.value):r(c.value).then(o,l)}u((i=i.apply(n,t||[])).next())})}function C0(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")},n.prototype.nextIteration=function(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;var t=Object.assign({},this.contexts[this.contexts.length-1]);t.iterationId+=1,t.id=this.lastId,this.contexts.splice(-1,1,t),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")},n.prototype.getWeight=function(t){return this.weightMap[t]},n.prototype.addTensorArray=function(t){this.tensorArrayMap[t.id]=t},n.prototype.getTensorArray=function(t){return this.tensorArrayMap[t]},n.prototype.addTensorList=function(t){this.tensorListMap[t.id]=t},n.prototype.getTensorList=function(t){return this.tensorListMap[t]},n.prototype.dispose=function(t){for(var e in this.tensorArrayMap)this.tensorArrayMap[e].clearAndClose(t);for(var e in this.tensorListMap)this.tensorListMap[e].clearAndClose(t)},n}();function Hw(n,t,e,i){var r=new Set,a=[],s=null,o=null,l=new Set,u=Object.keys(n).map(function(p){return Jt(p)[0]}),c=[];i!=null&&(c=i.map(function(p){return Jt(p.name)[0]}));for(var h=t.slice();h.length>0;){var d=h.pop();if((Mw(d)||$U(d))&&(s==null&&(s=d,o=s.children.map(function(p){return p.name}).filter(function(p){return r.has(p)}))),r.add(d.name),e[d.name]!=null)continue;if(u.indexOf(d.name)!==-1)continue;if(c.indexOf(d.name)!==-1)continue;if(d.inputs.length===0){a.push(d.name);continue}d.inputs.forEach(function(p){if(l.has(p.name))return;l.add(p.name),h.push(p)})}return{inputs:n,outputs:t,usedNodes:r,missingInputs:a,dynamicNode:s,syncInputs:o}}function XU(n,t,e){var i=e.usedNodes,r=e.inputs,a=[],s=Object.keys(r).map(function(h){return Jt(h)[0]}).map(function(h){return n.nodes[h]}),o=n.initNodes;s.forEach(function(h){i.has(h.name)&&a.push(h)}),n.weights.forEach(function(h){i.has(h.name)&&a.push(h)}),o!=null&&o.forEach(function(h){i.has(h.name)&&a.push(h)});for(var l=new Set,u=[];a.length>0;){var c=a.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(function(h){!l.has(h.name)&&i.has(h.name)&&h.inputs.every(function(d){return l.has(d.name)})&&a.push(h)})}return u}var JU=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],ZU=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"];function Mw(n){return JU.indexOf(n.op)>=0}function $U(n){return ZU.indexOf(n.op)>=0}var Vw=function(){function n(t,e){var i=this;this.graph=t,this.parent=e,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=t.outputs,this._inputs=t.inputs,this._initNodes=t.initNodes,this._signature=t.signature,this._functions=t.functions,t.functions!=null&&Object.keys(t.functions).forEach(function(r){i._functionExecutorMap[r]=new n(t.functions[r],i)})}return Object.defineProperty(n.prototype,"weightIds",{get:function(){return this.parent?this.parent.weightIds:this._weightIds},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"functionExecutorMap",{get:function(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"weightMap",{get:function(){return this.parent?this.parent.weightMap:this._weightMap},set:function(t){var e=Object.keys(t).map(function(i){return t[i].map(function(r){return r.id})});this._weightIds=[].concat.apply([],e),this._weightMap=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputs",{get:function(){return this._inputs.map(function(t){return{name:t.name,shape:t.attrParams.shape?t.attrParams.shape.value:void 0,dtype:t.attrParams.dtype?t.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputs",{get:function(){return this._outputs.map(function(t){return{name:t.name,shape:t.attrParams.shape?t.attrParams.shape.value:void 0,dtype:t.attrParams.dtype?t.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputNodes",{get:function(){return this._inputs.map(function(t){return t.signatureKey||t.name})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputNodes",{get:function(){return this._outputs.map(function(t){var e=t.signatureKey||t.name;return t.defaultOutput?e+":"+t.defaultOutput:e})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"functions",{get:function(){var t=this;return Object.keys(this._functions).reduce(function(e,i){return e[i]=t._functions[i].signature,e},{})},enumerable:!0,configurable:!0}),n.prototype.getCompilationKey=function(t,e){var i=t.map(function(a){return a.name}).sort(),r=e.map(function(a){return a.name}).sort();return i.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)},n.prototype.compile=function(t,e){var i=Hw(t,e,this.weightMap,this._initNodes),r=i.missingInputs,a=i.dynamicNode,s=i.syncInputs;if(a!=null)throw new Error("This execution contains the node '"+a.name+"', which has "+("the dynamic op '"+a.op+"'. Please use ")+"model.executeAsync() instead. Alternatively, to avoid the "+("dynamic ops, specify the inputs ["+s+"]"));if(r.length>0){var o=e.map(function(u){return u.name}),l=Object.keys(t);throw new Error("Cannot compute the outputs ["+o+"] from the provided inputs "+("["+l+"]. Missing the following inputs: ["+r+"]"))}return XU(this.graph,this.weightMap,i)},n.prototype.execute=function(t,e){var i=this;t=this.mapInputs(t);var r=Object.keys(t).sort();this.checkInputs(t),this.checkInputShapeAndType(t),e=this.mapOutputs(e),this.checkOutputs(e);var a=r.map(function(d){return i.graph.nodes[Jt(d)[0]]}),s=e.map(function(d){return Jt(d)[0]}),o=s.map(function(d){return i.graph.nodes[d]});o.length===0&&(o=this._outputs);var l=this.getCompilationKey(a,o),u=this.compiledMap.get(l);u==null&&(u=this.compile(t,o),this.compiledMap.set(l,u));var c={},h={};return B.tidy(function(){var d=new _w(i.weightMap,c,h,i.functionExecutorMap),p=Ew({},i.weightMap);Object.keys(t).forEach(function(w){var S=Jt(w),L=S[0],N=S[1],C=[];C[N]=t[w],p[L]=C});for(var f=i.getFrozenTensorIds(p),m={},g=0;g0?(w=this.processStack(s,f,e,m,b,v,o,g,c),[4,Promise.all(w)]):[3,3];case 2:return C.sent(),[3,1];case 3:if(d==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead."),S=l.filter(function(R){return!Mw(R)&&!Gt(R.name,m,e)}).map(function(R){return R.name}),S.length>0)throw L="",d!=null&&(L="Alternatively, to avoid the dynamic ops, use model.execute() "+("and specify the inputs ["+p+"]")),new Error("Cannot compute the outputs ["+S+"] from the provided "+("inputs ["+a+"]. Consider providing the following inputs: ")+("["+h+"]. "+L));return[2,m]}})})},n.prototype.processStack=function(t,e,i,r,a,s,o,l,u){for(var c=this,h=[],d=function(){var f=e.pop();i.currentContext=f.contexts;var m="";if(f.node.op==="Enter"&&A("isConstant",f.node,r,i)&&(m=si(f.node.name,i)[0]),t.indexOf(f.node)===-1){var g=Pw(f.node,r,i);m||(m=si(f.node.name,i)[0]);var v=i.currentContext;g instanceof Promise?h.push(g.then(function(b){return r[m]=b,i.currentContext=v,c.checkTensorForDisposal(m,f.node,r,i,s,o,l),c.processChildNodes(f.node,e,i,r,a,u),b})):(r[m]=g,p.checkTensorForDisposal(m,f.node,r,i,s,o,l),p.processChildNodes(f.node,e,i,r,a,u))}else p.processChildNodes(f.node,e,i,r,a,u)},p=this;e.length>0;)d();return h},n.prototype.processChildNodes=function(t,e,i,r,a,s){t.children.forEach(function(o){var l=si(o.name,i)[0];if(a[l]||!s.has(o.name))return;o.op==="Merge"?o.inputNames.some(function(u){return!!Gt(u,r,i)})&&(a[l]=!0,e.push({contexts:i.currentContext,node:o})):o.inputNames.every(function(u){return!!Gt(u,r,i)})&&(a[l]=!0,e.push({contexts:i.currentContext,node:o}))})},n.prototype.dispose=function(){var t=this;Object.keys(this.weightMap).forEach(function(e){return t.weightMap[e].forEach(function(i){return i.dispose()})})},n.prototype.checkInputShapeAndType=function(t){var e=this;Object.keys(t).forEach(function(i){var r=t[i],a=Jt(i)[0],s=e.graph.nodes[a];if(s.attrParams.shape&&s.attrParams.shape.value){var o=s.attrParams.shape.value,l=o.length===r.shape.length&&r.shape.every(function(u,c){return o[c]===-1||o[c]===u});B.util.assert(l,function(){return"The shape of dict['"+s.name+"'] provided in "+("model.execute(dict) must be ["+o+"], but was ")+("["+r.shape+"]")})}s.attrParams.dtype&&s.attrParams.dtype.value&&B.util.assert(r.dtype===s.attrParams.dtype.value,function(){return"The dtype of dict['"+s.name+"'] provided in model.execute(dict) must be "+(s.attrParams.dtype.value+", but was "+r.dtype)})})},n.prototype.mapInputs=function(t){var e={};for(var i in t)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[i]!=null){var r=this._signature.inputs[i];e[r.name]=t[i]}else e[i]=t[i];return e},n.prototype.checkInputs=function(t){var e=this,i=Object.keys(t).filter(function(r){var a=Jt(r)[0];return e.graph.nodes[a]==null});if(i.length>0)throw new Error("The dict provided in model.execute(dict) has "+("keys: ["+i+"] that are not part of graph"))},n.prototype.mapOutputs=function(t){var e=this;return t.map(function(i){if(e._signature!=null&&e._signature.outputs!=null&&e._signature.outputs[i]!=null){var r=e._signature.outputs[i];return r.name}return i},{})},n.prototype.checkOutputs=function(t){var e=this;t.forEach(function(i){var r=Jt(i)[0];if(!e.graph.nodes[r])throw new Error("The output '"+i+"' is not found in the graph")})},n}();var QU="?tfjs-format=file",eB="model.json",qw=function(){function n(t,e){e===void 0&&(e={}),this.modelUrl=t,this.loadOptions=e,this.version="n/a",e==null&&(this.loadOptions={})}return Object.defineProperty(n.prototype,"modelVersion",{get:function(){return this.version},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputNodes",{get:function(){return this.executor.inputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputNodes",{get:function(){return this.executor.outputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputs",{get:function(){return this.executor.inputs},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"outputs",{get:function(){return this.executor.outputs},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"weights",{get:function(){return this.executor.weightMap},enumerable:!0,configurable:!0}),n.prototype.findIOHandler=function(){var t=this.modelUrl;if(t.load!=null)this.handler=t;else if(this.loadOptions.requestInit!=null)this.handler=B.io.browserHTTPRequest(t,this.loadOptions);else{var e=B.io.getLoadHandlers(t,this.loadOptions);if(e.length===0)e.push(B.io.browserHTTPRequest(t,this.loadOptions));else if(e.length>1)throw new Error("Found more than one ("+e.length+") load handlers for "+("URL '"+[t]+"'"));this.handler=e[0]}},n.prototype.load=function(){return Vn(this,void 0,void 0,function(){var t;return Tn(this,function(e){switch(e.label){case 0:if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,this.handler.load()];case 1:return t=e.sent(),[2,this.loadSync(t)]}})})},n.prototype.loadSync=function(t){this.artifacts=t;var e=this.artifacts.modelTopology,i={};this.artifacts.userDefinedMetadata!=null&&(i=this.artifacts.userDefinedMetadata.signature),this.version=e.versions.producer+"."+e.versions.minConsumer;var r=B.io.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new Vw(Ww.Instance.transformGraph(e,i)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),t.modelInitializer!=null){var a=Ww.Instance.transformGraph(t.modelInitializer);this.initializer=new Vw(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.execute({},[])}return!0},n.prototype.save=function(t,e){return Vn(this,void 0,void 0,function(){var i;return Tn(this,function(r){if(typeof t=="string"){if(i=B.io.getSaveHandlers(t),i.length===0)throw new Error("Cannot find any save handlers for URL '"+t+"'");if(i.length>1)throw new Error("Found more than one ("+i.length+") save handlers for "+("URL '"+t+"'"));t=i[0]}if(t.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[2,t.save(this.artifacts)]})})},n.prototype.predict=function(t,e){return this.execute(t,this.outputNodes)},n.prototype.normalizeInputs=function(t){if(!(t instanceof B.Tensor)&&!Array.isArray(t))return t;if(t=Array.isArray(t)?t:[t],t.length!==this.inputNodes.length)throw new Error("Input tensor count mismatch,"+("the graph model has "+this.inputNodes.length+" placeholders, ")+("while there are "+t.length+" input tensors."));return this.inputNodes.reduce(function(e,i,r){return e[i]=t[r],e},{})},n.prototype.normalizeOutputs=function(t){return t=t||this.outputNodes,Array.isArray(t)?t:[t]},n.prototype.execute=function(t,e){t=this.normalizeInputs(t),e=this.normalizeOutputs(e);var i=this.executor.execute(t,e);return i.length>1?i:i[0]},n.prototype.executeAsync=function(t,e){return Vn(this,void 0,void 0,function(){var i;return Tn(this,function(r){switch(r.label){case 0:return t=this.normalizeInputs(t),e=this.normalizeOutputs(e),[4,this.executor.executeAsync(t,e)];case 1:return i=r.sent(),[2,i.length>1?i:i[0]]}})})},n.prototype.convertTensorMapToTensorsMap=function(t){return Object.keys(t).reduce(function(e,i){return e[i]=[t[i]],e},{})},n.prototype.dispose=function(){this.executor.dispose(),this.initializer&&this.initializer.dispose()},n}();function tB(n,t){return t===void 0&&(t={}),Vn(this,void 0,void 0,function(){var e;return Tn(this,function(i){switch(i.label){case 0:if(n==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");return t==null&&(t={}),t.fromTFHub&&(n.load==null&&(n.endsWith("/")||(n=n+"/"),n=""+n+eB+QU)),e=new qw(n,t),[4,e.load()];case 1:return i.sent(),[2,e]}})})}var nB="2.6.0";gr.GraphModel=qw;gr.deregisterOp=VW;gr.loadGraphModel=tB;gr.registerOp=HW;gr.version_converter=nB});var h0=Le(Yt=>{"use strict";Object.defineProperty(Yt,"__esModule",{value:!0});var Ne=lr();var Md=function(n,t){return Md=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},Md(n,t)};function Ve(n,t){Md(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function se(n,t,e,i){return new(e||(e=Promise))(function(r,a){function s(u){try{l(i.next(u))}catch(c){a(c)}}function o(u){try{l(i.throw(u))}catch(c){a(c)}}function l(u){u.done?r(u.value):new e(function(c){c(u.value)}).then(s,o)}l((i=i.apply(n,t||[])).next())})}function oe(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]>>0,d-=l,d*=l,l=d>>>0,d-=l,l+=d*4294967296}return(l>>>0)*23283064365386963e-26};return u}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.alea=s})(la,n,!1)}),rB=vr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var h=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^h^h>>>8},o===(o|0)?l.x=o:u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor128=s})(la,n,!1)}),aB=vr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(h^h<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,o===(o|0)?l.x=o:u+=o;for(var c=0;c>>4),l.next()}function a(o,l){return l.x=o.x,l.y=o.y,l.z=o.z,l.w=o.w,l.v=o.v,l.d=o.d,l}function s(o,l){var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorwow=s})(la,n,!1)}),sB=vr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.x,h=l.i,d,p;return d=c[h],d^=d>>>7,p=d^d<<24,d=c[h+1&7],p^=d^d>>>10,d=c[h+3&7],p^=d^d>>>3,d=c[h+4&7],p^=d^d<<7,d=c[h+7&7],d=d^d<<13,p^=d^d<<9,c[h]=p,l.i=h+1&7,p};function u(c,h){var d,p,f=[];if(h===(h|0))p=f[0]=h;else for(h=""+h,d=0;d0;--d)c.next()}u(l,o)}function a(o,l){return l.x=o.x.slice(),l.i=o.i,l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.x&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xorshift7=s})(la,n,!1)}),oB=vr(function(n){(function(t,e,i){function r(o){var l=this;l.next=function(){var c=l.w,h=l.X,d=l.i,p,f;return l.w=c=c+1640531527|0,f=h[d+34&127],p=h[d=d+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,f=h[d]=f^p,l.i=d,f+(c^c>>>16)|0};function u(c,h){var d,p,f,m,g,v=[],b=128;for(h===(h|0)?(p=h,h=null):(h=h+"\0",p=0,b=Math.max(b,h.length)),f=0,m=-32;m>>15,p^=p<<4,p^=p>>>13,m>=0&&(g=g+1640531527|0,d=v[m&127]^=p+g,f=d==0?f+1:0);for(f>=128&&(v[(h&&h.length||0)&127]=-1),f=127,m=4*128;m>0;--m)p=v[f+34&127],d=v[f=f+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,v[f]=p^d;c.w=g,c.X=v,c.i=f}u(l,o)}function a(o,l){return l.i=o.i,l.w=o.w,l.X=o.X.slice(),l}function s(o,l){o==null&&(o=+new Date);var u=new r(o),c=l&&l.state,h=function(){return(u.next()>>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(c.X&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.xor4096=s})(la,n,!1)}),lB=vr(function(n){(function(t,e,i){function r(o){var l=this,u="";l.next=function(){var h=l.b,d=l.c,p=l.d,f=l.a;return h=h<<25^h>>>7^d,d=d-p|0,p=p<<24^p>>>8^f,f=f-h|0,l.b=h=h<<20^h>>>12^d,l.c=d=d-p|0,l.d=p<<16^d>>>16^f,l.a=f-h|0},l.a=0,l.b=0,l.c=2654435769|0,l.d=1367130551,o===Math.floor(o)?(l.a=o/4294967296|0,l.b=o|0):u+=o;for(var c=0;c>>0)/4294967296};return h.double=function(){do var d=u.next()>>>11,p=(u.next()>>>0)/4294967296,f=(d+p)/(1<<21);while(f===0);return f},h.int32=u.next,h.quick=h,c&&(typeof c=="object"&&a(c,u),h.state=function(){return a(u,{})}),h}e&&e.exports?e.exports=s:i&&i.amd?i(function(){return s}):this.tychei=s})(la,n,!1)}),yr=vr(function(n){(function(t,e){var i=this,r=256,a=6,s=52,o="random",l=e.pow(r,a),u=e.pow(2,s),c=u*2,h=r-1,d;function p(S,L,N){var C=[];L=L==!0?{entropy:!0}:L||{};var R=v(g(L.entropy?[S,w(t)]:S??b(),3),C),D=new f(C),k=function(){for(var W=D.g(a),F=l,P=0;W=c;)W/=2,F/=2,P>>>=1;return(W+P)/F};return k.int32=function(){return D.g(4)|0},k.quick=function(){return D.g(4)/4294967296},k.double=k,v(w(D.S),t),(L.pass||N||function(W,F,P,H){return H&&(H.S&&m(H,D),W.state=function(){return m(D,{})}),P?(e[o]=W,F):W})(k,R,"global"in L?L.global:this==e,L.state)}e["seed"+o]=p;function f(S){var L,N=S.length,C=this,R=0,D=C.i=C.j=0,k=C.S=[];for(N||(S=[N++]);R=this.items.length?[2,{value:null,done:!0}]:(e=this.items[this.trav],this.trav++,[2,{value:mB(e),done:!1}])})})},t}(xt),yB=function(n){Ve(t,n);function t(e){var i=n.call(this)||this;return i.nextFn=e,i}return t.prototype.summary=function(){return"Function call"},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){try{return[2,this.nextFn()]}catch(i){throw i.message="Error thrown while iterating through a dataset: "+i.message,i}return[2]})})},t}(xt),LB=function(n){Ve(t,n);function t(e){var i=n.call(this)||this;return i.upstream=e,i.lastRead=Promise.resolve({value:null,done:!1}),i}return t.prototype.summary=function(){return this.upstream.summary()+" -> Serial"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return[2,this.upstream.next()]})})},t}(xt),IB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.maxCount=i,r.count=0,r.lastRead=Promise.resolve({value:null,done:!1}),r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Skip"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:return this.count++ Take"},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return this.count++>=this.maxCount?[2,{value:null,done:!0}]:[2,this.upstream.next()]})})},t}(xt),TB=function(n){Ve(t,n);function t(e,i,r){r===void 0&&(r=!0);var a=n.call(this)||this;return a.upstream=e,a.batchSize=i,a.enableSmallLastBatch=r,a.lastRead=Promise.resolve({value:null,done:!1}),a}return t.prototype.summary=function(){return this.upstream.summary()+" -> RowMajorBatch"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e,i;return oe(this,function(r){switch(r.label){case 0:e=[],r.label=1;case 1:return e.length0?[2,{value:e,done:!1}]:[2,{value:null,done:!0}]:(e.push(i.value),[3,1]);case 3:return[2,{value:e,done:!1}]}})})},t}(xt),NB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.predicate=i,r.lastRead=Promise.resolve({value:null,done:!1}),r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Filter"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:return[4,this.upstream.next()];case 1:return e=i.sent(),e.done||this.predicate(e.value)?[2,e]:(Ne.dispose(e.value),[3,0]);case 2:return[2]}})})},t}(xt),xB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.transform=i,r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Map"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s,o,l;return oe(this,function(u){switch(u.label){case 0:return[4,this.upstream.next()];case 1:if(e=u.sent(),e.done)return[2,{value:null,done:!0}];for(i=Ne.tensor_util.getTensorsInContainer(e.value),r=this.transform(e.value),a=Ne.tensor_util.getTensorsInContainer(r),s=0,o=i;s handleErrors"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.upstream.next()];case 2:return[2,i.sent()];case 3:return e=i.sent(),this.handler(e)?[3,4]:[2,{value:null,done:!0}];case 4:return[3,0];case 5:return[2]}})})},t}(xt),Qw=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.transform=i,r}return t.prototype.summary=function(){return this.upstream.summary()+" -> AsyncMap"},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s,o,l;return oe(this,function(u){switch(u.label){case 0:return[4,this.upstream.next()];case 1:return e=u.sent(),e.done?[2,{value:null,done:!0}]:(i=Ne.tensor_util.getTensorsInContainer(e.value),[4,this.transform(e.value)]);case 2:for(r=u.sent(),a=Ne.tensor_util.getTensorsInContainer(r),s=0,o=i;s Flatmap"},t.prototype.pump=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s,o,l;return oe(this,function(u){switch(u.label){case 0:return[4,this.upstream.next()];case 1:if(e=u.sent(),e.done)return[2,!1];for(i=Ne.tensor_util.getTensorsInContainer(e.value),r=this.transform(e.value),a=Ne.tensor_util.getTensorsInContainer(r),this.outputQueue.pushAll(r),s=0,o=i;s Chained"},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return this.lastRead=this.readFromChain(this.lastRead),[2,this.lastRead]})})},t.prototype.readFromChain=function(e){return se(this,void 0,void 0,function(){var i,r;return oe(this,function(a){switch(a.label){case 0:return[4,e];case 1:return a.sent(),this.iterator==null?[4,this.moreIterators.next()]:[3,3];case 2:if(i=a.sent(),i.done)return[2,{value:null,done:!0}];this.iterator=i.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler)),a.label=3;case 3:return[4,this.iterator.next()];case 4:return r=a.sent(),r.done?(this.iterator=null,[2,this.readFromChain(e)]):[2,r]}})})},t}(xt),Fi;(function(n){n[n.FAIL=0]="FAIL",n[n.SHORTEST=1]="SHORTEST",n[n.LONGEST=2]="LONGEST"})(Fi||(Fi={}));var wB=function(n){Ve(t,n);function t(e,i){i===void 0&&(i=Fi.FAIL);var r=n.call(this)||this;return r.iterators=e,r.mismatchMode=i,r.count=0,r.currentPromise=null,r}return t.prototype.summary=function(){var e="TODO: fill in upstream of zip summaries";return"{"+e+"} -> Zip"},t.prototype.nextState=function(e){return se(this,void 0,void 0,function(){function i(o){if(o instanceof xt){var l=o.next();return{value:l.then(function(u){return r++,u.done&&a++,u.value}),recurse:!1}}else return{value:null,recurse:!0}}var r,a,s;return oe(this,function(o){switch(o.label){case 0:return[4,e];case 1:return o.sent(),r=0,a=0,[4,$w(this.iterators,i)];case 2:if(s=o.sent(),r===a)return[2,{value:null,done:!0}];if(a>0)switch(this.mismatchMode){case Fi.FAIL:throw new Error("Zipped streams should have the same length. "+("Mismatched at element "+this.count+"."));case Fi.SHORTEST:return[2,{value:null,done:!0}];case Fi.LONGEST:}return this.count++,[2,{value:s,done:!1}]}})})},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return this.currentPromise=this.nextState(this.currentPromise),[2,this.currentPromise]})})},t}(xt),e0=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.bufferSize=i,r.buffer=new Xw(i),r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Prefetch"},t.prototype.refill=function(){for(;!this.buffer.isFull();){var e=this.upstream.next();this.buffer.push(e)}},t.prototype.next=function(){return this.refill(),this.buffer.shift()},t}(xt),OB=function(n){Ve(t,n);function t(e,i,r){var a=n.call(this,e,i)||this;return a.upstream=e,a.windowSize=i,a.upstreamExhausted=!1,a.random=Yw(r||Ne.util.now().toString()),a.lastRead=Promise.resolve({value:null,done:!1}),a}return t.prototype.next=function(){return se(this,void 0,void 0,function(){var e=this;return oe(this,function(i){return this.lastRead=this.lastRead.then(function(){return e.serialNext()}),[2,this.lastRead]})})},t.prototype.randomInt=function(e){return Math.floor(this.random()*e)},t.prototype.chooseIndex=function(){return this.randomInt(this.buffer.length())},t.prototype.serialNext=function(){return se(this,void 0,void 0,function(){var e,i;return oe(this,function(r){switch(r.label){case 0:this.upstreamExhausted||this.refill(),r.label=1;case 1:return this.buffer.isEmpty()?[3,3]:(e=this.chooseIndex(),[4,this.buffer.shuffleExcise(e)]);case 2:if(i=r.sent(),i.done)this.upstreamExhausted=!0;else return this.refill(),[2,i];return[3,1];case 3:return[2,{value:null,done:!0}]}})})},t}(e0);var hs=function(){function n(){this.size=null}return n.prototype.batch=function(t,e){var i=this;e===void 0&&(e=!0);var r=this;Ne.util.assert(t>0,function(){return`batchSize needs to be positive, but it is + `+t});var a;return this.size===Infinity||this.size==null?a=this.size:e?a=Math.ceil(this.size/t):a=Math.floor(this.size/t),Zt(function(){return se(i,void 0,void 0,function(){return oe(this,function(s){switch(s.label){case 0:return[4,r.iterator()];case 1:return[2,s.sent().columnMajorBatch(t,e,EB)]}})})},a)},n.prototype.concatenate=function(t){var e=this,i=this,r;return this.size===Infinity||t.size===Infinity?r=Infinity:this.size!=null&&t.size!=null?r=this.size+t.size:r=null,Zt(function(){return se(e,void 0,void 0,function(){var a,s;return oe(this,function(o){switch(o.label){case 0:return[4,i.iterator()];case 1:return s=(a=o.sent()).concatenate,[4,t.iterator()];case 2:return[2,s.apply(a,[o.sent()])]}})})},r)},n.prototype.filter=function(t){var e=this,i=this,r;return this.size===Infinity?r=Infinity:r=null,Zt(function(){return se(e,void 0,void 0,function(){return oe(this,function(a){switch(a.label){case 0:return[4,i.iterator()];case 1:return[2,a.sent().filter(function(s){return Ne.tidy(function(){return t(s)})})]}})})},r)},n.prototype.forEachAsync=function(t){return se(this,void 0,void 0,function(){return oe(this,function(e){switch(e.label){case 0:return[4,this.iterator()];case 1:return[2,e.sent().forEachAsync(t)]}})})},n.prototype.map=function(t){var e=this,i=this;return Zt(function(){return se(e,void 0,void 0,function(){return oe(this,function(r){switch(r.label){case 0:return[4,i.iterator()];case 1:return[2,r.sent().map(function(a){return Ne.tidy(function(){return t(a)})})]}})})},this.size)},n.prototype.mapAsync=function(t){var e=this,i=this;return Zt(function(){return se(e,void 0,void 0,function(){return oe(this,function(r){switch(r.label){case 0:return[4,i.iterator()];case 1:return[2,r.sent().mapAsync(t)]}})})},this.size)},n.prototype.prefetch=function(t){var e=this;if(t==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");var i=this;return Zt(function(){return se(e,void 0,void 0,function(){return oe(this,function(r){switch(r.label){case 0:return[4,i.iterator()];case 1:return[2,r.sent().prefetch(t)]}})})},this.size)},n.prototype.repeat=function(t){var e=this,i=this,r;return this.size!=null&&t>0?r=this.size*t:t===0?r=0:this.size!=null&&(t===void 0||t<0)?r=Infinity:r=null,Zt(function(){return se(e,void 0,void 0,function(){var a,s=this;return oe(this,function(o){return a=Hd(function(){return se(s,void 0,void 0,function(){var l;return oe(this,function(u){switch(u.label){case 0:return l={},[4,i.iterator()];case 1:return[2,(l.value=u.sent(),l.done=!1,l)]}})})}),[2,bB(a.take(t))]})})},r)},n.prototype.skip=function(t){var e=this,i=this,r;return this.size!=null&&t>=0&&this.size>=t?r=this.size-t:this.size!=null&&(this.sizet?r=t:this.size!=null&&this.size<=t?r=this.size:r=null,Zt(function(){return se(e,void 0,void 0,function(){return oe(this,function(a){switch(a.label){case 0:return[4,i.iterator()];case 1:return[2,a.sent().take(t)]}})})},r)},n.prototype.toArray=function(){return se(this,void 0,void 0,function(){return oe(this,function(t){switch(t.label){case 0:if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return[4,this.iterator()];case 1:return[2,t.sent().toArray()]}})})},n.prototype.toArrayForTest=function(){return se(this,void 0,void 0,function(){return oe(this,function(t){switch(t.label){case 0:if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return[4,this.iterator()];case 1:return[2,t.sent().toArrayForTest()]}})})},n.MAX_BUFFER_SIZE=1e4,n}();function Zt(n,t){return t===void 0&&(t=null),new(function(e){Ve(i,e);function i(){var r=e!==null&&e.apply(this,arguments)||this;return r.size=t,r}return i.prototype.iterator=function(){return se(this,void 0,void 0,function(){return oe(this,function(r){return[2,n()]})})},i}(hs))}function DB(n){var t=this;return Zt(function(){return se(t,void 0,void 0,function(){return oe(this,function(e){return[2,Jw(n)]})})},n.length)}function kB(n){var t=this;if(!ua(n))throw new Error("The argument to zip() must be an object or array.");var e;if(Array.isArray(n))for(var i=0;i1}),Ne.util.assert(r.length===0,function(){return"Duplicate column names found: "+r.toString()}),this.columnConfigs){for(a=0,s=Object.keys(this.columnConfigs);a14||!Number.isInteger(r))throw new Error("Invalid fftSize: it must be a power of 2 between "+("2 to 4 and 2 to 14, but got "+i.fftSize));if(i.numFrames=e.numFramesPerSpectrogram||43,i.sampleRateHz=e.sampleRateHz,i.columnTruncateLength=e.columnTruncateLength||i.fftSize,i.audioTrackConstraints=e.audioTrackConstraints,i.smoothingTimeConstant=e.smoothingTimeConstant||0,i.includeSpectrogram=!(e.includeSpectrogram===!1),i.includeWaveform=e.includeWaveform===!0,!i.includeSpectrogram&&!i.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.");return i}return t.prototype.summary=function(){return"microphone"},t.create=function(e){return e===void 0&&(e={}),se(this,void 0,void 0,function(){var i;return oe(this,function(r){switch(r.label){case 0:if(Ne.env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");return i=new t(e),[4,i.start()];case 1:return r.sent(),[2,i]}})})},t.prototype.start=function(){return se(this,void 0,void 0,function(){var e,i,r,a;return oe(this,function(s){switch(s.label){case 0:return s.trys.push([0,2,,3]),e=this,[4,navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})];case 1:return e.stream=s.sent(),[3,3];case 2:throw i=s.sent(),new Error("Error thrown while initializing video stream: "+i.message);case 3:if(!this.stream)throw new Error("Could not obtain audio from microphone.");if(r=window.AudioContext||window.webkitAudioContext,this.audioContext=new r,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error("Mismatch in sampling rate: "+("Expected: "+this.sampleRateHz+"; ")+("Actual: "+this.audioContext.sampleRate));return a=this.audioContext.createMediaStreamSource(this.stream),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,a.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize),[2]}})})},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s;return oe(this,function(o){switch(o.label){case 0:return this.isClosed?[2,{value:null,done:!0}]:[4,this.getAudioData()];case 1:return r=o.sent(),this.includeSpectrogram&&(a=this.flattenQueue(r.freqDataQueue),e=this.getTensorFromAudioDataArray(a,[this.numFrames,this.columnTruncateLength,1])),this.includeWaveform&&(s=this.flattenQueue(r.timeDataQueue),i=this.getTensorFromAudioDataArray(s,[this.numFrames*this.fftSize,1])),[2,{value:{spectrogram:e,waveform:i},done:!1}]}})})},t.prototype.capture=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){switch(e.label){case 0:return[4,this.next()];case 1:return[2,e.sent().value]}})})},t.prototype.getAudioData=function(){return se(this,void 0,void 0,function(){var e,i,r,a=this;return oe(this,function(s){return e=[],i=[],r=0,[2,new Promise(function(o){var l=setInterval(function(){a.includeSpectrogram&&(a.analyser.getFloatFrequencyData(a.freqData),a.freqData[0]===-Infinity&&o({freqDataQueue:e,timeDataQueue:i}),e.push(a.freqData.slice(0,a.columnTruncateLength))),a.includeWaveform&&(a.analyser.getFloatTimeDomainData(a.timeData),i.push(a.timeData.slice())),++r===a.numFrames&&(clearInterval(l),o({freqDataQueue:e,timeDataQueue:i}))},a.fftSize/a.sampleRateHz*1e3)})]})})},t.prototype.stop=function(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())},t.prototype.toArray=function(){throw new Error("Can not convert infinite audio stream to array.")},t.prototype.getSampleRate=function(){return this.sampleRateHz},t.prototype.flattenQueue=function(e){var i=e[0].length,r=new Float32Array(e.length*i);return e.forEach(function(a,s){return r.set(a,s*i)}),r},t.prototype.getTensorFromAudioDataArray=function(e,i){var r=new Float32Array(Ne.util.sizeFromShape(i));return r.set(e,r.length-e.length),Ne.tensor(r,i)},t}(xt);var UB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;if(r.webcamVideoElement=e,r.webcamConfig=i,r.isClosed=!0,r.resize=!1,r.needToResize())if(r.resize=!0,r.cropSize=[r.webcamConfig.resizeHeight,r.webcamConfig.resizeWidth],r.cropBoxInd=Ne.tensor1d([0],"int32"),r.webcamConfig.centerCrop){var a=r.webcamConfig.resizeWidth*1/r.webcamVideoElement.width,s=r.webcamConfig.resizeHeight*1/r.webcamVideoElement.height,o=(1-a)/2,l=(1-s)/2,u=o+a,c=s+l;r.cropBox=Ne.tensor2d([l,o,c,u],[1,4])}else r.cropBox=Ne.tensor2d([0,0,1,1],[1,4]);return r}return t.prototype.summary=function(){return"webcam"},t.create=function(e,i){return i===void 0&&(i={}),se(this,void 0,void 0,function(){var r;return oe(this,function(a){switch(a.label){case 0:if(Ne.env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!i.resizeWidth||!i.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=i.resizeWidth,e.height=i.resizeHeight}return r=new t(e,i),[4,r.start()];case 1:return a.sent(),[2,r]}})})},t.prototype.start=function(){return se(this,void 0,void 0,function(){var e,i,r=this;return oe(this,function(a){switch(a.label){case 0:this.webcamConfig.facingMode&&Ne.util.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",function(){return"Invalid webcam facing mode: "+r.webcamConfig.facingMode+". Please provide 'user' or 'environment'"}),a.label=1;case 1:return a.trys.push([1,3,,4]),e=this,[4,navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})];case 2:return e.stream=a.sent(),[3,4];case 3:throw i=a.sent(),i.message="Error thrown while initializing video stream: "+i.message,i;case 4:if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(s){console.log(s),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,[2,new Promise(function(s){r.webcamVideoElement.onloadedmetadata=function(){s()}})]}})})},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){if(this.isClosed)return[2,{value:null,done:!0}];try{e=Ne.browser.fromPixels(this.webcamVideoElement)}catch(r){throw new Error("Error thrown converting video to pixels: "+JSON.stringify(r))}if(this.resize)try{return[2,{value:this.cropAndResizeFrame(e),done:!1}]}catch(r){throw new Error("Error thrown cropping the video: "+r.message)}finally{e.dispose()}else return[2,{value:e,done:!1}];return[2]})})},t.prototype.needToResize=function(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))},t.prototype.cropAndResizeFrame=function(e){var i=this;return Ne.tidy(function(){var r=e.toFloat().expandDims(0),a;a=Ne.image.cropAndResize(r,i.cropBox,i.cropBoxInd,i.cropSize,"bilinear");var s=a.shape;return a.reshape(s.slice(1))})},t.prototype.capture=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){switch(e.label){case 0:return[4,this.next()];case 1:return[2,e.sent().value]}})})},t.prototype.stop=function(){var e=this.stream.getTracks();e.forEach(function(i){return i.stop()});try{this.webcamVideoElement.srcObject=null}catch(i){console.log(i),this.webcamVideoElement.src=null}this.isClosed=!0},t.prototype.toArray=function(){throw new Error("Can not convert infinite video stream to array.")},t}(xt);var a0=function(){function n(){}return n}();var s0=function(n){Ve(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.split=function(e){return new BB(this,e)},t}(xt),BB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.impl=new zB(e,i),r}return t.prototype.summary=function(){return this.impl.summary()},t.prototype.next=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return[2,this.impl.next()]})})},t}(s0),zB=function(n){Ve(t,n);function t(e,i){var r=n.call(this)||this;return r.upstream=e,r.separator=i,r.carryover="",r}return t.prototype.summary=function(){return this.upstream.summary()+" -> Split('"+this.separator+"')"},t.prototype.pump=function(){return se(this,void 0,void 0,function(){var e,i,r,a,s;return oe(this,function(o){switch(o.label){case 0:return[4,this.upstream.next()];case 1:if(e=o.sent(),e.done)return this.carryover===""?[2,!1]:(this.outputQueue.push(this.carryover),this.carryover="",[2,!0]);for(i=e.value.split(this.separator),i[0]=this.carryover+i[0],r=0,a=i.slice(0,-1);r Utf8"},t.prototype.pump=function(){return se(this,void 0,void 0,function(){var e,i,r;return oe(this,function(a){switch(a.label){case 0:return[4,this.upstream.next()];case 1:return e=a.sent(),e.done?[2,!1]:(i=e.value,Ne.env().get("IS_BROWSER")?r=this.decoder.decode(i,{stream:!0}):r=this.decoder.write(Buffer.from(i.buffer)),this.outputQueue.push(r),[2,!0])}})})},t}(Vd);var o0=function(n){Ve(t,n);function t(e,i){i===void 0&&(i={});var r=n.call(this)||this;return r.file=e,r.options=i,Ne.util.assert(e instanceof Uint8Array||(Ne.env().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),function(){return"FileChunkIterator only supports File, Blob and Uint8Array right now."}),r.offset=i.offset||0,r.chunkSize=i.chunkSize||1024*1024,r}return t.prototype.summary=function(){return"FileChunks "+this.file},t.prototype.next=function(){return se(this,void 0,void 0,function(){var e,i,r=this;return oe(this,function(a){switch(a.label){case 0:return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?[2,{value:null,done:!0}]:(e=new Promise(function(s,o){var l=r.offset+r.chunkSize;if(r.file instanceof Uint8Array)s(new Uint8Array(r.file.slice(r.offset,l)));else{var u=new FileReader;u.onload=function(h){var d=u.result;if(d instanceof ArrayBuffer&&(d=new Uint8Array(d)),!(d instanceof Uint8Array))return o(new TypeError("FileReader returned unknown type."));s(d)},u.onabort=function(h){return o(new Error("Aborted"))},u.onerror=function(h){return o(new Error(h.type))};var c=r.file.slice(r.offset,l);u.readAsArrayBuffer(c)}r.offset=l}),i={},[4,e]);case 1:return[2,(i.value=a.sent(),i.done=!1,i)]}})})},t}(_B);function VB(n,t){return t===void 0&&(t={}),se(this,void 0,void 0,function(){var e,i,r,a,s;return oe(this,function(o){switch(o.label){case 0:return typeof n=="string"?e=n:(e=n.url,i=HB(n)),[4,Ne.util.fetch(e,i)];case 1:return r=o.sent(),r.ok?(s=Uint8Array.bind,[4,r.arrayBuffer()]):[3,3];case 2:return a=new(s.apply(Uint8Array,[void 0,o.sent()])),[2,new o0(a,t)];case 3:throw new Error(r.statusText)}})})}var HB=function(n){var t={method:n.method,headers:n.headers,body:n.body,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,referrer:n.referrer,integrity:n.integrity};return t};function l0(n){return typeof n=="string"&&n.substr(0,7)==="file://"}var u0=function(n){Ve(t,n);function t(e,i){i===void 0&&(i={});var r=n.call(this)||this;return r.input=e,r.options=i,r}return t.prototype.iterator=function(){return se(this,void 0,void 0,function(){var e;return oe(this,function(i){return l0(this.input)&&Ne.env().get("IS_NODE")&&(e=require("fs"),this.input=e.readFileSync(this.input.substr(7))),[2,new o0(this.input,this.options)]})})},t}(a0);var c0=function(n){Ve(t,n);function t(e,i){i===void 0&&(i={});var r=n.call(this)||this;return r.url=e,r.fileOptions=i,r}return t.prototype.iterator=function(){return se(this,void 0,void 0,function(){return oe(this,function(e){return l0(this.url)?[2,new u0(this.url,this.fileOptions).iterator()]:[2,VB(this.url,this.fileOptions)]})})},t}(a0);function qB(n,t){return t===void 0&&(t={}),new r0(new c0(n),t)}function GB(n){var t=this,e=Hd(n);return Zt(function(){return se(t,void 0,void 0,function(){return oe(this,function(i){return[2,e]})})})}function YB(n){var t=this;return Zt(function(){return se(t,void 0,void 0,function(){var e;return oe(this,function(i){switch(i.label){case 0:return[4,n()];case 1:return e=i.sent(),[2,Hd(function(){return e.next()})]}})})})}function jB(n,t){return se(this,void 0,void 0,function(){return oe(this,function(e){return[2,UB.create(n,t)]})})}function KB(n){return se(this,void 0,void 0,function(){return oe(this,function(t){return[2,WB.create(n)]})})}var $B="2.6.0";Yt.CSVDataset=r0;Yt.Dataset=hs;Yt.FileDataSource=u0;Yt.TextLineDataset=t0;Yt.URLDataSource=c0;Yt.array=DB;Yt.csv=qB;Yt.func=GB;Yt.generator=YB;Yt.microphone=KB;Yt.version_data=$B;Yt.webcam=jB;Yt.zip=kB});var p0=Le((d0,Gd)=>{(function(n,t,e){function i(o){var l=this,u=s();l.next=function(){var c=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=c-(l.c=c|0)},l.c=1,l.s0=u(" "),l.s1=u(" "),l.s2=u(" "),l.s0-=u(o),l.s0<0&&(l.s0+=1),l.s1-=u(o),l.s1<0&&(l.s1+=1),l.s2-=u(o),l.s2<0&&(l.s2+=1),u=null}function r(o,l){return l.c=o.c,l.s0=o.s0,l.s1=o.s1,l.s2=o.s2,l}function a(o,l){var u=new i(o),c=l&&l.state,h=u.next;return h.int32=function(){return u.next()*4294967296|0},h.double=function(){return h()+(h()*2097152|0)*11102230246251565e-32},h.quick=h,c&&(typeof c=="object"&&r(c,u),h.state=function(){return r(u,{})}),h}function s(){var o=4022871197,l=function(u){u=u.toString();for(var c=0;c>>0,h-=o,h*=o,o=h>>>0,h-=o,o+=h*4294967296}return(o>>>0)*23283064365386963e-26};return l}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.alea=a})(d0,typeof Gd=="object"&&Gd,typeof define=="function"&&define)});var m0=Le((f0,Yd)=>{(function(n,t,e){function i(s){var o=this,l="";o.x=0,o.y=0,o.z=0,o.w=0,o.next=function(){var c=o.x^o.x<<11;return o.x=o.y,o.y=o.z,o.z=o.w,o.w^=o.w>>>19^c^c>>>8},s===(s|0)?o.x=s:l+=s;for(var u=0;u>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xor128=a})(f0,typeof Yd=="object"&&Yd,typeof define=="function"&&define)});var v0=Le((g0,jd)=>{(function(n,t,e){function i(s){var o=this,l="";o.next=function(){var c=o.x^o.x>>>2;return o.x=o.y,o.y=o.z,o.z=o.w,o.w=o.v,(o.d=o.d+362437|0)+(o.v=o.v^o.v<<4^(c^c<<1))|0},o.x=0,o.y=0,o.z=0,o.w=0,o.v=0,s===(s|0)?o.x=s:l+=s;for(var u=0;u>>4),o.next()}function r(s,o){return o.x=s.x,o.y=s.y,o.z=s.z,o.w=s.w,o.v=s.v,o.d=s.d,o}function a(s,o){var l=new i(s),u=o&&o.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xorwow=a})(g0,typeof jd=="object"&&jd,typeof define=="function"&&define)});var b0=Le((y0,Kd)=>{(function(n,t,e){function i(s){var o=this;o.next=function(){var u=o.x,c=o.i,h,d,p;return h=u[c],h^=h>>>7,d=h^h<<24,h=u[c+1&7],d^=h^h>>>10,h=u[c+3&7],d^=h^h>>>3,h=u[c+4&7],d^=h^h<<7,h=u[c+7&7],h=h^h<<13,d^=h^h<<9,u[c]=d,o.i=c+1&7,d};function l(u,c){var h,d,p=[];if(c===(c|0))d=p[0]=c;else for(c=""+c,h=0;h0;--h)u.next()}l(o,s)}function r(s,o){return o.x=s.x.slice(),o.i=s.i,o}function a(s,o){s==null&&(s=+new Date);var l=new i(s),u=o&&o.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.x&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xorshift7=a})(y0,typeof Kd=="object"&&Kd,typeof define=="function"&&define)});var S0=Le((w0,$d)=>{(function(n,t,e){function i(s){var o=this;o.next=function(){var u=o.w,c=o.X,h=o.i,d,p;return o.w=u=u+1640531527|0,p=c[h+34&127],d=c[h=h+1&127],p^=p<<13,d^=d<<17,p^=p>>>15,d^=d>>>12,p=c[h]=p^d,o.i=h,p+(u^u>>>16)|0};function l(u,c){var h,d,p,f,m,g=[],v=128;for(c===(c|0)?(d=c,c=null):(c=c+"\0",d=0,v=Math.max(v,c.length)),p=0,f=-32;f>>15,d^=d<<4,d^=d>>>13,f>=0&&(m=m+1640531527|0,h=g[f&127]^=d+m,p=h==0?p+1:0);for(p>=128&&(g[(c&&c.length||0)&127]=-1),p=127,f=4*128;f>0;--f)d=g[p+34&127],h=g[p=p+1&127],d^=d<<13,h^=h<<17,d^=d>>>15,h^=h>>>12,g[p]=d^h;u.w=m,u.X=g,u.i=p}l(o,s)}function r(s,o){return o.i=s.i,o.w=s.w,o.X=s.X.slice(),o}function a(s,o){s==null&&(s=+new Date);var l=new i(s),u=o&&o.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(u.X&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.xor4096=a})(w0,typeof $d=="object"&&$d,typeof define=="function"&&define)});var I0=Le((L0,Xd)=>{(function(n,t,e){function i(s){var o=this,l="";o.next=function(){var c=o.b,h=o.c,d=o.d,p=o.a;return c=c<<25^c>>>7^h,h=h-d|0,d=d<<24^d>>>8^p,p=p-c|0,o.b=c=c<<20^c>>>12^h,o.c=h=h-d|0,o.d=d<<16^h>>>16^p,o.a=p-c|0},o.a=0,o.b=0,o.c=2654435769|0,o.d=1367130551,s===Math.floor(s)?(o.a=s/4294967296|0,o.b=s|0):l+=s;for(var u=0;u>>0)/4294967296};return c.double=function(){do var h=l.next()>>>11,d=(l.next()>>>0)/4294967296,p=(h+d)/(1<<21);while(p===0);return p},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&r(u,l),c.state=function(){return r(l,{})}),c}t&&t.exports?t.exports=a:e&&e.amd?e(function(){return a}):this.tychei=a})(L0,typeof Xd=="object"&&Xd,typeof define=="function"&&define)});var A0=Le((vV,Jo)=>{(function(n,t){var e=this,i=256,r=6,a=52,s="random",o=t.pow(i,r),l=t.pow(2,a),u=l*2,c=i-1,h;function d(w,S,L){var N=[];S=S==!0?{entropy:!0}:S||{};var C=g(m(S.entropy?[w,b(n)]:w??v(),3),N),R=new p(N),D=function(){for(var k=R.g(r),W=o,F=0;k=u;)k/=2,W/=2,F>>>=1;return(k+F)/W};return D.int32=function(){return R.g(4)|0},D.quick=function(){return R.g(4)/4294967296},D.double=D,g(b(R.S),n),(S.pass||L||function(k,W,F,P){return P&&(P.S&&f(P,R),k.state=function(){return f(R,{})}),F?(t[s]=k,W):k})(D,C,"global"in S?S.global:this==t,S.state)}t["seed"+s]=d;function p(w){var S,L=w.length,N=this,C=0,R=N.i=N.j=0,D=N.S=[];for(L||(w=[L++]);C{var XB=p0(),JB=m0(),ZB=v0(),QB=b0(),ez=S0(),tz=I0(),br=A0();br.alea=XB;br.xor128=JB;br.xorwow=ZB;br.xorshift7=QB;br.xor4096=ez;br.tychei=tz;T0.exports=br});var Z0=Le(ps=>{"use strict";Object.defineProperty(ps,"__esModule",{value:!0});var T=lr(),nz=N0();var Jd=function(n,t){return Jd=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},Jd(n,t)};function iz(n,t){Jd(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function x0(n,t,e,i){function r(a){return a instanceof e?a:new e(function(s){s(a)})}return new(e||(e=Promise))(function(a,s){function o(c){try{u(i.next(c))}catch(h){s(h)}}function l(c){try{u(i.throw(c))}catch(h){s(h)}}function u(c){c.done?a(c.value):r(c.value).then(o,l)}u((i=i.apply(n,t||[])).next())})}function C0(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]f&&(f=v,m=g)}c[d]=m}return l},t.prototype.cumsum=function(e,i,r,a){if(ae(e,"cumsum"),i!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" "+("but got axis="+i));for(var s=T.upcastType(e.dtype,"int32"),o=T.zeros(e.shape,s),l=this.readSync(o.dataId),u=this.readSync(e.dataId),c=e.shape[e.rank-1],h=a?function(g,v){return g+c-v-1}:function(g,v){return g+v},d=0;da?1:0})},t.prototype.greaterEqual=function(e,i){return ae([e,i],"greaterEqual"),this.broadcastedBinaryOp(e,i,"bool",function(r,a){return r>=a?1:0})},t.prototype.logicalAnd=function(e,i){return ae([e,i],"logicalAnd"),this.broadcastedBinaryOp(e,i,"bool",function(r,a){return r&&a})},t.prototype.logicalOr=function(e,i){return ae([e,i],"logicalOr"),this.broadcastedBinaryOp(e,i,"bool",function(r,a){return r||a})},t.prototype.select=function(e,i,r){ae([e,i,r],"select");for(var a=this.readSync(e.dataId),s=this.readSync(i.dataId),o=this.readSync(r.dataId),l=T.zeros(i.shape,T.upcastType(i.dtype,r.dtype)),u=this.readSync(l.dataId),c=0,h=e.rank===0||e.rank>1||i.rank===1?1:T.util.sizeFromShape(i.shape.slice(1)),d=0;d=0&&a>=0?s:(s+a)%a})},t.prototype.maximum=function(e,i){return ae([e,i],"maximum"),this.broadcastedBinaryOp(e,i,e.dtype,function(r,a){return Math.max(r,a)})},t.prototype.all=function(e,i){ae(e,"all"),T.backend_util.assertAxesAreInnerMostDims("all",i,e.rank);for(var r=T.backend_util.computeOutAndReduceShapes(e.shape,i),a=r[0],s=r[1],o=T.zeros(a,e.dtype),l=T.util.sizeFromShape(s),u=this.readSync(o.dataId),c=this.readSync(e.dataId),h=0;h=1?r[o]=s[o]:r[o]=s[o]*(l+1)}return this.makeOutput(r,i.shape,"float32")},t.prototype.atan2=function(e,i){return ae([e,i],"atan2"),this.broadcastedBinaryOp(e,i,e.dtype,function(r,a){return Math.atan2(r,a)})},t.prototype.fusedConv2d=function(e){var i=e.input,r=e.filter,a=e.convInfo,s=e.bias,o=e.activation,l=e.preluActivationWeights,u=this.conv2d(i,r,a);return s&&(u=T.add(u,s)),o&&(u=Jd(this,u,o,l)),u},t.prototype.conv2d=function(e,i,r){ae([e,i],"conv2d");for(var a=r.filterHeight,s=r.filterWidth,o=r.dilationHeight,l=r.dilationWidth,u=r.padInfo.left,c=r.padInfo.top,h=r.dataFormat==="channelsLast",d=T.buffer(r.outShape,e.dtype),p=e.strides[0],f=h?e.strides[1]:e.strides[2],m=h?e.strides[2]:1,g=h?1:e.strides[1],v=d.strides[0],b=h?d.strides[1]:d.strides[2],w=h?d.strides[2]:1,S=h?1:d.strides[1],L=this.readSync(e.dataId),N=this.readSync(i.dataId),C=d.values,R=0;R=r.inHeight)continue;for(var j=H*i.strides[0],K=D+_*f,q=0;q=r.inWidth)continue;for(var ne=j+X*i.strides[1],ie=K+ee*m,te=ne,re=0;re=r.inDepth)continue;for(var k=R*i.strides[0],W=w+D*e.strides[1],F=0;F=r.inHeight)continue;for(var K=k+_*i.strides[1],q=W+j*e.strides[2],G=0;G=r.inWidth)continue;for(var ie=K+ee*i.strides[2],te=q+ne*r.inChannels,re=ie,le=0;le=r.inHeight)continue;for(var R=N*i.strides[0],D=v+C*e.strides[1],k=0;k=r.inWidth)continue;for(var _=R+P*i.strides[1],j=D+H*r.inChannels,K=W,q=_,G=0;Ghe?he=Ue:r==="avg"&&(ye+=Ue,Oe++),isNaN(he))break}if(isNaN(he))break}if(isNaN(he))break}var me=le+F;S[me]=r==="avg"?ye/Oe:he}}}return w.toTensor()},t.prototype.avgPool3d=function(e,i){return ae(e,"avgPool3d"),this.pool3d(e,i,"avg").toFloat()},t.prototype.avgPool3dBackprop=function(e,i,r){ae([e,i],"avgPool3dBackprop");for(var a=r.strideDepth,s=r.strideHeight,o=r.strideWidth,l=r.filterDepth,u=r.filterHeight,c=r.filterWidth,h=r.dilationDepth,d=r.dilationHeight,p=r.dilationWidth,f=r.effectiveFilterDepth,m=r.effectiveFilterHeight,g=r.effectiveFilterWidth,v=f-1-r.padInfo.front,b=g-1-r.padInfo.left,w=m-1-r.padInfo.top,S=T.buffer(i.shape,"float32"),L=1/(l*u*c),N=this.bufferSync(e),C=0;C=r.outDepth||Math.floor(K)!==K)continue;for(var q=0;q=r.outHeight||Math.floor(G)!==G)continue;for(var Z=0;Z=r.outWidth||Math.floor(X)!==X)continue;var ee=N.get(C,K,G,X,R);_+=ee}}}S.set(_*L,C,D,k,W,R)}return S.toTensor()},t.prototype.maxPool3d=function(e,i){return ae(e,"maxPool3d"),this.pool3d(e,i,"max").toFloat()},t.prototype.maxPool3dPositions=function(e,i){for(var r=T.buffer(i.outShape,"int32"),a=i.strideDepth,s=i.strideHeight,o=i.strideWidth,l=i.dilationDepth,u=i.dilationHeight,c=i.dilationWidth,h=i.effectiveFilterDepth,d=i.effectiveFilterHeight,p=i.effectiveFilterWidth,f=i.padInfo.front,m=i.padInfo.top,g=i.padInfo.left,v=this.bufferSync(e),b=0;b=j&&(j=ie,K=G*d*p+X*d+ne)}r.set(K,b,S,R,F,w)}}}return r.toTensor()},t.prototype.maxPool3dBackprop=function(e,i,r,a){ae([i,r],"maxPool3dBackprop");for(var s=this.maxPool3dPositions(i,a),o=a.strideDepth,l=a.strideHeight,u=a.strideWidth,c=a.dilationDepth,h=a.dilationHeight,d=a.dilationWidth,p=a.effectiveFilterDepth,f=a.effectiveFilterHeight,m=a.effectiveFilterWidth,g=p-1-a.padInfo.front,v=m-1-a.padInfo.left,b=f-1-a.padInfo.top,w=T.buffer(i.shape,"float32"),S=this.bufferSync(s),L=this.bufferSync(e),N=0;N=a.outDepth||Math.floor(j)!==j)continue;for(var K=0;K=a.outHeight||Math.floor(q)!==q)continue;for(var G=0;G=a.outWidth||Math.floor(Z)!==Z)continue;var X=p*f*m-1-S.get(N,j,q,Z,C),ee=_*f*m+K*m+G,ne=X===ee?1:0;if(ne===0)continue;var ie=L.get(N,j,q,Z,C);H+=ie*ne}}}w.set(H,N,R,D,k,C)}return w.toTensor()},t.prototype.resizeBilinear=function(e,i,r,a){ae(e,"resizeBilinear");for(var s=e.shape,o=s[0],l=s[1],u=s[2],c=s[3],h=this.readSync(e.dataId),d=new Float32Array(T.util.sizeFromShape([o,i,r,c])),p=[a&&i>1?l-1:l,a&&r>1?u-1:u],f=[a&&i>1?i-1:i,a&&r>1?r-1:r],m=0,g=p[0]/f[0],v=p[1]/f[1],b=0;b1?o-1:o,r&&d>1?l-1:l],m=[r&&h>1?h-1:h,r&&d>1?d-1:d],g=f[0]/m[0],v=f[1]/m[1],b=this.readSync(e.dataId),w=0,S=0;S1?l-1:l,a&&r>1?u-1:u],f=[a&&i>1?i-1:i,a&&r>1?r-1:r],m=p[0]/f[0],g=p[1]/f[1],v=0,b=0;b1?o-1:o,r&&d>1?l-1:l],g=[r&&h>1?h-1:h,r&&d>1?d-1:d],v=m[0]/g[0],b=m[1]/g[1],w=1/v,S=1/b,L=Math.ceil(w)*2+2,N=Math.ceil(S)*2+2,C=0;C=h)continue;var X=R+Z*e.strides[1],ee=Z*v,ne=Math.min(o-1,r?Math.round(ee):Math.floor(ee));if(D!==ne)continue;for(var ie=0;ie=d)continue;var re=X+te*e.strides[2],le=te*b,he=Math.min(l-1,r?Math.round(le):Math.floor(le));P===he&&(q+=f[re+K])}}p[H+K]=q}return T.tensor4d(p,i.shape,i.dtype)},t.prototype.localResponseNormalization4D=function(e,i,r,a,s){ae(e,"localResponseNormalization4D");var o=e.shape[3],l=o-1,u=this.readSync(e.dataId),c=e.size,h=new Float32Array(c);function d(g){for(var v=g%o,b=g-v+Math.max(0,v-i),w=g-v+Math.min(v+i,l),S=0;b<=w;b++){var L=u[b];S+=L*L}return S}for(var p=0;p=0&&o[l]1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+i});for(var a=e.shape[0],s=e.shape[1],o=e.shape[2],l=e.shape[3],u=s*i,c=o*i,h=l/(i*i),d=this.readSync(e.dataId),p=new Float32Array(a*u*c*h),f=0,m=0;m=u)continue;for(var P=f>1?(k-R)*(c-1)/(f-1):0,H=m>1?(W-D)*(h-1)/(m-1):0,_=0;_1?R*(c-1)+_*P:.5*(R+k)*(c-1);if(j<0||j>c-1){for(var K=0;K1?D*(h-1)+K*H:.5*(D+W)*(h-1);if(ne<0||ne>h-1){for(var q=0;q1?D*(h-1)+K*H:.5*(D+W)*(h-1);if(ne<0||ne>h-1){for(var q=0;q=e.size/u)throw new Error("Invalid indices: "+m+" does not index into "+e.shape);for(var w=0;w=a/s)throw new Error("Invalid indices: "+v+" does not index into "+r);for(var L=0;Lo&&(o=u)}r[a]=o}return r}var P0=wr(function(n,t){return n*t}),xz=Zd(function(n,t,e,i){return{real:n*e-t*i,imag:n*i+t*e}}),_0=ha(T.Multiply,P0,xz),Cz={kernelName:T.Multiply,backendName:"cpu",kernelFunc:_0};var M0=da(function(n){return 1/Math.sqrt(n)}),Rz=pa(T.Rsqrt,M0),Oz={kernelName:T.Rsqrt,backendName:"cpu",kernelFunc:Rz};function H0(n,t,e,i,r){var a=T.slice_util.isSliceContinous(i,t,e),s=T.util.sizeFromShape(e),o=T.util.computeStrides(i);if(a){var l=T.slice_util.computeFlatOffset(t,o);return n.subarray(l,l+s)}for(var u=T.util.getTypedArrayFromDType(r,s),c=0;cK?K=ie:a==="avg"&&(q+=ie,G++)}if(isNaN(K))break}var te=F+P*w+C;g[te]=a==="avg"?q/G:K}return m}function Y0(n,t,e,i,r,a){r===void 0&&(r=!1),a===void 0&&(a=!1);for(var s=T.buffer(i.outShape,"int32"),o=i.strideHeight,l=i.strideWidth,u=i.dilationHeight,c=i.dilationWidth,h=i.effectiveFilterHeight,d=i.effectiveFilterWidth,p=i.padInfo.top,f=i.padInfo.left,m=T.buffer(t,e,n),g=0;gk&&(k=j,r?W=a?((g*i.inHeight+F)*i.inWidth+H)*i.inChannels+v:(F*i.inWidth+H)*i.inChannels+v:W=P*d+_)}s.set(W,g,b,N,v)}}return s}function Kz(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x;ae(r,"avgPool");var a=i.filterSize,s=i.strides,o=i.pad,l=i.dimRoundingMode,u=1;T.util.assert(T.backend_util.eitherStridesOrDilationsAreOne(s,u),function(){return"Error in avgPool: Either strides or dilations must be 1. "+("Got strides "+s+" and dilations '"+u+"'")});var c=T.backend_util.computePool2DInfo(r.shape,a,s,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&T.util.arraysEqual(c.inShape,c.outShape))h=ca({inputs:{x:r},backend:e});else{var d=e.data.get(r.dataId).values,p=T.util.computeStrides(r.shape),f=tp(d,r.shape,r.dtype,p,c,"avg");h=e.makeTensorInfo(c.outShape,r.dtype,f.values)}return h}var $z={kernelName:T.AvgPool,backendName:"cpu",kernelFunc:Kz};function Xz(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.dy,a=t.input,s=a;ae([r,a],"avgPoolBackprop");for(var o=i.filterSize,l=i.strides,u=i.pad,c=T.backend_util.computePool2DInfo(s.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,g=c.dilationWidth,v=c.effectiveFilterHeight,b=c.effectiveFilterWidth,w=b-1-c.padInfo.left,S=v-1-c.padInfo.top,L=T.buffer(s.shape,"float32"),N=1/(p*f),C=e.data.get(r.dataId).values,R=T.buffer(r.shape,"float32",C),D=0;D=c.outHeight||Math.floor(K)!==K)continue;for(var q=0;q=c.outWidth||Math.floor(G)!==G)continue;var Z=R.get(D,K,G,k);_+=Z}}L.set(_*N,D,W,F,k)}return e.makeTensorInfo(L.shape,L.dtype,L.values)}var Jz={kernelName:T.AvgPoolBackprop,backendName:"cpu",kernelFunc:Xz};function Zz(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x,a=t.scale,s=t.offset,o=t.mean,l=t.variance;T.util.assert(o.shape.length===l.shape.length,function(){return"Batch normalization gradient requires mean and variance to have equal ranks."}),T.util.assert(s==null||o.shape.length===s.shape.length,function(){return"Batch normalization gradient requires mean and offset to have equal ranks."}),T.util.assert(a==null||o.shape.length===a.shape.length,function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}),ae([r,o,l,a,s],"batchNorm");var u=i.varianceEpsilon;u==null&&(u=.001);for(var c=e.data.get(r.dataId).values,h=e.data.get(o.dataId).values,d=e.data.get(l.dataId).values,p=a?e.data.get(a.dataId).values:new Float32Array([1]),f=s?e.data.get(s.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),g=f.length,v=p.length,b=d.length,w=h.length,S=0,L=0,N=0,C=0,R=0;R=g&&(S=0),L>=w&&(L=0),N>=v&&(N=0),C>=b&&(C=0);return e.makeTensorInfo(r.shape,r.dtype,m)}var Qz={kernelName:T.FusedBatchNorm,backendName:"cpu",kernelFunc:Zz};var eP=$e(T.ClipByValue,function(n,t){var e=t;return n>e.clipValueMax?e.clipValueMax:n0});if(o.length===1)return o[0];var l=o.map(function(S){return S.shape});if(T.backend_util.assertParamsConsistent(l,a),o[0].dtype==="complex64"){var u=o.map(function(S){return fs({inputs:{input:S},backend:e})}),c=o.map(function(S){return Zo({inputs:{input:S},backend:e})}),h=gs({inputs:u,backend:e,attrs:{axis:r}}),d=gs({inputs:c,backend:e,attrs:{axis:r}}),p=Cn({inputs:{real:h,imag:d},backend:e});return u.forEach(function(S){return e.disposeIntermediateTensorInfo(S)}),c.forEach(function(S){return e.disposeIntermediateTensorInfo(S)}),e.disposeIntermediateTensorInfo(h),e.disposeIntermediateTensorInfo(d),p}var f=o.map(function(S){var L=T.util.sizeFromShape(S.shape.slice(a)),N=[-1,L];return Wi({inputs:{x:S},backend:e,attrs:{shape:N}})});s=T.backend_util.computeOutShape(f.map(function(S){return S.shape}),1);var m=T.util.getTypedArrayFromDType(o[0].dtype,T.util.sizeFromShape(s));if(f[0].shape[0]===1){var g=0;f.forEach(function(S){var L=e.data.get(S.dataId).values,N=T.util.sizeFromShape(S.shape);m.set(L,g),g+=N})}else{var v=0;f.forEach(function(S){for(var L=e.data.get(S.dataId).values,N=0,C=0;C=0&&re=0&&heie&&(ie=Fe)}}}var _e=T.util.locToIndex([q,G,X,ne],j,T.util.computeStrides(H));K[_e]=ie}var Me=h.write(T.util.toTypedArray(K,a.dtype),H,a.dtype);return{dataId:Me,shape:H,dtype:a.dtype}}};var cP={kernelName:T.Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.x,s=r.filter,o=r.dy,l=i,u=l.strides,c=l.pad,h=l.dilations,d=e,p=T.util.toNestedArray(a.shape,d.data.get(a.dataId).values),f=T.util.toNestedArray(s.shape,d.data.get(s.dataId).values),m=T.backend_util.computeDilation2DInfo(a.shape,s.shape,u,c,"NHWC",h),g=m.batchSize,v=m.inHeight,b=m.inWidth,w=m.inChannels,S=m.outHeight,L=m.outWidth,N=m.padInfo,C=m.strideHeight,R=m.strideWidth,D=m.filterHeight,k=m.filterWidth,W=m.dilationHeight,F=m.dilationWidth,P=m.outShape;T.util.assert(o.rank===P.length,function(){return"Error in "+T.Dilation2DBackpropFilter+", dy "+("must have the same rank as output "+P.length+", but got ")+(""+o.rank)});for(var H=T.util.toNestedArray(P,d.data.get(o.dataId).values),_=T.util.makeZerosNestedTypedArray(s.shape,s.dtype),j=0;j=0&&re=0&&heee&&(ee=ye,ne=te,ie=le)}}}_[ne][ie][X]+=H[j][K][G][X]}var Oe=d.write(T.util.toTypedArray(_,a.dtype),s.shape,s.dtype);return{dataId:Oe,shape:s.shape,dtype:s.dtype}}};var hP={kernelName:T.Dilation2DBackpropInput,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.x,s=r.filter,o=r.dy,l=i,u=l.strides,c=l.pad,h=l.dilations,d=e,p=T.util.toNestedArray(a.shape,d.data.get(a.dataId).values),f=T.util.toNestedArray(s.shape,d.data.get(s.dataId).values),m=T.backend_util.computeDilation2DInfo(a.shape,s.shape,u,c,"NHWC",h),g=m.batchSize,v=m.inHeight,b=m.inWidth,w=m.inChannels,S=m.outHeight,L=m.outWidth,N=m.padInfo,C=m.strideHeight,R=m.strideWidth,D=m.filterHeight,k=m.filterWidth,W=m.dilationHeight,F=m.dilationWidth,P=m.outShape;T.util.assert(o.rank===P.length,function(){return"Error in "+T.Dilation2DBackpropInput+", dy "+("must have the same rank as output "+P.length+", but got ")+(""+o.rank)});for(var H=T.util.toNestedArray(P,d.data.get(o.dataId).values),_=T.util.makeZerosNestedTypedArray(a.shape,a.dtype),j=0;j=0&&re=0&&heee&&(ee=ye,ne=re,ie=he)}}}_[j][ne][ie][X]+=H[j][K][G][X]}var Oe=d.write(T.util.toTypedArray(_,a.dtype),a.shape,a.dtype);return{dataId:Oe,shape:a.shape,dtype:a.dtype}}};var dP=wr(function(n,t){return n/t}),pP=ha(T.Div,dP),np={kernelName:T.Div,backendName:"cpu",kernelFunc:pP};var fP=$e(T.Elu,function(n){return n>=0?n:Math.exp(n)-1}),mP={kernelName:T.Elu,backendName:"cpu",kernelFunc:fP};var gP=T.backend_util.ERF_P,vP=T.backend_util.ERF_A1,yP=T.backend_util.ERF_A2,bP=T.backend_util.ERF_A3,wP=T.backend_util.ERF_A4,SP=T.backend_util.ERF_A5,LP=$e(T.Erf,function(n){var t=Math.sign(n),e=Math.abs(n),i=1/(1+gP*e);return t*(1-((((SP*i+wP)*i+bP)*i+yP)*i+vP)*i*Math.exp(-e*e))}),IP={kernelName:T.Erf,backendName:"cpu",kernelFunc:LP};function j0(n,t,e){for(var i=n.shape,r=i[0],a=i[1],s=e.data.get(n.dataId),o=s.complexTensorInfos.real,l=s.complexTensorInfos.imag,u=[r,a],c=T.util.sizeFromShape(u),h=T.util.getTypedArrayFromDType("float32",c),d=T.util.getTypedArrayFromDType("float32",c),p=0;p=0&&N=d.outHeight||Math.floor(q)!==q)continue;for(var G=0;G=d.outWidth||Math.floor(Z)!==Z)continue;var X=w*S-1-f.get(k,q,Z,W),ee=K*S+G,ne=X===ee?1:0;if(ne===0)continue;var ie=D.get(k,q,Z,W);j+=ie*ne}}C.set(j,k,F,P,W)}return e.makeTensorInfo(C.shape,C.dtype,C.values)}var YP={kernelName:T.MaxPoolBackprop,backendName:"cpu",kernelFunc:GP};function jP(n,t,e,i,r){var a=T.util.computeStrides(t),s=tp(n,t,e,a,r,"max"),o=Y0(n,t,e,r,!0,i);return[s.values,o.values]}var KP={kernelName:T.MaxPoolWithArgmax,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.attrs,i=n.backend,r=t.x,a=e,s=a.filterSize,o=a.strides,l=a.pad,u=a.includeBatchInIndex,c=i;ae(r,"MaxPoolWithArgmax");var h=c.data.get(r.dataId).values,d=T.backend_util.computePool2DInfo(r.shape,s,o,[1,1],l),p=jP(h,r.shape,r.dtype,u,d),f=p[0],m=p[1],g=c.write(f,d.outShape,r.dtype),v=c.write(m,d.outShape,r.dtype);return[{dataId:g,shape:d.outShape,dtype:r.dtype},{dataId:v,shape:d.outShape,dtype:"int32"}]}};var $P=T.kernel_impls.nonMaxSuppressionV4Impl,XP={kernelName:T.NonMaxSuppressionV4,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.boxes,s=r.scores,o=i,l=o.maxOutputSize,u=o.iouThreshold,c=o.scoreThreshold,h=o.padToMaxOutputSize,d=e;ae(a,"NonMaxSuppressionPadded");var p=d.data.get(a.dataId).values,f=d.data.get(s.dataId).values,m=$P(p,f,l,u,c,h),g=m.selectedIndices,v=m.validOutputs;return[g,v]}};var JP=T.kernel_impls.nonMaxSuppressionV5Impl,ZP={kernelName:T.NonMaxSuppressionV5,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.boxes,s=r.scores,o=i,l=o.maxOutputSize,u=o.iouThreshold,c=o.scoreThreshold,h=o.softNmsSigma,d=e;ae(a,"NonMaxSuppressionWithScore");var p=d.data.get(a.dataId).values,f=d.data.get(s.dataId).values,m=l,g=u,v=c,b=h,w=JP(p,f,m,g,v,b),S=w.selectedIndices,L=w.selectedScores;return[S,L]}};var QP=wr(function(n,t){return n!==t?1:0}),e_=ha(T.NotEqual,QP,null,"bool"),t_={kernelName:T.NotEqual,backendName:"cpu",kernelFunc:e_};function n_(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x,a=i.paddings,s=i.constantValue;ae(r,"pad");var o=a.map(function(N,C){return N[0]+r.shape[C]+N[1]}),l=a.map(function(N){return N[0]}),u=e.data.get(r.dataId).values,c=T.util.sizeFromShape(r.shape),h=r.shape.length,d=T.util.computeStrides(r.shape),p=T.util.sizeFromShape(o),f=o.length,m=T.util.computeStrides(o),g=T.util.getTypedArrayFromDType(r.dtype,p);s!==0&&g.fill(s);for(var v=0;v=0&&K=0&&q.5?Math.ceil(n):t%2===0?t:t+1}),o_={kernelName:T.Round,backendName:"cpu",kernelFunc:s_};var l_=T.backend_util.SELU_SCALEALPHA,u_=T.backend_util.SELU_SCALE,c_=$e(T.Selu,function(n){return n>=0?u_*n:l_*(Math.exp(n)-1)}),h_={kernelName:T.Selu,backendName:"cpu",kernelFunc:c_};var d_=$e(T.Sigmoid,function(n){return 1/(1+Math.exp(-n))}),p_={kernelName:T.Sigmoid,backendName:"cpu",kernelFunc:d_};var f_=$e(T.Sign,function(n){return n<0?-1:n>0?1:0}),m_={kernelName:T.Sign,backendName:"cpu",kernelFunc:f_};var g_=$e(T.Sin,function(n){return Math.sin(n)}),v_={kernelName:T.Sin,backendName:"cpu",kernelFunc:g_};var y_=$e(T.Sinh,function(n){return Math.sinh(n)}),b_={kernelName:T.Sinh,backendName:"cpu",kernelFunc:y_};var w_=11920928955078125e-23,$0=Math.log(w_)+2,S_=$e(T.Softplus,function(n){var t=n>-$0,e=n<$0,i=Math.exp(n),r;return e?r=i:t?r=n:r=Math.log(1+i),r}),L_={kernelName:T.Softplus,backendName:"cpu",kernelFunc:S_};function X0(n){var t=n.inputs,e=n.attrs,i=n.backend,r=t.x,a=e.perm;ae(r,"transpose");for(var s=r.shape.length,o=new Array(s),l=0;l0?1:e.alpha}),k_={kernelName:T.Step,backendName:"cpu",kernelFunc:D_};var F_=$e(T.Tan,function(n){return Math.tan(n)}),W_={kernelName:T.Tan,backendName:"cpu",kernelFunc:F_};var U_=$e(T.Tanh,function(n){return Math.tanh(n)}),B_={kernelName:T.Tanh,backendName:"cpu",kernelFunc:U_};function z_(n){var t=n.inputs,e=n.attrs,i=n.backend,r=e.axis,a=t.x;ae(a,"unique");var s=i.data.get(a.dataId).values,o=G0(s,r,a.shape,a.dtype),l=o.outputValues,u=o.outputShape,c=o.indices;return[i.makeTensorInfo(u,a.dtype,l),i.makeTensorInfo([c.length],"int32",c)]}var P_={kernelName:T.Unique,backendName:"cpu",kernelFunc:z_};var __=[cz,Bz,Pz,gz,Mz,Vz,Gz,jz,$z,Jz,Qz,fz,yz,tP,hz,rP,sP,lP,uP,hP,cP,np,mP,IP,wz,Lz,CP,RP,Az,dz,EP,nP,kP,WP,BP,Nz,PP,MP,qP,YP,KP,HP,Cz,XP,ZP,t_,K0,pz,r_,iP,a_,o_,Oz,h_,p_,m_,v_,b_,Ez,L_,T_,x_,C_,E_,k_,kz,W_,B_,I_,P_];for(var rp=0,J0=__;rp{"use strict";Object.defineProperty(qn,"__esModule",{value:!0});var x=lr();var ap=function(n,t){return ap=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},ap(n,t)};function H_(n,t){ap(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function Qo(n,t,e,i){function r(a){return a instanceof e?a:new e(function(s){s(a)})}return new(e||(e=Promise))(function(a,s){function o(c){try{u(i.next(c))}catch(h){s(h)}}function l(c){try{u(i.throw(c))}catch(h){s(h)}}function u(c){c.done?a(c.value):r(c.value).then(o,l)}u((i=i.apply(n,t||[])).next())})}function el(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]f&&(f=v,m=g)}c[d]=m}return l},t.prototype.cumsum=function(e,i,r,a){if(ae(e,"cumsum"),i!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" "+("but got axis="+i));for(var s=T.upcastType(e.dtype,"int32"),o=T.zeros(e.shape,s),l=this.readSync(o.dataId),u=this.readSync(e.dataId),c=e.shape[e.rank-1],h=a?function(g,v){return g+c-v-1}:function(g,v){return g+v},d=0;da?1:0})},t.prototype.greaterEqual=function(e,i){return ae([e,i],"greaterEqual"),this.broadcastedBinaryOp(e,i,"bool",function(r,a){return r>=a?1:0})},t.prototype.logicalAnd=function(e,i){return ae([e,i],"logicalAnd"),this.broadcastedBinaryOp(e,i,"bool",function(r,a){return r&&a})},t.prototype.logicalOr=function(e,i){return ae([e,i],"logicalOr"),this.broadcastedBinaryOp(e,i,"bool",function(r,a){return r||a})},t.prototype.select=function(e,i,r){ae([e,i,r],"select");for(var a=this.readSync(e.dataId),s=this.readSync(i.dataId),o=this.readSync(r.dataId),l=T.zeros(i.shape,T.upcastType(i.dtype,r.dtype)),u=this.readSync(l.dataId),c=0,h=e.rank===0||e.rank>1||i.rank===1?1:T.util.sizeFromShape(i.shape.slice(1)),d=0;d=0&&a>=0?s:(s+a)%a})},t.prototype.maximum=function(e,i){return ae([e,i],"maximum"),this.broadcastedBinaryOp(e,i,e.dtype,function(r,a){return Math.max(r,a)})},t.prototype.all=function(e,i){ae(e,"all"),T.backend_util.assertAxesAreInnerMostDims("all",i,e.rank);for(var r=T.backend_util.computeOutAndReduceShapes(e.shape,i),a=r[0],s=r[1],o=T.zeros(a,e.dtype),l=T.util.sizeFromShape(s),u=this.readSync(o.dataId),c=this.readSync(e.dataId),h=0;h=1?r[o]=s[o]:r[o]=s[o]*(l+1)}return this.makeOutput(r,i.shape,"float32")},t.prototype.atan2=function(e,i){return ae([e,i],"atan2"),this.broadcastedBinaryOp(e,i,e.dtype,function(r,a){return Math.atan2(r,a)})},t.prototype.fusedConv2d=function(e){var i=e.input,r=e.filter,a=e.convInfo,s=e.bias,o=e.activation,l=e.preluActivationWeights,u=this.conv2d(i,r,a);return s&&(u=T.add(u,s)),o&&(u=Zd(this,u,o,l)),u},t.prototype.conv2d=function(e,i,r){ae([e,i],"conv2d");for(var a=r.filterHeight,s=r.filterWidth,o=r.dilationHeight,l=r.dilationWidth,u=r.padInfo.left,c=r.padInfo.top,h=r.dataFormat==="channelsLast",d=T.buffer(r.outShape,e.dtype),p=e.strides[0],f=h?e.strides[1]:e.strides[2],m=h?e.strides[2]:1,g=h?1:e.strides[1],v=d.strides[0],b=h?d.strides[1]:d.strides[2],w=h?d.strides[2]:1,S=h?1:d.strides[1],L=this.readSync(e.dataId),N=this.readSync(i.dataId),C=d.values,R=0;R=r.inHeight)continue;for(var j=H*i.strides[0],K=D+_*f,q=0;q=r.inWidth)continue;for(var ne=j+X*i.strides[1],ie=K+ee*m,te=ne,re=0;re=r.inDepth)continue;for(var k=R*i.strides[0],W=w+D*e.strides[1],F=0;F=r.inHeight)continue;for(var K=k+_*i.strides[1],q=W+j*e.strides[2],G=0;G=r.inWidth)continue;for(var ie=K+ee*i.strides[2],te=q+ne*r.inChannels,re=ie,le=0;le=r.inHeight)continue;for(var R=N*i.strides[0],D=v+C*e.strides[1],k=0;k=r.inWidth)continue;for(var _=R+P*i.strides[1],j=D+H*r.inChannels,K=W,q=_,G=0;Ghe?he=Ue:r==="avg"&&(ye+=Ue,Oe++),isNaN(he))break}if(isNaN(he))break}if(isNaN(he))break}var me=le+F;S[me]=r==="avg"?ye/Oe:he}}}return w.toTensor()},t.prototype.avgPool3d=function(e,i){return ae(e,"avgPool3d"),this.pool3d(e,i,"avg").toFloat()},t.prototype.avgPool3dBackprop=function(e,i,r){ae([e,i],"avgPool3dBackprop");for(var a=r.strideDepth,s=r.strideHeight,o=r.strideWidth,l=r.filterDepth,u=r.filterHeight,c=r.filterWidth,h=r.dilationDepth,d=r.dilationHeight,p=r.dilationWidth,f=r.effectiveFilterDepth,m=r.effectiveFilterHeight,g=r.effectiveFilterWidth,v=f-1-r.padInfo.front,b=g-1-r.padInfo.left,w=m-1-r.padInfo.top,S=T.buffer(i.shape,"float32"),L=1/(l*u*c),N=this.bufferSync(e),C=0;C=r.outDepth||Math.floor(K)!==K)continue;for(var q=0;q=r.outHeight||Math.floor(G)!==G)continue;for(var Z=0;Z=r.outWidth||Math.floor(X)!==X)continue;var ee=N.get(C,K,G,X,R);_+=ee}}}S.set(_*L,C,D,k,W,R)}return S.toTensor()},t.prototype.maxPool3d=function(e,i){return ae(e,"maxPool3d"),this.pool3d(e,i,"max").toFloat()},t.prototype.maxPool3dPositions=function(e,i){for(var r=T.buffer(i.outShape,"int32"),a=i.strideDepth,s=i.strideHeight,o=i.strideWidth,l=i.dilationDepth,u=i.dilationHeight,c=i.dilationWidth,h=i.effectiveFilterDepth,d=i.effectiveFilterHeight,p=i.effectiveFilterWidth,f=i.padInfo.front,m=i.padInfo.top,g=i.padInfo.left,v=this.bufferSync(e),b=0;b=j&&(j=ie,K=G*d*p+X*d+ne)}r.set(K,b,S,R,F,w)}}}return r.toTensor()},t.prototype.maxPool3dBackprop=function(e,i,r,a){ae([i,r],"maxPool3dBackprop");for(var s=this.maxPool3dPositions(i,a),o=a.strideDepth,l=a.strideHeight,u=a.strideWidth,c=a.dilationDepth,h=a.dilationHeight,d=a.dilationWidth,p=a.effectiveFilterDepth,f=a.effectiveFilterHeight,m=a.effectiveFilterWidth,g=p-1-a.padInfo.front,v=m-1-a.padInfo.left,b=f-1-a.padInfo.top,w=T.buffer(i.shape,"float32"),S=this.bufferSync(s),L=this.bufferSync(e),N=0;N=a.outDepth||Math.floor(j)!==j)continue;for(var K=0;K=a.outHeight||Math.floor(q)!==q)continue;for(var G=0;G=a.outWidth||Math.floor(Z)!==Z)continue;var X=p*f*m-1-S.get(N,j,q,Z,C),ee=_*f*m+K*m+G,ne=X===ee?1:0;if(ne===0)continue;var ie=L.get(N,j,q,Z,C);H+=ie*ne}}}w.set(H,N,R,D,k,C)}return w.toTensor()},t.prototype.resizeBilinear=function(e,i,r,a){ae(e,"resizeBilinear");for(var s=e.shape,o=s[0],l=s[1],u=s[2],c=s[3],h=this.readSync(e.dataId),d=new Float32Array(T.util.sizeFromShape([o,i,r,c])),p=[a&&i>1?l-1:l,a&&r>1?u-1:u],f=[a&&i>1?i-1:i,a&&r>1?r-1:r],m=0,g=p[0]/f[0],v=p[1]/f[1],b=0;b1?o-1:o,r&&d>1?l-1:l],m=[r&&h>1?h-1:h,r&&d>1?d-1:d],g=f[0]/m[0],v=f[1]/m[1],b=this.readSync(e.dataId),w=0,S=0;S1?l-1:l,a&&r>1?u-1:u],f=[a&&i>1?i-1:i,a&&r>1?r-1:r],m=p[0]/f[0],g=p[1]/f[1],v=0,b=0;b1?o-1:o,r&&d>1?l-1:l],g=[r&&h>1?h-1:h,r&&d>1?d-1:d],v=m[0]/g[0],b=m[1]/g[1],w=1/v,S=1/b,L=Math.ceil(w)*2+2,N=Math.ceil(S)*2+2,C=0;C=h)continue;var X=R+Z*e.strides[1],ee=Z*v,ne=Math.min(o-1,r?Math.round(ee):Math.floor(ee));if(D!==ne)continue;for(var ie=0;ie=d)continue;var re=X+te*e.strides[2],le=te*b,he=Math.min(l-1,r?Math.round(le):Math.floor(le));P===he&&(q+=f[re+K])}}p[H+K]=q}return T.tensor4d(p,i.shape,i.dtype)},t.prototype.localResponseNormalization4D=function(e,i,r,a,s){ae(e,"localResponseNormalization4D");var o=e.shape[3],l=o-1,u=this.readSync(e.dataId),c=e.size,h=new Float32Array(c);function d(g){for(var v=g%o,b=g-v+Math.max(0,v-i),w=g-v+Math.min(v+i,l),S=0;b<=w;b++){var L=u[b];S+=L*L}return S}for(var p=0;p=0&&o[l]1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+i});for(var a=e.shape[0],s=e.shape[1],o=e.shape[2],l=e.shape[3],u=s*i,c=o*i,h=l/(i*i),d=this.readSync(e.dataId),p=new Float32Array(a*u*c*h),f=0,m=0;m=u)continue;for(var P=f>1?(k-R)*(c-1)/(f-1):0,H=m>1?(W-D)*(h-1)/(m-1):0,_=0;_1?R*(c-1)+_*P:.5*(R+k)*(c-1);if(j<0||j>c-1){for(var K=0;K1?D*(h-1)+K*H:.5*(D+W)*(h-1);if(ne<0||ne>h-1){for(var q=0;q1?D*(h-1)+K*H:.5*(D+W)*(h-1);if(ne<0||ne>h-1){for(var q=0;q=e.size/u)throw new Error("Invalid indices: "+m+" does not index into "+e.shape);for(var w=0;w=a/s)throw new Error("Invalid indices: "+v+" does not index into "+r);for(var L=0;Lo&&(o=u)}r[a]=o}return r}var P0=wr(function(n,t){return n*t}),xz=Qd(function(n,t,e,i){return{real:n*e-t*i,imag:n*i+t*e}}),_0=ha(T.Multiply,P0,xz),Cz={kernelName:T.Multiply,backendName:"cpu",kernelFunc:_0};var M0=da(function(n){return 1/Math.sqrt(n)}),Rz=pa(T.Rsqrt,M0),Oz={kernelName:T.Rsqrt,backendName:"cpu",kernelFunc:Rz};function H0(n,t,e,i,r){var a=T.slice_util.isSliceContinous(i,t,e),s=T.util.sizeFromShape(e),o=T.util.computeStrides(i);if(a){var l=T.slice_util.computeFlatOffset(t,o);return n.subarray(l,l+s)}for(var u=T.util.getTypedArrayFromDType(r,s),c=0;cK?K=ie:a==="avg"&&(q+=ie,G++)}if(isNaN(K))break}var te=F+P*w+C;g[te]=a==="avg"?q/G:K}return m}function Y0(n,t,e,i,r,a){r===void 0&&(r=!1),a===void 0&&(a=!1);for(var s=T.buffer(i.outShape,"int32"),o=i.strideHeight,l=i.strideWidth,u=i.dilationHeight,c=i.dilationWidth,h=i.effectiveFilterHeight,d=i.effectiveFilterWidth,p=i.padInfo.top,f=i.padInfo.left,m=T.buffer(t,e,n),g=0;gk&&(k=j,r?W=a?((g*i.inHeight+F)*i.inWidth+H)*i.inChannels+v:(F*i.inWidth+H)*i.inChannels+v:W=P*d+_)}s.set(W,g,b,N,v)}}return s}function Kz(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x;ae(r,"avgPool");var a=i.filterSize,s=i.strides,o=i.pad,l=i.dimRoundingMode,u=1;T.util.assert(T.backend_util.eitherStridesOrDilationsAreOne(s,u),function(){return"Error in avgPool: Either strides or dilations must be 1. "+("Got strides "+s+" and dilations '"+u+"'")});var c=T.backend_util.computePool2DInfo(r.shape,a,s,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&T.util.arraysEqual(c.inShape,c.outShape))h=ca({inputs:{x:r},backend:e});else{var d=e.data.get(r.dataId).values,p=T.util.computeStrides(r.shape),f=np(d,r.shape,r.dtype,p,c,"avg");h=e.makeTensorInfo(c.outShape,r.dtype,f.values)}return h}var $z={kernelName:T.AvgPool,backendName:"cpu",kernelFunc:Kz};function Xz(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.dy,a=t.input,s=a;ae([r,a],"avgPoolBackprop");for(var o=i.filterSize,l=i.strides,u=i.pad,c=T.backend_util.computePool2DInfo(s.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,g=c.dilationWidth,v=c.effectiveFilterHeight,b=c.effectiveFilterWidth,w=b-1-c.padInfo.left,S=v-1-c.padInfo.top,L=T.buffer(s.shape,"float32"),N=1/(p*f),C=e.data.get(r.dataId).values,R=T.buffer(r.shape,"float32",C),D=0;D=c.outHeight||Math.floor(K)!==K)continue;for(var q=0;q=c.outWidth||Math.floor(G)!==G)continue;var Z=R.get(D,K,G,k);_+=Z}}L.set(_*N,D,W,F,k)}return e.makeTensorInfo(L.shape,L.dtype,L.values)}var Jz={kernelName:T.AvgPoolBackprop,backendName:"cpu",kernelFunc:Xz};function Zz(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x,a=t.scale,s=t.offset,o=t.mean,l=t.variance;T.util.assert(o.shape.length===l.shape.length,function(){return"Batch normalization gradient requires mean and variance to have equal ranks."}),T.util.assert(s==null||o.shape.length===s.shape.length,function(){return"Batch normalization gradient requires mean and offset to have equal ranks."}),T.util.assert(a==null||o.shape.length===a.shape.length,function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}),ae([r,o,l,a,s],"batchNorm");var u=i.varianceEpsilon;u==null&&(u=.001);for(var c=e.data.get(r.dataId).values,h=e.data.get(o.dataId).values,d=e.data.get(l.dataId).values,p=a?e.data.get(a.dataId).values:new Float32Array([1]),f=s?e.data.get(s.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),g=f.length,v=p.length,b=d.length,w=h.length,S=0,L=0,N=0,C=0,R=0;R=g&&(S=0),L>=w&&(L=0),N>=v&&(N=0),C>=b&&(C=0);return e.makeTensorInfo(r.shape,r.dtype,m)}var Qz={kernelName:T.FusedBatchNorm,backendName:"cpu",kernelFunc:Zz};var eP=$e(T.ClipByValue,function(n,t){var e=t;return n>e.clipValueMax?e.clipValueMax:n0});if(o.length===1)return o[0];var l=o.map(function(S){return S.shape});if(T.backend_util.assertParamsConsistent(l,a),o[0].dtype==="complex64"){var u=o.map(function(S){return fs({inputs:{input:S},backend:e})}),c=o.map(function(S){return Zo({inputs:{input:S},backend:e})}),h=gs({inputs:u,backend:e,attrs:{axis:r}}),d=gs({inputs:c,backend:e,attrs:{axis:r}}),p=xn({inputs:{real:h,imag:d},backend:e});return u.forEach(function(S){return e.disposeIntermediateTensorInfo(S)}),c.forEach(function(S){return e.disposeIntermediateTensorInfo(S)}),e.disposeIntermediateTensorInfo(h),e.disposeIntermediateTensorInfo(d),p}var f=o.map(function(S){var L=T.util.sizeFromShape(S.shape.slice(a)),N=[-1,L];return Wi({inputs:{x:S},backend:e,attrs:{shape:N}})});s=T.backend_util.computeOutShape(f.map(function(S){return S.shape}),1);var m=T.util.getTypedArrayFromDType(o[0].dtype,T.util.sizeFromShape(s));if(f[0].shape[0]===1){var g=0;f.forEach(function(S){var L=e.data.get(S.dataId).values,N=T.util.sizeFromShape(S.shape);m.set(L,g),g+=N})}else{var v=0;f.forEach(function(S){for(var L=e.data.get(S.dataId).values,N=0,C=0;C=0&&re=0&&heie&&(ie=Fe)}}}var _e=T.util.locToIndex([q,G,X,ne],j,T.util.computeStrides(H));K[_e]=ie}var Me=h.write(T.util.toTypedArray(K,a.dtype),H,a.dtype);return{dataId:Me,shape:H,dtype:a.dtype}}};var cP={kernelName:T.Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.x,s=r.filter,o=r.dy,l=i,u=l.strides,c=l.pad,h=l.dilations,d=e,p=T.util.toNestedArray(a.shape,d.data.get(a.dataId).values),f=T.util.toNestedArray(s.shape,d.data.get(s.dataId).values),m=T.backend_util.computeDilation2DInfo(a.shape,s.shape,u,c,"NHWC",h),g=m.batchSize,v=m.inHeight,b=m.inWidth,w=m.inChannels,S=m.outHeight,L=m.outWidth,N=m.padInfo,C=m.strideHeight,R=m.strideWidth,D=m.filterHeight,k=m.filterWidth,W=m.dilationHeight,F=m.dilationWidth,P=m.outShape;T.util.assert(o.rank===P.length,function(){return"Error in "+T.Dilation2DBackpropFilter+", dy "+("must have the same rank as output "+P.length+", but got ")+(""+o.rank)});for(var H=T.util.toNestedArray(P,d.data.get(o.dataId).values),_=T.util.makeZerosNestedTypedArray(s.shape,s.dtype),j=0;j=0&&re=0&&heee&&(ee=ye,ne=te,ie=le)}}}_[ne][ie][X]+=H[j][K][G][X]}var Oe=d.write(T.util.toTypedArray(_,a.dtype),s.shape,s.dtype);return{dataId:Oe,shape:s.shape,dtype:s.dtype}}};var hP={kernelName:T.Dilation2DBackpropInput,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.x,s=r.filter,o=r.dy,l=i,u=l.strides,c=l.pad,h=l.dilations,d=e,p=T.util.toNestedArray(a.shape,d.data.get(a.dataId).values),f=T.util.toNestedArray(s.shape,d.data.get(s.dataId).values),m=T.backend_util.computeDilation2DInfo(a.shape,s.shape,u,c,"NHWC",h),g=m.batchSize,v=m.inHeight,b=m.inWidth,w=m.inChannels,S=m.outHeight,L=m.outWidth,N=m.padInfo,C=m.strideHeight,R=m.strideWidth,D=m.filterHeight,k=m.filterWidth,W=m.dilationHeight,F=m.dilationWidth,P=m.outShape;T.util.assert(o.rank===P.length,function(){return"Error in "+T.Dilation2DBackpropInput+", dy "+("must have the same rank as output "+P.length+", but got ")+(""+o.rank)});for(var H=T.util.toNestedArray(P,d.data.get(o.dataId).values),_=T.util.makeZerosNestedTypedArray(a.shape,a.dtype),j=0;j=0&&re=0&&heee&&(ee=ye,ne=re,ie=he)}}}_[j][ne][ie][X]+=H[j][K][G][X]}var Oe=d.write(T.util.toTypedArray(_,a.dtype),a.shape,a.dtype);return{dataId:Oe,shape:a.shape,dtype:a.dtype}}};var dP=wr(function(n,t){return n/t}),pP=ha(T.Div,dP),ip={kernelName:T.Div,backendName:"cpu",kernelFunc:pP};var fP=$e(T.Elu,function(n){return n>=0?n:Math.exp(n)-1}),mP={kernelName:T.Elu,backendName:"cpu",kernelFunc:fP};var gP=T.backend_util.ERF_P,vP=T.backend_util.ERF_A1,yP=T.backend_util.ERF_A2,bP=T.backend_util.ERF_A3,wP=T.backend_util.ERF_A4,SP=T.backend_util.ERF_A5,LP=$e(T.Erf,function(n){var t=Math.sign(n),e=Math.abs(n),i=1/(1+gP*e);return t*(1-((((SP*i+wP)*i+bP)*i+yP)*i+vP)*i*Math.exp(-e*e))}),IP={kernelName:T.Erf,backendName:"cpu",kernelFunc:LP};function j0(n,t,e){for(var i=n.shape,r=i[0],a=i[1],s=e.data.get(n.dataId),o=s.complexTensorInfos.real,l=s.complexTensorInfos.imag,u=[r,a],c=T.util.sizeFromShape(u),h=T.util.getTypedArrayFromDType("float32",c),d=T.util.getTypedArrayFromDType("float32",c),p=0;p=0&&N=d.outHeight||Math.floor(q)!==q)continue;for(var G=0;G=d.outWidth||Math.floor(Z)!==Z)continue;var X=w*S-1-f.get(k,q,Z,W),ee=K*S+G,ne=X===ee?1:0;if(ne===0)continue;var ie=D.get(k,q,Z,W);j+=ie*ne}}C.set(j,k,F,P,W)}return e.makeTensorInfo(C.shape,C.dtype,C.values)}var YP={kernelName:T.MaxPoolBackprop,backendName:"cpu",kernelFunc:GP};function jP(n,t,e,i,r){var a=T.util.computeStrides(t),s=np(n,t,e,a,r,"max"),o=Y0(n,t,e,r,!0,i);return[s.values,o.values]}var KP={kernelName:T.MaxPoolWithArgmax,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.attrs,i=n.backend,r=t.x,a=e,s=a.filterSize,o=a.strides,l=a.pad,u=a.includeBatchInIndex,c=i;ae(r,"MaxPoolWithArgmax");var h=c.data.get(r.dataId).values,d=T.backend_util.computePool2DInfo(r.shape,s,o,[1,1],l),p=jP(h,r.shape,r.dtype,u,d),f=p[0],m=p[1],g=c.write(f,d.outShape,r.dtype),v=c.write(m,d.outShape,r.dtype);return[{dataId:g,shape:d.outShape,dtype:r.dtype},{dataId:v,shape:d.outShape,dtype:"int32"}]}};var $P=T.kernel_impls.nonMaxSuppressionV4Impl,XP={kernelName:T.NonMaxSuppressionV4,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.boxes,s=r.scores,o=i,l=o.maxOutputSize,u=o.iouThreshold,c=o.scoreThreshold,h=o.padToMaxOutputSize,d=e;ae(a,"NonMaxSuppressionPadded");var p=d.data.get(a.dataId).values,f=d.data.get(s.dataId).values,m=$P(p,f,l,u,c,h),g=m.selectedIndices,v=m.validOutputs;return[g,v]}};var JP=T.kernel_impls.nonMaxSuppressionV5Impl,ZP={kernelName:T.NonMaxSuppressionV5,backendName:"cpu",kernelFunc:function(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t,a=r.boxes,s=r.scores,o=i,l=o.maxOutputSize,u=o.iouThreshold,c=o.scoreThreshold,h=o.softNmsSigma,d=e;ae(a,"NonMaxSuppressionWithScore");var p=d.data.get(a.dataId).values,f=d.data.get(s.dataId).values,m=l,g=u,v=c,b=h,w=JP(p,f,m,g,v,b),S=w.selectedIndices,L=w.selectedScores;return[S,L]}};var QP=wr(function(n,t){return n!==t?1:0}),e_=ha(T.NotEqual,QP,null,"bool"),t_={kernelName:T.NotEqual,backendName:"cpu",kernelFunc:e_};function n_(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x,a=i.paddings,s=i.constantValue;ae(r,"pad");var o=a.map(function(N,C){return N[0]+r.shape[C]+N[1]}),l=a.map(function(N){return N[0]}),u=e.data.get(r.dataId).values,c=T.util.sizeFromShape(r.shape),h=r.shape.length,d=T.util.computeStrides(r.shape),p=T.util.sizeFromShape(o),f=o.length,m=T.util.computeStrides(o),g=T.util.getTypedArrayFromDType(r.dtype,p);s!==0&&g.fill(s);for(var v=0;v=0&&K=0&&q.5?Math.ceil(n):t%2===0?t:t+1}),o_={kernelName:T.Round,backendName:"cpu",kernelFunc:s_};var l_=T.backend_util.SELU_SCALEALPHA,u_=T.backend_util.SELU_SCALE,c_=$e(T.Selu,function(n){return n>=0?u_*n:l_*(Math.exp(n)-1)}),h_={kernelName:T.Selu,backendName:"cpu",kernelFunc:c_};var d_=$e(T.Sigmoid,function(n){return 1/(1+Math.exp(-n))}),p_={kernelName:T.Sigmoid,backendName:"cpu",kernelFunc:d_};var f_=$e(T.Sign,function(n){return n<0?-1:n>0?1:0}),m_={kernelName:T.Sign,backendName:"cpu",kernelFunc:f_};var g_=$e(T.Sin,function(n){return Math.sin(n)}),v_={kernelName:T.Sin,backendName:"cpu",kernelFunc:g_};var y_=$e(T.Sinh,function(n){return Math.sinh(n)}),b_={kernelName:T.Sinh,backendName:"cpu",kernelFunc:y_};var w_=11920928955078125e-23,$0=Math.log(w_)+2,S_=$e(T.Softplus,function(n){var t=n>-$0,e=n<$0,i=Math.exp(n),r;return e?r=i:t?r=n:r=Math.log(1+i),r}),L_={kernelName:T.Softplus,backendName:"cpu",kernelFunc:S_};function X0(n){var t=n.inputs,e=n.attrs,i=n.backend,r=t.x,a=e.perm;ae(r,"transpose");for(var s=r.shape.length,o=new Array(s),l=0;l0?1:e.alpha}),k_={kernelName:T.Step,backendName:"cpu",kernelFunc:D_};var F_=$e(T.Tan,function(n){return Math.tan(n)}),W_={kernelName:T.Tan,backendName:"cpu",kernelFunc:F_};var U_=$e(T.Tanh,function(n){return Math.tanh(n)}),B_={kernelName:T.Tanh,backendName:"cpu",kernelFunc:U_};function z_(n){var t=n.inputs,e=n.attrs,i=n.backend,r=e.axis,a=t.x;ae(a,"unique");var s=i.data.get(a.dataId).values,o=G0(s,r,a.shape,a.dtype),l=o.outputValues,u=o.outputShape,c=o.indices;return[i.makeTensorInfo(u,a.dtype,l),i.makeTensorInfo([c.length],"int32",c)]}var P_={kernelName:T.Unique,backendName:"cpu",kernelFunc:z_};var __=[cz,Bz,Pz,gz,Mz,Vz,Gz,jz,$z,Jz,Qz,fz,yz,tP,hz,rP,sP,lP,uP,hP,cP,ip,mP,IP,wz,Lz,CP,RP,Az,dz,EP,nP,kP,WP,BP,Nz,PP,MP,qP,YP,KP,HP,Cz,XP,ZP,t_,K0,pz,r_,iP,a_,o_,Oz,h_,p_,m_,v_,b_,Ez,L_,T_,x_,C_,E_,k_,kz,W_,B_,I_,P_];for(var ap=0,J0=__;ap{"use strict";Object.defineProperty(qn,"__esModule",{value:!0});var x=lr();var sp=function(n,t){return sp=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])},sp(n,t)};function H_(n,t){sp(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function Qo(n,t,e,i){function r(a){return a instanceof e?a:new e(function(s){s(a)})}return new(e||(e=Promise))(function(a,s){function o(c){try{u(i.next(c))}catch(h){s(h)}}function l(c){try{u(i.throw(c))}catch(h){s(h)}}function u(c){c.done?a(c.value):r(c.value).then(o,l)}u((i=i.apply(n,t||[])).next())})}function el(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,r,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(u){return function(c){return l([u,c])}}function l(u){if(i)throw new TypeError("Generator is already executing.");for(;e;)try{if(i=1,r&&(a=u[0]&2?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;(r=0,a)&&(u=[u[0]&2,a.value]);switch(u[0]){case 0:case 1:a=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]e||t>e){var i="["+n+"x"+t+"]",r="["+e+"x"+e+"]";throw new Error("Requested texture size "+i+" greater than WebGL maximum on this browser / GPU "+r+".")}}function cS(n){return li(n,function(){return n.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function lp(n,t,e,i,r,a,s){var o=n.getAttribLocation(t,e);return o===-1?!1:(ce(n,function(){return n.bindBuffer(n.ARRAY_BUFFER,i)}),ce(n,function(){return n.vertexAttribPointer(o,r,n.FLOAT,!1,a,s)}),ce(n,function(){return n.enableVertexAttribArray(o)}),!0)}function dS(n,t,e){hS(n,e),ce(n,function(){return n.activeTexture(n.TEXTURE0+e)}),ce(n,function(){return n.bindTexture(n.TEXTURE_2D,t)})}function Q_(n,t){hS(n,t),ce(n,function(){return n.activeTexture(n.TEXTURE0+t)}),ce(n,function(){return n.bindTexture(n.TEXTURE_2D,null)})}function pS(n,t,e){return li(n,function(){return n.getUniformLocation(t,e)},'uniform "'+e+'" not present in program.')}function fS(n,t,e){return n.getUniformLocation(t,e)}function mS(n,t,e,i){ce(n,function(){return dS(n,t,i)}),ce(n,function(){return n.uniform1i(e,i)})}function eM(n){ce(n,function(){return n.bindFramebuffer(n.FRAMEBUFFER,null)}),ce(n,function(){return n.viewport(0,0,n.canvas.width,n.canvas.height)}),ce(n,function(){return n.scissor(0,0,n.canvas.width,n.canvas.height)})}function nl(n,t,e){ce(n,function(){return n.bindFramebuffer(n.FRAMEBUFFER,e)}),ce(n,function(){return n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t,0)})}function up(n,t){ce(n,function(){return n.bindFramebuffer(n.FRAMEBUFFER,t)}),ce(n,function(){return n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,null,0)})}function Ss(n){var t=n.checkFramebufferStatus(n.FRAMEBUFFER);if(t!==n.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+gS(n,t))}function gS(n,t){switch(t){case n.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case n.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case n.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case n.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function li(n,t,e){var i=ce(n,function(){return t()});if(i==null)throw new Error(e);return i}function hS(n,t){var e=n.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,i=t+n.TEXTURE0;if(ie){var r="[gl.TEXTURE0, gl.TEXTURE"+e+"]";throw new Error("textureUnit must be in "+r+".")}}function Lr(n,t){return t===void 0&&(t=2),x.util.sizeFromShape(n.slice(0,n.length-t))}function Ir(n){if(n.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[n.length>1?n[n.length-2]:1,n[n.length-1]]}function il(n){var t=[1,1,1],e=n.length===0||n.length===1&&n[0]===1;return e||(t=[Lr(n)].concat(Ir(n))),t}function vS(n,t){var e;t===void 0&&(t=!1);var i=x.env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(t&&(i=i*2,n=n.map(function(u,c){return c>=n.length-2?x.util.nearestLargerEven(n[c]):n[c]}),n.length===1&&(n=[2,n[0]])),n.length!==2){var r=x.util.squeezeShape(n);n=r.newShape}var a=x.util.sizeFromShape(n);if(n.length<=1&&a<=i)return[1,a];if(n.length===2&&n[0]<=i&&n[1]<=i)return n;if(n.length===3&&n[0]*n[1]<=i&&n[2]<=i)return[n[0]*n[1],n[2]];if(n.length===3&&n[0]<=i&&n[1]*n[2]<=i)return[n[0],n[1]*n[2]];if(n.length===4&&n[0]*n[1]*n[2]<=i&&n[3]<=i)return[n[0]*n[1]*n[2],n[3]];if(n.length===4&&n[0]<=i&&n[1]*n[2]*n[3]<=i)return[n[0],n[1]*n[2]*n[3]];if(t){var s=Lr(n),o=2,l=2;return n.length&&(e=Ir(n),o=e[0],l=e[1]),a=s*(o/2)*(l/2),x.util.sizeToSquarishShape(a).map(function(u){return u*2})}return x.util.sizeToSquarishShape(a)}function rl(n){return n%2===0}function Ls(n,t){if(n=n.slice(-2),t=t.slice(-2),x.util.arraysEqual(n,t))return!0;if(!n.length||!t.length)return!0;if(n[0]===0||n[1]===0||t[0]===0||t[1]===0)return!0;if(n.length!==t.length){var e=n.slice(-1)[0],i=t.slice(-1)[0];if(e===i)return!0;if(rl(e)&&rl(i)&&(n[0]===1||t[0]===1))return!0}return n[1]===t[1]&&rl(n[0])&&rl(t[0])}var al,sl;function yS(n){if(al==null){var t=Gn(n);al=t.getParameter(t.MAX_TEXTURE_SIZE)}return al}function tM(){al=null}function nM(){sl=null}function bS(n){if(sl==null){var t=Gn(n);sl=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,sl)}function wS(n){if(n===0)return 0;var t,e=Gn(n);return ln(e,"EXT_disjoint_timer_query_webgl2")&&n===2?t=2:ln(e,"EXT_disjoint_timer_query")?t=1:t=0,t}function ln(n,t){var e=n.getExtension(t);return e!=null}function cp(n){try{var t=Gn(n);if(t!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function SS(n){if(n===0)return!1;var t=Gn(n);if(n===1){if(!ln(t,"OES_texture_float"))return!1}else if(!ln(t,"EXT_color_buffer_float"))return!1;var e=hp(t);return e}function LS(n){if(n===0)return!1;var t=Gn(n);if(n===1){if(!ln(t,"OES_texture_float"))return!1;if(!ln(t,"WEBGL_color_buffer_float"))return!1}else{if(ln(t,"EXT_color_buffer_float"))return hp(t);var e="EXT_color_buffer_half_float";if(ln(t,e)){var i=t.getExtension(e);return iM(t,i)}return!1}var r=hp(t);return r}function hp(n){var t=op(n),e=n.createTexture();n.bindTexture(n.TEXTURE_2D,e);var i=1,r=1;n.texImage2D(n.TEXTURE_2D,0,t.internalFormatFloat,i,r,0,t.textureFormatFloat,t.textureTypeFloat,null);var a=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,a),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,e,0);var s=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(e),n.deleteFramebuffer(a),s}function iM(n,t){var e=op(n,t),i=n.createTexture();n.bindTexture(n.TEXTURE_2D,i);var r=1,a=1;n.texImage2D(n.TEXTURE_2D,0,e.internalFormatHalfFloat,r,a,0,e.textureFormatFloat,e.textureTypeHalfFloat,null);var s=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,s),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,i,0);var o=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(i),n.deleteFramebuffer(s),o}function IS(n){if(n!==2)return!1;var t=Gn(n),e=t.fenceSync!=null;return e}function ma(n,t){Array.isArray(n)||(n=[n]),n.forEach(function(e){e!=null&&x.util.assert(e.dtype!=="complex64",function(){return t+" does not support complex64 tensors in the WebGL backend."})})}var rM={__proto__:null,callAndCheck:ce,canBeRepresented:tS,getWebGLErrorMessage:eS,getExtensionOrThrow:ws,createVertexShader:nS,createFragmentShader:iS,createProgram:rS,linkProgram:aS,validateProgram:tl,createStaticVertexBuffer:sS,createStaticIndexBuffer:oS,getNumChannels:Z_,createTexture:lS,validateTextureSize:uS,createFramebuffer:cS,bindVertexBufferToProgramAttribute:lp,bindTextureUnit:dS,unbindTextureUnit:Q_,getProgramUniformLocationOrThrow:pS,getProgramUniformLocation:fS,bindTextureToProgramUniformSampler:mS,bindCanvasToFramebuffer:eM,bindColorTextureToFramebuffer:nl,unbindColorTextureFromFramebuffer:up,validateFramebuffer:Ss,getFramebufferErrorMessage:gS,getBatchDim:Lr,getRowsCols:Ir,getShapeAs3D:il,getTextureShapeFromLogicalShape:vS,isReshapeFree:Ls,getWebGLMaxTextureSize:yS,resetMaxTextureSize:tM,resetMaxTexturesInShader:nM,getMaxTexturesInShader:bS,getWebGLDisjointQueryTimerVersion:wS,hasExtension:ln,isWebGLVersionEnabled:cp,isCapableOfRenderingToFloatTexture:SS,isDownloadFloatTextureEnabled:LS,isWebGLFenceEnabled:IS,assertNotComplex:ma};var we=x.env();we.registerFlag("HAS_WEBGL",function(){return we.getNumber("WEBGL_VERSION")>0});we.registerFlag("WEBGL_VERSION",function(){return cp(2)?2:cp(1)?1:0});we.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",function(){return!1});we.registerFlag("WEBGL_BUFFER_SUPPORTED",function(){return we.get("WEBGL_VERSION")===2});we.registerFlag("WEBGL_CPU_FORWARD",function(){return!0});we.registerFlag("WEBGL_FORCE_F16_TEXTURES",function(){return!1});we.registerFlag("WEBGL_PACK",function(){return we.getBool("HAS_WEBGL")});we.registerFlag("WEBGL_PACK_NORMALIZATION",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_CLIP",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_DEPTHWISECONV",function(){return!1});we.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_REDUCE",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_LAZILY_UNPACK",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_CONV_IM2COL",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_MAX_TEXTURE_SIZE",function(){return yS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",function(){return bS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",function(){var n=we.getNumber("WEBGL_VERSION");return n===0?0:wS(n)});we.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",function(){return we.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!x.device_util.isMobile()});we.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",function(){return SS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",function(){return we.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:we.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")});we.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",function(){return LS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_FENCE_API_ENABLED",function(){return IS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",function(){var n=we.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return n?4:0});we.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",function(){return-1},function(n){if(n<0&&n!==-1)throw new Error("WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never "+("delete) or at least 0, but got "+n+"."))});function aM(n){const t=new Float32Array(n.length);for(let e=0;e{const s=x.backend_util.assertAndGetBroadcastShape(t,e),o=s.length,l=x.util.computeStrides(s),u=x.util.sizeFromShape(s),c=x.util.getTypedArrayFromDType(a,u),h=t.length,d=e.length,p=x.util.computeStrides(t),f=x.util.computeStrides(e),m=x.backend_util.getBroadcastDims(t,s),g=x.backend_util.getBroadcastDims(e,s);if(m.length+g.length===0)for(let v=0;vw[C]=0);const S=x.util.locToIndex(w,h,p),L=b.slice(-d);g.forEach(C=>L[C]=0);const N=x.util.locToIndex(L,d,f);c[v]=n(i[S],r[N])}return[c,s]}}const sM=dp((n,t)=>n+t);function ga(n){return(t,e,i)=>{const r=x.util.getTypedArrayFromDType(e,t.length);for(let a=0;aMath.ceil(n));const lM=ga(n=>Math.exp(n));const uM=ga(n=>Math.expm1(n));const cM=ga(n=>Math.floor(n));const hM=ga(n=>Math.log(n));function dM(n,t,e,i){const r=x.util.getTypedArrayFromDType(i,x.util.sizeFromShape(e));for(let a=0;ao&&(o=u)}r[a]=o}return r}const pM=dp((n,t)=>n*t);const fM=ga(n=>1/Math.sqrt(n));function mM(n,t,e,i,r){const a=x.slice_util.isSliceContinous(i,t,e),s=x.util.sizeFromShape(e),o=x.util.computeStrides(i);if(a){const u=x.slice_util.computeFlatOffset(t,o);return n.subarray(u,u+s)}const l=x.util.getTypedArrayFromDType(r,s);for(let u=0;um+t[g]),f=x.util.locToIndex(p,i.length,o);l[u]=n[f]}return l}const gM=dp((n,t)=>n-t);function vM(n,t,e,i,r){const a=t.length,s=x.util.sizeFromShape(t),o=x.util.computeStrides(t),l=x.util.computeStrides(r),u=x.util.getTypedArrayFromDType(e,x.util.sizeFromShape(r));for(let c=0;c{for(let g=0;ge||t>e){var i="["+n+"x"+t+"]",r="["+e+"x"+e+"]";throw new Error("Requested texture size "+i+" greater than WebGL maximum on this browser / GPU "+r+".")}}function cS(n){return li(n,function(){return n.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function up(n,t,e,i,r,a,s){var o=n.getAttribLocation(t,e);return o===-1?!1:(ce(n,function(){return n.bindBuffer(n.ARRAY_BUFFER,i)}),ce(n,function(){return n.vertexAttribPointer(o,r,n.FLOAT,!1,a,s)}),ce(n,function(){return n.enableVertexAttribArray(o)}),!0)}function dS(n,t,e){hS(n,e),ce(n,function(){return n.activeTexture(n.TEXTURE0+e)}),ce(n,function(){return n.bindTexture(n.TEXTURE_2D,t)})}function Q_(n,t){hS(n,t),ce(n,function(){return n.activeTexture(n.TEXTURE0+t)}),ce(n,function(){return n.bindTexture(n.TEXTURE_2D,null)})}function pS(n,t,e){return li(n,function(){return n.getUniformLocation(t,e)},'uniform "'+e+'" not present in program.')}function fS(n,t,e){return n.getUniformLocation(t,e)}function mS(n,t,e,i){ce(n,function(){return dS(n,t,i)}),ce(n,function(){return n.uniform1i(e,i)})}function eM(n){ce(n,function(){return n.bindFramebuffer(n.FRAMEBUFFER,null)}),ce(n,function(){return n.viewport(0,0,n.canvas.width,n.canvas.height)}),ce(n,function(){return n.scissor(0,0,n.canvas.width,n.canvas.height)})}function nl(n,t,e){ce(n,function(){return n.bindFramebuffer(n.FRAMEBUFFER,e)}),ce(n,function(){return n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t,0)})}function cp(n,t){ce(n,function(){return n.bindFramebuffer(n.FRAMEBUFFER,t)}),ce(n,function(){return n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,null,0)})}function Ss(n){var t=n.checkFramebufferStatus(n.FRAMEBUFFER);if(t!==n.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+gS(n,t))}function gS(n,t){switch(t){case n.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case n.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case n.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case n.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function li(n,t,e){var i=ce(n,function(){return t()});if(i==null)throw new Error(e);return i}function hS(n,t){var e=n.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,i=t+n.TEXTURE0;if(ie){var r="[gl.TEXTURE0, gl.TEXTURE"+e+"]";throw new Error("textureUnit must be in "+r+".")}}function Lr(n,t){return t===void 0&&(t=2),x.util.sizeFromShape(n.slice(0,n.length-t))}function Ir(n){if(n.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[n.length>1?n[n.length-2]:1,n[n.length-1]]}function il(n){var t=[1,1,1],e=n.length===0||n.length===1&&n[0]===1;return e||(t=[Lr(n)].concat(Ir(n))),t}function vS(n,t){var e;t===void 0&&(t=!1);var i=x.env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(t&&(i=i*2,n=n.map(function(u,c){return c>=n.length-2?x.util.nearestLargerEven(n[c]):n[c]}),n.length===1&&(n=[2,n[0]])),n.length!==2){var r=x.util.squeezeShape(n);n=r.newShape}var a=x.util.sizeFromShape(n);if(n.length<=1&&a<=i)return[1,a];if(n.length===2&&n[0]<=i&&n[1]<=i)return n;if(n.length===3&&n[0]*n[1]<=i&&n[2]<=i)return[n[0]*n[1],n[2]];if(n.length===3&&n[0]<=i&&n[1]*n[2]<=i)return[n[0],n[1]*n[2]];if(n.length===4&&n[0]*n[1]*n[2]<=i&&n[3]<=i)return[n[0]*n[1]*n[2],n[3]];if(n.length===4&&n[0]<=i&&n[1]*n[2]*n[3]<=i)return[n[0],n[1]*n[2]*n[3]];if(t){var s=Lr(n),o=2,l=2;return n.length&&(e=Ir(n),o=e[0],l=e[1]),a=s*(o/2)*(l/2),x.util.sizeToSquarishShape(a).map(function(u){return u*2})}return x.util.sizeToSquarishShape(a)}function rl(n){return n%2===0}function Ls(n,t){if(n=n.slice(-2),t=t.slice(-2),x.util.arraysEqual(n,t))return!0;if(!n.length||!t.length)return!0;if(n[0]===0||n[1]===0||t[0]===0||t[1]===0)return!0;if(n.length!==t.length){var e=n.slice(-1)[0],i=t.slice(-1)[0];if(e===i)return!0;if(rl(e)&&rl(i)&&(n[0]===1||t[0]===1))return!0}return n[1]===t[1]&&rl(n[0])&&rl(t[0])}var al,sl;function yS(n){if(al==null){var t=Gn(n);al=t.getParameter(t.MAX_TEXTURE_SIZE)}return al}function tM(){al=null}function nM(){sl=null}function bS(n){if(sl==null){var t=Gn(n);sl=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,sl)}function wS(n){if(n===0)return 0;var t,e=Gn(n);return on(e,"EXT_disjoint_timer_query_webgl2")&&n===2?t=2:on(e,"EXT_disjoint_timer_query")?t=1:t=0,t}function on(n,t){var e=n.getExtension(t);return e!=null}function hp(n){try{var t=Gn(n);if(t!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function SS(n){if(n===0)return!1;var t=Gn(n);if(n===1){if(!on(t,"OES_texture_float"))return!1}else if(!on(t,"EXT_color_buffer_float"))return!1;var e=dp(t);return e}function LS(n){if(n===0)return!1;var t=Gn(n);if(n===1){if(!on(t,"OES_texture_float"))return!1;if(!on(t,"WEBGL_color_buffer_float"))return!1}else{if(on(t,"EXT_color_buffer_float"))return dp(t);var e="EXT_color_buffer_half_float";if(on(t,e)){var i=t.getExtension(e);return iM(t,i)}return!1}var r=dp(t);return r}function dp(n){var t=lp(n),e=n.createTexture();n.bindTexture(n.TEXTURE_2D,e);var i=1,r=1;n.texImage2D(n.TEXTURE_2D,0,t.internalFormatFloat,i,r,0,t.textureFormatFloat,t.textureTypeFloat,null);var a=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,a),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,e,0);var s=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(e),n.deleteFramebuffer(a),s}function iM(n,t){var e=lp(n,t),i=n.createTexture();n.bindTexture(n.TEXTURE_2D,i);var r=1,a=1;n.texImage2D(n.TEXTURE_2D,0,e.internalFormatHalfFloat,r,a,0,e.textureFormatFloat,e.textureTypeHalfFloat,null);var s=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,s),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,i,0);var o=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(i),n.deleteFramebuffer(s),o}function IS(n){if(n!==2)return!1;var t=Gn(n),e=t.fenceSync!=null;return e}function ma(n,t){Array.isArray(n)||(n=[n]),n.forEach(function(e){e!=null&&x.util.assert(e.dtype!=="complex64",function(){return t+" does not support complex64 tensors in the WebGL backend."})})}var rM={__proto__:null,callAndCheck:ce,canBeRepresented:tS,getWebGLErrorMessage:eS,getExtensionOrThrow:ws,createVertexShader:nS,createFragmentShader:iS,createProgram:rS,linkProgram:aS,validateProgram:tl,createStaticVertexBuffer:sS,createStaticIndexBuffer:oS,getNumChannels:Z_,createTexture:lS,validateTextureSize:uS,createFramebuffer:cS,bindVertexBufferToProgramAttribute:up,bindTextureUnit:dS,unbindTextureUnit:Q_,getProgramUniformLocationOrThrow:pS,getProgramUniformLocation:fS,bindTextureToProgramUniformSampler:mS,bindCanvasToFramebuffer:eM,bindColorTextureToFramebuffer:nl,unbindColorTextureFromFramebuffer:cp,validateFramebuffer:Ss,getFramebufferErrorMessage:gS,getBatchDim:Lr,getRowsCols:Ir,getShapeAs3D:il,getTextureShapeFromLogicalShape:vS,isReshapeFree:Ls,getWebGLMaxTextureSize:yS,resetMaxTextureSize:tM,resetMaxTexturesInShader:nM,getMaxTexturesInShader:bS,getWebGLDisjointQueryTimerVersion:wS,hasExtension:on,isWebGLVersionEnabled:hp,isCapableOfRenderingToFloatTexture:SS,isDownloadFloatTextureEnabled:LS,isWebGLFenceEnabled:IS,assertNotComplex:ma};var we=x.env();we.registerFlag("HAS_WEBGL",function(){return we.getNumber("WEBGL_VERSION")>0});we.registerFlag("WEBGL_VERSION",function(){return hp(2)?2:hp(1)?1:0});we.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",function(){return!1});we.registerFlag("WEBGL_BUFFER_SUPPORTED",function(){return we.get("WEBGL_VERSION")===2});we.registerFlag("WEBGL_CPU_FORWARD",function(){return!0});we.registerFlag("WEBGL_FORCE_F16_TEXTURES",function(){return!1});we.registerFlag("WEBGL_PACK",function(){return we.getBool("HAS_WEBGL")});we.registerFlag("WEBGL_PACK_NORMALIZATION",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_CLIP",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_DEPTHWISECONV",function(){return!1});we.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_PACK_REDUCE",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_LAZILY_UNPACK",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_CONV_IM2COL",function(){return we.getBool("WEBGL_PACK")});we.registerFlag("WEBGL_MAX_TEXTURE_SIZE",function(){return yS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",function(){return bS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",function(){var n=we.getNumber("WEBGL_VERSION");return n===0?0:wS(n)});we.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",function(){return we.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!x.device_util.isMobile()});we.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",function(){return SS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",function(){return we.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:we.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")});we.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",function(){return LS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_FENCE_API_ENABLED",function(){return IS(we.getNumber("WEBGL_VERSION"))});we.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",function(){var n=we.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return n?4:0});we.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",function(){return-1},function(n){if(n<0&&n!==-1)throw new Error("WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never "+("delete) or at least 0, but got "+n+"."))});function aM(n){const t=new Float32Array(n.length);for(let e=0;e{const s=x.backend_util.assertAndGetBroadcastShape(t,e),o=s.length,l=x.util.computeStrides(s),u=x.util.sizeFromShape(s),c=x.util.getTypedArrayFromDType(a,u),h=t.length,d=e.length,p=x.util.computeStrides(t),f=x.util.computeStrides(e),m=x.backend_util.getBroadcastDims(t,s),g=x.backend_util.getBroadcastDims(e,s);if(m.length+g.length===0)for(let v=0;vw[C]=0);const S=x.util.locToIndex(w,h,p),L=b.slice(-d);g.forEach(C=>L[C]=0);const N=x.util.locToIndex(L,d,f);c[v]=n(i[S],r[N])}return[c,s]}}const sM=pp((n,t)=>n+t);function ga(n){return(t,e,i)=>{const r=x.util.getTypedArrayFromDType(e,t.length);for(let a=0;aMath.ceil(n));const lM=ga(n=>Math.exp(n));const uM=ga(n=>Math.expm1(n));const cM=ga(n=>Math.floor(n));const hM=ga(n=>Math.log(n));function dM(n,t,e,i){const r=x.util.getTypedArrayFromDType(i,x.util.sizeFromShape(e));for(let a=0;ao&&(o=u)}r[a]=o}return r}const pM=pp((n,t)=>n*t);const fM=ga(n=>1/Math.sqrt(n));function mM(n,t,e,i,r){const a=x.slice_util.isSliceContinous(i,t,e),s=x.util.sizeFromShape(e),o=x.util.computeStrides(i);if(a){const u=x.slice_util.computeFlatOffset(t,o);return n.subarray(u,u+s)}const l=x.util.getTypedArrayFromDType(r,s);for(let u=0;um+t[g]),f=x.util.locToIndex(p,i.length,o);l[u]=n[f]}return l}const gM=pp((n,t)=>n-t);function vM(n,t,e,i,r){const a=t.length,s=x.util.sizeFromShape(t),o=x.util.computeStrides(t),l=x.util.computeStrides(r),u=x.util.getTypedArrayFromDType(e,x.util.sizeFromShape(r));for(let c=0;c{for(let g=0;g 0.0 || val < 0.0) ? false : val != 0.0; } @@ -114,7 +114,7 @@ Hi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed thi ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:n,attribute:t,varyingVs:e,varyingFs:i,texture2D:r,output:a,defineOutput:s,defineSpecialNaN:o,defineSpecialInf:l,defineRound:u}}function Ar(n,t,e){e===void 0&&(e="index");var i=x.util.computeStrides(t);return i.map(function(r,a){var s="int "+n[a]+" = "+e+" / "+r,o=a===i.length-1?"int "+n[a+1]+" = "+e+" - "+n[a]+" * "+r:"index -= "+n[a]+" * "+r;return s+"; "+o+";"}).join("")}function pp(n){var t=x.util.computeStrides(n).map(function(e){return e.toString()});return` + `),{version:n,attribute:t,varyingVs:e,varyingFs:i,texture2D:r,output:a,defineOutput:s,defineSpecialNaN:o,defineSpecialInf:l,defineRound:u}}function Ar(n,t,e){e===void 0&&(e="index");var i=x.util.computeStrides(t);return i.map(function(r,a){var s="int "+n[a]+" = "+e+" / "+r,o=a===i.length-1?"int "+n[a+1]+" = "+e+" - "+n[a]+" * "+r:"index -= "+n[a]+" * "+r;return s+"; "+o+";"}).join("")}function fp(n){var t=x.util.computeStrides(n).map(function(e){return e.toString()});return` int getFlatIndex(ivec3 coords) { return coords.x * `+t[0]+" + coords.y * "+t[1]+` + coords.z; } @@ -715,7 +715,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, `+d+` return get`+i+"("+f+`); } - `}function Ze(n){if(n<=1)return"int";if(n===2)return"ivec2";if(n===3)return"ivec3";if(n===4)return"ivec4";if(n===5)return"ivec5";if(n===6)return"ivec6";throw Error("GPU for rank "+n+" is not yet supported")}function ba(n,t){var e=JSON.parse(JSON.stringify(n));return e.shapeInfo.logicalShape=t,e}function wa(n,t){return t.map(function(e){return n[e]}).join(", ")}var y5=function(){function n(t,e,i,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,x.util.assert(t.length>2,function(){return"Packed arg"+(i.charAt(0).toUpperCase()+i.slice(1))+" supports only inputs with rank above 2."});var a=t[t.length-1],s=Math.ceil(a/e);this.outputShape=t.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");var o=this.outputShape,l=o.length,u=Ze(l),c=en("coords",l),h,d;if(s===1){d=l+1;var p=Ze(d);h=` + `}function Ze(n){if(n<=1)return"int";if(n===2)return"ivec2";if(n===3)return"ivec3";if(n===4)return"ivec4";if(n===5)return"ivec5";if(n===6)return"ivec6";throw Error("GPU for rank "+n+" is not yet supported")}function ba(n,t){var e=JSON.parse(JSON.stringify(n));return e.shapeInfo.logicalShape=t,e}function wa(n,t){return t.map(function(e){return n[e]}).join(", ")}var y5=function(){function n(t,e,i,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,x.util.assert(t.length>2,function(){return"Packed arg"+(i.charAt(0).toUpperCase()+i.slice(1))+" supports only inputs with rank above 2."});var a=t[t.length-1],s=Math.ceil(a/e);this.outputShape=t.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");var o=this.outputShape,l=o.length,u=Ze(l),c=Qt("coords",l),h,d;if(s===1){d=l+1;var p=Ze(d);h=` `+p+" sourceLocR = "+p+"("+c.join()+`, 0); ++`+c[l-1]+`; `+p+" sourceLocG = "+p+"("+c.join()+`, 0); @@ -731,7 +731,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, `+u+` sourceLocA = coords; --`+c[l-1]+`; `+u+` sourceLocB = coords; - --`+c[l-2]+";";var f=["x","y","z","w","u","v"].slice(0,d),m="."+f[d-1],g=f.map(function(D){return"int "+D}),v=en("sourceLocR",d-1).concat("inIdx.r"),b=en("sourceLocG",d-1).concat("inIdx.g"),w=en("sourceLocB",d-1).concat("inIdx.b"),S=en("sourceLocA",d-1).concat("inIdx.a"),L=i==="max"?"greaterThan":"lessThan",N=r?"":` + --`+c[l-2]+";";var f=["x","y","z","w","u","v"].slice(0,d),m="."+f[d-1],g=f.map(function(D){return"int "+D}),v=Qt("sourceLocR",d-1).concat("inIdx.r"),b=Qt("sourceLocG",d-1).concat("inIdx.g"),w=Qt("sourceLocB",d-1).concat("inIdx.b"),S=Qt("sourceLocA",d-1).concat("inIdx.a"),L=i==="max"?"greaterThan":"lessThan",N=r?"":` inIdx = round(vec4(getBestIndicesAChannel(`+v.join()+`), getBestIndicesAChannel(`+b.join()+`), getBestIndicesAChannel(`+w.join()+`), @@ -891,7 +891,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, `}return n}();var DS=` if (isnan(a)) return a; if (isnan(b)) return b; -`,fp="return a + b;",mp="return a - b;",kS="return a * b;",S5=` +`,mp="return a + b;",gp="return a - b;",kS="return a * b;",S5=` float s = sign(a) * sign(b); int ia = round(a); int ib = round(b); @@ -1019,7 +1019,7 @@ return (round(mod(b, 2.0)) != 1) ? result.y = (coords + 1) >= `+this.outputShape[0]+` ? 0. : result.y; result.z = 0.; result.w = 0.; - `;else{var l=en("coords",a);s+=` + `;else{var l=Qt("coords",a);s+=` bool nextRowOutOfBounds = (`+l[a-2]+" + 1) >= "+this.outputShape[a-2]+`; bool nextColOutOfBounds = @@ -1090,7 +1090,7 @@ return (round(mod(b, 2.0)) != 1) ? `+r.join(` `)+` } - `}return n}();var Q5=function(){function n(t,e){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=x.backend_util.computeOutShape(t,e);var i=this.outputShape,r=i.length,a=Ze(r),s=en("coords",r),o=["x","y","z","w","u","v"].slice(0,r);this.variableNames=t.map(function(v,b){return"T"+b});var l=new Array(t.length-1);l[0]=t[0][e];for(var u=1;u0?(i=this.beginQuery(),this.endQuery(),r=function(){return e.isQueryAvailable(i,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):r=function(){return!0};return{query:i,isFencePassed:r}},n.prototype.downloadMatrixFromPackedTexture=function(t,e,i){var r=this;return this.downloadMatrixDriver(t,function(){return aL(r.gl,e,i)})},n.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,i=iS(e,t),r=qS(e),a=rS(e);return ce(e,function(){return e.attachShader(a,r)}),ce(e,function(){return e.attachShader(a,i)}),aS(e,a),this.debug&&tl(e,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=ZS(e,this.program,this.vertexBuffer)),a},n.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),t!=null&&ce(this.gl,function(){return e.gl.deleteProgram(t)})},n.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,this.program!=null&&this.debug&&tl(this.gl,this.program),ce(this.gl,function(){return e.gl.useProgram(t)})},n.prototype.getUniformLocation=function(t,e,i){return i===void 0&&(i=!0),this.throwIfDisposed(),i?pS(this.gl,t,e):fS(this.gl,t,e)},n.prototype.getAttributeLocation=function(t,e){var i=this;return this.throwIfDisposed(),ce(this.gl,function(){return i.gl.getAttribLocation(t,e)})},n.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},n.prototype.setInputMatrixTexture=function(t,e,i){this.throwIfDisposed(),this.throwIfNoProgram(),mS(this.gl,t,e,i)},n.prototype.setOutputMatrixTexture=function(t,e,i){this.setOutputMatrixTextureDriver(t,i,e)},n.prototype.setOutputPackedMatrixTexture=function(t,e,i){this.throwIfDisposed();var r=fa(e,i),a=r[0],s=r[1];this.setOutputMatrixTextureDriver(t,a,s)},n.prototype.setOutputMatrixWriteRegion=function(t,e,i,r){this.setOutputMatrixWriteRegionDriver(i,t,r,e)},n.prototype.setOutputPackedMatrixWriteRegion=function(t,e,i,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},n.prototype.debugValidate=function(){this.program!=null&&tl(this.gl,this.program),Ss(this.gl)},n.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),ce(t,function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)})},n.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),ce(this.gl,function(){return t.gl.finish()})},n.prototype.getQueryTimerExtension=function(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=ws(this.gl,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},n.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},n.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},n.prototype.beginQuery=function(){if(x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),i=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,i),i}var r=this.getQueryTimerExtensionWebGL1(),a=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,a),a},n.prototype.endQuery=function(){if(x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){var t=this.gl,e=this.getQueryTimerExtensionWebGL2();t.endQuery(e.TIME_ELAPSED_EXT);return}var i=this.getQueryTimerExtensionWebGL1();i.endQueryEXT(i.TIME_ELAPSED_EXT)},n.prototype.waitForQueryAndGetTime=function(t){return Qo(this,void 0,void 0,function(){var e=this;return el(this,function(i){switch(i.label){case 0:return[4,x.util.repeatedTry(function(){return e.disposed||e.isQueryAvailable(t,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return i.sent(),[2,this.getQueryTime(t,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},n.prototype.getQueryTime=function(t,e){if(e===0)return null;if(e===2){var i=this.gl,r=i.getQueryParameter(t,i.QUERY_RESULT);return r/1e6}else{var a=this.getQueryTimerExtensionWebGL1(),r=a.getQueryObjectEXT(t,a.QUERY_RESULT_EXT);return r/1e6}},n.prototype.isQueryAvailable=function(t,e){if(e===0)return!0;if(e===2){var i=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=i.getQueryParameter(t,i.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{var r=this.getQueryTimerExtensionWebGL1(),a=r.getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}},n.prototype.pollFence=function(t){var e=this;return new Promise(function(i){e.addItemToPoll(function(){return t.isFencePassed()},function(){return i()})})},n.prototype.pollItems=function(){for(var t=S9(this.itemsToPoll.map(function(r){return r.isDoneFn})),e=0;e<=t;++e){var i=this.itemsToPoll[e].resolveFn;i()}this.itemsToPoll=this.itemsToPoll.slice(t+1)},n.prototype.addItemToPoll=function(t,e){var i=this;if(this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1)return;x.util.repeatedTry(function(){return i.pollItems(),i.itemsToPoll.length===0})},n.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),nl(this.gl,t,this.framebuffer),this.debug&&Ss(this.gl)},n.prototype.unbindTextureToFrameBuffer=function(){this.outputTexture!=null?(nl(this.gl,this.outputTexture,this.framebuffer),this.debug&&Ss(this.gl)):up(this.gl,this.framebuffer)},n.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var i=e();return this.unbindTextureToFrameBuffer(),i},n.prototype.setOutputMatrixTextureDriver=function(t,e,i){this.throwIfDisposed();var r=this.gl;nl(r,t,this.framebuffer),this.debug&&Ss(r),this.outputTexture=t,ce(r,function(){return r.viewport(0,0,e,i)}),ce(r,function(){return r.scissor(0,0,e,i)})},n.prototype.setOutputMatrixWriteRegionDriver=function(t,e,i,r){var a=this;this.throwIfDisposed(),ce(this.gl,function(){return a.gl.scissor(t,e,i,r)})},n.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},n.prototype.throwIfNoProgram=function(){if(this.program==null)throw new Error("No GPU program is currently set.")},n}();function S9(n){for(var t=0;t0&&(b.flatOffset=g.texData.slice.flatOffset),{name:t.variableNames[v],shapeInfo:b}}),s=a.map(function(g){return g.shapeInfo}),o={logicalShape:i.shape,texShape:i.texData.texShape,isUniform:!1,isPacked:i.texData.isPacked,flatOffset:null},l=qM(a,o,r,t.packedInputs),u=n.createProgram(l),c=null,h=n.getUniformLocation(u,"NAN",!1);x.env().getNumber("WEBGL_VERSION")===1&&(c=n.getUniformLocation(u,"INFINITY",!1));for(var d={},p=0;p0,l=s.isUniform?"uniform":s.texData.texShape;i+=s.shape+"_"+l+"_"+o});var r=n.userCode,a=n.constructor.name;return a+="_"+i+"_"+r,a}var T9=function(){function n(t,e,i){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var r=i.filterWidth,a=i.inChannels,s=i.strideWidth,o=i.strideHeight,l=i.padInfo,u=i.outWidth,c=i.dilationWidth,h=i.dilationHeight,d=i.dataFormat,p=l.left,f=l.top,m=a*r,g=Bt(),v=d==="channelsLast",b=v?0:1,w=v?1:2,S="",L=0;L<=1;L++)for(var N=0;N<=1;N++)S+=` + }`;return nS(n,e)}function GS(n){var t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return sS(n,t)}function YS(n){var t=new Uint16Array([0,1,2,2,1,3]);return oS(n,t)}function Is(n,t,e,i,r,a){uS(t,e);var s=lS(n),o=n.TEXTURE_2D;return ce(n,function(){return n.bindTexture(o,s)}),ce(n,function(){return n.texParameteri(o,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE)}),ce(n,function(){return n.texParameteri(o,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE)}),ce(n,function(){return n.texParameteri(o,n.TEXTURE_MIN_FILTER,n.NEAREST)}),ce(n,function(){return n.texParameteri(o,n.TEXTURE_MAG_FILTER,n.NEAREST)}),ce(n,function(){return n.texImage2D(o,0,i,t,e,0,r,a,null)}),ce(n,function(){return n.bindTexture(n.TEXTURE_2D,null)}),s}function vp(n){return n.internalFormatFloat}function jS(n,t,e,i){var r=ys(t,e),a=r[0],s=r[1];return Is(n,a,s,vp(i),i.textureFormatFloat,n.FLOAT)}function yp(n){return n.internalFormatHalfFloat}function KS(n,t,e,i){var r=ys(t,e),a=r[0],s=r[1];return Is(n,a,s,yp(i),i.textureFormatFloat,i.textureTypeHalfFloat)}function bp(n){return n.downloadTextureFormat}function $S(n,t,e,i){var r=ys(t,e),a=r[0],s=r[1];return Is(n,a,s,bp(i),n.RGBA,n.UNSIGNED_BYTE)}function wp(n){return n.internalFormatPackedFloat}function XS(n,t,e,i){var r=fa(t,e),a=r[0],s=r[1];return Is(n,a,s,wp(i),n.RGBA,n.FLOAT)}function Sp(n){return n.internalFormatPackedHalfFloat}function JS(n,t,e,i){var r=fa(t,e),a=r[0],s=r[1];return Is(n,a,s,Sp(i),n.RGBA,i.textureTypeHalfFloat)}function ZS(n,t,e){var i=0,r=3*4,a=3*4+2*4;ce(n,function(){return n.bindBuffer(n.ARRAY_BUFFER,e)});var s=up(n,t,"clipSpacePos",e,3,a,i);return s&&up(n,t,"uv",e,2,a,r)}function QS(n,t,e,i,r,a){ce(n,function(){return n.bindTexture(n.TEXTURE_2D,t)});var s,o,l;r instanceof Uint8Array?(s=new Uint8Array(e*i*4),o=n.UNSIGNED_BYTE,l=n.RGBA):(s=new Float32Array(e*i*4),o=n.FLOAT,l=a.internalFormatPackedFloat),s.set(r),ce(n,function(){return n.texImage2D(n.TEXTURE_2D,0,l,e,i,0,n.RGBA,o,s)}),ce(n,function(){return n.bindTexture(n.TEXTURE_2D,null)})}function eL(n,t,e){ce(n,function(){return n.bindTexture(n.TEXTURE_2D,t)}),e.data instanceof Uint8Array?ce(n,function(){return n.texImage2D(n.TEXTURE_2D,0,n.RGBA,e.width,e.height,0,n.RGBA,n.UNSIGNED_BYTE,e.data)}):ce(n,function(){return n.texImage2D(n.TEXTURE_2D,0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,e)}),ce(n,function(){return n.bindTexture(n.TEXTURE_2D,null)})}function tL(n,t,e,i){var r=n.createBuffer();ce(n,function(){return n.bindBuffer(n.PIXEL_PACK_BUFFER,r)});var a=4,s=4,o=a*s*t*e;return ce(n,function(){return n.bufferData(n.PIXEL_PACK_BUFFER,o,n.STREAM_READ)}),ce(n,function(){return n.readPixels(0,0,e,t,n.RGBA,n.FLOAT,0)}),ce(n,function(){return n.bindBuffer(n.PIXEL_PACK_BUFFER,null)}),r}function nL(n,t,e){var i=n,r=new Float32Array(e);return i.bindBuffer(i.PIXEL_PACK_BUFFER,t),i.getBufferSubData(i.PIXEL_PACK_BUFFER,0,r),i.bindBuffer(i.PIXEL_PACK_BUFFER,null),r}function iL(n,t,e,i){var r=ys(t,e),a=r[0],s=r[1],o=4,l=new Uint8Array(G_(t*e,o));return ce(n,function(){return n.readPixels(0,0,a,s,i.downloadTextureFormat,n.UNSIGNED_BYTE,l)}),new Float32Array(l.buffer)}function rL(n,t,e,i,r,a,s,o){var l=n,u=new Float32Array(Y_(a,s));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function aL(n,t,e){var i=new Float32Array(t*e*4);return ce(n,function(){return n.readPixels(0,0,e,t,n.RGBA,n.FLOAT,i)}),i}var w9={__proto__:null,createVertexShader:qS,createVertexBuffer:GS,createIndexBuffer:YS,getInternalFormatForFloat32MatrixTexture:vp,createFloat32MatrixTexture:jS,getInternalFormatForFloat16MatrixTexture:yp,createFloat16MatrixTexture:KS,getInternalFormatForUnsignedBytesMatrixTexture:bp,createUnsignedBytesMatrixTexture:$S,getInternalFormatForPackedMatrixTexture:wp,createPackedMatrixTexture:XS,getInternalFormatForFloat16PackedMatrixTexture:Sp,createFloat16PackedMatrixTexture:JS,bindVertexProgramAttributeStreams:ZS,uploadDenseMatrixToTexture:QS,uploadPixelDataToTexture:eL,createBufferFromOutputTexture:tL,downloadFloat32MatrixFromBuffer:nL,downloadByteEncodedFloatMatrixFromOutputTexture:iL,downloadPackedMatrixFromBuffer:rL,downloadMatrixFromPackedOutputTexture:aL};var sL=function(){function n(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=x.env().getNumber("WEBGL_VERSION");t!=null?(this.gl=t,Q0(e,t)):this.gl=Gn(e);var i="WEBGL_color_buffer_float",r="EXT_color_buffer_half_float";if(x.env().getNumber("WEBGL_VERSION")===1){var a="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=ws(this.gl,a),on(this.gl,s))this.textureHalfFloatExtension=ws(this.gl,s);else if(x.env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(i),on(this.gl,r))this.colorBufferHalfFloatExtension=ws(this.gl,r);else if(x.env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(i="EXT_color_buffer_float",on(this.gl,i))this.colorBufferFloatExtension=this.gl.getExtension(i);else if(on(this.gl,r))this.colorBufferHalfFloatExtension=this.gl.getExtension(r);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=GS(this.gl),this.indexBuffer=YS(this.gl),this.framebuffer=cS(this.gl),this.textureConfig=lp(this.gl,this.textureHalfFloatExtension)}return Object.defineProperty(n.prototype,"debug",{get:function(){return x.env().getBool("DEBUG")},enumerable:!0,configurable:!0}),n.prototype.dispose=function(){var t=this;if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");var e=this.gl;ce(e,function(){return e.finish()}),ce(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),ce(e,function(){return e.deleteFramebuffer(t.framebuffer)}),ce(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,null)}),ce(e,function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}),ce(e,function(){return e.deleteBuffer(t.indexBuffer)}),this.disposed=!0},n.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),jS(this.gl,t,e,this.textureConfig)},n.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),KS(this.gl,t,e,this.textureConfig)},n.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),$S(this.gl,t,e,this.textureConfig)},n.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),eL(this.gl,t,e)},n.prototype.uploadDenseMatrixToTexture=function(t,e,i,r){this.throwIfDisposed(),QS(this.gl,t,e,i,r,this.textureConfig)},n.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),JS(this.gl,t,e,this.textureConfig)},n.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),XS(this.gl,t,e,this.textureConfig)},n.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(cp(this.gl,this.framebuffer),this.outputTexture=null),ce(this.gl,function(){return e.gl.deleteTexture(t)})},n.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,i){var r=this;return this.downloadMatrixDriver(t,function(){return iL(r.gl,e,i,r.textureConfig)})},n.prototype.downloadPackedMatrixFromBuffer=function(t,e,i,r,a,s){return rL(this.gl,t,e,i,r,a,s,this.textureConfig)},n.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return nL(this.gl,t,e)},n.prototype.createBufferFromTexture=function(t,e,i){this.bindTextureToFrameBuffer(t);var r=tL(this.gl,e,i,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},n.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},n.prototype.createFence=function(t){var e=this,i,r;if(x.env().getBool("WEBGL_FENCE_API_ENABLED")){var a=t,s=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),r=function(){var o=a.clientWaitSync(s,0,0);return o===a.ALREADY_SIGNALED||o===a.CONDITION_SATISFIED},i=s}else x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(i=this.beginQuery(),this.endQuery(),r=function(){return e.isQueryAvailable(i,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):r=function(){return!0};return{query:i,isFencePassed:r}},n.prototype.downloadMatrixFromPackedTexture=function(t,e,i){var r=this;return this.downloadMatrixDriver(t,function(){return aL(r.gl,e,i)})},n.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,i=iS(e,t),r=qS(e),a=rS(e);return ce(e,function(){return e.attachShader(a,r)}),ce(e,function(){return e.attachShader(a,i)}),aS(e,a),this.debug&&tl(e,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=ZS(e,this.program,this.vertexBuffer)),a},n.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),t!=null&&ce(this.gl,function(){return e.gl.deleteProgram(t)})},n.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,this.program!=null&&this.debug&&tl(this.gl,this.program),ce(this.gl,function(){return e.gl.useProgram(t)})},n.prototype.getUniformLocation=function(t,e,i){return i===void 0&&(i=!0),this.throwIfDisposed(),i?pS(this.gl,t,e):fS(this.gl,t,e)},n.prototype.getAttributeLocation=function(t,e){var i=this;return this.throwIfDisposed(),ce(this.gl,function(){return i.gl.getAttribLocation(t,e)})},n.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},n.prototype.setInputMatrixTexture=function(t,e,i){this.throwIfDisposed(),this.throwIfNoProgram(),mS(this.gl,t,e,i)},n.prototype.setOutputMatrixTexture=function(t,e,i){this.setOutputMatrixTextureDriver(t,i,e)},n.prototype.setOutputPackedMatrixTexture=function(t,e,i){this.throwIfDisposed();var r=fa(e,i),a=r[0],s=r[1];this.setOutputMatrixTextureDriver(t,a,s)},n.prototype.setOutputMatrixWriteRegion=function(t,e,i,r){this.setOutputMatrixWriteRegionDriver(i,t,r,e)},n.prototype.setOutputPackedMatrixWriteRegion=function(t,e,i,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},n.prototype.debugValidate=function(){this.program!=null&&tl(this.gl,this.program),Ss(this.gl)},n.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),ce(t,function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)})},n.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),ce(this.gl,function(){return t.gl.finish()})},n.prototype.getQueryTimerExtension=function(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=ws(this.gl,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},n.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},n.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},n.prototype.beginQuery=function(){if(x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),i=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,i),i}var r=this.getQueryTimerExtensionWebGL1(),a=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,a),a},n.prototype.endQuery=function(){if(x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){var t=this.gl,e=this.getQueryTimerExtensionWebGL2();t.endQuery(e.TIME_ELAPSED_EXT);return}var i=this.getQueryTimerExtensionWebGL1();i.endQueryEXT(i.TIME_ELAPSED_EXT)},n.prototype.waitForQueryAndGetTime=function(t){return Qo(this,void 0,void 0,function(){var e=this;return el(this,function(i){switch(i.label){case 0:return[4,x.util.repeatedTry(function(){return e.disposed||e.isQueryAvailable(t,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return i.sent(),[2,this.getQueryTime(t,x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},n.prototype.getQueryTime=function(t,e){if(e===0)return null;if(e===2){var i=this.gl,r=i.getQueryParameter(t,i.QUERY_RESULT);return r/1e6}else{var a=this.getQueryTimerExtensionWebGL1(),r=a.getQueryObjectEXT(t,a.QUERY_RESULT_EXT);return r/1e6}},n.prototype.isQueryAvailable=function(t,e){if(e===0)return!0;if(e===2){var i=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=i.getQueryParameter(t,i.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{var r=this.getQueryTimerExtensionWebGL1(),a=r.getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}},n.prototype.pollFence=function(t){var e=this;return new Promise(function(i){e.addItemToPoll(function(){return t.isFencePassed()},function(){return i()})})},n.prototype.pollItems=function(){for(var t=S9(this.itemsToPoll.map(function(r){return r.isDoneFn})),e=0;e<=t;++e){var i=this.itemsToPoll[e].resolveFn;i()}this.itemsToPoll=this.itemsToPoll.slice(t+1)},n.prototype.addItemToPoll=function(t,e){var i=this;if(this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1)return;x.util.repeatedTry(function(){return i.pollItems(),i.itemsToPoll.length===0})},n.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),nl(this.gl,t,this.framebuffer),this.debug&&Ss(this.gl)},n.prototype.unbindTextureToFrameBuffer=function(){this.outputTexture!=null?(nl(this.gl,this.outputTexture,this.framebuffer),this.debug&&Ss(this.gl)):cp(this.gl,this.framebuffer)},n.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var i=e();return this.unbindTextureToFrameBuffer(),i},n.prototype.setOutputMatrixTextureDriver=function(t,e,i){this.throwIfDisposed();var r=this.gl;nl(r,t,this.framebuffer),this.debug&&Ss(r),this.outputTexture=t,ce(r,function(){return r.viewport(0,0,e,i)}),ce(r,function(){return r.scissor(0,0,e,i)})},n.prototype.setOutputMatrixWriteRegionDriver=function(t,e,i,r){var a=this;this.throwIfDisposed(),ce(this.gl,function(){return a.gl.scissor(t,e,i,r)})},n.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},n.prototype.throwIfNoProgram=function(){if(this.program==null)throw new Error("No GPU program is currently set.")},n}();function S9(n){for(var t=0;t0&&(b.flatOffset=g.texData.slice.flatOffset),{name:t.variableNames[v],shapeInfo:b}}),s=a.map(function(g){return g.shapeInfo}),o={logicalShape:i.shape,texShape:i.texData.texShape,isUniform:!1,isPacked:i.texData.isPacked,flatOffset:null},l=qM(a,o,r,t.packedInputs),u=n.createProgram(l),c=null,h=n.getUniformLocation(u,"NAN",!1);x.env().getNumber("WEBGL_VERSION")===1&&(c=n.getUniformLocation(u,"INFINITY",!1));for(var d={},p=0;p0,l=s.isUniform?"uniform":s.texData.texShape;i+=s.shape+"_"+l+"_"+o});var r=n.userCode,a=n.constructor.name;return a+="_"+i+"_"+r,a}var T9=function(){function n(t,e,i){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var r=i.filterWidth,a=i.inChannels,s=i.strideWidth,o=i.strideHeight,l=i.padInfo,u=i.outWidth,c=i.dilationWidth,h=i.dilationHeight,d=i.dataFormat,p=l.left,f=l.top,m=a*r,g=Bt(),v=d==="channelsLast",b=v?0:1,w=v?1:2,S="",L=0;L<=1;L++)for(var N=0;N<=1;N++)S+=` blockIndex = rc.y + `+N+`; pos = rc.x + `+L+`; @@ -2408,7 +2408,7 @@ return (round(mod(b, 2.0)) != 1) ? } setOutput(dotProd); } - `}return n}();var Sp=function(){function n(t,e,i,r,a,s,o){i===void 0&&(i=!1),r===void 0&&(r=!1),a===void 0&&(a=!1),s===void 0&&(s=null),o===void 0&&(o=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;var l=i?t[1]:t[2],u=Math.ceil(l/2),c=i?"i * 2, rc.y":"rc.y, i * 2",h=r?"rc.z, i * 2":"i * 2, rc.z",d=i?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],p=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],f="",m="";s&&(o?f=`vec4 activation(vec4 a) { + `}return n}();var Lp=function(){function n(t,e,i,r,a,s,o){i===void 0&&(i=!1),r===void 0&&(r=!1),a===void 0&&(a=!1),s===void 0&&(s=null),o===void 0&&(o=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;var l=i?t[1]:t[2],u=Math.ceil(l/2),c=i?"i * 2, rc.y":"rc.y, i * 2",h=r?"rc.z, i * 2":"i * 2, rc.z",d=i?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],p=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],f="",m="";s&&(o?f=`vec4 activation(vec4 a) { vec4 b = getPreluActivationWeightsAtOutCoords(); `+s+` }`:f=`vec4 activation(vec4 x) { @@ -2475,7 +2475,7 @@ return (round(mod(b, 2.0)) != 1) ? void main() { setOutput(vec4(getA(), 0., 0., 0.)); } - `;else{var i=en("rc",e),r=Ze(e),a=k9(e,t,i),s=F9(e,t[t.length-1],t[t.length-2],i),o=W9(t,i);this.userCode=` + `;else{var i=Qt("rc",e),r=Ze(e),a=k9(e,t,i),s=F9(e,t[t.length-1],t[t.length-2],i),o=W9(t,i);this.userCode=` void main() { `+r+` rc = getOutputCoords(); @@ -2525,7 +2525,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(getX(`+l+`)); } } - `}return n}();var P9=function(){function n(t,e,i){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map(function(v,b){return v[0]+t[b]+v[1]});for(var r=t.length,a=Ze(r),s=e.map(function(v){return v[0]}).join(","),o=e.map(function(v,b){return v[0]+t[b]}).join(","),l=en("rc",r),u=en("source",r),c=l[r-1]+" < "+this.outputShape[r-1],h=r===1?"source":"vec2("+u.slice(-2).join()+")",d=[a+" rc = outputLoc;",l[r-1]+` += 1; + `}return n}();var P9=function(){function n(t,e,i){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map(function(v,b){return v[0]+t[b]+v[1]});for(var r=t.length,a=Ze(r),s=e.map(function(v){return v[0]}).join(","),o=e.map(function(v,b){return v[0]+t[b]}).join(","),l=Qt("rc",r),u=Qt("source",r),c=l[r-1]+" < "+this.outputShape[r-1],h=r===1?"source":"vec2("+u.slice(-2).join()+")",d=[a+" rc = outputLoc;",l[r-1]+` += 1; if(`+c+`) { `,r===1?"":`} rc = outputLoc; @@ -2690,7 +2690,7 @@ return (round(mod(b, 2.0)) != 1) ? } setOutput(`+L+`); } - `}return n}(),Lp=function(){function n(t,e,i,r,a){if(r===void 0&&(r=!1),a===void 0&&(a=!1),this.variableNames=["x"],e==="avg"&&i)throw new Error("Cannot compute positions for average pool.");var s=t.filterWidth,o=t.strideDepth,l=t.strideHeight,u=t.strideWidth,c=t.dilationDepth,h=t.dilationHeight,d=t.dilationWidth,p=t.effectiveFilterDepth,f=t.effectiveFilterHeight,m=t.effectiveFilterWidth,g=t.padInfo.front,v=t.padInfo.top,b=t.padInfo.left;this.outputShape=t.outShape;var w=e==="avg",S="0.0";if(w||(S="-1.0 / 1e-20"),i){var L=">=";this.userCode=` + `}return n}(),Ip=function(){function n(t,e,i,r,a){if(r===void 0&&(r=!1),a===void 0&&(a=!1),this.variableNames=["x"],e==="avg"&&i)throw new Error("Cannot compute positions for average pool.");var s=t.filterWidth,o=t.strideDepth,l=t.strideHeight,u=t.strideWidth,c=t.dilationDepth,h=t.dilationHeight,d=t.dilationWidth,p=t.effectiveFilterDepth,f=t.effectiveFilterHeight,m=t.effectiveFilterWidth,g=t.padInfo.front,v=t.padInfo.top,b=t.padInfo.left;this.outputShape=t.outShape;var w=e==="avg",S="0.0";if(w||(S="-1.0 / 1e-20"),i){var L=">=";this.userCode=` const ivec3 strides = ivec3(`+o+", "+l+", "+u+`); const ivec3 pads = ivec3(`+g+", "+v+", "+b+`); @@ -2951,7 +2951,7 @@ return (round(mod(b, 2.0)) != 1) ? `+(r>0?"}":"")+` `}this.userCode=` `+_9(e)+` - `+pp(t)+` + `+fp(t)+` void main() { ivec3 rc = getOutputCoords(); @@ -3265,7 +3265,7 @@ return (round(mod(b, 2.0)) != 1) ? `+s+` coords = getOutputCoords(); setOutput(getX(`+a+`)); } - `}return n}();var j9=function(){function n(t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var i=t.length;if(i>4)throw new Error("WebGL backend: Reverse of rank-"+i+" tensor is not yet supported");this.outputShape=t;var r=en("rc",i),a=r[i-1]+" + 1 < "+this.outputShape[i-1],s=r[i-2]+" + 1 < "+this.outputShape[i-2],o=Ze(i);i===1?this.userCode=` + `}return n}();var j9=function(){function n(t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var i=t.length;if(i>4)throw new Error("WebGL backend: Reverse of rank-"+i+" tensor is not yet supported");this.outputShape=t;var r=Qt("rc",i),a=r[i-1]+" + 1 < "+this.outputShape[i-1],s=r[i-2]+" + 1 < "+this.outputShape[i-2],o=Ze(i);i===1?this.userCode=` void main(){ int rc = getOutputCoords(); vec4 result = vec4(0.); @@ -3429,7 +3429,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(getB(`+a+`)); } } - `}return n}();var J9=function(){function n(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e=Ze(this.rank),i="uniform int start["+this.rank+"];",r=X9(this.rank),a,s=t.map(function(o,l){return"sourceLoc."+Ip[l]+" = start["+l+"] + coords."+Ip[l]+";"});a=` + `}return n}();var J9=function(){function n(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e=Ze(this.rank),i="uniform int start["+this.rank+"];",r=X9(this.rank),a,s=t.map(function(o,l){return"sourceLoc."+Ap[l]+" = start["+l+"] + coords."+Ap[l]+";"});a=` `+e+` sourceLoc; `+e+` coords = getOutputCoords(); `+s.join(` @@ -3440,7 +3440,7 @@ return (round(mod(b, 2.0)) != 1) ? `+a+` setOutput(getSource(`+r+`)); } - `}return n.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the "+("length of start ("+t.length+")"));return function(i,r){if(e.startLoc==null&&(e.startLoc=i.getUniformLocationNoThrow(r,"start"),e.startLoc==null))return;i.gl.uniform1iv(e.startLoc,t)}},n}(),Ip=["x","y","z","w","u","v"];function X9(n){if(n===1)return"sourceLoc";if(n<=6)return Ip.slice(0,n).map(function(t){return"sourceLoc."+t}).join(",");throw Error("Slicing for rank "+n+" is not yet supported")}var Z9=function(){function n(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=Ze(this.rank),i=en("coords",this.rank),r=en("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":"vec2("+r.slice(-2).join()+")",s="getChannel(getSource("+r.join()+"), "+a+")",o=` + `}return n.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the "+("length of start ("+t.length+")"));return function(i,r){if(e.startLoc==null&&(e.startLoc=i.getUniformLocationNoThrow(r,"start"),e.startLoc==null))return;i.gl.uniform1iv(e.startLoc,t)}},n}(),Ap=["x","y","z","w","u","v"];function X9(n){if(n===1)return"sourceLoc";if(n<=6)return Ap.slice(0,n).map(function(t){return"sourceLoc."+t}).join(",");throw Error("Slicing for rank "+n+" is not yet supported")}var Z9=function(){function n(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=Ze(this.rank),i=Qt("coords",this.rank),r=Qt("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":"vec2("+r.slice(-2).join()+")",s="getChannel(getSource("+r.join()+"), "+a+")",o=` result.x = `+s+`; if (++`+i[this.rank-1]+" < "+t[this.rank-1]+`) { ++`+r[this.rank-1]+`; @@ -3478,7 +3478,7 @@ return (round(mod(b, 2.0)) != 1) ? `+s+` coords = getOutputCoords(); setOutput(getX(`+o+`)); } - `}return n}();var e6=function(){function n(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return n.prototype.acquireTexture=function(t,e,i){var r=dL(e,i),a=pL(t,r,i);a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]);var s=hL(t,r,this.gpgpu.gl,this.gpgpu.textureConfig,i);if(this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();var o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}var l;return r===Ot.PACKED_2X2_FLOAT32?l=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):r===Ot.PACKED_2X2_FLOAT16?l=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):r===Ot.UNPACKED_FLOAT32?l=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):r===Ot.UNPACKED_FLOAT16?l=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):r===Ot.PACKED_4X1_UNSIGNED_BYTE&&(l=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(l),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),l},n.prototype.releaseTexture=function(t,e,i,r){if(this.freeTextures==null)return;var a=dL(i,r),s=pL(e,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);var o=hL(e,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),l=x.env().get("WEBGL_DELETE_TEXTURE_THRESHOLD");l!==-1&&this._numBytesAllocated>l?(this.gpgpu.deleteMatrixTexture(t),this._numBytesAllocated-=o):(this.freeTextures[s].push(t),this.numFreeTextures++,this._numBytesFree+=o),this.numUsedTextures--;var u=this.usedTextures[s],c=u.indexOf(t);if(c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");u.splice(c,1),this.log()},n.prototype.log=function(){if(!this.logEnabled)return;var t=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+t+")");var e=this._numBytesFree/this._numBytesAllocated;console.log("Bytes allocated: "+this._numBytesAllocated),console.log("Bytes unused: "+this._numBytesFree+" ("+Math.round(100*e)+"%)")},Object.defineProperty(n.prototype,"numBytesAllocated",{get:function(){return this._numBytesAllocated},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"numBytesFree",{get:function(){return this._numBytesFree},enumerable:!0,configurable:!0}),n.prototype.getNumUsedTextures=function(){return this.numUsedTextures},n.prototype.getNumFreeTextures=function(){return this.numFreeTextures},n.prototype.dispose=function(){var t=this;if(this.freeTextures==null)return;for(var e in this.freeTextures)this.freeTextures[e].forEach(function(i){t.gpgpu.deleteMatrixTexture(i)});for(var e in this.usedTextures)this.usedTextures[e].forEach(function(r){t.gpgpu.deleteMatrixTexture(r)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0},n}();function t6(n,t){var e=n;if(t===e.R32F)return 4;if(t===e.R16F)return 2;if(t===e.RGBA32F)return 16;if(t===n.RGBA)return 16;if(t===e.RGBA16F)return 8;throw new Error("Unknown internal format "+t)}function hL(n,t,e,i,r){var a=n6(t,i),s;if(r){var o=fa(n[0],n[1]),l=o[0],u=o[1];s=l*u}else{var c=ys(n[0],n[1]),h=c[0],d=c[1];s=h*d}var p=t6(e,a);return s*p}function n6(n,t){switch(n){case Ot.PACKED_2X2_FLOAT32:return bp(t);case Ot.PACKED_2X2_FLOAT16:return wp(t);case Ot.UNPACKED_FLOAT32:return gp(t);case Ot.UNPACKED_FLOAT16:return vp(t);case Ot.PACKED_4X1_UNSIGNED_BYTE:return yp(t);default:throw new Error("Unknown physical texture type "+n)}}function i6(n){return x.env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?n?Ot.PACKED_2X2_FLOAT32:Ot.UNPACKED_FLOAT32:n?Ot.PACKED_2X2_FLOAT16:Ot.UNPACKED_FLOAT16}function dL(n,t){if(n===on.UPLOAD)return Ot.PACKED_2X2_FLOAT32;if(n===on.RENDER||n==null)return i6(t);if(n===on.DOWNLOAD||n===on.PIXELS)return Ot.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+n)}function pL(n,t,e){return n[0]+"_"+n[1]+"_"+t+"_"+e}var a6=function(){function n(t,e){this.variableNames=["A"];for(var i=new Array(t.length),r=0;r0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();var o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}var l;return r===Ot.PACKED_2X2_FLOAT32?l=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):r===Ot.PACKED_2X2_FLOAT16?l=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):r===Ot.UNPACKED_FLOAT32?l=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):r===Ot.UNPACKED_FLOAT16?l=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):r===Ot.PACKED_4X1_UNSIGNED_BYTE&&(l=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(l),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),l},n.prototype.releaseTexture=function(t,e,i,r){if(this.freeTextures==null)return;var a=dL(i,r),s=pL(e,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);var o=hL(e,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),l=x.env().get("WEBGL_DELETE_TEXTURE_THRESHOLD");l!==-1&&this._numBytesAllocated>l?(this.gpgpu.deleteMatrixTexture(t),this._numBytesAllocated-=o):(this.freeTextures[s].push(t),this.numFreeTextures++,this._numBytesFree+=o),this.numUsedTextures--;var u=this.usedTextures[s],c=u.indexOf(t);if(c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");u.splice(c,1),this.log()},n.prototype.log=function(){if(!this.logEnabled)return;var t=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+t+")");var e=this._numBytesFree/this._numBytesAllocated;console.log("Bytes allocated: "+this._numBytesAllocated),console.log("Bytes unused: "+this._numBytesFree+" ("+Math.round(100*e)+"%)")},Object.defineProperty(n.prototype,"numBytesAllocated",{get:function(){return this._numBytesAllocated},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"numBytesFree",{get:function(){return this._numBytesFree},enumerable:!0,configurable:!0}),n.prototype.getNumUsedTextures=function(){return this.numUsedTextures},n.prototype.getNumFreeTextures=function(){return this.numFreeTextures},n.prototype.dispose=function(){var t=this;if(this.freeTextures==null)return;for(var e in this.freeTextures)this.freeTextures[e].forEach(function(i){t.gpgpu.deleteMatrixTexture(i)});for(var e in this.usedTextures)this.usedTextures[e].forEach(function(r){t.gpgpu.deleteMatrixTexture(r)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0},n}();function t6(n,t){var e=n;if(t===e.R32F)return 4;if(t===e.R16F)return 2;if(t===e.RGBA32F)return 16;if(t===n.RGBA)return 16;if(t===e.RGBA16F)return 8;throw new Error("Unknown internal format "+t)}function hL(n,t,e,i,r){var a=n6(t,i),s;if(r){var o=fa(n[0],n[1]),l=o[0],u=o[1];s=l*u}else{var c=ys(n[0],n[1]),h=c[0],d=c[1];s=h*d}var p=t6(e,a);return s*p}function n6(n,t){switch(n){case Ot.PACKED_2X2_FLOAT32:return wp(t);case Ot.PACKED_2X2_FLOAT16:return Sp(t);case Ot.UNPACKED_FLOAT32:return vp(t);case Ot.UNPACKED_FLOAT16:return yp(t);case Ot.PACKED_4X1_UNSIGNED_BYTE:return bp(t);default:throw new Error("Unknown physical texture type "+n)}}function i6(n){return x.env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?n?Ot.PACKED_2X2_FLOAT32:Ot.UNPACKED_FLOAT32:n?Ot.PACKED_2X2_FLOAT16:Ot.UNPACKED_FLOAT16}function dL(n,t){if(n===sn.UPLOAD)return Ot.PACKED_2X2_FLOAT32;if(n===sn.RENDER||n==null)return i6(t);if(n===sn.DOWNLOAD||n===sn.PIXELS)return Ot.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+n)}function pL(n,t,e){return n[0]+"_"+n[1]+"_"+t+"_"+e}var a6=function(){function n(t,e){this.variableNames=["A"];for(var i=new Array(t.length),r=0;r0?[4,Promise.all(s)]:[3,2];case 1:return u=c.sent(),l.kernelMs=x.util.sum(u),l.getExtraProfileInfo=function(){return u.map(function(h,d){return{name:o[d],ms:h}}).map(function(h){return h.name+": "+h.ms}).join(", ")},[3,3];case 2:l.kernelMs={error:"WebGL query timers are not supported in this environment."},c.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,l]}})})},t.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}},t.prototype.startTimer=function(){return x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:x.util.now(),endMs:null}},t.prototype.endTimer=function(e){return x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=x.util.now(),e)},t.prototype.getQueryTime=function(e){return Qo(this,void 0,void 0,function(){var i;return el(this,function(r){return x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:(i=e,[2,i.endMs-i.startMs])})})},t.prototype.disposeData=function(e){if(this.pendingDisposal.has(e))return;if(this.pendingRead.has(e)){this.pendingDisposal.add(e),this.pendingDeletes++;return}if(!this.texData.has(e))return;this.releaseGPUData(e);var i=this.texData.get(e).complexTensors;i!=null&&(i.real.dispose(),i.imag.dispose()),this.texData.delete(e)},t.prototype.releaseGPUData=function(e){var i=this.texData.get(e),r=i.texture,a=i.dtype,s=i.texShape,o=i.usage,l=i.isPacked,u=i.slice,c=u&&u.origDataId||e,h=this.dataRefCount.get(c);h>1?this.dataRefCount.set(c,h-1):(this.dataRefCount.delete(c),r!=null&&(this.numBytesInGPU-=this.computeBytes(s,a),this.textureManager.releaseTexture(r,s,o,l)));var d=this.texData.get(e);d.texture=null,d.texShape=null,d.isPacked=!1,d.slice=null},t.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},t.prototype.getDataInfo=function(e){return this.texData.get(e)},t.prototype.getCPUBackend=function(){return x.env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=x.engine().findBackend("cpu")),this.cpuBackend):null},t.prototype.shouldExecuteOnCPU=function(e,i){var r=this;i===void 0&&(i=V6);var a=this.getCPUBackend();return!this.warnedAboutCPUBackend&&a==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),a!=null&&e.every(function(s){return r.texData.get(s.dataId).texture==null&&x.util.sizeFromShape(s.shape)x.env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var s=Math.floor(e.length/2),o=this.concat(e.slice(0,s),i),l=this.concat(e.slice(s),i);return this.concat([o,l],i)}if(x.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].rank>1){var u=new Q5(e.map(function(f){return f.shape}),i);return this.compileAndRun(u,e)}var c=x.backend_util.computeOutShape(e.map(function(f){return f.shape}),i),h=e.map(function(f){return f.as2D(-1,x.util.sizeFromShape(f.shape.slice(i)))}),d=new Z5(h.map(function(f){return f.shape})),p=this.compileAndRun(d,h);return p.reshape(c)},t.prototype.neg=function(e){var i=this,r=this.tryRunOnCpuOrThrow([e],function(){return i.cpuBackend.neg(e)});if(r)return r;if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,yL,e.dtype);var a=new Re(e.shape,yL);return this.compileAndRun(a,[e])},t.prototype.batchMatMul=function(e,i,r,a){var s=r?e.shape[2]:e.shape[1],o=a?i.shape[1]:i.shape[2],l=r?e.shape[1]:e.shape[2],u=e.shape,c=u[0];if((s===1||o===1)&&l>xL){r&&(e=x.transpose(e,[0,2,1])),a&&(i=x.transpose(i,[0,2,1]));var h=o===1?e:e.as3D(c,l,1),d=o===1?2:1,p=o===1?i.as3D(c,1,l):i;return this.multiply(h,p).sum(d,!0)}var f=x.upcastType(e.dtype,i.dtype),m=new Sp(e.shape,[c,s,o],r,a);return this.compileAndRun(m,[e,i],f)},t.prototype.fusedBatchMatMul=function(e){var i=e.a,r=e.b,a=e.transposeA,s=e.transposeB,o=e.bias,l=e.activation,u=e.preluActivationWeights,c=a?i.shape[2]:i.shape[1],h=s?r.shape[1]:r.shape[2],d=i.shape,p=d[0],f=x.upcastType(i.dtype,r.dtype),m=o!=null,g=u!=null,v=l?hl(l,!0):null,b=new Sp(i.shape,[p,c,h],a,s,m,v,g),w=[i,r];return o&&w.push(o),u&&w.push(u),this.compileAndRun(b,w,f)},t.prototype.multiply=function(e,i){if(e.dtype==="complex64"){var r=this.texData.get(e.dataId),a=this.texData.get(i.dataId),s=new ES(OS.REAL,e.shape,i.shape),o=new ES(OS.IMAG,e.shape,i.shape),l=[this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag),this.makeComplexComponentTensorInfo(i,a.complexTensors.real),this.makeComplexComponentTensorInfo(i,a.complexTensors.imag)],u=this.compileAndRun(s,l),c=this.compileAndRun(o,l),h=this.complex(u,c);return u.dispose(),c.dispose(),h}var d=x.upcastType(e.dtype,i.dtype);if(this.shouldExecuteOnCPU([e,i])){var r=this.texData.get(e.dataId),a=this.texData.get(i.dataId),p=xM(e.shape,i.shape,r.values,a.values,d),f=p[0],m=p[1];return this.makeOutput(m,d,f)}if(x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,i,kS,e.dtype);var g=new St(kS,e.shape,i.shape);return this.compileAndRun(g,[e,i],e.dtype)},t.prototype.localResponseNormalization4D=function(e,i,r,a,s){var o=x.env().getBool("WEBGL_PACK_NORMALIZATION")?new C9(e.shape,i,r,a,s):new N9(e.shape,i,r,a,s);return this.compileAndRun(o,[e])},t.prototype.LRNGrad=function(e,i,r,a,s,o,l){var u=new x9(i.shape,a,s,o,l);return this.compileAndRun(u,[i,r,e])},t.prototype.tile=function(e,i){if(e.dtype==="string"){var r=this.readSync(e.dataId),a=r.map(function(l){return x.util.decodeString(l)}),s=x.buffer(e.shape,e.dtype,a);return B6(s,i)}var o=new a6(e.shape,i);return this.compileAndRun(o,[e])},t.prototype.pad=function(e,i,r){var a=x.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new P9(e.shape,i,r):new z9(e.shape,i,r);return this.compileAndRun(a,[e])},t.prototype.gather=function(e,i,r){var a=this,s=this.tryRunOnCpuOrThrow([e,i],function(){return a.cpuBackend.gather(e,i,r)});if(s)return s;var o=new y9(e.shape,i.size,r);return this.compileAndRun(o,[e,i])},t.prototype.batchToSpaceND=function(e,i,r){x.util.assert(e.rank<=4,function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"});var a=i.reduce(function(h,d){return h*d}),s=x.backend_util.getReshaped(e.shape,i,a),o=x.backend_util.getPermuted(s.length,i.length),l=x.backend_util.getReshapedPermuted(e.shape,i,a),u=x.backend_util.getSliceBeginCoords(r,i.length),c=x.backend_util.getSliceSize(l,r,i.length);return x.transpose(e.reshape(s),o).reshape(l).slice(u,c)},t.prototype.spaceToBatchND=function(e,i,r){x.util.assert(e.rank<=4,function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"});var a=i.reduce(function(p,f){return p*f}),s=[[0,0]];s.push.apply(s,r);for(var o=1+i.length;ox.env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){var i=Math.floor(e.length/2),r=this.addN(e.slice(0,i)),a=this.addN(e.slice(i));return this.addN([r,a])}var s=e.map(function(c){return c.dtype}).reduce(function(c,h){return x.upcastType(c,h)}),o=e.map(function(c){return c.shape}),l=x.env().getBool("WEBGL_PACK"),u=l?new kM(e[0].shape,o):new DM(e[0].shape,o);return this.compileAndRun(u,e,s)},t.prototype.subtract=function(e,i){if(e.dtype==="complex64"&&i.dtype==="complex64")return this.complexSeparableBinaryOp(e,i,mp);var r=x.upcastType(e.dtype,i.dtype);if(this.shouldExecuteOnCPU([e,i])){var a=this.texData.get(e.dataId),s=this.texData.get(i.dataId),o=OM(e.shape,i.shape,a.values,s.values,r),l=o[0],u=o[1];return this.makeOutput(u,r,l)}if(x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,i,mp,e.dtype);var c=new St(mp,e.shape,i.shape);return this.compileAndRun(c,[e,i],r)},t.prototype.pow=function(e,i){var r=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),a=r?new Ui(U5,e.shape,i.shape):new St(L5,e.shape,i.shape),s=x.upcastType(e.dtype,i.dtype);return this.compileAndRun(a,[e,i],s)},t.prototype.ceil=function(e){if(this.shouldExecuteOnCPU([e])){var i=SM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,bL,e.dtype);var r=new Re(e.shape,bL);return this.compileAndRun(r,[e])},t.prototype.floor=function(e){if(this.shouldExecuteOnCPU([e])){var i=AM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,wL,e.dtype);var r=new Re(e.shape,wL);return this.compileAndRun(r,[e])},t.prototype.sign=function(e){var i=new Re(e.shape,u6);return this.compileAndRun(i,[e])},t.prototype.isNaN=function(e){var i=new Re(e.shape,c6);return this.compileAndRun(i,[e],"bool")},t.prototype.isInf=function(e){var i=new Re(e.shape,h6);return this.compileAndRun(i,[e],"bool")},t.prototype.isFinite=function(e){var i=new Re(e.shape,d6);return this.compileAndRun(i,[e],"bool")},t.prototype.round=function(e){var i=new Re(e.shape,p6);return this.compileAndRun(i,[e])},t.prototype.exp=function(e){if(this.shouldExecuteOnCPU([e])){var i=LM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,SL,e.dtype);var r=new Re(e.shape,SL);return this.compileAndRun(r,[e])},t.prototype.expm1=function(e){if(this.shouldExecuteOnCPU([e])){var i=IM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,LL,e.dtype);var r=new Re(e.shape,LL);return this.compileAndRun(r,[e])},t.prototype.softmax=function(e,i){var r=x.util.parseAxisParam([i],e.shape),a=x.max(e,r),s=x.backend_util.expandShapeToKeepDim(a.shape,r),o=this.subtract(e,a.reshape(s)),l=this.exp(o),u=this.sum(l,r).reshape(s);return x.div(l,u)},t.prototype.log=function(e){if(this.shouldExecuteOnCPU([e])){var i=TM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,F6,e.dtype);var r=new Re(e.shape,f6);return this.compileAndRun(r,[e])},t.prototype.log1p=function(e){var i=new Re(e.shape,m6);return this.compileAndRun(i,[e])},t.prototype.sqrt=function(e){var i=new Re(e.shape,g6);return this.compileAndRun(i,[e])},t.prototype.rsqrt=function(e){if(this.shouldExecuteOnCPU([e])){var i=CM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}var r=new Re(e.shape,v6);return this.compileAndRun(r,[e])},t.prototype.reciprocal=function(e){var i=new Re(e.shape,O6);return this.compileAndRun(i,[e])},t.prototype.relu=function(e){var i;return x.env().getBool("WEBGL_PACK")?i=new Ts(e.shape,IL):i=new Re(e.shape,mL),this.compileAndRun(i,[e])},t.prototype.relu6=function(e){var i;return x.env().getBool("WEBGL_PACK")?i=new Ts(e.shape,AL):i=new Re(e.shape,gL),this.compileAndRun(i,[e])},t.prototype.prelu=function(e,i){var r=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ui(WS,e.shape,i.shape):new St(FS,e.shape,i.shape);return this.compileAndRun(r,[e,i])},t.prototype.elu=function(e){if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,TL,e.dtype);var i=new Re(e.shape,vL);return this.compileAndRun(i,[e])},t.prototype.eluDer=function(e,i){var r=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ui(B5,e.shape,i.shape):new St(F5,e.shape,i.shape);return this.compileAndRun(r,[e,i])},t.prototype.selu=function(e){var i=new Re(e.shape,o6);return this.compileAndRun(i,[e])},t.prototype.int=function(e){var i=new Re(e.shape,D6);return this.compileAndRun(i,[e],"int32")},t.prototype.clip=function(e,i,r){var a;x.env().getBool("WEBGL_PACK_CLIP")?a=new X5(e.shape):a=new $5(e.shape);var s=a.getCustomSetupFunc(i,r);return this.compileAndRun(a,[e],null,s)},t.prototype.abs=function(e){if(this.shouldExecuteOnCPU([e])&&e.dtype!=="complex64"){var i=bM(this.texData.get(e.dataId).values);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,fL,e.dtype);var r=new Re(e.shape,fL);return this.compileAndRun(r,[e])},t.prototype.complexAbs=function(e){var i=this.texData.get(e.dataId),r=new J5(e.shape),a=[this.makeComplexComponentTensorInfo(e,i.complexTensors.real),this.makeComplexComponentTensorInfo(e,i.complexTensors.imag)];return this.compileAndRun(r,a)},t.prototype.sigmoid=function(e){var i=new Re(e.shape,y6);return this.compileAndRun(i,[e])},t.prototype.softplus=function(e){var i=new Re(e.shape,b6);return this.compileAndRun(i,[e])},t.prototype.asin=function(e){var i=new Re(e.shape,w6);return this.compileAndRun(i,[e])},t.prototype.acos=function(e){var i=new Re(e.shape,S6);return this.compileAndRun(i,[e])},t.prototype.atan=function(e){var i=new Re(e.shape,L6);return this.compileAndRun(i,[e])},t.prototype.sinh=function(e){var i=new Re(e.shape,I6);return this.compileAndRun(i,[e])},t.prototype.cosh=function(e){var i=new Re(e.shape,A6);return this.compileAndRun(i,[e])},t.prototype.tanh=function(e){var i=new Re(e.shape,T6);return this.compileAndRun(i,[e])},t.prototype.asinh=function(e){var i=new Re(e.shape,N6);return this.compileAndRun(i,[e])},t.prototype.acosh=function(e){var i=new Re(e.shape,x6);return this.compileAndRun(i,[e])},t.prototype.atanh=function(e){var i=new Re(e.shape,C6);return this.compileAndRun(i,[e])},t.prototype.erf=function(e){var i=new Re(e.shape,R6);return this.compileAndRun(i,[e])},t.prototype.step=function(e,i){var r=new Re(e.shape,l6(i));return this.compileAndRun(r,[e])},t.prototype.conv2dByMatMul=function(e,i,r,a,s,o){var l=e.shape,u=this.texData.get(e.dataId),c=r.inChannels,h=l[0]*l[1]*l[2],d=r.outChannels,p=r.dataFormat==="channelsLast",f=!1,m=!1,g=(h===1||d===1)&&c>xL,v=l[2]%2!==0&&!!u.isPacked;if(g||!x.env().getBool("WEBGL_LAZILY_UNPACK")||!x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!v){var b=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=x.reshape(e,[1,b,r.inChannels]),S=x.reshape(i,[1,r.inChannels,r.outChannels]),L=this.fusedBatchMatMul({a:w,b:S,transposeA:f,transposeB:m,bias:a,activation:s,preluActivationWeights:o});return x.reshape(L,r.outShape)}var N=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),C={dataId:e.dataId,shape:[1,N,r.inChannels],dtype:e.dtype},R=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,x.util.assert(Ls(u.shape,C.shape),function(){return"packed reshape "+u.shape+" to "+C.shape+" isn't free"});var D=x.reshape(i,[1,r.inChannels,r.outChannels]),k=this.fusedBatchMatMul({a:C,b:D,transposeA:f,transposeB:m,bias:a,activation:s,preluActivationWeights:o}),W=this.texData.get(k.dataId);return x.util.assert(W.isPacked,function(){return"batchMatMul result is expected to be packed"}),u.shape=R,W.shape=r.outShape,x.engine().makeTensorFromDataId(k.dataId,r.outShape,k.dtype)},t.prototype.conv2dWithIm2Row=function(e,i,r,a,s,o){var l=r.filterWidth,u=r.filterHeight,c=r.inChannels,h=r.outWidth,d=r.outHeight,p=r.dataFormat,f=p==="channelsLast",m=l*u*c,g=d*h,v=[m,g],b=!0,w=!1,S=e.squeeze([0]),L=i.reshape([1,m,-1]),N=new T9(v,S.shape,r),C=this.compileAndRun(N,[S]).reshape([1,v[0],v[1]]),R=a!=null,D=o!=null,k=s?hl(s,!0):null,W=new Sp(C.shape,[1,g,r.outChannels],b,w,R,k,D),F=[C,L];a&&F.push(a),D&&F.push(o);var P=this.compileAndRun(W,F);return f?P.reshape([1,d,h,r.outChannels]):P.reshape([1,r.outChannels,d,h])},t.prototype.fusedConv2d=function(e){var i=e.input,r=e.filter,a=e.convInfo,s=e.bias,o=e.activation,l=e.preluActivationWeights;if(a.filterHeight===1&&a.filterWidth===1&&a.dilationHeight===1&&a.dilationWidth===1&&a.strideHeight===1&&a.strideWidth===1&&(a.padInfo.type==="SAME"||a.padInfo.type==="VALID"))return this.conv2dByMatMul(i,r,a,s,o,l);if(x.env().getBool("WEBGL_CONV_IM2COL")&&i.shape[0]===1)return this.conv2dWithIm2Row(i,r,a,s,o,l);var u=s!=null,c=l!=null,h=o?hl(o,!1):null,d=new US(a,u,h,c),p=[i,r];return s&&p.push(s),l&&p.push(l),this.compileAndRun(d,p)},t.prototype.conv2d=function(e,i,r){if(r.filterHeight===1&&r.filterWidth===1&&r.dilationHeight===1&&r.dilationWidth===1&&r.strideHeight===1&&r.strideWidth===1&&(r.padInfo.type==="SAME"||r.padInfo.type==="VALID"))return this.conv2dByMatMul(e,i,r);if(x.env().getBool("WEBGL_CONV_IM2COL")&&e.shape[0]===1)return this.conv2dWithIm2Row(e,i,r);var a=new US(r);return this.compileAndRun(a,[e,i])},t.prototype.conv2dDerInput=function(e,i,r){var a=new t9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv2dDerFilter=function(e,i,r){var a=new e9(r);return this.compileAndRun(a,[e,i])},t.prototype.fusedDepthwiseConv2D=function(e){var i=e.input,r=e.filter,a=e.convInfo,s=e.bias,o=e.activation,l=e.preluActivationWeights,u=x.env().getBool("WEBGL_PACK_DEPTHWISECONV")&&a.strideWidth<=2&&a.outChannels/a.inChannels===1,c=o?hl(o,u):null,h=[i,r],d=s!=null,p=l!=null;d&&h.push(s),p&&h.push(l);var f;return u?(f=new zS(a,d,c,p),this.compileAndRun(f,h)):(f=new BS(a,d,c,p),this.compileAndRun(f,h))},t.prototype.depthwiseConv2D=function(e,i,r){var a;return x.env().getBool("WEBGL_PACK_DEPTHWISECONV")&&r.strideWidth<=2&&r.outChannels/r.inChannels===1?(a=new zS(r),this.compileAndRun(a,[e,i])):(a=new BS(r),this.compileAndRun(a,[e,i]))},t.prototype.depthwiseConv2DDerInput=function(e,i,r){var a=new a9(r);return this.compileAndRun(a,[e,i])},t.prototype.depthwiseConv2DDerFilter=function(e,i,r){var a=new r9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv3d=function(e,i,r){var a=new s9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv3dDerInput=function(e,i,r){var a=new i9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv3dDerFilter=function(e,i,r){var a=new n9(r);return this.compileAndRun(a,[e,i])},t.prototype.cast=function(e,i){return x.backend_util.castTensor(e,i,this)},t.prototype.unstack=function(e,i){for(var r=e.shape[i],a=new Array(e.rank-1),s=0,o=0;o1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+i});var a=e.shape[0],s=r==="NHWC"?e.shape[1]:e.shape[2],o=r==="NHWC"?e.shape[2]:e.shape[3],l=r==="NHWC"?e.shape[3]:e.shape[1],u=s*i,c=o*i,h=l/(i*i),d=r==="NHWC"?[a,u,c,h]:[a,h,u,c],p=new c9(d,i,r);return this.compileAndRun(p,[e])},t.prototype.split=function(e,i,r){return U6(e,i,r)},t.prototype.scatterND=function(e,i,r){var a=x.backend_util.calculateShapes(i,e,r),s=a.sliceRank,o=a.numUpdates,l=a.sliceSize,u=a.strides,c=a.outputSize,h=[c/l,l],d=e.reshape([o,s]),p=i.reshape([o,l]);if(c===0)return x.backend_util.reshapeTensor(x.tensor([]),r);var f=x.scalar(0),m=new cL(o,s,d.rank,p.rank,u,h),g=this.compileAndRun(m,[p,d,f]);return g.reshape(r)},t.prototype.sparseToDense=function(e,i,r,a){var s=x.backend_util.calculateShapes(i,e,r),o=s.sliceRank,l=s.numUpdates,u=s.strides,c=s.outputSize,h=!1,d=new cL(l,o,e.rank,i.rank,u,[c,1],h),p=this.compileAndRun(d,[i,e,a]);return p.reshape(r)},t.prototype.fft=function(e){var i=!1;return this.fftImpl(e,i)},t.prototype.ifft=function(e){var i=!0;return this.fftImpl(e,i)},t.prototype.fftImpl=function(e,i){var r=this.texData.get(e.dataId),a=new VS(HS.REAL,e.shape,i),s=new VS(HS.IMAG,e.shape,i),o=[this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag)],l=this.compileAndRun(a,o),u=this.compileAndRun(s,o),c=this.complex(l,u).as2D(e.shape[0],e.shape[1]);return l.dispose(),u.dispose(),c},t.prototype.gatherND=function(e,i){var r=i.shape,a=r[r.length-1],s=x.backend_util.prepareAndValidate(e,i),o=s[0],l=s[1],u=s[2],c=s[3],h=i.reshape([l,a]),d=e.reshape([e.size/u,u]),p=new b9(a,c,[l,u]),f=this.compileAndRun(p,[d,h]);return f.reshape(o)},t.prototype.fill=function(e,i,r){if(r=r||x.util.inferDtype(i),r==="string"){var a=x.util.getArrayFromDType(r,x.util.sizeFromShape(e));return a.fill(i),x.engine().makeTensor(a,e,r,this)}else{var s=new g9(e,i),o=s.getCustomSetupFunc(i);return this.compileAndRun(s,[],r,o)}},t.prototype.onesLike=function(e){if(e.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(e.shape,1,e.dtype)},t.prototype.zerosLike=function(e){return this.fill(e.shape,e.dtype==="string"?"":0,e.dtype)},t.prototype.linspace=function(e,i,r){return x.backend_util.linspaceImpl(e,i,r)},t.prototype.makeTensorInfo=function(e,i,r){var a=this.write(r,e,i);return this.texData.get(a).usage=null,{dataId:a,shape:e,dtype:i}},t.prototype.makeOutput=function(e,i,r){var a=this.makeTensorInfo(e,i,r).dataId;return x.engine().makeTensorFromDataId(a,e,i,this)},t.prototype.unpackTensor=function(e){var i=new W6(e.shape);return this.runWebGLProgram(i,[e],e.dtype)},t.prototype.packTensor=function(e){var i=new U9(e.shape),r=!0;return this.runWebGLProgram(i,[e],e.dtype,null,r)},t.prototype.packedReshape=function(e,i){var r=[Lr(e.shape)].concat(Ir(e.shape)),a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[Lr(i)].concat(Ir(i)),o=new uL(s,r),l=!0,u=this.runWebGLProgram(o,[a],e.dtype,null,l);return{dataId:u.dataId,shape:i,dtype:u.dtype}},t.prototype.decode=function(e){var i=this.texData.get(e),r=i.isPacked,a=i.shape,s=i.dtype,o=il(a),l;r?l=new u9(o):l=new l9(o);var u=!0,c=this.runWebGLProgram(l,[{shape:o,dtype:s,dataId:e}],s,null,u);return{dtype:s,shape:a,dataId:c.dataId}},t.prototype.runWebGLProgram=function(e,i,r,a,s){var o=this;s===void 0&&(s=!1);var l=this.makeTensorInfo(e.outputShape,r),u=this.texData.get(l.dataId);if(e.packedOutput&&(u.isPacked=!0),e.outPackingScheme===vs.DENSE){var c=bs(e.outputShape);u.texShape=c.map(function(w){return w*2})}if(e.outTexUsage!=null&&(u.usage=e.outTexUsage),x.util.sizeFromShape(l.shape)===0)return u.values=x.util.getTypedArrayFromDType(l.dtype,0),l;var h=[],d=i.map(function(w){if(w.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var S=o.texData.get(w.dataId);if(S.texture==null){if(!e.packedInputs&&x.util.sizeFromShape(w.shape)<=x.env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:w.shape,texData:null,isUniform:!0,uniformValues:S.values};e.packedInputs&&(S.isPacked=!0,S.shape=w.shape)}else if(!!S.isPacked!==!!e.packedInputs)w=S.isPacked?o.unpackTensor(w):o.packTensor(w),h.push(w),S=o.texData.get(w.dataId);else if(S.isPacked&&!Ls(S.shape,w.shape)){var L=w,N=w.shape;w.shape=S.shape,w=o.packedReshape(w,N),h.push(w),S=o.texData.get(w.dataId),L.shape=N}return o.uploadToGPU(w.dataId),{shape:w.shape,texData:S,isUniform:!1}});this.uploadToGPU(l.dataId);var p={shape:l.shape,texData:u,isUniform:!1},f=A9(e,d,p),m=this.getAndSaveBinary(f,function(){return L9(o.gpgpu,e,d,p)}),g=this.activeTimers!=null,v;if(g&&(v=this.startTimer()),I9(this.gpgpu,m,d,p,a),h.forEach(function(w){return o.disposeIntermediateTensorInfo(w)}),g&&(v=this.endTimer(v),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(v)})),!x.env().getBool("WEBGL_LAZILY_UNPACK")&&u.isPacked&&s===!1){var b=this.unpackTensor(l);return this.disposeIntermediateTensorInfo(l),b}return l},t.prototype.compileAndRun=function(e,i,r,a,s){s===void 0&&(s=!1),r=r||i[0].dtype;var o=this.runWebGLProgram(e,i,r,a,s);return x.engine().makeTensorFromDataId(o.dataId,o.shape,o.dtype)},t.prototype.getAndSaveBinary=function(e,i){return e in this.binaryCache||(this.binaryCache[e]=i()),this.binaryCache[e]},t.prototype.getTextureManager=function(){return this.textureManager},t.prototype.dispose=function(){var e=this;if(this.disposed)return;if(!x.env().getBool("IS_TEST")){var i=Object.keys(this.binaryCache);i.forEach(function(r){e.gpgpu.deleteProgram(e.binaryCache[r].webGLProgram),delete e.binaryCache[r]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0},t.prototype.floatPrecision=function(){var e=this;return this.floatPrecisionValue==null&&(this.floatPrecisionValue=x.tidy(function(){if(!x.env().get("WEBGL_RENDER_FLOAT32_ENABLED")){var i=x.env().getBool("DEBUG");x.env().set("DEBUG",!1);var r=e.abs(x.scalar(1e-8)).dataSync()[0];if(x.env().set("DEBUG",i),r>0)return 32}return 16})),this.floatPrecisionValue},t.prototype.epsilon=function(){return this.floatPrecision()===32?_6:M6},t.prototype.uploadToGPU=function(e){var i,r=this.texData.get(e),a=r.shape,s=r.dtype,o=r.values,l=r.texture,u=r.usage,c=r.isPacked;if(l!=null)return;var h=this.activeTimers!=null,d;h&&(d=x.util.now());var p=r.texShape;if(p==null&&(p=vS(a,c),r.texShape=p),o!=null){var f=il(a),m=void 0,g=p[1],v=p[0],b=o instanceof Uint8Array;c?(i=fa(p[0],p[1]),g=i[0],v=i[1],m=new m9(f,[v,g],b)):m=new f9(f,[v,g],b);var w=this.makeTensorInfo([v,g],s);b?this.texData.get(w.dataId).usage=on.PIXELS:this.texData.get(w.dataId).usage=on.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(w.dataId),g,v,o);var S=!0,L=this.runWebGLProgram(m,[w],s,null,S),N=this.texData.get(L.dataId);r.texture=N.texture,r.texShape=N.texShape,r.isPacked=N.isPacked,r.usage=N.usage,this.disposeIntermediateTensorInfo(w),this.texData.delete(L.dataId),r.values=null,h&&(this.uploadWaitMs+=x.util.now()-d)}else{var C=this.acquireTexture(p,u,s,c);r.texture=C}},t.prototype.convertAndCacheOnCPU=function(e,i){var r=this.texData.get(e),a=r.dtype;return this.releaseGPUData(e),i!=null&&(r.values=Y6(i,a)),r.values},t.prototype.acquireTexture=function(e,i,r,a){if(this.numBytesInGPU+=this.computeBytes(e,r),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){var s=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: "+s+" MB, most likely due to a memory leak")}return this.textureManager.acquireTexture(e,i,a)},t.prototype.computeBytes=function(e,i){return e[0]*e[1]*x.util.bytesPerElement(i)},t.prototype.tryRunOnCpuOrThrow=function(e,i){if(this.shouldExecuteOnCPU(e))try{return i()}catch(r){if(x.env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null},t}(x.KernelBackend);function Y6(n,t){if(t==="float32"||t==="complex64")return n;if(t==="int32"||t==="bool"){for(var e=t==="int32"?new Int32Array(n.length):new Uint8Array(n.length),i=0;i0?[4,Promise.all(s)]:[3,2];case 1:return u=c.sent(),l.kernelMs=x.util.sum(u),l.getExtraProfileInfo=function(){return u.map(function(h,d){return{name:o[d],ms:h}}).map(function(h){return h.name+": "+h.ms}).join(", ")},[3,3];case 2:l.kernelMs={error:"WebGL query timers are not supported in this environment."},c.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,l]}})})},t.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}},t.prototype.startTimer=function(){return x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:x.util.now(),endMs:null}},t.prototype.endTimer=function(e){return x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=x.util.now(),e)},t.prototype.getQueryTime=function(e){return Qo(this,void 0,void 0,function(){var i;return el(this,function(r){return x.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:(i=e,[2,i.endMs-i.startMs])})})},t.prototype.disposeData=function(e){if(this.pendingDisposal.has(e))return;if(this.pendingRead.has(e)){this.pendingDisposal.add(e),this.pendingDeletes++;return}if(!this.texData.has(e))return;this.releaseGPUData(e);var i=this.texData.get(e).complexTensors;i!=null&&(i.real.dispose(),i.imag.dispose()),this.texData.delete(e)},t.prototype.releaseGPUData=function(e){var i=this.texData.get(e),r=i.texture,a=i.dtype,s=i.texShape,o=i.usage,l=i.isPacked,u=i.slice,c=u&&u.origDataId||e,h=this.dataRefCount.get(c);h>1?this.dataRefCount.set(c,h-1):(this.dataRefCount.delete(c),r!=null&&(this.numBytesInGPU-=this.computeBytes(s,a),this.textureManager.releaseTexture(r,s,o,l)));var d=this.texData.get(e);d.texture=null,d.texShape=null,d.isPacked=!1,d.slice=null},t.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},t.prototype.getDataInfo=function(e){return this.texData.get(e)},t.prototype.getCPUBackend=function(){return x.env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=x.engine().findBackend("cpu")),this.cpuBackend):null},t.prototype.shouldExecuteOnCPU=function(e,i){var r=this;i===void 0&&(i=V6);var a=this.getCPUBackend();return!this.warnedAboutCPUBackend&&a==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),a!=null&&e.every(function(s){return r.texData.get(s.dataId).texture==null&&x.util.sizeFromShape(s.shape)x.env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var s=Math.floor(e.length/2),o=this.concat(e.slice(0,s),i),l=this.concat(e.slice(s),i);return this.concat([o,l],i)}if(x.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].rank>1){var u=new Q5(e.map(function(f){return f.shape}),i);return this.compileAndRun(u,e)}var c=x.backend_util.computeOutShape(e.map(function(f){return f.shape}),i),h=e.map(function(f){return f.as2D(-1,x.util.sizeFromShape(f.shape.slice(i)))}),d=new Z5(h.map(function(f){return f.shape})),p=this.compileAndRun(d,h);return p.reshape(c)},t.prototype.neg=function(e){var i=this,r=this.tryRunOnCpuOrThrow([e],function(){return i.cpuBackend.neg(e)});if(r)return r;if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,yL,e.dtype);var a=new Re(e.shape,yL);return this.compileAndRun(a,[e])},t.prototype.batchMatMul=function(e,i,r,a){var s=r?e.shape[2]:e.shape[1],o=a?i.shape[1]:i.shape[2],l=r?e.shape[1]:e.shape[2],u=e.shape,c=u[0];if((s===1||o===1)&&l>xL){r&&(e=x.transpose(e,[0,2,1])),a&&(i=x.transpose(i,[0,2,1]));var h=o===1?e:e.as3D(c,l,1),d=o===1?2:1,p=o===1?i.as3D(c,1,l):i;return this.multiply(h,p).sum(d,!0)}var f=x.upcastType(e.dtype,i.dtype),m=new Lp(e.shape,[c,s,o],r,a);return this.compileAndRun(m,[e,i],f)},t.prototype.fusedBatchMatMul=function(e){var i=e.a,r=e.b,a=e.transposeA,s=e.transposeB,o=e.bias,l=e.activation,u=e.preluActivationWeights,c=a?i.shape[2]:i.shape[1],h=s?r.shape[1]:r.shape[2],d=i.shape,p=d[0],f=x.upcastType(i.dtype,r.dtype),m=o!=null,g=u!=null,v=l?hl(l,!0):null,b=new Lp(i.shape,[p,c,h],a,s,m,v,g),w=[i,r];return o&&w.push(o),u&&w.push(u),this.compileAndRun(b,w,f)},t.prototype.multiply=function(e,i){if(e.dtype==="complex64"){var r=this.texData.get(e.dataId),a=this.texData.get(i.dataId),s=new ES(OS.REAL,e.shape,i.shape),o=new ES(OS.IMAG,e.shape,i.shape),l=[this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag),this.makeComplexComponentTensorInfo(i,a.complexTensors.real),this.makeComplexComponentTensorInfo(i,a.complexTensors.imag)],u=this.compileAndRun(s,l),c=this.compileAndRun(o,l),h=this.complex(u,c);return u.dispose(),c.dispose(),h}var d=x.upcastType(e.dtype,i.dtype);if(this.shouldExecuteOnCPU([e,i])){var r=this.texData.get(e.dataId),a=this.texData.get(i.dataId),p=xM(e.shape,i.shape,r.values,a.values,d),f=p[0],m=p[1];return this.makeOutput(m,d,f)}if(x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,i,kS,e.dtype);var g=new St(kS,e.shape,i.shape);return this.compileAndRun(g,[e,i],e.dtype)},t.prototype.localResponseNormalization4D=function(e,i,r,a,s){var o=x.env().getBool("WEBGL_PACK_NORMALIZATION")?new C9(e.shape,i,r,a,s):new N9(e.shape,i,r,a,s);return this.compileAndRun(o,[e])},t.prototype.LRNGrad=function(e,i,r,a,s,o,l){var u=new x9(i.shape,a,s,o,l);return this.compileAndRun(u,[i,r,e])},t.prototype.tile=function(e,i){if(e.dtype==="string"){var r=this.readSync(e.dataId),a=r.map(function(l){return x.util.decodeString(l)}),s=x.buffer(e.shape,e.dtype,a);return B6(s,i)}var o=new a6(e.shape,i);return this.compileAndRun(o,[e])},t.prototype.pad=function(e,i,r){var a=x.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new P9(e.shape,i,r):new z9(e.shape,i,r);return this.compileAndRun(a,[e])},t.prototype.gather=function(e,i,r){var a=this,s=this.tryRunOnCpuOrThrow([e,i],function(){return a.cpuBackend.gather(e,i,r)});if(s)return s;var o=new y9(e.shape,i.size,r);return this.compileAndRun(o,[e,i])},t.prototype.batchToSpaceND=function(e,i,r){x.util.assert(e.rank<=4,function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"});var a=i.reduce(function(h,d){return h*d}),s=x.backend_util.getReshaped(e.shape,i,a),o=x.backend_util.getPermuted(s.length,i.length),l=x.backend_util.getReshapedPermuted(e.shape,i,a),u=x.backend_util.getSliceBeginCoords(r,i.length),c=x.backend_util.getSliceSize(l,r,i.length);return x.transpose(e.reshape(s),o).reshape(l).slice(u,c)},t.prototype.spaceToBatchND=function(e,i,r){x.util.assert(e.rank<=4,function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"});var a=i.reduce(function(p,f){return p*f}),s=[[0,0]];s.push.apply(s,r);for(var o=1+i.length;ox.env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){var i=Math.floor(e.length/2),r=this.addN(e.slice(0,i)),a=this.addN(e.slice(i));return this.addN([r,a])}var s=e.map(function(c){return c.dtype}).reduce(function(c,h){return x.upcastType(c,h)}),o=e.map(function(c){return c.shape}),l=x.env().getBool("WEBGL_PACK"),u=l?new kM(e[0].shape,o):new DM(e[0].shape,o);return this.compileAndRun(u,e,s)},t.prototype.subtract=function(e,i){if(e.dtype==="complex64"&&i.dtype==="complex64")return this.complexSeparableBinaryOp(e,i,gp);var r=x.upcastType(e.dtype,i.dtype);if(this.shouldExecuteOnCPU([e,i])){var a=this.texData.get(e.dataId),s=this.texData.get(i.dataId),o=OM(e.shape,i.shape,a.values,s.values,r),l=o[0],u=o[1];return this.makeOutput(u,r,l)}if(x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,i,gp,e.dtype);var c=new St(gp,e.shape,i.shape);return this.compileAndRun(c,[e,i],r)},t.prototype.pow=function(e,i){var r=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),a=r?new Ui(U5,e.shape,i.shape):new St(L5,e.shape,i.shape),s=x.upcastType(e.dtype,i.dtype);return this.compileAndRun(a,[e,i],s)},t.prototype.ceil=function(e){if(this.shouldExecuteOnCPU([e])){var i=SM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,bL,e.dtype);var r=new Re(e.shape,bL);return this.compileAndRun(r,[e])},t.prototype.floor=function(e){if(this.shouldExecuteOnCPU([e])){var i=AM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,wL,e.dtype);var r=new Re(e.shape,wL);return this.compileAndRun(r,[e])},t.prototype.sign=function(e){var i=new Re(e.shape,u6);return this.compileAndRun(i,[e])},t.prototype.isNaN=function(e){var i=new Re(e.shape,c6);return this.compileAndRun(i,[e],"bool")},t.prototype.isInf=function(e){var i=new Re(e.shape,h6);return this.compileAndRun(i,[e],"bool")},t.prototype.isFinite=function(e){var i=new Re(e.shape,d6);return this.compileAndRun(i,[e],"bool")},t.prototype.round=function(e){var i=new Re(e.shape,p6);return this.compileAndRun(i,[e])},t.prototype.exp=function(e){if(this.shouldExecuteOnCPU([e])){var i=LM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,SL,e.dtype);var r=new Re(e.shape,SL);return this.compileAndRun(r,[e])},t.prototype.expm1=function(e){if(this.shouldExecuteOnCPU([e])){var i=IM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,LL,e.dtype);var r=new Re(e.shape,LL);return this.compileAndRun(r,[e])},t.prototype.softmax=function(e,i){var r=x.util.parseAxisParam([i],e.shape),a=x.max(e,r),s=x.backend_util.expandShapeToKeepDim(a.shape,r),o=this.subtract(e,a.reshape(s)),l=this.exp(o),u=this.sum(l,r).reshape(s);return x.div(l,u)},t.prototype.log=function(e){if(this.shouldExecuteOnCPU([e])){var i=TM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,F6,e.dtype);var r=new Re(e.shape,f6);return this.compileAndRun(r,[e])},t.prototype.log1p=function(e){var i=new Re(e.shape,m6);return this.compileAndRun(i,[e])},t.prototype.sqrt=function(e){var i=new Re(e.shape,g6);return this.compileAndRun(i,[e])},t.prototype.rsqrt=function(e){if(this.shouldExecuteOnCPU([e])){var i=CM(this.texData.get(e.dataId).values,e.dtype);return this.makeOutput(e.shape,e.dtype,i)}var r=new Re(e.shape,v6);return this.compileAndRun(r,[e])},t.prototype.reciprocal=function(e){var i=new Re(e.shape,O6);return this.compileAndRun(i,[e])},t.prototype.relu=function(e){var i;return x.env().getBool("WEBGL_PACK")?i=new Ts(e.shape,IL):i=new Re(e.shape,mL),this.compileAndRun(i,[e])},t.prototype.relu6=function(e){var i;return x.env().getBool("WEBGL_PACK")?i=new Ts(e.shape,AL):i=new Re(e.shape,gL),this.compileAndRun(i,[e])},t.prototype.prelu=function(e,i){var r=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ui(WS,e.shape,i.shape):new St(FS,e.shape,i.shape);return this.compileAndRun(r,[e,i])},t.prototype.elu=function(e){if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,TL,e.dtype);var i=new Re(e.shape,vL);return this.compileAndRun(i,[e])},t.prototype.eluDer=function(e,i){var r=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ui(B5,e.shape,i.shape):new St(F5,e.shape,i.shape);return this.compileAndRun(r,[e,i])},t.prototype.selu=function(e){var i=new Re(e.shape,o6);return this.compileAndRun(i,[e])},t.prototype.int=function(e){var i=new Re(e.shape,D6);return this.compileAndRun(i,[e],"int32")},t.prototype.clip=function(e,i,r){var a;x.env().getBool("WEBGL_PACK_CLIP")?a=new X5(e.shape):a=new $5(e.shape);var s=a.getCustomSetupFunc(i,r);return this.compileAndRun(a,[e],null,s)},t.prototype.abs=function(e){if(this.shouldExecuteOnCPU([e])&&e.dtype!=="complex64"){var i=bM(this.texData.get(e.dataId).values);return this.makeOutput(e.shape,e.dtype,i)}if(x.env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,fL,e.dtype);var r=new Re(e.shape,fL);return this.compileAndRun(r,[e])},t.prototype.complexAbs=function(e){var i=this.texData.get(e.dataId),r=new J5(e.shape),a=[this.makeComplexComponentTensorInfo(e,i.complexTensors.real),this.makeComplexComponentTensorInfo(e,i.complexTensors.imag)];return this.compileAndRun(r,a)},t.prototype.sigmoid=function(e){var i=new Re(e.shape,y6);return this.compileAndRun(i,[e])},t.prototype.softplus=function(e){var i=new Re(e.shape,b6);return this.compileAndRun(i,[e])},t.prototype.asin=function(e){var i=new Re(e.shape,w6);return this.compileAndRun(i,[e])},t.prototype.acos=function(e){var i=new Re(e.shape,S6);return this.compileAndRun(i,[e])},t.prototype.atan=function(e){var i=new Re(e.shape,L6);return this.compileAndRun(i,[e])},t.prototype.sinh=function(e){var i=new Re(e.shape,I6);return this.compileAndRun(i,[e])},t.prototype.cosh=function(e){var i=new Re(e.shape,A6);return this.compileAndRun(i,[e])},t.prototype.tanh=function(e){var i=new Re(e.shape,T6);return this.compileAndRun(i,[e])},t.prototype.asinh=function(e){var i=new Re(e.shape,N6);return this.compileAndRun(i,[e])},t.prototype.acosh=function(e){var i=new Re(e.shape,x6);return this.compileAndRun(i,[e])},t.prototype.atanh=function(e){var i=new Re(e.shape,C6);return this.compileAndRun(i,[e])},t.prototype.erf=function(e){var i=new Re(e.shape,R6);return this.compileAndRun(i,[e])},t.prototype.step=function(e,i){var r=new Re(e.shape,l6(i));return this.compileAndRun(r,[e])},t.prototype.conv2dByMatMul=function(e,i,r,a,s,o){var l=e.shape,u=this.texData.get(e.dataId),c=r.inChannels,h=l[0]*l[1]*l[2],d=r.outChannels,p=r.dataFormat==="channelsLast",f=!1,m=!1,g=(h===1||d===1)&&c>xL,v=l[2]%2!==0&&!!u.isPacked;if(g||!x.env().getBool("WEBGL_LAZILY_UNPACK")||!x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!v){var b=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=x.reshape(e,[1,b,r.inChannels]),S=x.reshape(i,[1,r.inChannels,r.outChannels]),L=this.fusedBatchMatMul({a:w,b:S,transposeA:f,transposeB:m,bias:a,activation:s,preluActivationWeights:o});return x.reshape(L,r.outShape)}var N=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),C={dataId:e.dataId,shape:[1,N,r.inChannels],dtype:e.dtype},R=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,x.util.assert(Ls(u.shape,C.shape),function(){return"packed reshape "+u.shape+" to "+C.shape+" isn't free"});var D=x.reshape(i,[1,r.inChannels,r.outChannels]),k=this.fusedBatchMatMul({a:C,b:D,transposeA:f,transposeB:m,bias:a,activation:s,preluActivationWeights:o}),W=this.texData.get(k.dataId);return x.util.assert(W.isPacked,function(){return"batchMatMul result is expected to be packed"}),u.shape=R,W.shape=r.outShape,x.engine().makeTensorFromDataId(k.dataId,r.outShape,k.dtype)},t.prototype.conv2dWithIm2Row=function(e,i,r,a,s,o){var l=r.filterWidth,u=r.filterHeight,c=r.inChannels,h=r.outWidth,d=r.outHeight,p=r.dataFormat,f=p==="channelsLast",m=l*u*c,g=d*h,v=[m,g],b=!0,w=!1,S=e.squeeze([0]),L=i.reshape([1,m,-1]),N=new T9(v,S.shape,r),C=this.compileAndRun(N,[S]).reshape([1,v[0],v[1]]),R=a!=null,D=o!=null,k=s?hl(s,!0):null,W=new Lp(C.shape,[1,g,r.outChannels],b,w,R,k,D),F=[C,L];a&&F.push(a),D&&F.push(o);var P=this.compileAndRun(W,F);return f?P.reshape([1,d,h,r.outChannels]):P.reshape([1,r.outChannels,d,h])},t.prototype.fusedConv2d=function(e){var i=e.input,r=e.filter,a=e.convInfo,s=e.bias,o=e.activation,l=e.preluActivationWeights;if(a.filterHeight===1&&a.filterWidth===1&&a.dilationHeight===1&&a.dilationWidth===1&&a.strideHeight===1&&a.strideWidth===1&&(a.padInfo.type==="SAME"||a.padInfo.type==="VALID"))return this.conv2dByMatMul(i,r,a,s,o,l);if(x.env().getBool("WEBGL_CONV_IM2COL")&&i.shape[0]===1)return this.conv2dWithIm2Row(i,r,a,s,o,l);var u=s!=null,c=l!=null,h=o?hl(o,!1):null,d=new US(a,u,h,c),p=[i,r];return s&&p.push(s),l&&p.push(l),this.compileAndRun(d,p)},t.prototype.conv2d=function(e,i,r){if(r.filterHeight===1&&r.filterWidth===1&&r.dilationHeight===1&&r.dilationWidth===1&&r.strideHeight===1&&r.strideWidth===1&&(r.padInfo.type==="SAME"||r.padInfo.type==="VALID"))return this.conv2dByMatMul(e,i,r);if(x.env().getBool("WEBGL_CONV_IM2COL")&&e.shape[0]===1)return this.conv2dWithIm2Row(e,i,r);var a=new US(r);return this.compileAndRun(a,[e,i])},t.prototype.conv2dDerInput=function(e,i,r){var a=new t9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv2dDerFilter=function(e,i,r){var a=new e9(r);return this.compileAndRun(a,[e,i])},t.prototype.fusedDepthwiseConv2D=function(e){var i=e.input,r=e.filter,a=e.convInfo,s=e.bias,o=e.activation,l=e.preluActivationWeights,u=x.env().getBool("WEBGL_PACK_DEPTHWISECONV")&&a.strideWidth<=2&&a.outChannels/a.inChannels===1,c=o?hl(o,u):null,h=[i,r],d=s!=null,p=l!=null;d&&h.push(s),p&&h.push(l);var f;return u?(f=new zS(a,d,c,p),this.compileAndRun(f,h)):(f=new BS(a,d,c,p),this.compileAndRun(f,h))},t.prototype.depthwiseConv2D=function(e,i,r){var a;return x.env().getBool("WEBGL_PACK_DEPTHWISECONV")&&r.strideWidth<=2&&r.outChannels/r.inChannels===1?(a=new zS(r),this.compileAndRun(a,[e,i])):(a=new BS(r),this.compileAndRun(a,[e,i]))},t.prototype.depthwiseConv2DDerInput=function(e,i,r){var a=new a9(r);return this.compileAndRun(a,[e,i])},t.prototype.depthwiseConv2DDerFilter=function(e,i,r){var a=new r9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv3d=function(e,i,r){var a=new s9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv3dDerInput=function(e,i,r){var a=new i9(r);return this.compileAndRun(a,[e,i])},t.prototype.conv3dDerFilter=function(e,i,r){var a=new n9(r);return this.compileAndRun(a,[e,i])},t.prototype.cast=function(e,i){return x.backend_util.castTensor(e,i,this)},t.prototype.unstack=function(e,i){for(var r=e.shape[i],a=new Array(e.rank-1),s=0,o=0;o1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+i});var a=e.shape[0],s=r==="NHWC"?e.shape[1]:e.shape[2],o=r==="NHWC"?e.shape[2]:e.shape[3],l=r==="NHWC"?e.shape[3]:e.shape[1],u=s*i,c=o*i,h=l/(i*i),d=r==="NHWC"?[a,u,c,h]:[a,h,u,c],p=new c9(d,i,r);return this.compileAndRun(p,[e])},t.prototype.split=function(e,i,r){return U6(e,i,r)},t.prototype.scatterND=function(e,i,r){var a=x.backend_util.calculateShapes(i,e,r),s=a.sliceRank,o=a.numUpdates,l=a.sliceSize,u=a.strides,c=a.outputSize,h=[c/l,l],d=e.reshape([o,s]),p=i.reshape([o,l]);if(c===0)return x.backend_util.reshapeTensor(x.tensor([]),r);var f=x.scalar(0),m=new cL(o,s,d.rank,p.rank,u,h),g=this.compileAndRun(m,[p,d,f]);return g.reshape(r)},t.prototype.sparseToDense=function(e,i,r,a){var s=x.backend_util.calculateShapes(i,e,r),o=s.sliceRank,l=s.numUpdates,u=s.strides,c=s.outputSize,h=!1,d=new cL(l,o,e.rank,i.rank,u,[c,1],h),p=this.compileAndRun(d,[i,e,a]);return p.reshape(r)},t.prototype.fft=function(e){var i=!1;return this.fftImpl(e,i)},t.prototype.ifft=function(e){var i=!0;return this.fftImpl(e,i)},t.prototype.fftImpl=function(e,i){var r=this.texData.get(e.dataId),a=new VS(HS.REAL,e.shape,i),s=new VS(HS.IMAG,e.shape,i),o=[this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag)],l=this.compileAndRun(a,o),u=this.compileAndRun(s,o),c=this.complex(l,u).as2D(e.shape[0],e.shape[1]);return l.dispose(),u.dispose(),c},t.prototype.gatherND=function(e,i){var r=i.shape,a=r[r.length-1],s=x.backend_util.prepareAndValidate(e,i),o=s[0],l=s[1],u=s[2],c=s[3],h=i.reshape([l,a]),d=e.reshape([e.size/u,u]),p=new b9(a,c,[l,u]),f=this.compileAndRun(p,[d,h]);return f.reshape(o)},t.prototype.fill=function(e,i,r){if(r=r||x.util.inferDtype(i),r==="string"){var a=x.util.getArrayFromDType(r,x.util.sizeFromShape(e));return a.fill(i),x.engine().makeTensor(a,e,r,this)}else{var s=new g9(e,i),o=s.getCustomSetupFunc(i);return this.compileAndRun(s,[],r,o)}},t.prototype.onesLike=function(e){if(e.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(e.shape,1,e.dtype)},t.prototype.zerosLike=function(e){return this.fill(e.shape,e.dtype==="string"?"":0,e.dtype)},t.prototype.linspace=function(e,i,r){return x.backend_util.linspaceImpl(e,i,r)},t.prototype.makeTensorInfo=function(e,i,r){var a=this.write(r,e,i);return this.texData.get(a).usage=null,{dataId:a,shape:e,dtype:i}},t.prototype.makeOutput=function(e,i,r){var a=this.makeTensorInfo(e,i,r).dataId;return x.engine().makeTensorFromDataId(a,e,i,this)},t.prototype.unpackTensor=function(e){var i=new W6(e.shape);return this.runWebGLProgram(i,[e],e.dtype)},t.prototype.packTensor=function(e){var i=new U9(e.shape),r=!0;return this.runWebGLProgram(i,[e],e.dtype,null,r)},t.prototype.packedReshape=function(e,i){var r=[Lr(e.shape)].concat(Ir(e.shape)),a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[Lr(i)].concat(Ir(i)),o=new uL(s,r),l=!0,u=this.runWebGLProgram(o,[a],e.dtype,null,l);return{dataId:u.dataId,shape:i,dtype:u.dtype}},t.prototype.decode=function(e){var i=this.texData.get(e),r=i.isPacked,a=i.shape,s=i.dtype,o=il(a),l;r?l=new u9(o):l=new l9(o);var u=!0,c=this.runWebGLProgram(l,[{shape:o,dtype:s,dataId:e}],s,null,u);return{dtype:s,shape:a,dataId:c.dataId}},t.prototype.runWebGLProgram=function(e,i,r,a,s){var o=this;s===void 0&&(s=!1);var l=this.makeTensorInfo(e.outputShape,r),u=this.texData.get(l.dataId);if(e.packedOutput&&(u.isPacked=!0),e.outPackingScheme===vs.DENSE){var c=bs(e.outputShape);u.texShape=c.map(function(w){return w*2})}if(e.outTexUsage!=null&&(u.usage=e.outTexUsage),x.util.sizeFromShape(l.shape)===0)return u.values=x.util.getTypedArrayFromDType(l.dtype,0),l;var h=[],d=i.map(function(w){if(w.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var S=o.texData.get(w.dataId);if(S.texture==null){if(!e.packedInputs&&x.util.sizeFromShape(w.shape)<=x.env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:w.shape,texData:null,isUniform:!0,uniformValues:S.values};e.packedInputs&&(S.isPacked=!0,S.shape=w.shape)}else if(!!S.isPacked!==!!e.packedInputs)w=S.isPacked?o.unpackTensor(w):o.packTensor(w),h.push(w),S=o.texData.get(w.dataId);else if(S.isPacked&&!Ls(S.shape,w.shape)){var L=w,N=w.shape;w.shape=S.shape,w=o.packedReshape(w,N),h.push(w),S=o.texData.get(w.dataId),L.shape=N}return o.uploadToGPU(w.dataId),{shape:w.shape,texData:S,isUniform:!1}});this.uploadToGPU(l.dataId);var p={shape:l.shape,texData:u,isUniform:!1},f=A9(e,d,p),m=this.getAndSaveBinary(f,function(){return L9(o.gpgpu,e,d,p)}),g=this.activeTimers!=null,v;if(g&&(v=this.startTimer()),I9(this.gpgpu,m,d,p,a),h.forEach(function(w){return o.disposeIntermediateTensorInfo(w)}),g&&(v=this.endTimer(v),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(v)})),!x.env().getBool("WEBGL_LAZILY_UNPACK")&&u.isPacked&&s===!1){var b=this.unpackTensor(l);return this.disposeIntermediateTensorInfo(l),b}return l},t.prototype.compileAndRun=function(e,i,r,a,s){s===void 0&&(s=!1),r=r||i[0].dtype;var o=this.runWebGLProgram(e,i,r,a,s);return x.engine().makeTensorFromDataId(o.dataId,o.shape,o.dtype)},t.prototype.getAndSaveBinary=function(e,i){return e in this.binaryCache||(this.binaryCache[e]=i()),this.binaryCache[e]},t.prototype.getTextureManager=function(){return this.textureManager},t.prototype.dispose=function(){var e=this;if(this.disposed)return;if(!x.env().getBool("IS_TEST")){var i=Object.keys(this.binaryCache);i.forEach(function(r){e.gpgpu.deleteProgram(e.binaryCache[r].webGLProgram),delete e.binaryCache[r]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0},t.prototype.floatPrecision=function(){var e=this;return this.floatPrecisionValue==null&&(this.floatPrecisionValue=x.tidy(function(){if(!x.env().get("WEBGL_RENDER_FLOAT32_ENABLED")){var i=x.env().getBool("DEBUG");x.env().set("DEBUG",!1);var r=e.abs(x.scalar(1e-8)).dataSync()[0];if(x.env().set("DEBUG",i),r>0)return 32}return 16})),this.floatPrecisionValue},t.prototype.epsilon=function(){return this.floatPrecision()===32?_6:M6},t.prototype.uploadToGPU=function(e){var i,r=this.texData.get(e),a=r.shape,s=r.dtype,o=r.values,l=r.texture,u=r.usage,c=r.isPacked;if(l!=null)return;var h=this.activeTimers!=null,d;h&&(d=x.util.now());var p=r.texShape;if(p==null&&(p=vS(a,c),r.texShape=p),o!=null){var f=il(a),m=void 0,g=p[1],v=p[0],b=o instanceof Uint8Array;c?(i=fa(p[0],p[1]),g=i[0],v=i[1],m=new m9(f,[v,g],b)):m=new f9(f,[v,g],b);var w=this.makeTensorInfo([v,g],s);b?this.texData.get(w.dataId).usage=sn.PIXELS:this.texData.get(w.dataId).usage=sn.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(w.dataId),g,v,o);var S=!0,L=this.runWebGLProgram(m,[w],s,null,S),N=this.texData.get(L.dataId);r.texture=N.texture,r.texShape=N.texShape,r.isPacked=N.isPacked,r.usage=N.usage,this.disposeIntermediateTensorInfo(w),this.texData.delete(L.dataId),r.values=null,h&&(this.uploadWaitMs+=x.util.now()-d)}else{var C=this.acquireTexture(p,u,s,c);r.texture=C}},t.prototype.convertAndCacheOnCPU=function(e,i){var r=this.texData.get(e),a=r.dtype;return this.releaseGPUData(e),i!=null&&(r.values=Y6(i,a)),r.values},t.prototype.acquireTexture=function(e,i,r,a){if(this.numBytesInGPU+=this.computeBytes(e,r),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){var s=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: "+s+" MB, most likely due to a memory leak")}return this.textureManager.acquireTexture(e,i,a)},t.prototype.computeBytes=function(e,i){return e[0]*e[1]*x.util.bytesPerElement(i)},t.prototype.tryRunOnCpuOrThrow=function(e,i){if(this.shouldExecuteOnCPU(e))try{return i()}catch(r){if(x.env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null},t}(x.KernelBackend);function Y6(n,t){if(t==="float32"||t==="complex64")return n;if(t==="int32"||t==="bool"){for(var e=t==="int32"?new Int32Array(n.length):new Uint8Array(n.length),i=0;i 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function dl(n){return function(t){var e=t.inputs,i=t.backend,r=e.x,a=i,s=new Re(r.shape,n);return a.runWebGLProgram(s,[r],r.dtype)}}function Ap(n,t,e,i){return function(r){var a=r.inputs,s=r.backend,o=a,l=o.a,u=o.b,c=s,h=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ui(t,l.shape,u.shape,!!e):new St(n,l.shape,u.shape),d=i||l.dtype,p=c.runWebGLProgram(h,[l,u],d);return p}}var J6=$6+` +`;function dl(n){return function(t){var e=t.inputs,i=t.backend,r=e.x,a=i,s=new Re(r.shape,n);return a.runWebGLProgram(s,[r],r.dtype)}}function Tp(n,t,e,i){return function(r){var a=r.inputs,s=r.backend,o=a,l=o.a,u=o.b,c=s,h=x.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Ui(t,l.shape,u.shape,!!e):new St(n,l.shape,u.shape),d=i||l.dtype,p=c.runWebGLProgram(h,[l,u],d);return p}}var J6=$6+` return atan(a, b); `,Z6=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+X6+` return result; -`,Q6=Ap(J6,Z6),e8={kernelName:x.Atan2,backendName:"webgl",kernelFunc:Q6};function Tp(n){var t=n.inputs,e=n.backend,i=t.x;return e.incRef(i.dataId),{dataId:i.dataId,shape:i.shape,dtype:i.dtype}}var t8={kernelName:x.Identity,backendName:"webgl",kernelFunc:Tp};function n8(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x;ma(r,"avgPool");var a=i.filterSize,s=i.strides,o=i.pad,l=i.dimRoundingMode,u=1;x.util.assert(x.backend_util.eitherStridesOrDilationsAreOne(s,u),function(){return"Error in avgPool: Either strides or dilations must be 1. "+("Got strides "+s+" and dilations '"+u+"'")});var c=x.backend_util.computePool2DInfo(r.shape,a,s,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&x.util.arraysEqual(c.inShape,c.outShape))return Tp({inputs:{x:r},backend:e});var h=new As(c,"avg",!1);return e.runWebGLProgram(h,[r],"float32")}var i8={kernelName:x.AvgPool,backendName:"webgl",kernelFunc:n8};function r8(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.dy,a=t.input,s=a;ma([r,a],"avgPoolBackprop");var o=i.filterSize,l=i.strides,u=i.pad,c=x.backend_util.computePool2DInfo(s.shape,o,l,1,u),h=new b5(c);return e.runWebGLProgram(h,[r],s.dtype)}var a8={kernelName:x.AvgPoolBackprop,backendName:"webgl",kernelFunc:r8};var s8=function(){function n(t,e,i,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],x.backend_util.assertAndGetBroadcastShape(t,e),x.backend_util.assertAndGetBroadcastShape(t,i);var o="0.0";r!=null&&(x.backend_util.assertAndGetBroadcastShape(t,r),this.variableNames.push("offset"),o="getOffsetAtOutCoords()");var l="1.0";a!=null&&(x.backend_util.assertAndGetBroadcastShape(t,a),this.variableNames.push("scale"),l="getScaleAtOutCoords()"),this.outputShape=t,this.userCode=` +`,Q6=Tp(J6,Z6),e8={kernelName:x.Atan2,backendName:"webgl",kernelFunc:Q6};function Np(n){var t=n.inputs,e=n.backend,i=t.x;return e.incRef(i.dataId),{dataId:i.dataId,shape:i.shape,dtype:i.dtype}}var t8={kernelName:x.Identity,backendName:"webgl",kernelFunc:Np};function n8(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.x;ma(r,"avgPool");var a=i.filterSize,s=i.strides,o=i.pad,l=i.dimRoundingMode,u=1;x.util.assert(x.backend_util.eitherStridesOrDilationsAreOne(s,u),function(){return"Error in avgPool: Either strides or dilations must be 1. "+("Got strides "+s+" and dilations '"+u+"'")});var c=x.backend_util.computePool2DInfo(r.shape,a,s,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&x.util.arraysEqual(c.inShape,c.outShape))return Np({inputs:{x:r},backend:e});var h=new As(c,"avg",!1);return e.runWebGLProgram(h,[r],"float32")}var i8={kernelName:x.AvgPool,backendName:"webgl",kernelFunc:n8};function r8(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.dy,a=t.input,s=a;ma([r,a],"avgPoolBackprop");var o=i.filterSize,l=i.strides,u=i.pad,c=x.backend_util.computePool2DInfo(s.shape,o,l,1,u),h=new b5(c);return e.runWebGLProgram(h,[r],s.dtype)}var a8={kernelName:x.AvgPoolBackprop,backendName:"webgl",kernelFunc:r8};var s8=function(){function n(t,e,i,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],x.backend_util.assertAndGetBroadcastShape(t,e),x.backend_util.assertAndGetBroadcastShape(t,i);var o="0.0";r!=null&&(x.backend_util.assertAndGetBroadcastShape(t,r),this.variableNames.push("offset"),o="getOffsetAtOutCoords()");var l="1.0";a!=null&&(x.backend_util.assertAndGetBroadcastShape(t,a),this.variableNames.push("scale"),l="getScaleAtOutCoords()"),this.outputShape=t,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -3703,7 +3703,7 @@ return a / b;`,f8=` } return result; -`,m8=Ap(p8,f8,!0),g8={kernelName:x.Div,backendName:"webgl",kernelFunc:m8};var v8=function(){function n(t){this.variableNames=["Image"],this.outputShape=[];var e=t[2];this.outputShape=t,this.userCode=` +`,m8=Tp(p8,f8,!0),g8={kernelName:x.Div,backendName:"webgl",kernelFunc:m8};var v8=function(){function n(t){this.variableNames=["Image"],this.outputShape=[];var e=t[2];this.outputShape=t,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -3773,7 +3773,7 @@ return a / b;`,f8=` `+e.output+` = result; } - `}return n}();var L8={kernelName:x.FromPixels,backendName:"webgl",kernelFunc:S8},Sa;function S8(n){var t=n.inputs,e=n.backend,i=n.attrs,r=t.pixels,a=i.numChannels,s=typeof HTMLVideoElement!="undefined"&&r instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement,l=s?[r.videoWidth,r.videoHeight]:[r.width,r.height],u=l[0],c=l[1],h=[c,u],d=[c,u,a];(o||s)&&(Sa==null&&(Sa=document.createElement("canvas").getContext("2d")),Sa.canvas.width=u,Sa.canvas.height=c,Sa.drawImage(r,0,0,u,c),r=Sa.canvas);var p=e.makeTensorInfo(h,"int32");e.texData.get(p.dataId).usage=on.PIXELS,e.gpgpu.uploadPixelDataToTexture(e.getTexture(p.dataId),r);var f=x.env().getBool("WEBGL_PACK")?new w8(d):new b8(d),m=e.runWebGLProgram(f,[p],"int32");return e.disposeData(p.dataId),m}function I8(n){for(var t=[];t.length===0||t[t.length-1].outSize!==1;){var e=t.length?t[t.length-1].outSize:n[1],i=x.backend_util.computeOptimalWindowSize(e);t.push({inSize:e,windowSize:i,outSize:Math.ceil(e/i)})}return t}function A8(n,t,e,i){for(var r=I8(n.shape),a=n,s=0;s{"use strict";Object.defineProperty(Nr,"__esModule",{value:!0});var Cp=lr(),Rp=Ow(),Op=Gw(),WL=h0(),o7=Z0(),l7=FL();var u7="2.6.0";var c7={"tfjs-core":Cp.version_core,"tfjs-backend-cpu":o7.version_cpu,"tfjs-backend-webgl":l7.version_webgl,"tfjs-data":WL.version_data,"tfjs-layers":Rp.version_layers,"tfjs-converter":Op.version_converter,tfjs:u7};Object.keys(Cp).forEach(function(n){n!=="default"&&Object.defineProperty(Nr,n,{enumerable:!0,get:function(){return Cp[n]}})});Object.keys(Rp).forEach(function(n){n!=="default"&&Object.defineProperty(Nr,n,{enumerable:!0,get:function(){return Rp[n]}})});Object.keys(Op).forEach(function(n){n!=="default"&&Object.defineProperty(Nr,n,{enumerable:!0,get:function(){return Op[n]}})});Nr.data=WL;Nr.version=c7});var _L=Le(pl=>{const ke=zt(),UL=6;function h7(n){const t={strides:[n/16,n/8],anchors:[2,6]},e=[];for(let i=0;i{n.startEndTensor.dispose(),n.startPoint.dispose(),n.endPoint.dispose()},zL=n=>({startEndTensor:n,startPoint:ke.slice(n,[0,0],[-1,2]),endPoint:ke.slice(n,[0,2],[-1,2])}),d7=(n,t)=>{const e=ke.mul(n.startPoint,t),i=ke.mul(n.endPoint,t),r=ke.concat2d([e,i],1);return zL(r)};function p7(n,t,e){const i=ke.slice(n,[0,1],[-1,2]),r=ke.add(i,t),a=ke.slice(n,[0,3],[-1,2]),s=ke.div(a,e),o=ke.div(r,e),l=ke.div(s,2),u=ke.sub(o,l),c=ke.add(o,l),h=ke.mul(u,e),d=ke.mul(c,e),p=1;return ke.concat2d([h,d],p)}function f7(n,t){return ke.tidy(()=>{const e=n.box?n.box:n;return d7(e,t).startEndTensor.squeeze()})}class PL{constructor(n,t){this.blazeFaceModel=n,this.width=t.detector.inputSize,this.height=t.detector.inputSize,this.maxFaces=t.detector.maxFaces,this.anchorsData=h7(t.detector.inputSize),this.anchors=ke.tensor2d(this.anchorsData),this.inputSize=ke.tensor1d([this.width,this.height]),this.iouThreshold=t.detector.iouThreshold,this.scaleFaces=.8,this.scoreThreshold=t.detector.scoreThreshold}async getBoundingBoxes(n){if(!n||n.isDisposedInternal||n.shape.length!==4||n.shape[1]<1||n.shape[2]<1)return null;const[t,e,i]=ke.tidy(()=>{const l=n.resizeBilinear([this.width,this.height]),u=ke.mul(ke.sub(l.div(255),.5),2),c=this.blazeFaceModel.predict(u);let h;if(Array.isArray(c)){const m=c.sort((w,S)=>w.size-S.size),g=ke.concat([m[0],m[2]],2),v=ke.concat([m[1],m[3]],2),b=ke.concat([v,g],1);h=b.squeeze(0)}else h=c.squeeze();const d=p7(h,this.anchors,this.inputSize),p=ke.slice(h,[0,0],[-1,1]),f=ke.sigmoid(p).squeeze();return[h,d,f]}),r=await ke.image.nonMaxSuppressionAsync(e,i,this.maxFaces,this.iouThreshold,this.scoreThreshold),a=await r.array();r.dispose();let s=a.map(l=>ke.slice(e,[l,0],[1,-1]));s=await Promise.all(s.map(async l=>{const u=await l.array();return l.dispose(),u}));const o=[];for(let l=0;l{const h=zL(u),d=a[l],p=this.anchorsData[d],f=ke.slice(t,[d,UL-1],[1,-1]).squeeze().reshape([UL,-1]),m=ke.slice(i,[d],[1]);return{box:h,landmarks:f,probability:m,anchor:p}});o.push(c)}return e.dispose(),i.dispose(),t.dispose(),{boxes:o,scaleFactor:[n.shape[2]/this.width,n.shape[1]/this.height]}}async estimateFaces(n){const t=ke.tidy(()=>(n instanceof ke.Tensor||(n=ke.browser.fromPixels(n)),n.toFloat().expandDims(0))),{boxes:e,scaleFactor:i}=await this.getBoundingBoxes(t);return t.dispose(),Promise.all(e.map(async r=>{const a=f7(r,i),[s,o,l]=await Promise.all([r.landmarks,a,r.probability].map(async f=>f.array())),u=r.anchor,[c,h]=i,d=s.map(f=>[(f[0]+u[0])*c,(f[1]+u[1])*h]),p={topLeft:o.slice(0,2),bottomRight:o.slice(2),landmarks:d,probability:l};return BL(r.box),r.landmarks.dispose(),r.probability.dispose(),a.dispose(),p}))}}async function m7(n){const t=await ke.loadGraphModel(n.detector.modelPath,{fromTFHub:n.detector.modelPath.includes("tfhub.dev")}),e=new PL(t,n);return e}pl.load=m7;pl.BlazeFaceModel=PL;pl.disposeBox=BL});var Dp=Le(Ep=>{Ep.MESH_ANNOTATIONS={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]};Ep.MESH_TO_IRIS_INDICES_MAP=[{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]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}]});var ML=Le(xr=>{const g7=zt();function v7(n,t){const e=[n.startPoint[0]*t[0],n.startPoint[1]*t[1]],i=[n.endPoint[0]*t[0],n.endPoint[1]*t[1]];return{startPoint:e,endPoint:i}}xr.scaleBoxCoordinates=v7;function kp(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}xr.getBoxSize=kp;function Fp(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}xr.getBoxCenter=Fp;function y7(n,t,e){const i=t.shape[1],r=t.shape[2],a=[[n.startPoint[1]/i,n.startPoint[0]/r,n.endPoint[1]/i,n.endPoint[0]/r]];return g7.image.cropAndResize(t,a,[0],e)}xr.cutBoxFromImageAndResize=y7;function b7(n,t=1.5){const e=Fp(n),i=kp(n),r=[t*i[0]/2,t*i[1]/2],a=[e[0]-r[0],e[1]-r[1]],s=[e[0]+r[0],e[1]+r[1]];return{startPoint:a,endPoint:s,landmarks:n.landmarks}}xr.enlargeBox=b7;function w7(n){const t=Fp(n),e=kp(n),i=Math.max(...e),r=i/2,a=[t[0]-r,t[1]-r],s=[t[0]+r,t[1]+r];return{startPoint:a,endPoint:s,landmarks:n.landmarks}}xr.squarifyBox=w7});var YL=Le(Rn=>{Rn.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function HL(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}Rn.normalizeRadians=HL;function S7(n,t){const e=Math.PI/2-Math.atan2(-(t[1]-n[1]),t[0]-n[0]);return HL(e)}Rn.computeRotation=S7;function L7(n){return n*180/Math.PI}Rn.radToDegrees=L7;function VL(n,t){return[[1,0,n],[0,1,t],[0,0,1]]}function La(n,t){let e=0;for(let i=0;i{const Bi=zt(),Yn=ML(),zi=Dp(),Pi=YL(),x7=468,C7=.25,R7=13,O7=[R7,zi.MESH_ANNOTATIONS.midwayBetweenEyes[0]],E7=3,D7=2,k7=[E7,D7],Wp=zi.MESH_ANNOTATIONS.leftEyeLower0,Up=[Wp[0],Wp[Wp.length-1]],Bp=zi.MESH_ANNOTATIONS.rightEyeLower0,zp=[Bp[0],Bp[Bp.length-1]],F7=3,W7=4,U7=71,Pp=76;function fl(n,t,e,i){for(let r=0;r[a[0]*(d[0]-this.meshWidth/2),a[1]*(d[1]-this.meshHeight/2),d[2]]),o=Pi.buildRotationMatrix(e,[0,0]),l=s.map(d=>[...Pi.rotatePoint(d,o),d[2]]),u=Pi.invertTransformMatrix(i),c=[...Yn.getBoxCenter({startPoint:t.startPoint,endPoint:t.endPoint}),1],h=[Pi.dot(c,u[0]),Pi.dot(c,u[1])];return l.map(d=>[d[0]+h[0],d[1]+h[1],d[2]])}getLeftToRightEyeDepthDifference(n){const t=n[Up[0]][2],e=n[zp[0]][2];return t-e}getEyeBox(n,t,e,i,r=!1){const a=Yn.squarifyBox(Yn.enlargeBox(this.calculateLandmarksBoundingBox([n[e],n[i]]),this.irisEnlarge)),s=Yn.getBoxSize(a);let o=Bi.image.cropAndResize(t,[[a.startPoint[1]/this.meshHeight,a.startPoint[0]/this.meshWidth,a.endPoint[1]/this.meshHeight,a.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return r&&(o=Bi.image.flipLeftRight(o)),{box:a,boxSize:s,crop:o}}getEyeCoords(n,t,e,i=!1){const r=[];for(let a=0;a{let l=a;return o===2?l=i:o===4&&(l=r),[s[0],s[1],l]})}async predict(n,t){if(this.skipFrames=t.detector.skipFrames,this.maxFaces=t.detector.maxFaces,this.shouldUpdateRegionsOfInterest()){const{boxes:i,scaleFactor:r}=await this.boundingBoxDetector.getBoundingBoxes(n);if(i.length===0)return this.regionsOfInterest=[],null;const a=i.map(s=>{const o={startPoint:s.box.startPoint.squeeze().arraySync(),endPoint:s.box.endPoint.squeeze().arraySync()};s.box.startPoint.dispose(),s.box.endPoint.dispose();const l=Yn.scaleBoxCoordinates(o,r),u=Yn.enlargeBox(l),c=s.landmarks.arraySync();return s.landmarks.dispose(),s.probability.dispose(),{...u,landmarks:c}});this.updateRegionsOfInterest(a),this.runsWithoutFaceDetector=0}else this.runsWithoutFaceDetector++;const e=Bi.tidy(()=>this.regionsOfInterest.map((i,r)=>{let a=0;const s=i.landmarks.length>=x7;let[o,l]=O7;s===!1&&([o,l]=k7),a=Pi.computeRotation(i.landmarks[o],i.landmarks[l]);const u=Yn.getBoxCenter({startPoint:i.startPoint,endPoint:i.endPoint}),c=[u[0]/n.shape[2],u[1]/n.shape[1]];let h=n,d=Pi.IDENTITY_MATRIX;a!==0&&(h=Bi.image.rotateWithOffset(n,a,0,c),d=Pi.buildRotationMatrix(-a,u));const p={startPoint:i.startPoint,endPoint:i.endPoint},f=Yn.cutBoxFromImageAndResize(p,h,[this.meshHeight,this.meshWidth]).div(255),[,m,g]=this.meshDetector.predict(f),v=Bi.reshape(g,[-1,3]);let b=v.arraySync();if(t.iris.enabled){const{box:N,boxSize:C,crop:R}=this.getEyeBox(b,f,Up[0],Up[1],!0),{box:D,boxSize:k,crop:W}=this.getEyeBox(b,f,zp[0],zp[1]),F=this.irisModel.predict(Bi.concat([R,W])),P=F.dataSync();F.dispose();const H=P.slice(0,Pp*3),{rawCoords:_,iris:j}=this.getEyeCoords(H,N,C,!0),K=P.slice(Pp*3),{rawCoords:q,iris:G}=this.getEyeCoords(K,D,k),Z=this.getLeftToRightEyeDepthDifference(b);Math.abs(Z)<30?(fl(b,_,"left"),fl(b,q,"right")):Z<1?fl(b,_,"left",["EyeUpper0","EyeLower0"]):fl(b,q,"right",["EyeUpper0","EyeLower0"]);const X=this.getAdjustedIrisCoords(b,j,"left"),ee=this.getAdjustedIrisCoords(b,G,"right");b=b.concat(X).concat(ee)}const w=this.transformRawCoords(b,i,a,d);Bi.dispose(b);const S=Yn.enlargeBox(this.calculateLandmarksBoundingBox(w));if(t.mesh.enabled){const N=Bi.tensor2d(w);this.regionsOfInterest[r]={...S,landmarks:N.arraySync()};const C={coords:N,box:S,confidence:m.squeeze(),image:f};return C}const L={coords:null,box:S,confidence:m.squeeze(),image:f};return L}));return e}updateRegionsOfInterest(n){for(let t=0;t=this.skipFrames}calculateLandmarksBoundingBox(n){const t=n.map(a=>a[0]),e=n.map(a=>a[1]),i=[Math.min(...t),Math.min(...e)],r=[Math.max(...t),Math.max(...e)];return{startPoint:i,endPoint:r}}}jL.Pipeline=B7});var XL=Le($L=>{$L.UV_COORDS=[[.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]]});var JL=Le(z7=>{Sl(z7,{default:()=>P7});var P7=[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 eI=Le(Ns=>{const Cr=zt(),_7=_L(),ZL=Dp(),M7=KL(),H7=XL(),V7=JL().default;class QL{constructor(n,t,e,i){this.pipeline=new M7.Pipeline(n,t,e,i),i&&(this.config=i)}async estimateFaces(n,t){t&&(this.config=t);const e=Cr.tidy(()=>(n instanceof Cr.Tensor||(n=Cr.browser.fromPixels(n)),n.toFloat().expandDims(0))),i=await this.pipeline.predict(e,t);Cr.dispose(e);const r=[];for(const a of i||[]){const s=a.confidence.arraySync();if(s>=this.config.detector.minConfidence){const o=a.coords?a.coords.arraySync():null,l={};if(o&&o.length>0)for(const u in ZL.MESH_ANNOTATIONS)(this.config.iris.enabled||u.includes("Iris")===!1)&&(l[u]=ZL.MESH_ANNOTATIONS[u].map(c=>o[c]));r.push({confidence:s||0,box:a.box?[a.box.startPoint[0],a.box.startPoint[1],a.box.endPoint[0]-a.box.startPoint[0],a.box.endPoint[1]-a.box.startPoint[1]]:0,mesh:o,annotations:l,image:a.image?Cr.clone(a.image):null})}a.confidence.dispose(),a.image.dispose()}return r}}async function q7(n){const t=await Promise.all([_7.load(n),Cr.loadGraphModel(n.mesh.modelPath,{fromTFHub:n.mesh.modelPath.includes("tfhub.dev")}),Cr.loadGraphModel(n.iris.modelPath,{fromTFHub:n.iris.modelPath.includes("tfhub.dev")})]),e=new QL(t[0],t[1],t[2],n);return e}Ns.load=q7;Ns.MediaPipeFaceMesh=QL;Ns.uv_coords=H7;Ns.triangulation=V7});var nI=Le(ml=>{const un=zt(),_i={};let tI={age:0,gender:""},_p=0;async function G7(n,t){const e=un.browser.fromPixels(n),i=un.image.resizeBilinear(e,[t,t]),r=un.cast(un.expandDims(i,0),"float32");return r}async function Y7(n){return _i.age||(_i.age=await un.loadGraphModel(n.face.age.modelPath)),_i.age}async function j7(n){return _i.gender||(_i.gender=await un.loadGraphModel(n.face.gender.modelPath)),_i.gender}async function K7(n,t){if(_p+=1,_p>=t.face.age.skipFrames)return _p=0,tI;let e;if(n instanceof un.Tensor){const r=un.image.resizeBilinear(n,[t.face.age.inputSize,t.face.age.inputSize],!1);e=un.mul(r,[255]),un.dispose(r)}else e=await G7(n,t.face.age.inputSize);const i={};if(t.face.age.enabled){const r=await _i.age.predict(e),a=await r.data();i.age=Math.trunc(10*a[0])/10,un.dispose(r)}if(t.face.gender.enabled){const r=await _i.gender.predict(e),a=await r.data();i.gender=Math.trunc(100*a[0])<50?"female":"male",un.dispose(r)}return un.dispose(e),tI=i,i}ml.predict=K7;ml.loadAge=Y7;ml.loadGender=j7});var aI=Le(Mp=>{const Pt=zt(),$7=["angry","discust","fear","happy","sad","surpise","neutral"],gl={};let iI=[],Hp=0;const rI=1.5;function X7(n,t){const e=Pt.tidy(()=>{const i=Pt.browser.fromPixels(n,1),r=Pt.image.resizeBilinear(i,[t,t]),a=Pt.cast(Pt.expandDims(r,0),"float32");return a});return e}async function J7(n){return gl.emotion||(gl.emotion=await Pt.loadGraphModel(n.face.emotion.modelPath)),gl.emotion}async function Z7(n,t){if(Hp+=1,Hp>=t.face.emotion.skipFrames)return Hp=0,iI;const e=Pt.tidy(()=>{if(n instanceof Pt.Tensor){const r=Pt.image.resizeBilinear(n,[t.face.emotion.inputSize,t.face.emotion.inputSize],!1),[a,s,o]=Pt.split(r,3,3);if(t.face.emotion.useGrayscale){const l=Pt.mul(a,[.2989]),u=Pt.mul(s,[.587]),c=Pt.mul(o,[.114]),h=Pt.addN([l,u,c]);return h}return s}return X7(n,t.face.emotion.inputSize)}),i=[];if(t.face.emotion.enabled){const r=await gl.emotion.predict(e),a=await r.data();for(let s=0;st.face.emotion.minConfidence&&i.push({score:Math.min(.99,Math.trunc(100*rI*a[s])/100),emotion:$7[s]});i.sort((s,o)=>o.score-s.score),Pt.dispose(r)}return Pt.dispose(e),iI=i,i}Mp.predict=Z7;Mp.load=J7});var lI=Le(sI=>{const oI=zt();class Q7{constructor(n,t){this.model=n,this.outputStride=t;const e=this.model.inputs[0].shape;oI.util.assert(e[1]===-1&&e[2]===-1,()=>`Input shape [${e[1]}, ${e[2]}] must both be equal to or -1`)}predict(n){return oI.tidy(()=>{const t=this.preprocessInput(n.toFloat()),e=t.expandDims(0),i=this.model.predict(e),r=i.map(s=>s.squeeze([0])),a=this.nameOutputResults(r);return{heatmapScores:a.heatmap.sigmoid(),offsets:a.offsets,displacementFwd:a.displacementFwd,displacementBwd:a.displacementBwd}})}dispose(){this.model.dispose()}}sI.BaseModel=Q7});var Vp=Le(uI=>{const cI=zt(),eH=lI();class tH extends eH.BaseModel{preprocessInput(n){return cI.tidy(()=>cI.div(n,127.5).sub(1))}nameOutputResults(n){const[t,e,i,r]=n;return{offsets:t,heatmap:e,displacementFwd:i,displacementBwd:r}}}uI.MobileNet=tH});var dI=Le(hI=>{function qp(n){return Math.floor(n/2)}class nH{constructor(n,t){this.priorityQueue=new Array(n),this.numberOfElements=-1,this.getElementValue=t}enqueue(n){this.priorityQueue[++this.numberOfElements]=n,this.swim(this.numberOfElements)}dequeue(){const n=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,n}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(n){for(;n>0&&this.less(qp(n),n);)this.exchange(n,qp(n)),n=qp(n)}sink(n){for(;2*n<=this.numberOfElements;){let t=2*n;if(t{const iH=dI();function rH(n,t,e,i,r,a){const[s,o]=a.shape;let l=!0;const u=Math.max(e-r,0),c=Math.min(e+r+1,s);for(let h=u;ht){l=!1;break}if(!l)break}return l}function aH(n,t,e){const[i,r,a]=e.shape,s=new iH.MaxHeap(i*r*a,({score:o})=>o);for(let o=0;o{On.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];On.NUM_KEYPOINTS=On.partNames.length;On.partIds=On.partNames.reduce((n,t,e)=>(n[t]=e,n),{});const sH=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];On.poseChain=[["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"]];On.connectedPartIndices=sH.map(([n,t])=>[On.partIds[n],On.partIds[t]]);On.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});var Yp=Le(Mi=>{const oH=xs();function mI(n,t,e,i){return{y:i.get(n,t,e),x:i.get(n,t,e+oH.NUM_KEYPOINTS)}}Mi.getOffsetPoint=mI;function lH(n,t,e){const{heatmapY:i,heatmapX:r,id:a}=n,{y:s,x:o}=mI(i,r,a,e);return{x:n.heatmapX*t+o,y:n.heatmapY*t+s}}Mi.getImageCoords=lH;function uH(n,t){const e=new Array(t);for(let i=0;ie?e:n}Mi.clamp=Gp;function cH(n,t,e,i){const r=e-n,a=i-t;return r*r+a*a}Mi.squaredDistance=cH;function hH(n,t){return{x:n.x+t.x,y:n.y+t.y}}Mi.addVectors=hH;function dH(n,t,e){return{y:Gp(n.y,t,e),x:Gp(n.x,t,e)}}Mi.clampVector=dH});var wI=Le(gI=>{const Cs=xs(),Ia=Yp(),vI=Cs.poseChain.map(([n,t])=>[Cs.partIds[n],Cs.partIds[t]]),jp=vI.map(([,n])=>n),yI=vI.map(([n])=>n);function pH(n,t,e){const i=e.shape[2]/2;return{y:e.get(t.y,t.x,n),x:e.get(t.y,t.x,i+n)}}function Kp(n,t,e,i){return{y:Ia.clamp(Math.round(n.y/t),0,e-1),x:Ia.clamp(Math.round(n.x/t),0,i-1)}}function bI(n,t,e,i,r,a,s,o=2){const[l,u]=i.shape,c=Kp(t.position,a,l,u),h=pH(n,c,s),d=Ia.addVectors(t.position,h);let p=d;for(let g=0;g=0;--d){const p=jp[d],f=yI[d];l[p]&&!l[f]&&(l[f]=bI(d,l[p],f,t,e,i,a))}for(let d=0;d{const mH=fI(),gH=wI(),LI=Yp();function II(n,t,{x:e,y:i},r){return n.some(({keypoints:a})=>{const s=a[r].position;return LI.squaredDistance(i,e,s.y,s.x)<=t})}function vH(n,t,e){const i=e.reduce((r,{position:a,score:s},o)=>(II(n,t,a,o)||(r+=s),r),0);return i/e.length}const yH=1;function bH(n,t,e,i,r,a,s=.5,o=20){const l=[],u=mH.buildPartWithScoreQueue(s,yH,n),c=o*o;for(;l.length{const Aa=zt(),wH=xs();function SH(n,t,e){return n(SH(n[i].score,n[r].score,t)||e.push([n[i],n[r]]),e),[])}gn.getAdjacentKeyPoints=LH;const{NEGATIVE_INFINITY:AI,POSITIVE_INFINITY:TI}=Number;function NI(n){return n.reduce(({maxX:t,maxY:e,minX:i,minY:r},{position:{x:a,y:s}})=>({maxX:Math.max(t,a),maxY:Math.max(e,s),minX:Math.min(i,a),minY:Math.min(r,s)}),{maxX:AI,maxY:AI,minX:TI,minY:TI})}gn.getBoundingBox=NI;function IH(n){const{minX:t,minY:e,maxX:i,maxY:r}=NI(n);return[{x:t,y:e},{x:i,y:e},{x:i,y:r},{x:t,y:r}]}gn.getBoundingBoxPoints=IH;async function AH(n){return Promise.all(n.map(t=>t.buffer()))}gn.toTensorBuffers3D=AH;function xI(n,t,e,i=0,r=0){return{score:n.score,keypoints:n.keypoints.map(({score:a,part:s,position:o})=>({score:a,part:s,position:{x:o.x*e+r,y:o.y*t+i}}))}}gn.scalePose=xI;function CI(n,t,e,i=0,r=0){return e===1&&t===1&&i===0&&r===0?n:n.map(a=>xI(a,t,e,i,r))}gn.scalePoses=CI;function RI(n){return n instanceof Aa.Tensor?[n.shape[0],n.shape[1]]:[n.height,n.width]}gn.getInputTensorDimensions=RI;function Xp(n){return n instanceof Aa.Tensor?n:Aa.browser.fromPixels(n)}gn.toInputTensor=Xp;function TH(n,t,e){return Aa.tidy(()=>{const i=Xp(n);return i.resizeBilinear([t,e])})}gn.toResizedInputTensor=TH;function NH(n,[t,e]){const[i,r]=RI(n),a=e/t,s=r/i;let[o,l,u,c]=[0,0,0,0];s{let d=Xp(n);return d=Aa.pad3d(d,[[o,l],[u,c],[0,0]]),d.resizeBilinear([t,e])});return{resized:h,padding:{top:o,left:u,right:c,bottom:l}}}gn.padAndResizeTo=NH;function xH(n,[t,e],[i,r],a){const s=(t+a.top+a.bottom)/i,o=(e+a.left+a.right)/r,l=CI(n,s,o,-a.top,-a.left);return l}gn.scaleAndFlipPoses=xH});var EI=Le(Zp=>{const CH=zt(),RH=Vp(),OH=$p(),vl=Jp();class OI{constructor(n){this.baseModel=n}async estimatePoses(n,t){const e=t.outputStride,[i,r]=vl.getInputTensorDimensions(n),{resized:a,padding:s}=vl.padAndResizeTo(n,[t.inputResolution,t.inputResolution]),{heatmapScores:o,offsets:l,displacementFwd:u,displacementBwd:c}=this.baseModel.predict(a),h=await vl.toTensorBuffers3D([o,l,u,c]),d=h[0],p=h[1],f=h[2],m=h[3],g=await OH.decodeMultiplePoses(d,p,f,m,e,t.maxDetections,t.scoreThreshold,t.nmsRadius),v=vl.scaleAndFlipPoses(g,[i,r],[t.inputResolution,t.inputResolution],s);return o.dispose(),l.dispose(),u.dispose(),c.dispose(),a.dispose(),v}dispose(){this.baseModel.dispose()}}Zp.PoseNet=OI;async function EH(n){const t=await CH.loadGraphModel(n.modelPath),e=new RH.MobileNet(t,n.outputStride);return new OI(e)}async function DH(n){return EH(n)}Zp.load=DH});var kI=Le(tn=>{const kH=Vp(),DI=EI(),FH=$p(),yl=xs(),Rs=Jp();tn.load=DI.load;tn.PoseNet=DI.PoseNet;tn.MobileNet=kH.MobileNet;tn.decodeMultiplePoses=FH.decodeMultiplePoses;tn.partChannels=yl.partChannels;tn.partIds=yl.partIds;tn.partNames=yl.partNames;tn.poseChain=yl.poseChain;tn.getAdjacentKeyPoints=Rs.getAdjacentKeyPoints;tn.getBoundingBox=Rs.getBoundingBox;tn.getBoundingBoxPoints=Rs.getBoundingBoxPoints;tn.scaleAndFlipPoses=Rs.scaleAndFlipPoses;tn.scalePose=Rs.scalePose});var tf=Le(Hi=>{const WH=zt();function Qp(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}Hi.getBoxSize=Qp;function ef(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}Hi.getBoxCenter=ef;function UH(n,t,e){const i=t.shape[1],r=t.shape[2],a=[[n.startPoint[1]/i,n.startPoint[0]/r,n.endPoint[1]/i,n.endPoint[0]/r]];return WH.image.cropAndResize(t,a,[0],e)}Hi.cutBoxFromImageAndResize=UH;function BH(n,t){const e=[n.startPoint[0]*t[0],n.startPoint[1]*t[1]],i=[n.endPoint[0]*t[0],n.endPoint[1]*t[1]],r=n.palmLandmarks.map(a=>{const s=[a[0]*t[0],a[1]*t[1]];return s});return{startPoint:e,endPoint:i,palmLandmarks:r}}Hi.scaleBoxCoordinates=BH;function zH(n,t=1.5){const e=ef(n),i=Qp(n),r=[t*i[0]/2,t*i[1]/2],a=[e[0]-r[0],e[1]-r[1]],s=[e[0]+r[0],e[1]+r[1]];return{startPoint:a,endPoint:s,palmLandmarks:n.palmLandmarks}}Hi.enlargeBox=zH;function PH(n){const t=ef(n),e=Qp(n),i=Math.max(...e),r=i/2,a=[t[0]-r,t[1]-r],s=[t[0]+r,t[1]+r];return{startPoint:a,endPoint:s,palmLandmarks:n.palmLandmarks}}Hi.squarifyBox=PH;function _H(n,t){const e=[n.endPoint[0]-n.startPoint[0],n.endPoint[1]-n.startPoint[1]],i=[e[0]*t[0],e[1]*t[1]],r=[n.startPoint[0]+i[0],n.startPoint[1]+i[1]],a=[n.endPoint[0]+i[0],n.endPoint[1]+i[1]];return{startPoint:r,endPoint:a,palmLandmarks:n.palmLandmarks}}Hi.shiftBox=_H});var WI=Le(FI=>{const qe=zt(),MH=tf();class HH{constructor(n,t,e){this.model=n,this.width=e.inputSize,this.height=e.inputSize,this.anchors=t.map(i=>[i.x_center,i.y_center]),this.anchorsTensor=qe.tensor2d(this.anchors),this.inputSizeTensor=qe.tensor1d([e.inputSize,e.inputSize]),this.doubleInputSizeTensor=qe.tensor1d([e.inputSize*2,e.inputSize*2])}normalizeBoxes(n){return qe.tidy(()=>{const t=qe.slice(n,[0,0],[-1,2]),e=qe.slice(n,[0,2],[-1,2]),i=qe.add(qe.div(t,this.inputSizeTensor),this.anchorsTensor),r=qe.div(e,this.doubleInputSizeTensor),a=qe.mul(qe.sub(i,r),this.inputSizeTensor),s=qe.mul(qe.add(i,r),this.inputSizeTensor);return qe.concat2d([a,s],1)})}normalizeLandmarks(n,t){return qe.tidy(()=>{const e=qe.add(qe.div(n.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return qe.mul(e,this.inputSizeTensor)})}async getBoundingBoxes(n){const t=qe.tidy(()=>qe.mul(qe.sub(n,.5),2)),e=this.model.predict(t),i=e.squeeze(),r=qe.tidy(()=>qe.sigmoid(qe.slice(i,[0,0],[-1,1])).squeeze()),a=qe.slice(i,[0,1],[-1,4]),s=this.normalizeBoxes(a),o=await qe.image.nonMaxSuppressionAsync(s,r,this.maxHands,this.iouThreshold,this.scoreThreshold),l=await o.array(),u=[t,e,o,i,s,a,r];if(l.length===0)return u.forEach(h=>h.dispose()),null;const c=qe.tidy(()=>{const h=[];for(const d in l){const p=l[d],f=qe.slice(s,[p,0],[1,-1]),m=qe.slice(i,[p,5],[1,14]),g=qe.tidy(()=>this.normalizeLandmarks(m,p).reshape([-1,2]));h.push({boxes:f,palmLandmarks:g})}return h});return c}async estimateHandBounds(n,t){const e=n.shape[1],i=n.shape[2];this.iouThreshold=t.iouThreshold,this.scoreThreshold=t.scoreThreshold,this.maxHands=t.maxHands;const r=qe.tidy(()=>n.resizeBilinear([this.width,this.height]).div(255)),a=await this.getBoundingBoxes(r);if(r.dispose(),!a||a.length===0)return null;const s=[];for(const o in a){const l=a[o],u=await l.boxes.array(),c=u[0].slice(0,2),h=u[0].slice(2,4),d=await l.palmLandmarks.array();l.boxes.dispose(),l.palmLandmarks.dispose(),s.push(MH.scaleBoxCoordinates({startPoint:c,endPoint:h,palmLandmarks:d},[i/this.width,e/this.height]))}return s}}FI.HandDetector=HH});var BI=Le(UI=>{UI.MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]}});var HI=Le(Vi=>{function zI(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}Vi.normalizeRadians=zI;function VH(n,t){const e=Math.PI/2-Math.atan2(-(t[1]-n[1]),t[0]-n[0]);return zI(e)}Vi.computeRotation=VH;const PI=(n,t)=>[[1,0,n],[0,1,t],[0,0,1]];function Ta(n,t){let e=0;for(let i=0;i{const qI=zt(),jn=tf(),qi=HI(),jH=.8,KH=[0,-.4],$H=[0,-.1],XH=1.65,GI=[0,5,9,13,17,1,2],JH=0,ZH=2;class QH{constructor(n,t,e){this.regionsOfInterest=[],this.runsWithoutHandDetector=0,this.boundingBoxDetector=n,this.meshDetector=t,this.meshWidth=e.inputSize,this.meshHeight=e.inputSize,this.enlargeFactor=e.enlargeFactor}getBoxForPalmLandmarks(n,t){const e=n.map(r=>{const a=[...r,1];return qi.rotatePoint(a,t)}),i=this.calculateLandmarksBoundingBox(e);return jn.enlargeBox(jn.squarifyBox(jn.shiftBox(i,KH)),this.enlargeFactor)}getBoxForHandLandmarks(n){const t=this.calculateLandmarksBoundingBox(n),e=jn.enlargeBox(jn.squarifyBox(jn.shiftBox(t,$H)),XH),i=[];for(let r=0;r[a[0]*(d[0]-this.meshWidth/2),a[1]*(d[1]-this.meshHeight/2),d[2]]),o=qi.buildRotationMatrix(e,[0,0]),l=s.map(d=>{const p=qi.rotatePoint(d,o);return[...p,d[2]]}),u=qi.invertTransformMatrix(i),c=[...jn.getBoxCenter(t),1],h=[qi.dot(c,u[0]),qi.dot(c,u[1])];return l.map(d=>[d[0]+h[0],d[1]+h[1],d[2]])}async estimateHands(n,t){this.maxContinuousChecks=t.skipFrames,this.detectionConfidence=t.minConfidence,this.maxHands=t.maxHands;const e=this.shouldUpdateRegionsOfInterest();if(e===!0){const r=await this.boundingBoxDetector.estimateHandBounds(n,t);this.regionsOfInterest=[];for(const a in r)this.updateRegionsOfInterest(r[a],!0,a);this.runsWithoutHandDetector=0}else this.runsWithoutHandDetector++;const i=[];if(!this.regionsOfInterest)return i;for(const r in this.regionsOfInterest){const a=this.regionsOfInterest[r][0];if(!a)return i;const s=qi.computeRotation(a.palmLandmarks[JH],a.palmLandmarks[ZH]),o=jn.getBoxCenter(a),l=[o[0]/n.shape[2],o[1]/n.shape[1]],u=qI.image.rotateWithOffset(n,s,0,l),c=qi.buildRotationMatrix(-s,o),h=e?this.getBoxForPalmLandmarks(a.palmLandmarks,c):a,d=jn.cutBoxFromImageAndResize(h,u,[this.meshWidth,this.meshHeight]),p=d.div(255);d.dispose(),u.dispose();const f=this.meshDetector.predict(p),[m,g]=f;p.dispose();const v=m.dataSync()[0];if(m.dispose(),va[0]),e=n.map(a=>a[1]),i=[Math.min(...t),Math.min(...e)],r=[Math.max(...t),Math.max(...e)];return{startPoint:i,endPoint:r}}updateRegionsOfInterest(n,t,e){if(t)this.regionsOfInterest[e]=[n];else{const i=this.regionsOfInterest[e][0];let r=0;if(i!=null&&i.startPoint!=null){const[a,s]=n.startPoint,[o,l]=n.endPoint,[u,c]=i.startPoint,[h,d]=i.endPoint,p=Math.max(a,u),f=Math.max(s,c),m=Math.min(o,h),g=Math.min(l,d),v=(m-p)*(g-f),b=(o-a)*(l-s),w=(h-u)*(d-s);r=v/(b+w-v)}this.regionsOfInterest[e][0]=r>jH?i:n}}shouldUpdateRegionsOfInterest(){return!this.regionsOfInterest||this.regionsOfInterest.length===0||this.runsWithoutHandDetector>=this.maxContinuousChecks}}VI.HandPipeline=QH});var $I=Le(nf=>{const Rr=zt(),eV=WI(),jI=BI(),tV=YI();class KI{constructor(n){this.pipeline=n}async estimateHands(n,t){this.maxContinuousChecks=t.skipFrames,this.detectionConfidence=t.minConfidence,this.maxHands=t.maxHands;const e=Rr.tidy(()=>(n instanceof Rr.Tensor||(n=Rr.browser.fromPixels(n)),n.toFloat().expandDims(0))),i=await this.pipeline.estimateHands(e,t);e.dispose();const r=[];if(!i)return r;for(const a of i){if(!a)return[];const s={};for(const o of Object.keys(jI.MESH_ANNOTATIONS))s[o]=jI.MESH_ANNOTATIONS[o].map(l=>a.landmarks[l]);r.push({confidence:a.confidence||0,box:a.box?[a.box.topLeft[0],a.box.topLeft[1],a.box.bottomRight[0]-a.box.topLeft[0],a.box.bottomRight[1]-a.box.topLeft[1]]:0,landmarks:a.landmarks,annotations:s})}return r}}nf.HandPose=KI;async function nV(n){if(Rr.env().features.IS_NODE){const t=require("fs"),e=await t.readFileSync(n.replace("file://",""));return JSON.parse(e)}return Rr.util.fetch(n).then(t=>t.json())}async function iV(n){const[t,e,i]=await Promise.all([nV(n.detector.anchors),Rr.loadGraphModel(n.detector.modelPath,{fromTFHub:n.detector.modelPath.includes("tfhub.dev")}),Rr.loadGraphModel(n.skeleton.modelPath,{fromTFHub:n.skeleton.modelPath.includes("tfhub.dev")})]),r=new eV.HandDetector(e,t,n),a=new tV.HandPipeline(r,i,n),s=new KI(a);return s}nf.load=iV});var XI=Le(rV=>{Sl(rV,{default:()=>aV});var aV={backend:"webgl",console:!0,face:{enabled:!0,detector:{modelPath:"../models/blazeface/back/model.json",inputSize:256,maxFaces:10,skipFrames:10,minConfidence:.5,iouThreshold:.3,scoreThreshold:.7},mesh:{enabled:!0,modelPath:"../models/facemesh/model.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris/model.json",enlargeFactor:2.3,inputSize:64},age:{enabled:!0,modelPath:"../models/ssrnet-age/imdb/model.json",inputSize:64,skipFrames:10},gender:{enabled:!0,modelPath:"../models/ssrnet-gender/imdb/model.json"},emotion:{enabled:!0,inputSize:64,minConfidence:.5,skipFrames:10,useGrayscale:!0,modelPath:"../models/emotion/model.json"}},body:{enabled:!0,modelPath:"../models/posenet/model.json",inputResolution:257,outputStride:16,maxDetections:5,scoreThreshold:.7,nmsRadius:20},hand:{enabled:!0,inputSize:256,skipFrames:10,minConfidence:.5,iouThreshold:.3,scoreThreshold:.7,enlargeFactor:1.65,maxHands:2,detector:{anchors:"../models/handdetect/anchors.json",modelPath:"../models/handdetect/model.json"},skeleton:{modelPath:"../models/handskeleton/model.json"}}}});var ZI=Le((XV,JI)=>{JI.exports={name:"@vladmandic/human",version:"0.3.3",description:"human: 3D Face Detection, Iris Tracking and Age & Gender Prediction",sideEffects:!1,main:"dist/human-nobundle.cjs",module:"dist/human.esm.js",browser:"dist/human.esm.js",author:"Vladimir Mandic ",bugs:{url:"https://github.com/vladmandic/human/issues"},homepage:"https://github.com/vladmandic/human#readme",license:"MIT",engines:{node:">=14.0.0"},repository:{type:"git",url:"git+https://github.com/vladmandic/human.git"},dependencies:{},peerDependencies:{},devDependencies:{"@tensorflow/tfjs":"^2.6.0","@tensorflow/tfjs-node":"^2.6.0",esbuild:"^0.7.15",eslint:"^7.10.0","eslint-config-airbnb-base":"^14.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1",rimraf:"^3.0.2"},scripts:{start:"node --trace-warnings --trace-uncaught --no-deprecation demo/demo-node.js",lint:"eslint src/*.js demo/*.js","build-iife":"esbuild --bundle --platform=browser --sourcemap --target=esnext --format=iife --minify --external:fs --global-name=human --outfile=dist/human.js src/index.js","build-esm-bundle":"esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:fs --outfile=dist/human.esm.js src/index.js","build-esm-nobundle":"esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:@tensorflow --external:fs --outfile=dist/human.esm-nobundle.js src/index.js","build-node-bundle":"esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --minify --outfile=dist/human.cjs src/index.js","build-node-nobundle":"esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --external:@tensorflow --outfile=dist/human-nobundle.cjs src/index.js",build:"rimraf dist/* && npm run build-iife && npm run build-esm-bundle && npm run build-esm-nobundle && npm run build-node-bundle && npm run build-node-nobundle && ls -l dist/",update:"npm update --depth 20 && npm dedupe && npm prune && npm audit"},keywords:["tensorflowjs","face-detection","face-geometry","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition"]}});const jt=zt(),QI=eI(),bl=nI(),e2=aI(),t2=kI(),n2=$I(),i2=XI().default,sV=ZI();let Pe;const kt={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},Kn=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3),wl=(...n)=>{Pe.console&&console.log(...n)};function r2(...n){const t=e=>e&&typeof e=="object";return n.reduce((e,i)=>(Object.keys(i||{}).forEach(r=>{const a=e[r],s=i[r];Array.isArray(a)&&Array.isArray(s)?e[r]=a.concat(...s):t(a)&&t(s)?e[r]=r2(a,s):e[r]=s}),e),{})}function oV(n){if(!n)return"input is not defined";const t=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0;if(!t||t===0)return"input is empty";if(n.readyState&&n.readyState<=2)return"input is not ready";try{jt.getBackend()}catch{return"backend not loaded"}return null}async function lV(n,t){Pe=r2(i2,t);const e=oV(n);return e?(wl(e,n),{error:e}):new Promise(async i=>{const r=Object.values(kt).filter(h=>h).length;r===0&&wl("Human library starting"),jt.getBackend()!==Pe.backend&&(wl("Human library setting backend:",Pe.backend),await jt.setBackend(Pe.backend),await jt.ready());let a;jt.getBackend()==="webgl"&&(a=jt.env().get("WEBGL_PACK_DEPTHWISECONV"),jt.env().set("WEBGL_PACK_DEPTHWISECONV",!0)),Pe.face.enabled&&!kt.facemesh&&(kt.facemesh=await QI.load(Pe.face)),Pe.body.enabled&&!kt.posenet&&(kt.posenet=await t2.load(Pe.body)),Pe.hand.enabled&&!kt.handpose&&(kt.handpose=await n2.load(Pe.hand)),Pe.face.enabled&&Pe.face.age.enabled&&!kt.age&&(kt.age=await bl.loadAge(Pe)),Pe.face.enabled&&Pe.face.gender.enabled&&!kt.gender&&(kt.gender=await bl.loadGender(Pe)),Pe.face.enabled&&Pe.face.emotion.enabled&&!kt.emotion&&(kt.emotion=await e2.load(Pe));const s={};let o;o=Kn(),jt.engine().startScope();const l=Pe.body.enabled?await kt.posenet.estimatePoses(n,Pe.body):[];jt.engine().endScope(),s.body=Math.trunc(Kn()-o),o=Kn(),jt.engine().startScope();const u=Pe.hand.enabled?await kt.handpose.estimateHands(n,Pe.hand):[];jt.engine().endScope(),s.hand=Math.trunc(Kn()-o);const c=[];if(Pe.face.enabled){o=Kn(),jt.engine().startScope();const h=await kt.facemesh.estimateFaces(n,Pe.face);s.face=Math.trunc(Kn()-o);for(const d of h){if(!d.image||d.image.isDisposedInternal){wl("face object is disposed:",d.image);continue}o=Kn();const p=Pe.face.age.enabled||Pe.face.gender.enabled?await bl.predict(d.image,Pe):{};s.agegender=Math.trunc(Kn()-o),o=Kn();const f=Pe.face.emotion.enabled?await e2.predict(d.image,Pe):{};s.emotion=Math.trunc(Kn()-o),d.image.dispose();const m=d.annotations.leftEyeIris&&d.annotations.rightEyeIris?Math.max(d.annotations.leftEyeIris[3][0]-d.annotations.leftEyeIris[1][0],d.annotations.rightEyeIris[3][0]-d.annotations.rightEyeIris[1][0]):0;c.push({confidence:d.confidence,box:d.box,mesh:d.mesh,annotations:d.annotations,age:p.age,gender:p.gender,emotion:f,iris:m!==0?Math.trunc(100*11.7/m)/100:0})}jt.engine().endScope()}jt.env().set("WEBGL_PACK_DEPTHWISECONV",a),s.total=Object.values(s).reduce((h,d)=>h+d),i({face:c,body:l,hand:u,performance:s})})}exports.detect=lV;exports.defaults=i2;exports.config=Pe;exports.models=kt;exports.facemesh=QI;exports.ssrnet=bl;exports.posenet=t2;exports.handpose=n2;exports.tf=jt;exports.version=sV.version; +`,Y8=dl(G8),j8={kernelName:x.Sin,backendName:"webgl",kernelFunc:Y8};var K8="return x * x;",$8=dl(K8),X8={kernelName:x.Square,backendName:"webgl",kernelFunc:$8};var DL="return (a - b) * (a - b);",J8=Tp(DL,DL),Z8={kernelName:x.SquaredDifference,backendName:"webgl",kernelFunc:J8};var Q8="return tan(x);",e7=dl(Q8),t7={kernelName:x.Tan,backendName:"webgl",kernelFunc:e7};var n7={kernelName:x.Transpose,backendName:"webgl",kernelFunc:function(n){for(var t=n.inputs,e=n.attrs,i=n.backend,r=t.x,a=e.perm,s=i,o=r.shape.length,l=new Array(o),u=0;u{"use strict";Object.defineProperty(Nr,"__esModule",{value:!0});var Rp=lr(),Op=Ow(),Ep=Gw(),WL=h0(),o7=Z0(),l7=FL();var u7="2.6.0";var c7={"tfjs-core":Rp.version_core,"tfjs-backend-cpu":o7.version_cpu,"tfjs-backend-webgl":l7.version_webgl,"tfjs-data":WL.version_data,"tfjs-layers":Op.version_layers,"tfjs-converter":Ep.version_converter,tfjs:u7};Object.keys(Rp).forEach(function(n){n!=="default"&&Object.defineProperty(Nr,n,{enumerable:!0,get:function(){return Rp[n]}})});Object.keys(Op).forEach(function(n){n!=="default"&&Object.defineProperty(Nr,n,{enumerable:!0,get:function(){return Op[n]}})});Object.keys(Ep).forEach(function(n){n!=="default"&&Object.defineProperty(Nr,n,{enumerable:!0,get:function(){return Ep[n]}})});Nr.data=WL;Nr.version=c7});var _L=Le(pl=>{const ke=zt(),UL=6;function h7(n){const t={strides:[n/16,n/8],anchors:[2,6]},e=[];for(let i=0;i{n.startEndTensor.dispose(),n.startPoint.dispose(),n.endPoint.dispose()},zL=n=>({startEndTensor:n,startPoint:ke.slice(n,[0,0],[-1,2]),endPoint:ke.slice(n,[0,2],[-1,2])}),d7=(n,t)=>{const e=ke.mul(n.startPoint,t),i=ke.mul(n.endPoint,t),r=ke.concat2d([e,i],1);return zL(r)};function p7(n,t,e){const i=ke.slice(n,[0,1],[-1,2]),r=ke.add(i,t),a=ke.slice(n,[0,3],[-1,2]),s=ke.div(a,e),o=ke.div(r,e),l=ke.div(s,2),u=ke.sub(o,l),c=ke.add(o,l),h=ke.mul(u,e),d=ke.mul(c,e),p=1;return ke.concat2d([h,d],p)}function f7(n,t){return ke.tidy(()=>{const e=n.box?n.box:n;return d7(e,t).startEndTensor.squeeze()})}class PL{constructor(n,t){this.blazeFaceModel=n,this.width=t.detector.inputSize,this.height=t.detector.inputSize,this.maxFaces=t.detector.maxFaces,this.anchorsData=h7(t.detector.inputSize),this.anchors=ke.tensor2d(this.anchorsData),this.inputSize=ke.tensor1d([this.width,this.height]),this.iouThreshold=t.detector.iouThreshold,this.scaleFaces=.8,this.scoreThreshold=t.detector.scoreThreshold}async getBoundingBoxes(n){if(!n||n.isDisposedInternal||n.shape.length!==4||n.shape[1]<1||n.shape[2]<1)return null;const[t,e,i]=ke.tidy(()=>{const l=n.resizeBilinear([this.width,this.height]),u=ke.mul(ke.sub(l.div(255),.5),2),c=this.blazeFaceModel.predict(u);let h;if(Array.isArray(c)){const m=c.sort((w,S)=>w.size-S.size),g=ke.concat([m[0],m[2]],2),v=ke.concat([m[1],m[3]],2),b=ke.concat([v,g],1);h=b.squeeze(0)}else h=c.squeeze();const d=p7(h,this.anchors,this.inputSize),p=ke.slice(h,[0,0],[-1,1]),f=ke.sigmoid(p).squeeze();return[h,d,f]}),r=await ke.image.nonMaxSuppressionAsync(e,i,this.maxFaces,this.iouThreshold,this.scoreThreshold),a=await r.array();r.dispose();let s=a.map(l=>ke.slice(e,[l,0],[1,-1]));s=await Promise.all(s.map(async l=>{const u=await l.array();return l.dispose(),u}));const o=[];for(let l=0;l{const h=zL(u),d=a[l],p=this.anchorsData[d],f=ke.slice(t,[d,UL-1],[1,-1]).squeeze().reshape([UL,-1]),m=ke.slice(i,[d],[1]);return{box:h,landmarks:f,probability:m,anchor:p}});o.push(c)}return e.dispose(),i.dispose(),t.dispose(),{boxes:o,scaleFactor:[n.shape[2]/this.width,n.shape[1]/this.height]}}async estimateFaces(n){const t=ke.tidy(()=>(n instanceof ke.Tensor||(n=ke.browser.fromPixels(n)),n.toFloat().expandDims(0))),{boxes:e,scaleFactor:i}=await this.getBoundingBoxes(t);return t.dispose(),Promise.all(e.map(async r=>{const a=f7(r,i),[s,o,l]=await Promise.all([r.landmarks,a,r.probability].map(async f=>f.array())),u=r.anchor,[c,h]=i,d=s.map(f=>[(f[0]+u[0])*c,(f[1]+u[1])*h]),p={topLeft:o.slice(0,2),bottomRight:o.slice(2),landmarks:d,probability:l};return BL(r.box),r.landmarks.dispose(),r.probability.dispose(),a.dispose(),p}))}}async function m7(n){const t=await ke.loadGraphModel(n.detector.modelPath,{fromTFHub:n.detector.modelPath.includes("tfhub.dev")}),e=new PL(t,n);return e}pl.load=m7;pl.BlazeFaceModel=PL;pl.disposeBox=BL});var kp=Le(Dp=>{Dp.MESH_ANNOTATIONS={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]};Dp.MESH_TO_IRIS_INDICES_MAP=[{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]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}]});var ML=Le(xr=>{const g7=zt();function v7(n,t){const e=[n.startPoint[0]*t[0],n.startPoint[1]*t[1]],i=[n.endPoint[0]*t[0],n.endPoint[1]*t[1]];return{startPoint:e,endPoint:i}}xr.scaleBoxCoordinates=v7;function Fp(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}xr.getBoxSize=Fp;function Wp(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}xr.getBoxCenter=Wp;function y7(n,t,e){const i=t.shape[1],r=t.shape[2],a=[[n.startPoint[1]/i,n.startPoint[0]/r,n.endPoint[1]/i,n.endPoint[0]/r]];return g7.image.cropAndResize(t,a,[0],e)}xr.cutBoxFromImageAndResize=y7;function b7(n,t=1.5){const e=Wp(n),i=Fp(n),r=[t*i[0]/2,t*i[1]/2],a=[e[0]-r[0],e[1]-r[1]],s=[e[0]+r[0],e[1]+r[1]];return{startPoint:a,endPoint:s,landmarks:n.landmarks}}xr.enlargeBox=b7;function w7(n){const t=Wp(n),e=Fp(n),i=Math.max(...e),r=i/2,a=[t[0]-r,t[1]-r],s=[t[0]+r,t[1]+r];return{startPoint:a,endPoint:s,landmarks:n.landmarks}}xr.squarifyBox=w7});var YL=Le(Cn=>{Cn.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function HL(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}Cn.normalizeRadians=HL;function S7(n,t){const e=Math.PI/2-Math.atan2(-(t[1]-n[1]),t[0]-n[0]);return HL(e)}Cn.computeRotation=S7;function L7(n){return n*180/Math.PI}Cn.radToDegrees=L7;function VL(n,t){return[[1,0,n],[0,1,t],[0,0,1]]}function La(n,t){let e=0;for(let i=0;i{const Bi=zt(),Yn=ML(),zi=kp(),Pi=YL(),x7=468,C7=.25,R7=13,O7=[R7,zi.MESH_ANNOTATIONS.midwayBetweenEyes[0]],E7=3,D7=2,k7=[E7,D7],Up=zi.MESH_ANNOTATIONS.leftEyeLower0,Bp=[Up[0],Up[Up.length-1]],zp=zi.MESH_ANNOTATIONS.rightEyeLower0,Pp=[zp[0],zp[zp.length-1]],F7=3,W7=4,U7=71,_p=76;function fl(n,t,e,i){for(let r=0;r[a[0]*(d[0]-this.meshWidth/2),a[1]*(d[1]-this.meshHeight/2),d[2]]),o=Pi.buildRotationMatrix(e,[0,0]),l=s.map(d=>[...Pi.rotatePoint(d,o),d[2]]),u=Pi.invertTransformMatrix(i),c=[...Yn.getBoxCenter({startPoint:t.startPoint,endPoint:t.endPoint}),1],h=[Pi.dot(c,u[0]),Pi.dot(c,u[1])];return l.map(d=>[d[0]+h[0],d[1]+h[1],d[2]])}getLeftToRightEyeDepthDifference(n){const t=n[Bp[0]][2],e=n[Pp[0]][2];return t-e}getEyeBox(n,t,e,i,r=!1){const a=Yn.squarifyBox(Yn.enlargeBox(this.calculateLandmarksBoundingBox([n[e],n[i]]),this.irisEnlarge)),s=Yn.getBoxSize(a);let o=Bi.image.cropAndResize(t,[[a.startPoint[1]/this.meshHeight,a.startPoint[0]/this.meshWidth,a.endPoint[1]/this.meshHeight,a.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return r&&(o=Bi.image.flipLeftRight(o)),{box:a,boxSize:s,crop:o}}getEyeCoords(n,t,e,i=!1){const r=[];for(let a=0;a<_p;a++){const s=n[a*3],o=n[a*3+1],l=n[a*3+2];r.push([(i?1-s/this.irisSize:s/this.irisSize)*e[0]+t.startPoint[0],o/this.irisSize*e[1]+t.startPoint[1],l])}return{rawCoords:r,iris:r.slice(U7)}}getAdjustedIrisCoords(n,t,e){const i=n[zi.MESH_ANNOTATIONS[`${e}EyeUpper0`][F7]][2],r=n[zi.MESH_ANNOTATIONS[`${e}EyeLower0`][W7]][2],a=(i+r)/2;return t.map((s,o)=>{let l=a;return o===2?l=i:o===4&&(l=r),[s[0],s[1],l]})}async predict(n,t){if(this.skipFrames=t.detector.skipFrames,this.maxFaces=t.detector.maxFaces,this.shouldUpdateRegionsOfInterest()){const{boxes:i,scaleFactor:r}=await this.boundingBoxDetector.getBoundingBoxes(n);if(i.length===0)return this.regionsOfInterest=[],null;const a=i.map(s=>{const o={startPoint:s.box.startPoint.squeeze().arraySync(),endPoint:s.box.endPoint.squeeze().arraySync()};s.box.startPoint.dispose(),s.box.endPoint.dispose();const l=Yn.scaleBoxCoordinates(o,r),u=Yn.enlargeBox(l),c=s.landmarks.arraySync();return s.landmarks.dispose(),s.probability.dispose(),{...u,landmarks:c}});this.updateRegionsOfInterest(a),this.runsWithoutFaceDetector=0}else this.runsWithoutFaceDetector++;const e=Bi.tidy(()=>this.regionsOfInterest.map((i,r)=>{let a=0;const s=i.landmarks.length>=x7;let[o,l]=O7;s===!1&&([o,l]=k7),a=Pi.computeRotation(i.landmarks[o],i.landmarks[l]);const u=Yn.getBoxCenter({startPoint:i.startPoint,endPoint:i.endPoint}),c=[u[0]/n.shape[2],u[1]/n.shape[1]];let h=n,d=Pi.IDENTITY_MATRIX;a!==0&&(h=Bi.image.rotateWithOffset(n,a,0,c),d=Pi.buildRotationMatrix(-a,u));const p={startPoint:i.startPoint,endPoint:i.endPoint},f=Yn.cutBoxFromImageAndResize(p,h,[this.meshHeight,this.meshWidth]).div(255),[,m,g]=this.meshDetector.predict(f),v=Bi.reshape(g,[-1,3]);let b=v.arraySync();if(t.iris.enabled){const{box:N,boxSize:C,crop:R}=this.getEyeBox(b,f,Bp[0],Bp[1],!0),{box:D,boxSize:k,crop:W}=this.getEyeBox(b,f,Pp[0],Pp[1]),F=this.irisModel.predict(Bi.concat([R,W])),P=F.dataSync();F.dispose();const H=P.slice(0,_p*3),{rawCoords:_,iris:j}=this.getEyeCoords(H,N,C,!0),K=P.slice(_p*3),{rawCoords:q,iris:G}=this.getEyeCoords(K,D,k),Z=this.getLeftToRightEyeDepthDifference(b);Math.abs(Z)<30?(fl(b,_,"left"),fl(b,q,"right")):Z<1?fl(b,_,"left",["EyeUpper0","EyeLower0"]):fl(b,q,"right",["EyeUpper0","EyeLower0"]);const X=this.getAdjustedIrisCoords(b,j,"left"),ee=this.getAdjustedIrisCoords(b,G,"right");b=b.concat(X).concat(ee)}const w=this.transformRawCoords(b,i,a,d);Bi.dispose(b);const S=Yn.enlargeBox(this.calculateLandmarksBoundingBox(w));if(t.mesh.enabled){const N=Bi.tensor2d(w);this.regionsOfInterest[r]={...S,landmarks:N.arraySync()};const C={coords:N,box:S,confidence:m.squeeze(),image:f};return C}const L={coords:null,box:S,confidence:m.squeeze(),image:f};return L}));return e}updateRegionsOfInterest(n){for(let t=0;t=this.skipFrames}calculateLandmarksBoundingBox(n){const t=n.map(a=>a[0]),e=n.map(a=>a[1]),i=[Math.min(...t),Math.min(...e)],r=[Math.max(...t),Math.max(...e)];return{startPoint:i,endPoint:r}}}jL.Pipeline=B7});var XL=Le($L=>{$L.UV_COORDS=[[.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]]});var JL=Le(z7=>{Ll(z7,{default:()=>P7});var P7=[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 eI=Le(Ns=>{const Cr=zt(),_7=_L(),ZL=kp(),M7=KL(),H7=XL(),V7=JL().default;class QL{constructor(n,t,e,i){this.pipeline=new M7.Pipeline(n,t,e,i),i&&(this.config=i)}async estimateFaces(n,t){t&&(this.config=t);const e=Cr.tidy(()=>(n instanceof Cr.Tensor||(n=Cr.browser.fromPixels(n)),n.toFloat().expandDims(0))),i=await this.pipeline.predict(e,t);Cr.dispose(e);const r=[];for(const a of i||[]){const s=a.confidence.arraySync();if(s>=this.config.detector.minConfidence){const o=a.coords?a.coords.arraySync():null,l={};if(o&&o.length>0)for(const u in ZL.MESH_ANNOTATIONS)(this.config.iris.enabled||u.includes("Iris")===!1)&&(l[u]=ZL.MESH_ANNOTATIONS[u].map(c=>o[c]));r.push({confidence:s||0,box:a.box?[a.box.startPoint[0],a.box.startPoint[1],a.box.endPoint[0]-a.box.startPoint[0],a.box.endPoint[1]-a.box.startPoint[1]]:0,mesh:o,annotations:l,image:a.image?Cr.clone(a.image):null})}a.confidence.dispose(),a.image.dispose()}return r}}async function q7(n){const t=await Promise.all([_7.load(n),Cr.loadGraphModel(n.mesh.modelPath,{fromTFHub:n.mesh.modelPath.includes("tfhub.dev")}),Cr.loadGraphModel(n.iris.modelPath,{fromTFHub:n.iris.modelPath.includes("tfhub.dev")})]),e=new QL(t[0],t[1],t[2],n);return e}Ns.load=q7;Ns.MediaPipeFaceMesh=QL;Ns.uv_coords=H7;Ns.triangulation=V7});var nI=Le(ml=>{const ln=zt(),_i={};let tI={age:0,gender:""},gl=0;async function G7(n,t){const e=ln.browser.fromPixels(n),i=ln.image.resizeBilinear(e,[t,t]),r=ln.cast(ln.expandDims(i,0),"float32");return r}async function Y7(n){return _i.age||(_i.age=await ln.loadGraphModel(n.face.age.modelPath)),_i.age}async function j7(n){return _i.gender||(_i.gender=await ln.loadGraphModel(n.face.gender.modelPath)),_i.gender}async function K7(n,t){if(gl>t.face.age.skipFrames?gl=0:gl+=1,gl===0)return tI;let e;if(n instanceof ln.Tensor){const r=ln.image.resizeBilinear(n,[t.face.age.inputSize,t.face.age.inputSize],!1);e=ln.mul(r,[255]),ln.dispose(r)}else e=await G7(n,t.face.age.inputSize);const i={};if(t.face.age.enabled){const r=await _i.age.predict(e),a=await r.data();i.age=Math.trunc(10*a[0])/10,ln.dispose(r)}if(t.face.gender.enabled){const r=await _i.gender.predict(e),a=await r.data(),s=Math.trunc(Math.abs(1.9*100*(a[0]-.5)))/100;s>t.face.gender.minConfidence&&(i.gender=a[0]<=.5?"female":"male",i.confidence=s),ln.dispose(r)}return ln.dispose(e),tI=i,i}ml.predict=K7;ml.loadAge=Y7;ml.loadGender=j7});var aI=Le(Mp=>{const Pt=zt(),$7=["angry","discust","fear","happy","sad","surpise","neutral"],vl={};let iI=[],Hp=0;const rI=1.5;function X7(n,t){const e=Pt.tidy(()=>{const i=Pt.browser.fromPixels(n,1),r=Pt.image.resizeBilinear(i,[t,t]),a=Pt.cast(Pt.expandDims(r,0),"float32");return a});return e}async function J7(n){return vl.emotion||(vl.emotion=await Pt.loadGraphModel(n.face.emotion.modelPath)),vl.emotion}async function Z7(n,t){if(Hp+=1,Hp>=t.face.emotion.skipFrames)return Hp=0,iI;const e=Pt.tidy(()=>{if(n instanceof Pt.Tensor){const r=Pt.image.resizeBilinear(n,[t.face.emotion.inputSize,t.face.emotion.inputSize],!1),[a,s,o]=Pt.split(r,3,3);if(t.face.emotion.useGrayscale){const l=Pt.mul(a,[.2989]),u=Pt.mul(s,[.587]),c=Pt.mul(o,[.114]),h=Pt.addN([l,u,c]);return h}return s}return X7(n,t.face.emotion.inputSize)}),i=[];if(t.face.emotion.enabled){const r=await vl.emotion.predict(e),a=await r.data();for(let s=0;st.face.emotion.minConfidence&&i.push({score:Math.min(.99,Math.trunc(100*rI*a[s])/100),emotion:$7[s]});i.sort((s,o)=>o.score-s.score),Pt.dispose(r)}return Pt.dispose(e),iI=i,i}Mp.predict=Z7;Mp.load=J7});var lI=Le(sI=>{const oI=zt();class Q7{constructor(n,t){this.model=n,this.outputStride=t;const e=this.model.inputs[0].shape;oI.util.assert(e[1]===-1&&e[2]===-1,()=>`Input shape [${e[1]}, ${e[2]}] must both be equal to or -1`)}predict(n){return oI.tidy(()=>{const t=this.preprocessInput(n.toFloat()),e=t.expandDims(0),i=this.model.predict(e),r=i.map(s=>s.squeeze([0])),a=this.nameOutputResults(r);return{heatmapScores:a.heatmap.sigmoid(),offsets:a.offsets,displacementFwd:a.displacementFwd,displacementBwd:a.displacementBwd}})}dispose(){this.model.dispose()}}sI.BaseModel=Q7});var Vp=Le(uI=>{const cI=zt(),eH=lI();class tH extends eH.BaseModel{preprocessInput(n){return cI.tidy(()=>cI.div(n,127.5).sub(1))}nameOutputResults(n){const[t,e,i,r]=n;return{offsets:t,heatmap:e,displacementFwd:i,displacementBwd:r}}}uI.MobileNet=tH});var dI=Le(hI=>{function qp(n){return Math.floor(n/2)}class nH{constructor(n,t){this.priorityQueue=new Array(n),this.numberOfElements=-1,this.getElementValue=t}enqueue(n){this.priorityQueue[++this.numberOfElements]=n,this.swim(this.numberOfElements)}dequeue(){const n=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,n}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(n){for(;n>0&&this.less(qp(n),n);)this.exchange(n,qp(n)),n=qp(n)}sink(n){for(;2*n<=this.numberOfElements;){let t=2*n;if(t{const iH=dI();function rH(n,t,e,i,r,a){const[s,o]=a.shape;let l=!0;const u=Math.max(e-r,0),c=Math.min(e+r+1,s);for(let h=u;ht){l=!1;break}if(!l)break}return l}function aH(n,t,e){const[i,r,a]=e.shape,s=new iH.MaxHeap(i*r*a,({score:o})=>o);for(let o=0;o{Rn.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];Rn.NUM_KEYPOINTS=Rn.partNames.length;Rn.partIds=Rn.partNames.reduce((n,t,e)=>(n[t]=e,n),{});const sH=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];Rn.poseChain=[["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"]];Rn.connectedPartIndices=sH.map(([n,t])=>[Rn.partIds[n],Rn.partIds[t]]);Rn.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});var Yp=Le(Mi=>{const oH=xs();function mI(n,t,e,i){return{y:i.get(n,t,e),x:i.get(n,t,e+oH.NUM_KEYPOINTS)}}Mi.getOffsetPoint=mI;function lH(n,t,e){const{heatmapY:i,heatmapX:r,id:a}=n,{y:s,x:o}=mI(i,r,a,e);return{x:n.heatmapX*t+o,y:n.heatmapY*t+s}}Mi.getImageCoords=lH;function uH(n,t){const e=new Array(t);for(let i=0;ie?e:n}Mi.clamp=Gp;function cH(n,t,e,i){const r=e-n,a=i-t;return r*r+a*a}Mi.squaredDistance=cH;function hH(n,t){return{x:n.x+t.x,y:n.y+t.y}}Mi.addVectors=hH;function dH(n,t,e){return{y:Gp(n.y,t,e),x:Gp(n.x,t,e)}}Mi.clampVector=dH});var wI=Le(gI=>{const Cs=xs(),Ia=Yp(),vI=Cs.poseChain.map(([n,t])=>[Cs.partIds[n],Cs.partIds[t]]),jp=vI.map(([,n])=>n),yI=vI.map(([n])=>n);function pH(n,t,e){const i=e.shape[2]/2;return{y:e.get(t.y,t.x,n),x:e.get(t.y,t.x,i+n)}}function Kp(n,t,e,i){return{y:Ia.clamp(Math.round(n.y/t),0,e-1),x:Ia.clamp(Math.round(n.x/t),0,i-1)}}function bI(n,t,e,i,r,a,s,o=2){const[l,u]=i.shape,c=Kp(t.position,a,l,u),h=pH(n,c,s),d=Ia.addVectors(t.position,h);let p=d;for(let g=0;g=0;--d){const p=jp[d],f=yI[d];l[p]&&!l[f]&&(l[f]=bI(d,l[p],f,t,e,i,a))}for(let d=0;d{const mH=fI(),gH=wI(),LI=Yp();function II(n,t,{x:e,y:i},r){return n.some(({keypoints:a})=>{const s=a[r].position;return LI.squaredDistance(i,e,s.y,s.x)<=t})}function vH(n,t,e){const i=e.reduce((r,{position:a,score:s},o)=>(II(n,t,a,o)||(r+=s),r),0);return i/e.length}const yH=1;function bH(n,t,e,i,r,a,s=.5,o=20){const l=[],u=mH.buildPartWithScoreQueue(s,yH,n),c=o*o;for(;l.length{const Aa=zt(),wH=xs();function SH(n,t,e){return n(SH(n[i].score,n[r].score,t)||e.push([n[i],n[r]]),e),[])}mn.getAdjacentKeyPoints=LH;const{NEGATIVE_INFINITY:AI,POSITIVE_INFINITY:TI}=Number;function NI(n){return n.reduce(({maxX:t,maxY:e,minX:i,minY:r},{position:{x:a,y:s}})=>({maxX:Math.max(t,a),maxY:Math.max(e,s),minX:Math.min(i,a),minY:Math.min(r,s)}),{maxX:AI,maxY:AI,minX:TI,minY:TI})}mn.getBoundingBox=NI;function IH(n){const{minX:t,minY:e,maxX:i,maxY:r}=NI(n);return[{x:t,y:e},{x:i,y:e},{x:i,y:r},{x:t,y:r}]}mn.getBoundingBoxPoints=IH;async function AH(n){return Promise.all(n.map(t=>t.buffer()))}mn.toTensorBuffers3D=AH;function xI(n,t,e,i=0,r=0){return{score:n.score,keypoints:n.keypoints.map(({score:a,part:s,position:o})=>({score:a,part:s,position:{x:o.x*e+r,y:o.y*t+i}}))}}mn.scalePose=xI;function CI(n,t,e,i=0,r=0){return e===1&&t===1&&i===0&&r===0?n:n.map(a=>xI(a,t,e,i,r))}mn.scalePoses=CI;function RI(n){return n instanceof Aa.Tensor?[n.shape[0],n.shape[1]]:[n.height,n.width]}mn.getInputTensorDimensions=RI;function Xp(n){return n instanceof Aa.Tensor?n:Aa.browser.fromPixels(n)}mn.toInputTensor=Xp;function TH(n,t,e){return Aa.tidy(()=>{const i=Xp(n);return i.resizeBilinear([t,e])})}mn.toResizedInputTensor=TH;function NH(n,[t,e]){const[i,r]=RI(n),a=e/t,s=r/i;let[o,l,u,c]=[0,0,0,0];s{let d=Xp(n);return d=Aa.pad3d(d,[[o,l],[u,c],[0,0]]),d.resizeBilinear([t,e])});return{resized:h,padding:{top:o,left:u,right:c,bottom:l}}}mn.padAndResizeTo=NH;function xH(n,[t,e],[i,r],a){const s=(t+a.top+a.bottom)/i,o=(e+a.left+a.right)/r,l=CI(n,s,o,-a.top,-a.left);return l}mn.scaleAndFlipPoses=xH});var EI=Le(Zp=>{const CH=zt(),RH=Vp(),OH=$p(),yl=Jp();class OI{constructor(n){this.baseModel=n}async estimatePoses(n,t){const e=t.outputStride,[i,r]=yl.getInputTensorDimensions(n),{resized:a,padding:s}=yl.padAndResizeTo(n,[t.inputResolution,t.inputResolution]),{heatmapScores:o,offsets:l,displacementFwd:u,displacementBwd:c}=this.baseModel.predict(a),h=await yl.toTensorBuffers3D([o,l,u,c]),d=h[0],p=h[1],f=h[2],m=h[3],g=await OH.decodeMultiplePoses(d,p,f,m,e,t.maxDetections,t.scoreThreshold,t.nmsRadius),v=yl.scaleAndFlipPoses(g,[i,r],[t.inputResolution,t.inputResolution],s);return o.dispose(),l.dispose(),u.dispose(),c.dispose(),a.dispose(),v}dispose(){this.baseModel.dispose()}}Zp.PoseNet=OI;async function EH(n){const t=await CH.loadGraphModel(n.modelPath),e=new RH.MobileNet(t,n.outputStride);return new OI(e)}async function DH(n){return EH(n)}Zp.load=DH});var kI=Le(en=>{const kH=Vp(),DI=EI(),FH=$p(),bl=xs(),Rs=Jp();en.load=DI.load;en.PoseNet=DI.PoseNet;en.MobileNet=kH.MobileNet;en.decodeMultiplePoses=FH.decodeMultiplePoses;en.partChannels=bl.partChannels;en.partIds=bl.partIds;en.partNames=bl.partNames;en.poseChain=bl.poseChain;en.getAdjacentKeyPoints=Rs.getAdjacentKeyPoints;en.getBoundingBox=Rs.getBoundingBox;en.getBoundingBoxPoints=Rs.getBoundingBoxPoints;en.scaleAndFlipPoses=Rs.scaleAndFlipPoses;en.scalePose=Rs.scalePose});var tf=Le(Hi=>{const WH=zt();function Qp(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}Hi.getBoxSize=Qp;function ef(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}Hi.getBoxCenter=ef;function UH(n,t,e){const i=t.shape[1],r=t.shape[2],a=[[n.startPoint[1]/i,n.startPoint[0]/r,n.endPoint[1]/i,n.endPoint[0]/r]];return WH.image.cropAndResize(t,a,[0],e)}Hi.cutBoxFromImageAndResize=UH;function BH(n,t){const e=[n.startPoint[0]*t[0],n.startPoint[1]*t[1]],i=[n.endPoint[0]*t[0],n.endPoint[1]*t[1]],r=n.palmLandmarks.map(a=>{const s=[a[0]*t[0],a[1]*t[1]];return s});return{startPoint:e,endPoint:i,palmLandmarks:r}}Hi.scaleBoxCoordinates=BH;function zH(n,t=1.5){const e=ef(n),i=Qp(n),r=[t*i[0]/2,t*i[1]/2],a=[e[0]-r[0],e[1]-r[1]],s=[e[0]+r[0],e[1]+r[1]];return{startPoint:a,endPoint:s,palmLandmarks:n.palmLandmarks}}Hi.enlargeBox=zH;function PH(n){const t=ef(n),e=Qp(n),i=Math.max(...e),r=i/2,a=[t[0]-r,t[1]-r],s=[t[0]+r,t[1]+r];return{startPoint:a,endPoint:s,palmLandmarks:n.palmLandmarks}}Hi.squarifyBox=PH;function _H(n,t){const e=[n.endPoint[0]-n.startPoint[0],n.endPoint[1]-n.startPoint[1]],i=[e[0]*t[0],e[1]*t[1]],r=[n.startPoint[0]+i[0],n.startPoint[1]+i[1]],a=[n.endPoint[0]+i[0],n.endPoint[1]+i[1]];return{startPoint:r,endPoint:a,palmLandmarks:n.palmLandmarks}}Hi.shiftBox=_H});var WI=Le(FI=>{const qe=zt(),MH=tf();class HH{constructor(n,t,e){this.model=n,this.width=e.inputSize,this.height=e.inputSize,this.anchors=t.map(i=>[i.x_center,i.y_center]),this.anchorsTensor=qe.tensor2d(this.anchors),this.inputSizeTensor=qe.tensor1d([e.inputSize,e.inputSize]),this.doubleInputSizeTensor=qe.tensor1d([e.inputSize*2,e.inputSize*2])}normalizeBoxes(n){return qe.tidy(()=>{const t=qe.slice(n,[0,0],[-1,2]),e=qe.slice(n,[0,2],[-1,2]),i=qe.add(qe.div(t,this.inputSizeTensor),this.anchorsTensor),r=qe.div(e,this.doubleInputSizeTensor),a=qe.mul(qe.sub(i,r),this.inputSizeTensor),s=qe.mul(qe.add(i,r),this.inputSizeTensor);return qe.concat2d([a,s],1)})}normalizeLandmarks(n,t){return qe.tidy(()=>{const e=qe.add(qe.div(n.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return qe.mul(e,this.inputSizeTensor)})}async getBoundingBoxes(n){const t=qe.tidy(()=>qe.mul(qe.sub(n,.5),2)),e=this.model.predict(t),i=e.squeeze(),r=qe.tidy(()=>qe.sigmoid(qe.slice(i,[0,0],[-1,1])).squeeze()),a=qe.slice(i,[0,1],[-1,4]),s=this.normalizeBoxes(a),o=await qe.image.nonMaxSuppressionAsync(s,r,this.maxHands,this.iouThreshold,this.scoreThreshold),l=await o.array(),u=[t,e,o,i,s,a,r];if(l.length===0)return u.forEach(h=>h.dispose()),null;const c=qe.tidy(()=>{const h=[];for(const d in l){const p=l[d],f=qe.slice(s,[p,0],[1,-1]),m=qe.slice(i,[p,5],[1,14]),g=qe.tidy(()=>this.normalizeLandmarks(m,p).reshape([-1,2]));h.push({boxes:f,palmLandmarks:g})}return h});return c}async estimateHandBounds(n,t){const e=n.shape[1],i=n.shape[2];this.iouThreshold=t.iouThreshold,this.scoreThreshold=t.scoreThreshold,this.maxHands=t.maxHands;const r=qe.tidy(()=>n.resizeBilinear([this.width,this.height]).div(255)),a=await this.getBoundingBoxes(r);if(r.dispose(),!a||a.length===0)return null;const s=[];for(const o in a){const l=a[o],u=await l.boxes.array(),c=u[0].slice(0,2),h=u[0].slice(2,4),d=await l.palmLandmarks.array();l.boxes.dispose(),l.palmLandmarks.dispose(),s.push(MH.scaleBoxCoordinates({startPoint:c,endPoint:h,palmLandmarks:d},[i/this.width,e/this.height]))}return s}}FI.HandDetector=HH});var BI=Le(UI=>{UI.MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]}});var HI=Le(Vi=>{function zI(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}Vi.normalizeRadians=zI;function VH(n,t){const e=Math.PI/2-Math.atan2(-(t[1]-n[1]),t[0]-n[0]);return zI(e)}Vi.computeRotation=VH;const PI=(n,t)=>[[1,0,n],[0,1,t],[0,0,1]];function Ta(n,t){let e=0;for(let i=0;i{const qI=zt(),jn=tf(),qi=HI(),jH=.8,KH=[0,-.4],$H=[0,-.1],XH=1.65,GI=[0,5,9,13,17,1,2],JH=0,ZH=2;class QH{constructor(n,t,e){this.regionsOfInterest=[],this.runsWithoutHandDetector=0,this.boundingBoxDetector=n,this.meshDetector=t,this.meshWidth=e.inputSize,this.meshHeight=e.inputSize,this.enlargeFactor=e.enlargeFactor}getBoxForPalmLandmarks(n,t){const e=n.map(r=>{const a=[...r,1];return qi.rotatePoint(a,t)}),i=this.calculateLandmarksBoundingBox(e);return jn.enlargeBox(jn.squarifyBox(jn.shiftBox(i,KH)),this.enlargeFactor)}getBoxForHandLandmarks(n){const t=this.calculateLandmarksBoundingBox(n),e=jn.enlargeBox(jn.squarifyBox(jn.shiftBox(t,$H)),XH),i=[];for(let r=0;r[a[0]*(d[0]-this.meshWidth/2),a[1]*(d[1]-this.meshHeight/2),d[2]]),o=qi.buildRotationMatrix(e,[0,0]),l=s.map(d=>{const p=qi.rotatePoint(d,o);return[...p,d[2]]}),u=qi.invertTransformMatrix(i),c=[...jn.getBoxCenter(t),1],h=[qi.dot(c,u[0]),qi.dot(c,u[1])];return l.map(d=>[d[0]+h[0],d[1]+h[1],d[2]])}async estimateHands(n,t){this.maxContinuousChecks=t.skipFrames,this.detectionConfidence=t.minConfidence,this.maxHands=t.maxHands;const e=this.shouldUpdateRegionsOfInterest();if(e===!0){const r=await this.boundingBoxDetector.estimateHandBounds(n,t);this.regionsOfInterest=[];for(const a in r)this.updateRegionsOfInterest(r[a],!0,a);this.runsWithoutHandDetector=0}else this.runsWithoutHandDetector++;const i=[];if(!this.regionsOfInterest)return i;for(const r in this.regionsOfInterest){const a=this.regionsOfInterest[r][0];if(!a)return i;const s=qi.computeRotation(a.palmLandmarks[JH],a.palmLandmarks[ZH]),o=jn.getBoxCenter(a),l=[o[0]/n.shape[2],o[1]/n.shape[1]],u=qI.image.rotateWithOffset(n,s,0,l),c=qi.buildRotationMatrix(-s,o),h=e?this.getBoxForPalmLandmarks(a.palmLandmarks,c):a,d=jn.cutBoxFromImageAndResize(h,u,[this.meshWidth,this.meshHeight]),p=d.div(255);d.dispose(),u.dispose();const f=this.meshDetector.predict(p),[m,g]=f;p.dispose();const v=m.dataSync()[0];if(m.dispose(),va[0]),e=n.map(a=>a[1]),i=[Math.min(...t),Math.min(...e)],r=[Math.max(...t),Math.max(...e)];return{startPoint:i,endPoint:r}}updateRegionsOfInterest(n,t,e){if(t)this.regionsOfInterest[e]=[n];else{const i=this.regionsOfInterest[e][0];let r=0;if(i!=null&&i.startPoint!=null){const[a,s]=n.startPoint,[o,l]=n.endPoint,[u,c]=i.startPoint,[h,d]=i.endPoint,p=Math.max(a,u),f=Math.max(s,c),m=Math.min(o,h),g=Math.min(l,d),v=(m-p)*(g-f),b=(o-a)*(l-s),w=(h-u)*(d-s);r=v/(b+w-v)}this.regionsOfInterest[e][0]=r>jH?i:n}}shouldUpdateRegionsOfInterest(){return!this.regionsOfInterest||this.regionsOfInterest.length===0||this.runsWithoutHandDetector>=this.maxContinuousChecks}}VI.HandPipeline=QH});var $I=Le(nf=>{const Rr=zt(),eV=WI(),jI=BI(),tV=YI();class KI{constructor(n){this.pipeline=n}async estimateHands(n,t){this.maxContinuousChecks=t.skipFrames,this.detectionConfidence=t.minConfidence,this.maxHands=t.maxHands;const e=Rr.tidy(()=>(n instanceof Rr.Tensor||(n=Rr.browser.fromPixels(n)),n.toFloat().expandDims(0))),i=await this.pipeline.estimateHands(e,t);e.dispose();const r=[];if(!i)return r;for(const a of i){if(!a)return[];const s={};for(const o of Object.keys(jI.MESH_ANNOTATIONS))s[o]=jI.MESH_ANNOTATIONS[o].map(l=>a.landmarks[l]);r.push({confidence:a.confidence||0,box:a.box?[a.box.topLeft[0],a.box.topLeft[1],a.box.bottomRight[0]-a.box.topLeft[0],a.box.bottomRight[1]-a.box.topLeft[1]]:0,landmarks:a.landmarks,annotations:s})}return r}}nf.HandPose=KI;async function nV(n){if(Rr.env().features.IS_NODE){const t=require("fs"),e=await t.readFileSync(n.replace("file://",""));return JSON.parse(e)}return Rr.util.fetch(n).then(t=>t.json())}async function iV(n){const[t,e,i]=await Promise.all([nV(n.detector.anchors),Rr.loadGraphModel(n.detector.modelPath,{fromTFHub:n.detector.modelPath.includes("tfhub.dev")}),Rr.loadGraphModel(n.skeleton.modelPath,{fromTFHub:n.skeleton.modelPath.includes("tfhub.dev")})]),r=new eV.HandDetector(e,t,n),a=new tV.HandPipeline(r,i,n),s=new KI(a);return s}nf.load=iV});var XI=Le(rV=>{Ll(rV,{default:()=>aV});var aV={backend:"webgl",console:!0,face:{enabled:!0,detector:{modelPath:"../models/blazeface/back/model.json",inputSize:256,maxFaces:10,skipFrames:10,minConfidence:.5,iouThreshold:.3,scoreThreshold:.7},mesh:{enabled:!0,modelPath:"../models/facemesh/model.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris/model.json",enlargeFactor:2.3,inputSize:64},age:{enabled:!0,modelPath:"../models/ssrnet-age/imdb/model.json",inputSize:64,skipFrames:10},gender:{enabled:!0,minConfidence:.8,modelPath:"../models/ssrnet-gender/imdb/model.json"},emotion:{enabled:!0,inputSize:64,minConfidence:.5,skipFrames:10,useGrayscale:!0,modelPath:"../models/emotion/model.json"}},body:{enabled:!0,modelPath:"../models/posenet/model.json",inputResolution:257,outputStride:16,maxDetections:10,scoreThreshold:.7,nmsRadius:20},hand:{enabled:!0,inputSize:256,skipFrames:10,minConfidence:.5,iouThreshold:.3,scoreThreshold:.7,enlargeFactor:1.65,maxHands:10,detector:{anchors:"../models/handdetect/anchors.json",modelPath:"../models/handdetect/model.json"},skeleton:{modelPath:"../models/handskeleton/model.json"}}}});var ZI=Le((XV,JI)=>{JI.exports={name:"@vladmandic/human",version:"0.3.3",description:"human: 3D Face Detection, Iris Tracking and Age & Gender Prediction",sideEffects:!1,main:"dist/human-nobundle.cjs",module:"dist/human.esm.js",browser:"dist/human.esm.js",author:"Vladimir Mandic ",bugs:{url:"https://github.com/vladmandic/human/issues"},homepage:"https://github.com/vladmandic/human#readme",license:"MIT",engines:{node:">=14.0.0"},repository:{type:"git",url:"git+https://github.com/vladmandic/human.git"},dependencies:{},peerDependencies:{},devDependencies:{"@tensorflow/tfjs":"^2.6.0","@tensorflow/tfjs-node":"^2.6.0",esbuild:"^0.7.15",eslint:"^7.10.0","eslint-config-airbnb-base":"^14.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1",rimraf:"^3.0.2"},scripts:{start:"node --trace-warnings --trace-uncaught --no-deprecation demo/demo-node.js",lint:"eslint src/*.js demo/*.js","build-iife":"esbuild --bundle --platform=browser --sourcemap --target=esnext --format=iife --minify --external:fs --global-name=human --outfile=dist/human.js src/index.js","build-esm-bundle":"esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:fs --outfile=dist/human.esm.js src/index.js","build-esm-nobundle":"esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:@tensorflow --external:fs --outfile=dist/human.esm-nobundle.js src/index.js","build-node-bundle":"esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --minify --outfile=dist/human.cjs src/index.js","build-node-nobundle":"esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --external:@tensorflow --outfile=dist/human-nobundle.cjs src/index.js",build:"rimraf dist/* && npm run build-iife && npm run build-esm-bundle && npm run build-esm-nobundle && npm run build-node-bundle && npm run build-node-nobundle && ls -l dist/",update:"npm update --depth 20 && npm dedupe && npm prune && npm audit"},keywords:["tensorflowjs","face-detection","face-geometry","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition"]}});const On=zt(),QI=eI(),wl=nI(),e2=aI(),t2=kI(),n2=$I(),i2=XI().default,sV=ZI();let Pe;const kt={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},Kn=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3),Sl=(...n)=>{Pe.console&&console.log(...n)};function r2(...n){const t=e=>e&&typeof e=="object";return n.reduce((e,i)=>(Object.keys(i||{}).forEach(r=>{const a=e[r],s=i[r];Array.isArray(a)&&Array.isArray(s)?e[r]=a.concat(...s):t(a)&&t(s)?e[r]=r2(a,s):e[r]=s}),e),{})}function oV(n){if(!n)return"input is not defined";const t=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0;if(!t||t===0)return"input is empty";if(n.readyState&&n.readyState<=2)return"input is not ready";try{On.getBackend()}catch{return"backend not loaded"}return null}async function lV(n,t){Pe=r2(i2,t);const e=oV(n);return e?(Sl(e,n),{error:e}):new Promise(async i=>{const r=Object.values(kt).filter(c=>c).length;r===0&&Sl("Human library starting"),On.getBackend()!==Pe.backend&&(Sl("Human library setting backend:",Pe.backend),await On.setBackend(Pe.backend),await On.ready()),Pe.face.enabled&&!kt.facemesh&&(kt.facemesh=await QI.load(Pe.face)),Pe.body.enabled&&!kt.posenet&&(kt.posenet=await t2.load(Pe.body)),Pe.hand.enabled&&!kt.handpose&&(kt.handpose=await n2.load(Pe.hand)),Pe.face.enabled&&Pe.face.age.enabled&&!kt.age&&(kt.age=await wl.loadAge(Pe)),Pe.face.enabled&&Pe.face.gender.enabled&&!kt.gender&&(kt.gender=await wl.loadGender(Pe)),Pe.face.enabled&&Pe.face.emotion.enabled&&!kt.emotion&&(kt.emotion=await e2.load(Pe));const a={};let s;s=Kn(),On.engine().startScope();const o=Pe.body.enabled?await kt.posenet.estimatePoses(n,Pe.body):[];On.engine().endScope(),a.body=Math.trunc(Kn()-s),s=Kn(),On.engine().startScope();const l=Pe.hand.enabled?await kt.handpose.estimateHands(n,Pe.hand):[];On.engine().endScope(),a.hand=Math.trunc(Kn()-s);const u=[];if(Pe.face.enabled){s=Kn(),On.engine().startScope();const c=await kt.facemesh.estimateFaces(n,Pe.face);a.face=Math.trunc(Kn()-s);for(const h of c){if(!h.image||h.image.isDisposedInternal){Sl("face object is disposed:",h.image);continue}s=Kn();const d=Pe.face.age.enabled||Pe.face.gender.enabled?await wl.predict(h.image,Pe):{};a.agegender=Math.trunc(Kn()-s),s=Kn();const p=Pe.face.emotion.enabled?await e2.predict(h.image,Pe):{};a.emotion=Math.trunc(Kn()-s),h.image.dispose();const f=h.annotations.leftEyeIris&&h.annotations.rightEyeIris?Math.max(h.annotations.leftEyeIris[3][0]-h.annotations.leftEyeIris[1][0],h.annotations.rightEyeIris[3][0]-h.annotations.rightEyeIris[1][0]):0;u.push({confidence:h.confidence,box:h.box,mesh:h.mesh,annotations:h.annotations,age:d.age,gender:d.gender,agConfidence:d.confidence,emotion:p,iris:f!==0?Math.trunc(100*11.7/f)/100:0})}On.engine().endScope()}a.total=Object.values(a).reduce((c,h)=>c+h),i({face:u,body:o,hand:l,performance:a})})}exports.detect=lV;exports.defaults=i2;exports.config=Pe;exports.models=kt;exports.facemesh=QI;exports.ssrnet=wl;exports.posenet=t2;exports.handpose=n2;exports.tf=On;exports.version=sV.version; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use diff --git a/dist/human.cjs.map b/dist/human.cjs.map index 8e705660..dcdd7cb2 100644 --- a/dist/human.cjs.map +++ b/dist/human.cjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/node-fetch/lib/index.mjs", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-data/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js", "../node_modules/@tensorflow/tfjs-backend-webgl/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../src/facemesh/blazeface.js", "../src/facemesh/keypoints.js", "../src/facemesh/box.js", "../src/facemesh/util.js", "../src/facemesh/pipeline.js", "../src/facemesh/uvcoords.js", "../src/facemesh/triangulation.js", "../src/facemesh/facemesh.js", "../src/ssrnet/ssrnet.js", "../src/emotion/emotion.js", "../src/posenet/modelBase.js", "../src/posenet/modelMobileNet.js", "../src/posenet/heapSort.js", "../src/posenet/buildParts.js", "../src/posenet/keypoints.js", "../src/posenet/vectors.js", "../src/posenet/decodePose.js", "../src/posenet/decodeMultiple.js", "../src/posenet/util.js", "../src/posenet/modelPoseNet.js", "../src/posenet/posenet.js", "../src/handpose/box.js", "../src/handpose/handdetector.js", "../src/handpose/keypoints.js", "../src/handpose/util.js", "../src/handpose/pipeline.js", "../src/handpose/handpose.js", "../src/config.js", "../src/index.js"], - "sourcesContent": ["import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Conv2DInfo, Conv3DInfo} from '../ops/conv_util';\nimport {FusedBatchMatMulConfig, FusedConv2DConfig} from '../ops/fused_types';\nimport {Backend, DataId, Scalar, Tensor, Tensor1D, Tensor2D, Tensor3D, Tensor4D, Tensor5D} from '../tensor';\nimport {BackendValues, DataType, Rank, ShapeMap} from '../types';\n\nexport const EPSILON_FLOAT32 = 1e-7;\nexport const EPSILON_FLOAT16 = 1e-4;\n\n// Required information for all backends.\nexport interface BackendTimingInfo {\n kernelMs: number|{error: string};\n getExtraProfileInfo?(): string; // a field for additional timing information\n // e.g. packing / unpacking for WebGL backend\n}\n\nexport interface TensorStorage {\n read(dataId: DataId): Promise;\n readSync(dataId: DataId): BackendValues;\n disposeData(dataId: DataId): void;\n write(values: BackendValues, shape: number[], dtype: DataType): DataId;\n move(dataId: DataId, values: BackendValues, shape: number[], dtype: DataType):\n void;\n memory(): {unreliable: boolean;}; // Backend-specific information.\n /** Returns number of data ids currently in the storage. */\n numDataIds(): number;\n}\n\n/** Convenient class for storing tensor-related data. */\nexport class DataStorage {\n private data = new WeakMap();\n private dataIdsCount = 0;\n\n constructor(private backend: KernelBackend, private dataMover: DataMover) {}\n\n get(dataId: DataId) {\n if (!this.data.has(dataId)) {\n this.dataMover.moveData(this.backend, dataId);\n }\n return this.data.get(dataId);\n }\n\n set(dataId: DataId, value: T): void {\n this.dataIdsCount++;\n this.data.set(dataId, value);\n }\n\n has(dataId: DataId): boolean {\n return this.data.has(dataId);\n }\n\n delete(dataId: DataId): boolean {\n this.dataIdsCount--;\n return this.data.delete(dataId);\n }\n\n numDataIds(): number {\n return this.dataIdsCount;\n }\n}\n\nexport interface DataMover {\n /**\n * To be called by backends whenever they see a dataId that they don't own.\n * Upon calling this method, the mover will fetch the tensor from another\n * backend and register it with the current active backend.\n */\n moveData(backend: KernelBackend, dataId: DataId): void;\n}\n\nexport interface BackendTimer {\n time(f: () => void): Promise;\n}\n\n/**\n * The interface that defines the kernels that should be implemented when\n * adding a new backend. New backends don't need to implement every one of the\n * methods, this can be done gradually (throw an error for unimplemented\n * methods).\n */\nexport class KernelBackend implements TensorStorage, Backend, BackendTimer {\n time(f: () => void): Promise {\n return notYetImplemented('time');\n }\n read(dataId: object): Promise {\n return notYetImplemented('read');\n }\n readSync(dataId: object): BackendValues {\n return notYetImplemented('readSync');\n }\n numDataIds(): number {\n return notYetImplemented('numDataIds');\n }\n disposeData(dataId: object): void {\n return notYetImplemented('disposeData');\n }\n write(values: BackendValues, shape: number[], dtype: DataType): DataId {\n return notYetImplemented('write');\n }\n move(dataId: DataId, values: BackendValues, shape: number[], dtype: DataType):\n void {\n return notYetImplemented('move');\n }\n memory(): {unreliable: boolean; reasons?: string[]} {\n return notYetImplemented('memory');\n }\n /** Returns the highest precision for floats in bits (e.g. 16 or 32) */\n floatPrecision(): 16|32 {\n return notYetImplemented('floatPrecision');\n }\n /** Returns the smallest representable number. */\n epsilon(): number {\n return this.floatPrecision() === 32 ? EPSILON_FLOAT32 : EPSILON_FLOAT16;\n }\n\n batchMatMul(\n a: Tensor3D, b: Tensor3D, transposeA: boolean,\n transposeB: boolean): Tensor3D {\n return notYetImplemented('batchMatMul');\n }\n\n fusedBatchMatMul(\n {a, b, transposeA, transposeB, bias, activation, preluActivationWeights}:\n FusedBatchMatMulConfig): Tensor3D {\n return notYetImplemented('fusedBatchMatMul');\n }\n\n slice(x: T, begin: number[], size: number[]): T {\n return notYetImplemented('slice');\n }\n stridedSlice(\n x: T, begin: number[], end: number[], strides: number[]): T {\n return notYetImplemented('stridedSlice');\n }\n unstack(x: Tensor, axis: number): Tensor[] {\n return notYetImplemented('unstack');\n }\n reverse(a: T, axis: number[]): T {\n return notYetImplemented('reverse');\n }\n\n concat(tensors: Tensor[], axis: number): Tensor {\n return notYetImplemented('concat');\n }\n\n neg(a: T): T {\n return notYetImplemented('neg');\n }\n\n add(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('add');\n }\n addN(tensors: T[]): T {\n return notYetImplemented('addN');\n }\n subtract(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('subtract');\n }\n multiply(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('multiply');\n }\n realDivide(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('realDivide');\n }\n floorDiv(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('floorDiv');\n }\n\n sum(x: Tensor, axes: number[]): Tensor {\n return notYetImplemented('sum');\n }\n prod(x: Tensor, axes: number[]): Tensor {\n return notYetImplemented('prod');\n }\n\n unsortedSegmentSum(\n x: T, segmentIds: Tensor1D, numSegments: number): Tensor {\n return notYetImplemented('unsortedSegmentSum');\n }\n\n argMin(x: Tensor, axis: number): Tensor {\n return notYetImplemented('argMin');\n }\n argMax(x: Tensor, axis: number): Tensor {\n return notYetImplemented('argMax');\n }\n\n equal(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('equal');\n }\n notEqual(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('notEqual');\n }\n\n less(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('less');\n }\n lessEqual(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('lessEqual');\n }\n\n greater(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('greater');\n }\n greaterEqual(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('greaterEqual');\n }\n\n logicalNot(a: T): T {\n return notYetImplemented('logicalNot');\n }\n logicalAnd(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('logicalAnd');\n }\n logicalOr(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('logicalOr');\n }\n\n where(condition: Tensor): Tensor2D {\n return notYetImplemented('where');\n }\n select(condition: Tensor, a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('select');\n }\n\n topk(x: T, k: number, sorted: boolean): [T, T] {\n return notYetImplemented('topk');\n }\n\n min(x: Tensor, axes: number[]): Tensor {\n return notYetImplemented('min');\n }\n minimum(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('minimum');\n }\n\n mod(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('mod');\n }\n\n max(x: Tensor, axes: number[]): Tensor {\n return notYetImplemented('max');\n }\n maximum(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('maximum');\n }\n\n all(x: Tensor, axes: number[]): Tensor {\n return notYetImplemented('all');\n }\n any(x: Tensor, axes: number[]): Tensor {\n return notYetImplemented('any');\n }\n\n squaredDifference(a: Tensor, b: Tensor): Tensor {\n return notYetImplemented('squaredDifference');\n }\n\n ceil(x: T): T {\n return notYetImplemented('ceil');\n }\n floor(x: T): T {\n return notYetImplemented('floor');\n }\n round(x: T): T {\n return notYetImplemented('round');\n }\n\n sign(x: T): T {\n return notYetImplemented('sign');\n }\n\n isNaN(x: T): T {\n return notYetImplemented('isNaN');\n }\n isInf(x: T): T {\n return notYetImplemented('isInf');\n }\n isFinite(x: T): T {\n return notYetImplemented('isFinite');\n }\n\n pow(a: T, b: Tensor): T {\n return notYetImplemented('pow');\n }\n exp(x: T): T {\n return notYetImplemented('exp');\n }\n expm1(x: T): T {\n return notYetImplemented('expm1');\n }\n softmax(x: T, dim: number): T {\n return notYetImplemented('softmax');\n }\n log(x: T): T {\n return notYetImplemented('log');\n }\n log1p(x: T): T {\n return notYetImplemented('log1p');\n }\n sqrt(x: T): T {\n return notYetImplemented('sqrt');\n }\n rsqrt(x: T): T {\n return notYetImplemented('rsqrt');\n }\n square(x: T): T {\n return notYetImplemented('square');\n }\n reciprocal(x: T): T {\n return notYetImplemented('reciprocal');\n }\n relu(x: T): T {\n return notYetImplemented('relu');\n }\n relu6(x: T): T {\n return notYetImplemented('relu6');\n }\n prelu(x: T, a: T): T {\n return notYetImplemented('prelu');\n }\n elu(x: T): T {\n return notYetImplemented('elu');\n }\n eluDer(dy: T, y: T): T {\n return notYetImplemented('eluDer');\n }\n selu(x: T): T {\n return notYetImplemented('selu');\n }\n int(x: T): T {\n return notYetImplemented('int');\n }\n\n clip(x: T, min: number, max: number): T {\n return notYetImplemented('clip');\n }\n\n abs(x: T): T {\n return notYetImplemented('abs');\n }\n complexAbs(x: T): T {\n return notYetImplemented('complexAbs');\n }\n\n sigmoid(x: T): T {\n return notYetImplemented('sigmoid');\n }\n\n softplus(x: T): T {\n return notYetImplemented('softplus');\n }\n\n sin(x: T): T {\n return notYetImplemented('sin');\n }\n cos(x: T): T {\n return notYetImplemented('cos');\n }\n tan(x: T): T {\n return notYetImplemented('tan');\n }\n\n asin(x: T): T {\n return notYetImplemented('asin');\n }\n acos(x: T): T {\n return notYetImplemented('acos');\n }\n atan(x: T): T {\n return notYetImplemented('atan');\n }\n atan2(a: T, b: T): T {\n return notYetImplemented('atan2');\n }\n\n sinh(x: T): T {\n return notYetImplemented('sinh');\n }\n cosh(x: T): T {\n return notYetImplemented('cosh');\n }\n tanh(x: T): T {\n return notYetImplemented('tanh');\n }\n\n asinh(x: T): T {\n return notYetImplemented('asinh');\n }\n acosh(x: T): T {\n return notYetImplemented('acosh');\n }\n atanh(x: T): T {\n return notYetImplemented('atanh');\n }\n\n erf(x: T): T {\n return notYetImplemented('erf');\n }\n\n step(x: T, alpha: number): T {\n return notYetImplemented('step');\n }\n\n fusedConv2d(\n {input, filter, convInfo, bias, activation, preluActivationWeights}:\n FusedConv2DConfig): Tensor4D {\n return notYetImplemented('fusedConv2d');\n }\n\n conv2d(x: Tensor4D, filter: Tensor4D, convInfo: Conv2DInfo): Tensor4D {\n return notYetImplemented('conv2d');\n }\n conv2dDerInput(dy: Tensor4D, filter: Tensor4D, convInfo: Conv2DInfo):\n Tensor4D {\n return notYetImplemented('conv2dDerInput');\n }\n conv2dDerFilter(x: Tensor4D, dY: Tensor4D, convInfo: Conv2DInfo): Tensor4D {\n return notYetImplemented('conv2dDerFilter');\n }\n\n fusedDepthwiseConv2D(\n {input, filter, convInfo, bias, activation, preluActivationWeights}:\n FusedConv2DConfig): Tensor4D {\n return notYetImplemented('fusedDepthwiseConv2D');\n }\n\n depthwiseConv2D(input: Tensor4D, filter: Tensor4D, convInfo: Conv2DInfo):\n Tensor4D {\n return notYetImplemented('depthwiseConv2D');\n }\n depthwiseConv2DDerInput(dy: Tensor4D, filter: Tensor4D, convInfo: Conv2DInfo):\n Tensor4D {\n return notYetImplemented('depthwiseConv2DDerInput');\n }\n depthwiseConv2DDerFilter(x: Tensor4D, dY: Tensor4D, convInfo: Conv2DInfo):\n Tensor4D {\n return notYetImplemented('depthwiseConv2DDerFilter');\n }\n conv3d(x: Tensor5D, filter: Tensor5D, convInfo: Conv3DInfo): Tensor5D {\n return notYetImplemented('conv3d');\n }\n conv3dDerInput(dy: Tensor5D, filter: Tensor5D, convInfo: Conv3DInfo):\n Tensor5D {\n return notYetImplemented('conv3dDerInput');\n }\n conv3dDerFilter(x: Tensor5D, dY: Tensor5D, convInfo: Conv3DInfo): Tensor5D {\n return notYetImplemented('conv3dDerFilter');\n }\n maxPool(x: Tensor4D, convInfo: Conv2DInfo): Tensor4D {\n return notYetImplemented('maxPool');\n }\n maxPoolBackprop(dy: Tensor4D, x: Tensor4D, y: Tensor4D, convInfo: Conv2DInfo):\n Tensor4D {\n return notYetImplemented('maxPoolBackprop');\n }\n avgPool(x: Tensor4D, convInfo: Conv2DInfo): Tensor4D {\n return notYetImplemented('avgPool');\n }\n avgPoolBackprop(dy: Tensor4D, x: Tensor4D, convInfo: Conv2DInfo): Tensor4D {\n return notYetImplemented('avgPoolBackprop');\n }\n avgPool3d(x: Tensor5D, convInfo: Conv3DInfo): Tensor5D {\n return notYetImplemented('avgPool3d');\n }\n avgPool3dBackprop(dy: Tensor5D, x: Tensor5D, convInfo: Conv3DInfo): Tensor5D {\n return notYetImplemented('avgPool3dBackprop');\n }\n maxPool3d(x: Tensor5D, convInfo: Conv3DInfo): Tensor5D {\n return notYetImplemented('maxPool3d');\n }\n maxPool3dBackprop(\n dy: Tensor5D, x: Tensor5D, y: Tensor5D, convInfo: Conv3DInfo): Tensor5D {\n return notYetImplemented('maxPool3dBackprop');\n }\n\n reshape(x: T, shape: ShapeMap[R]):\n Tensor {\n return notYetImplemented('reshape');\n }\n cast(x: T, dtype: DataType): T {\n return notYetImplemented('cast');\n }\n\n tile(x: T, reps: number[]): T {\n return notYetImplemented('tile');\n }\n\n pad(\n x: T, paddings: Array<[number, number]>, constantValue: number): T {\n return notYetImplemented('pad');\n }\n\n transpose(x: T, perm: number[]): T {\n return notYetImplemented('transpose');\n }\n\n gather(x: T, indices: Tensor1D, axis: number): T {\n return notYetImplemented('gather');\n }\n\n gatherND(x: Tensor, indices: Tensor): Tensor {\n return notYetImplemented('gatherND');\n }\n\n scatterND(\n indices: Tensor, updates: Tensor, shape: ShapeMap[R]): Tensor {\n return notYetImplemented('scatterND');\n }\n\n batchToSpaceND(\n x: T, blockShape: number[], crops: number[][]): T {\n return notYetImplemented('batchToSpaceND');\n }\n\n spaceToBatchND(\n x: T, blockShape: number[], paddings: number[][]): T {\n return notYetImplemented('spaceToBatchND');\n }\n\n resizeBilinear(\n x: Tensor4D, newHeight: number, newWidth: number,\n alignCorners: boolean): Tensor4D {\n return notYetImplemented('resizeBilinear');\n }\n\n resizeBilinearBackprop(dy: Tensor4D, x: Tensor4D, alignCorners: boolean):\n Tensor4D {\n return notYetImplemented('resizeBilinearBackprop');\n }\n\n resizeNearestNeighbor(\n x: Tensor4D, newHEight: number, newWidth: number,\n alignCorners: boolean): Tensor4D {\n return notYetImplemented('resizeNearestNeighbor');\n }\n\n resizeNearestNeighborBackprop(\n dy: Tensor4D, x: Tensor4D, alignCorners: boolean): Tensor4D {\n return notYetImplemented('resizeNearestNeighborBackprop');\n }\n\n batchNorm(\n x: Tensor4D, mean: Tensor4D|Tensor1D, variance: Tensor4D|Tensor1D,\n offset?: Tensor4D|Tensor1D, scale?: Tensor4D|Tensor1D,\n varianceEpsilon?: number): Tensor4D {\n return notYetImplemented('batchNorm');\n }\n\n localResponseNormalization4D(\n x: Tensor4D, radius: number, bias: number, alpha: number,\n beta: number): Tensor4D {\n return notYetImplemented('localResponseNormalization4D');\n }\n\n LRNGrad(\n dy: Tensor4D, inputImage: Tensor4D, outputImage: Tensor4D, radius: number,\n bias: number, alpha: number, beta: number): Tensor4D {\n return notYetImplemented('LRNGrad');\n }\n\n multinomial(\n logits: Tensor2D, normalized: boolean, numSamples: number,\n seed: number): Tensor2D {\n return notYetImplemented('multinomial');\n }\n\n oneHot(indices: Tensor1D, depth: number, onValue: number, offValue: number):\n Tensor2D {\n return notYetImplemented('oneHot');\n }\n\n cumsum(x: Tensor, axis: number, exclusive: boolean, reverse: boolean):\n Tensor {\n return notYetImplemented('cumsum');\n }\n\n nonMaxSuppression(\n boxes: Tensor2D, scores: Tensor1D, maxOutputSize: number,\n iouThreshold: number, scoreThreshold?: number): Tensor1D {\n return notYetImplemented('nonMaxSuppression');\n }\n\n fft(x: Tensor2D): Tensor2D {\n return notYetImplemented('fft');\n }\n ifft(x: Tensor2D): Tensor2D {\n return notYetImplemented('ifft');\n }\n complex(real: T, imag: T): T {\n return notYetImplemented('complex');\n }\n real(input: T): T {\n return notYetImplemented('real');\n }\n imag(input: T): T {\n return notYetImplemented('imag');\n }\n\n cropAndResize(\n image: Tensor4D, boxes: Tensor2D, boxIndex: Tensor1D,\n cropSize: [number, number], method: 'bilinear'|'nearest',\n extrapolationValue: number): Tensor4D {\n return notYetImplemented('cropAndResize');\n }\n\n depthToSpace(x: Tensor4D, blockSize: number, dataFormat: string): Tensor4D {\n return notYetImplemented('depthToSpace');\n }\n\n // Aligns with the \"SplitV\" kernel in TensorFlow.\n split(value: T, sizeSplits: number[], axis: number): T[] {\n return notYetImplemented('split');\n }\n\n sparseToDense(\n sparseIndices: Tensor, sparseValues: Tensor, outputShape: ShapeMap[R],\n defaultValue: Scalar): Tensor {\n return notYetImplemented('sparseToDense');\n }\n\n diag(x: Tensor): Tensor {\n return notYetImplemented('diag');\n }\n\n fill(\n shape: ShapeMap[R], value: number|string, dtype?: DataType): Tensor {\n return notYetImplemented('fill');\n }\n\n onesLike(x: Tensor): Tensor {\n return notYetImplemented('onesLike');\n }\n\n zerosLike(x: Tensor): Tensor {\n return notYetImplemented('zerosLike');\n }\n\n linspace(start: number, stop: number, num: number): Tensor1D {\n return notYetImplemented('linspace');\n }\n\n dispose(): void {\n return notYetImplemented('dispose');\n }\n}\n\nfunction notYetImplemented(kernelName: string): never {\n throw new Error(\n `'${kernelName}' not yet implemented or not found in the registry. ` +\n `This kernel may not be supported by the tfjs backend you have chosen`);\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Platform} from './platforms/platform';\n\n// Expects flags from URL in the format ?tfjsflags=FLAG1:1,FLAG2:true.\nconst TENSORFLOWJS_FLAGS_PREFIX = 'tfjsflags';\n\ntype FlagValue = number|boolean;\ntype FlagEvaluationFn = (() => FlagValue)|(() => Promise);\nexport type Flags = {\n [featureName: string]: FlagValue\n};\nexport type FlagRegistryEntry = {\n evaluationFn: FlagEvaluationFn;\n setHook?: (value: FlagValue) => void;\n};\n\n/**\n * The environment contains evaluated flags as well as the registered platform.\n * This is always used as a global singleton and can be retrieved with\n * `tf.env()`.\n *\n * @doc {heading: 'Environment'}\n */\nexport class Environment {\n private flags: Flags = {};\n private flagRegistry: {[flagName: string]: FlagRegistryEntry} = {};\n\n private urlFlags: Flags = {};\n\n platformName: string;\n platform: Platform;\n\n // tslint:disable-next-line: no-any\n constructor(public global: any) {\n this.populateURLFlags();\n }\n\n setPlatform(platformName: string, platform: Platform) {\n if (this.platform != null) {\n console.warn(\n `Platform ${this.platformName} has already been set. ` +\n `Overwriting the platform with ${platform}.`);\n }\n this.platformName = platformName;\n this.platform = platform;\n }\n\n registerFlag(\n flagName: string, evaluationFn: FlagEvaluationFn,\n setHook?: (value: FlagValue) => void) {\n this.flagRegistry[flagName] = {evaluationFn, setHook};\n\n // Override the flag value from the URL. This has to happen here because the\n // environment is initialized before flags get registered.\n if (this.urlFlags[flagName] != null) {\n const flagValue = this.urlFlags[flagName];\n console.warn(\n `Setting feature override from URL ${flagName}: ${flagValue}.`);\n this.set(flagName, flagValue);\n }\n }\n\n async getAsync(flagName: string): Promise {\n if (flagName in this.flags) {\n return this.flags[flagName];\n }\n\n this.flags[flagName] = await this.evaluateFlag(flagName);\n return this.flags[flagName];\n }\n\n get(flagName: string): FlagValue {\n if (flagName in this.flags) {\n return this.flags[flagName];\n }\n\n const flagValue = this.evaluateFlag(flagName);\n if (flagValue instanceof Promise) {\n throw new Error(\n `Flag ${flagName} cannot be synchronously evaluated. ` +\n `Please use getAsync() instead.`);\n }\n\n this.flags[flagName] = flagValue;\n\n return this.flags[flagName];\n }\n\n getNumber(flagName: string): number {\n return this.get(flagName) as number;\n }\n\n getBool(flagName: string): boolean {\n return this.get(flagName) as boolean;\n }\n\n getFlags(): Flags {\n return this.flags;\n }\n // For backwards compatibility.\n get features(): Flags {\n return this.flags;\n }\n\n set(flagName: string, value: FlagValue): void {\n if (this.flagRegistry[flagName] == null) {\n throw new Error(\n `Cannot set flag ${flagName} as it has not been registered.`);\n }\n this.flags[flagName] = value;\n if (this.flagRegistry[flagName].setHook != null) {\n this.flagRegistry[flagName].setHook(value);\n }\n }\n\n private evaluateFlag(flagName: string): FlagValue|Promise {\n if (this.flagRegistry[flagName] == null) {\n throw new Error(\n `Cannot evaluate flag '${flagName}': no evaluation function found.`);\n }\n return this.flagRegistry[flagName].evaluationFn();\n }\n\n setFlags(flags: Flags) {\n this.flags = Object.assign({}, flags);\n }\n\n reset() {\n this.flags = {};\n this.urlFlags = {};\n this.populateURLFlags();\n }\n\n private populateURLFlags(): void {\n if (typeof this.global === 'undefined' ||\n typeof this.global.location === 'undefined' ||\n typeof this.global.location.search === 'undefined') {\n return;\n }\n\n const urlParams = getQueryParams(this.global.location.search);\n if (TENSORFLOWJS_FLAGS_PREFIX in urlParams) {\n const keyValues = urlParams[TENSORFLOWJS_FLAGS_PREFIX].split(',');\n keyValues.forEach(keyValue => {\n const [key, value] = keyValue.split(':') as [string, string];\n this.urlFlags[key] = parseValue(key, value);\n });\n }\n }\n}\n\nexport function getQueryParams(queryString: string): {[key: string]: string} {\n const params = {};\n queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (s, ...t) => {\n decodeParam(params, t[0], t[1]);\n return t.join('=');\n });\n return params;\n}\n\nfunction decodeParam(\n params: {[key: string]: string}, name: string, value?: string) {\n params[decodeURIComponent(name)] = decodeURIComponent(value || '');\n}\n\nfunction parseValue(flagName: string, value: string): FlagValue {\n value = value.toLowerCase();\n if (value === 'true' || value === 'false') {\n return value === 'true';\n } else if (`${+ value}` === value) {\n return +value;\n }\n throw new Error(\n `Could not parse value flag value ${value} for flag ${flagName}.`);\n}\n\n/**\n * Returns the current environment (a global singleton).\n *\n * The environment object contains the evaluated feature values as well as the\n * active platform.\n *\n * @doc {heading: 'Environment'}\n */\nexport function env() {\n return ENV;\n}\n\nexport let ENV: Environment = null;\nexport function setEnvironmentGlobal(environment: Environment) {\n ENV = environment;\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n// Note that the identifier globalNameSpace is scoped to this module, but will\n// always resolve to the same global object regardless of how the module is\n// resolved.\n// tslint:disable-next-line:no-any\nlet globalNameSpace: {_tfGlobals: Map};\n// tslint:disable-next-line:no-any\nexport function getGlobalNamespace(): {_tfGlobals: Map} {\n if (globalNameSpace == null) {\n // tslint:disable-next-line:no-any\n let ns: any;\n if (typeof (window) !== 'undefined') {\n ns = window;\n } else if (typeof (global) !== 'undefined') {\n ns = global;\n } else if (typeof (process) !== 'undefined') {\n ns = process;\n } else if (typeof (self) !== 'undefined') {\n ns = self;\n } else {\n throw new Error('Could not find a global object');\n }\n globalNameSpace = ns;\n }\n return globalNameSpace;\n}\n\n// tslint:disable-next-line:no-any\nfunction getGlobalMap(): Map {\n const ns = getGlobalNamespace();\n if (ns._tfGlobals == null) {\n ns._tfGlobals = new Map();\n }\n return ns._tfGlobals;\n}\n\n/**\n * Returns a globally accessible 'singleton' object.\n *\n * @param key the name of the object\n * @param init a function to initialize to initialize this object\n * the first time it is fetched.\n */\nexport function getGlobal(key: string, init: () => T): T {\n const globalMap = getGlobalMap();\n if (globalMap.has(key)) {\n return globalMap.get(key);\n } else {\n const singleton = init();\n globalMap.set(key, singleton);\n return globalMap.get(key);\n }\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// Allow UpperCamelCase variable names\n// tslint:disable: variable-name\n// Unfortunately just enabling PascalCase per file (tslint:enable:\n// allow-pascal-case) doesn't work.\nimport {NamedTensorInfoMap, TensorInfo} from './kernel_registry';\nimport {ExplicitPadding} from './ops/conv_util';\nimport {Activation} from './ops/fused_types';\nimport {DataType, PixelData} from './types';\n\nexport const Abs = 'Abs';\nexport type AbsInputs = UnaryInputs;\n\nexport const Acos = 'Acos';\nexport type AcosInputs = UnaryInputs;\n\nexport const Acosh = 'Acosh';\nexport type AcoshInputs = UnaryInputs;\n\nexport const Add = 'Add';\nexport type AddInputs = BinaryInputs;\n\nexport const AddN = 'AddN';\nexport type AddNInputs = TensorInfo[];\n\nexport const All = 'All';\nexport type AllInputs = Pick;\nexport interface AllAttrs {\n axis: number|number[];\n keepDims: boolean;\n}\n\nexport const Any = 'Any';\nexport type AnyInputs = Pick;\nexport interface AnyAttrs {\n axis: number|number[];\n keepDims: boolean;\n}\n\nexport const ArgMax = 'ArgMax';\nexport type ArgMaxInputs = Pick;\nexport interface ArgMaxAttrs {\n axis: number;\n}\n\nexport const ArgMin = 'ArgMin';\nexport type ArgMinInputs = Pick;\nexport interface ArgMinAttrs {\n axis: number;\n}\n\nexport const Asin = 'Asin';\nexport type AsinInputs = UnaryInputs;\n\nexport const Asinh = 'Asinh';\nexport type AsinhInputs = UnaryInputs;\n\nexport const Atan = 'Atan';\nexport type AtanInputs = UnaryInputs;\n\nexport const Atanh = 'Atanh';\nexport type AtanhInputs = UnaryInputs;\n\nexport const Atan2 = 'Atan2';\nexport type Atan2Inputs = BinaryInputs;\n\nexport const AvgPool = 'AvgPool';\nexport type AvgPoolInputs = Pick;\nexport interface AvgPoolAttrs {\n filterSize: [number, number]|number;\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const AvgPoolBackprop = 'AvgPoolBackprop';\nexport type AvgPoolBackpropInputs = Pick;\nexport interface AvgPoolBackpropAttrs {\n filterSize: [number, number]|number;\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n}\n\nexport const AvgPool3D = 'AvgPool3D';\nexport type AvgPool3DInputs = Pick;\nexport interface AvgPool3DAttrs {\n filterSize: [number, number, number]|number;\n strides: [number, number, number]|number;\n pad: 'valid'|'same'|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n dataFormat: 'NDHWC'|'NCDHW';\n dilations?: [number, number, number]|number;\n}\n\nexport const AvgPool3DBackprop = 'AvgPool3DBackprop';\nexport type AvgPool3DBackpropInputs = Pick;\nexport interface AvgPool3DBackpropAttrs {\n filterSize: [number, number, number]|number;\n strides: [number, number, number]|number;\n pad: 'valid'|'same'|number;\n dilations: [number, number, number]|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const BatchMatMul = 'BatchMatMul';\nexport type BatchMatMulInputs = Pick;\nexport interface BatchMatMulAttrs {\n transposeA: boolean;\n transposeB: boolean;\n}\n\nexport const BatchToSpaceND = 'BatchToSpaceND';\nexport type BatchToSpaceNDInputs = Pick;\nexport interface BatchToSpaceNDAttrs {\n blockShape: number[];\n crops: number[][];\n}\n\nexport type BinaryInputs = Pick;\n\nexport const BroadcastTo = 'BroadcastTo';\nexport type BroadcastToInputs = Pick;\nexport interface BroadCastToAttrs {\n shape: number[];\n inputShape: number[]; // for gradient\n}\n\nexport const Cast = 'Cast';\nexport type CastInputs = UnaryInputs;\nexport interface CastAttrs {\n dtype: DataType;\n}\n\nexport const Ceil = 'Ceil';\nexport type CeilInputs = UnaryInputs;\n\nexport const ClipByValue = 'ClipByValue';\nexport type ClipByValueInputs = UnaryInputs;\nexport interface ClipByValueAttrs {\n clipValueMin: number;\n clipValueMax: number;\n}\n\nexport const Complex = 'Complex';\nexport type ComplexInputs = Pick;\n\nexport const Concat = 'Concat';\nexport type ConcatInputs = TensorInfo[];\nexport interface ConcatAttrs {\n axis: number;\n}\n\nexport const Conv2D = 'Conv2D';\nexport type Conv2DInputs = Pick;\nexport interface Conv2DAttrs {\n strides: [number, number]|number;\n pad: 'valid'|'same'|number|ExplicitPadding;\n dataFormat: 'NHWC'|'NCHW';\n dilations: [number, number]|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const Conv2DBackpropFilter = 'Conv2DBackpropFilter';\nexport type Conv2DBackpropFilterInputs = Pick;\nexport interface Conv2DBackpropFilterAttrs {\n strides: [number, number]|number;\n pad: 'valid'|'same'|number|ExplicitPadding;\n dataFormat: 'NHWC'|'NCHW';\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const Conv2DBackpropInput = 'Conv2DBackpropInput';\nexport type Conv2DBackpropInputInputs = Pick;\nexport interface Conv2DBackpropInputAttrs {\n strides: [number, number]|number;\n pad: 'valid'|'same'|number|ExplicitPadding;\n dataFormat: 'NHWC'|'NCHW';\n dimRoundingMode?: 'floor'|'round'|'ceil';\n inputShape: [number, number, number, number];\n}\n\nexport const Conv3D = 'Conv3D';\nexport type Conv3DInputs = Pick;\nexport interface Conv3DAttrs {\n strides: [number, number, number]|number;\n pad: 'valid'|'same';\n dataFormat: 'NDHWC'|'NCDHW';\n dilations: [number, number, number]|number;\n}\n\nexport const Conv3DBackpropFilterV2 = 'Conv3DBackpropFilterV2';\nexport type Conv3DBackpropFilterInputs = Pick;\n\nexport interface Conv3DBackpropFilterAttrs {\n strides: [number, number, number]|number;\n pad: 'valid'|'same';\n}\n\nexport const Conv3DBackpropInputV2 = 'Conv3DBackpropInputV2';\nexport type Conv3DBackpropInputInputs = Pick;\nexport interface Conv3DBackpropInputAttrs {\n pad: 'valid'|'same';\n}\n\nexport const Cos = 'Cos';\nexport type CosInputs = UnaryInputs;\n\nexport const Cosh = 'Cosh';\nexport type CoshInputs = UnaryInputs;\n\nexport const Cumsum = 'Cumsum';\nexport type CumsumInputs = Pick;\nexport interface CumsumAttrs {\n axis: number;\n exclusive: boolean;\n reverse: boolean;\n}\n\nexport const CropAndResize = 'CropAndResize';\nexport type CropAndResizeInputs =\n Pick;\nexport interface CropAndResizeAttrs {\n cropSize: [number, number];\n method: 'bilinear'|'nearest';\n extrapolationValue: number;\n}\n\nexport const DepthToSpace = 'DepthToSpace';\nexport type DepthToSpaceInputs = Pick;\nexport interface DepthToSpaceAttrs {\n blockSize: number;\n dataFormat: 'NHWC'|'NCHW';\n}\n\nexport const DepthwiseConv2dNative = 'DepthwiseConv2dNative';\nexport type DepthwiseConv2dNativeInputs =\n Pick;\nexport interface DepthwiseConv2dNativeAttrs {\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n dataFormat: 'NHWC'|'NCHW';\n dilations: [number, number]|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const DepthwiseConv2dNativeBackpropFilter =\n 'DepthwiseConv2dNativeBackpropFilter';\nexport type DepthwiseConv2dNativeBackpropFilterInputs =\n Pick;\n\nexport const DepthwiseConv2dNativeBackpropInput =\n 'DepthwiseConv2dNativeBackpropInput';\nexport type DepthwiseConv2dNativeBackpropInputInputs =\n Pick;\n\nexport const Diag = 'Diag';\nexport type DiagInputs = Pick;\n\nexport const Dilation2D = 'Dilation2D';\nexport type Dilation2DInputs = Pick;\nexport interface Dilation2DAttrs {\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n dilations: [number, number]|number;\n}\n\nexport const Dilation2DBackpropInput = 'Dilation2DBackpropInput';\nexport type Dilation2DBackpropInputInputs =\n Pick;\n\nexport const Dilation2DBackpropFilter = 'Dilation2DBackpropFilter';\nexport type Dilation2DBackpropFilterInputs =\n Pick;\n\nexport const Div = 'Div';\nexport type DivInputs = BinaryInputs;\n\nexport const Elu = 'Elu';\nexport type EluInputs = Pick;\n\nexport const EluGrad = 'EluGrad';\nexport type EluGradInputs = Pick;\n\nexport const Erf = 'Erf';\nexport type ErfInputs = UnaryInputs;\n\nexport const Equal = 'Equal';\nexport type EqualInputs = BinaryInputs;\n\nexport const Exp = 'Exp';\nexport type ExpInputs = UnaryInputs;\n\nexport const Expm1 = 'Expm1';\nexport type Expm1Inputs = UnaryInputs;\n\nexport const FFT = 'FFT';\nexport type FFTInputs = Pick;\n\nexport const Fill = 'Fill';\nexport interface FillAttrs {\n shape: number[];\n value: number|string;\n dtype: DataType;\n}\n\nexport const FlipLeftRight = 'FlipLeftRight';\nexport type FlipLeftRightInputs = Pick;\n\nexport const Floor = 'Floor';\nexport type FloorInputs = UnaryInputs;\n\nexport const FloorDiv = 'FloorDiv';\nexport type FloorDivInputs = BinaryInputs;\n\nexport const FusedBatchNorm = 'FusedBatchNorm';\nexport type FusedBatchNormInputs =\n Pick;\nexport interface FusedBatchNormAttrs {\n varianceEpsilon: number;\n}\n\nexport const GatherV2 = 'GatherV2';\nexport type GatherV2Inputs = Pick;\nexport interface GatherV2Attrs {\n axis: number;\n}\n\nexport const GatherNd = 'GatherNd';\nexport type GatherNdInputs = Pick;\n\nexport const Greater = 'Greater';\nexport type GreaterInputs = BinaryInputs;\n\nexport const GreaterEqual = 'GreaterEqual';\nexport type GreaterEqualInputs = BinaryInputs;\n\nexport const Identity = 'Identity';\nexport type IdentityInputs = Pick;\n\nexport const IFFT = 'IFFT';\nexport type IFFTInputs = Pick;\n\nexport const Imag = 'Imag';\nexport type ImagInputs = Pick;\n\nexport const IsFinite = 'IsFinite';\nexport type IsFiniteInputs = UnaryInputs;\n\nexport const IsInf = 'IsInf';\nexport type IsInfInputs = UnaryInputs;\n\nexport const IsNan = 'IsNan';\nexport type IsNanInputs = UnaryInputs;\n\nexport const Less = 'Less';\nexport type LessInputs = BinaryInputs;\n\nexport const LessEqual = 'LessEqual';\nexport type LessEqualInputs = BinaryInputs;\n\nexport const LinSpace = 'LinSpace';\nexport interface LinSpaceAttrs {\n start: number;\n stop: number;\n num: number;\n}\nexport const Log = 'Log';\nexport type LogInputs = UnaryInputs;\n\nexport const Log1p = 'Log1p';\nexport type Log1pInputs = UnaryInputs;\n\nexport const LogicalAnd = 'LogicalAnd';\nexport type LogicalAndInputs = BinaryInputs;\n\nexport const LogicalNot = 'LogicalNot';\nexport type LogicalNotInputs = Pick;\n\nexport const LogicalOr = 'LogicalOr';\nexport type LogicalOrInputs = BinaryInputs;\n\nexport const LogSoftmax = 'LogSoftmax';\nexport type LogSoftmaxInputs = Pick;\nexport interface LogSoftmaxAttrs {\n axis: number;\n}\n\nexport const LRN = 'LRN';\nexport type LRNInputs = Pick;\nexport interface LRNAttrs {\n depthRadius: number;\n bias: number;\n alpha: number;\n beta: number;\n}\n\nexport const LRNBackprop = 'LRNBackprop';\nexport type LRNBackpropInputs = Pick;\nexport interface LRNBackpropAttrs {\n depthRadius: number;\n bias: number;\n alpha: number;\n beta: number;\n}\n\nexport const Max = 'Max';\nexport type MaxInputs = Pick;\nexport interface MaxAttrs {\n reductionIndices: number|number[];\n keepDims: boolean;\n}\n\nexport const Maximum = 'Maximum';\nexport type MaximumInputs = BinaryInputs;\n\nexport const MaxPool = 'MaxPool';\nexport type MaxPoolInputs = Pick;\nexport interface MaxPoolAttrs {\n filterSize: [number, number]|number;\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const MaxPoolBackprop = 'MaxPoolBackprop';\nexport type MaxPoolBackpropInputs =\n Pick;\nexport interface MaxPoolBackpropAttrs {\n filterSize: [number, number]|number;\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const MaxPool3D = 'MaxPool3D';\nexport type MaxPool3DInputs = Pick;\nexport interface MaxPool3DAttrs {\n filterSize: [number, number, number]|number;\n strides: [number, number, number]|number;\n pad: 'valid'|'same'|number;\n dataFormat: 'NDHWC'|'NCDHW';\n dilations?: [number, number, number]|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const MaxPool3DBackprop = 'MaxPool3DBackprop';\nexport type MaxPool3DBackpropInputs =\n Pick;\nexport interface MaxPool3DBackpropAttrs {\n filterSize: [number, number, number]|number;\n strides: [number, number, number]|number;\n pad: 'valid'|'same'|number;\n dilations?: [number, number, number]|number;\n dimRoundingMode?: 'floor'|'round'|'ceil';\n}\n\nexport const MaxPoolWithArgmax = 'MaxPoolWithArgmax';\nexport type MaxPoolWithArgmaxInputs = Pick;\nexport interface MaxPoolWithArgmaxAttrs {\n filterSize: [number, number]|number;\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n includeBatchInIndex: boolean;\n}\n\nexport const Mean = 'Mean';\nexport type MeanInputs = Pick;\nexport interface MeanAttrs {\n axis: number|number[];\n keepDims: boolean;\n}\n\nexport const Min = 'Min';\nexport type MinInputs = Pick;\nexport interface MinAttrs {\n axis: number|number[];\n keepDims: boolean;\n}\n\nexport const Minimum = 'Minimum';\nexport type MinimumInputs = BinaryInputs;\n\nexport const Mod = 'Mod';\nexport type ModInputs = BinaryInputs;\n\nexport const Multiply = 'Multiply';\nexport type MultiplyInputs = BinaryInputs;\n\nexport const Negate = 'Negate';\nexport type NegateInputs = UnaryInputs;\n\nexport const NotEqual = 'NotEqual';\nexport type NotEqualInputs = BinaryInputs;\n\nexport const NonMaxSuppressionV3 = 'NonMaxSuppressionV3';\nexport type NonMaxSuppressionV3Inputs =\n Pick;\nexport interface NonMaxSuppressionV3Attrs {\n maxOutputSize: number;\n iouThreshold: number;\n scoreThreshold: number;\n}\n\nexport const NonMaxSuppressionV4 = 'NonMaxSuppressionV4';\nexport type NonMaxSuppressionV4Inputs =\n Pick;\nexport interface NonMaxSuppressionV4Attrs {\n maxOutputSize: number;\n iouThreshold: number;\n scoreThreshold: number;\n padToMaxOutputSize: boolean;\n}\n\nexport const NonMaxSuppressionV5 = 'NonMaxSuppressionV5';\nexport type NonMaxSuppressionV5Inputs =\n Pick;\nexport interface NonMaxSuppressionV5Attrs {\n maxOutputSize: number;\n iouThreshold: number;\n scoreThreshold: number;\n softNmsSigma: number;\n}\n\nexport const OnesLike = 'OnesLike';\nexport type OnesLikeInputs = UnaryInputs;\n\nexport const OneHot = 'OneHot';\nexport type OneHotInputs = Pick;\nexport interface OneHotAttrs {\n depth: number;\n onValue: number;\n offValue: number;\n}\n\nexport const PadV2 = 'PadV2';\nexport type PadV2Inputs = Pick;\nexport interface PadV2Attrs {\n paddings: Array<[number, number]>;\n constantValue: number;\n}\n\nexport const Pool = 'Pool';\nexport type PoolInputs = Pick;\n\nexport const Pow = 'Pow';\nexport type PowInputs = BinaryInputs;\n\nexport const Prelu = 'Prelu';\nexport type PreluInputs = Pick;\n\nexport const Prod = 'Prod';\nexport type ProdInputs = Pick;\nexport interface ProdAttrs {\n axis: number|number[];\n keepDims: boolean;\n}\n\nexport const Range = 'Range';\nexport interface RangeAttrs {\n start: number;\n stop: number;\n step: number;\n dtype: 'float32'|'int32';\n}\n\nexport const Real = 'Real';\nexport type RealInputs = Pick;\n\nexport const Reciprocal = 'Reciprocal';\nexport type ReciprocalInputs = UnaryInputs;\n\nexport const Relu = 'Relu';\nexport type ReluInputs = Pick;\n\nexport const Reshape = 'Reshape';\nexport type ReshapeInputs = Pick;\nexport interface ReshapeAttrs {\n shape: number[];\n}\n\nexport const ResizeNearestNeighbor = 'ResizeNearestNeighbor';\nexport type ResizeNearestNeighborInputs = Pick;\nexport interface ResizeNearestNeighborAttrs {\n alignCorners: boolean;\n size: [number, number];\n}\n\nexport const ResizeNearestNeighborGrad = 'ResizeNearestNeighborGrad';\nexport type ResizeNearestNeighborGradInputs =\n Pick;\n\nexport const ResizeBilinear = 'ResizeBilinear';\nexport type ResizeBilinearInputs = Pick;\nexport interface ResizeBilinearAttrs {\n alignCorners: boolean;\n size: [number, number];\n}\n\nexport const ResizeBilinearGrad = 'ResizeBilinearGrad';\nexport type ResizeBilinearGradInputs = Pick;\n\nexport const Relu6 = 'Relu6';\nexport type Relu6Inputs = Pick;\n\nexport const Reverse = 'Reverse';\nexport type ReverseInputs = Pick;\nexport interface ReverseAttrs {\n dims: number|number[];\n}\n\nexport const Round = 'Round';\nexport type RoundInputs = UnaryInputs;\n\nexport const Rsqrt = 'Rsqrt';\nexport type RsqrtInputs = UnaryInputs;\n\nexport const ScatterNd = 'ScatterNd';\nexport type ScatterNdInputs = Pick;\nexport interface ScatterNdAttrs {\n shape: number[];\n}\n\nexport const SelectV2 = 'SelectV2';\nexport type SelectV2Inputs = Pick;\n\nexport const Selu = 'Selu';\nexport type SeluInputs = Pick;\n\nexport const Slice = 'Slice';\nexport type SliceInputs = Pick;\nexport interface SliceAttrs {\n begin: number|number[];\n size: number|number[];\n}\nexport const Sin = 'Sin';\nexport type SinInputs = UnaryInputs;\n\nexport const Sinh = 'Sinh';\nexport type SinhInputs = UnaryInputs;\n\nexport const Sign = 'Sign';\nexport type SignInputs = UnaryInputs;\n\nexport const Sigmoid = 'Sigmoid';\nexport type SigmoidInputs = UnaryInputs;\n\nexport const Softplus = 'Softplus';\nexport type SoftplusInputs = UnaryInputs;\n\nexport const Sqrt = 'Sqrt';\nexport type SqrtInputs = UnaryInputs;\n\nexport const Sum = 'Sum';\nexport type SumInputs = Pick;\nexport interface SumAttrs {\n axis: number|number[];\n keepDims: boolean;\n}\n\nexport const SpaceToBatchND = 'SpaceToBatchND';\nexport type SpaceToBatchNDInputs = Pick;\nexport interface SpaceToBatchNDAttrs {\n blockShape: number[];\n paddings: number[][];\n}\n\nexport const SplitV = 'SplitV';\nexport type SplitVInputs = Pick;\nexport interface SplitVAttrs {\n numOrSizeSplits: number[]|number;\n axis: number;\n}\n\nexport const Softmax = 'Softmax';\nexport type SoftmaxInputs = Pick;\nexport interface SoftmaxAttrs {\n dim: number;\n}\n\nexport const SquaredDifference = 'SquaredDifference';\nexport type SquaredDifferenceInputs = BinaryInputs;\n\nexport const Square = 'Square';\nexport type SquareInputs = Pick;\n\nexport const Sub = 'Sub';\nexport type SubInputs = BinaryInputs;\n\nexport const SparseToDense = 'SparseToDense';\nexport type SparseToDenseInputs =\n Pick;\nexport interface SparseToDenseAttrs {\n outputShape: number[];\n}\n\nexport const StridedSlice = 'StridedSlice';\nexport type StridedSliceInputs = Pick;\nexport interface StridedSliceAttrs {\n begin: number[];\n end: number[];\n strides: number[];\n beginMask: number;\n endMask: number;\n ellipsisMask: number;\n newAxisMask: number;\n shrinkAxisMask: number;\n}\n\nexport const Tan = 'Tan';\nexport type TanInputs = UnaryInputs;\n\nexport const Tanh = 'Tanh';\nexport type TanhInputs = UnaryInputs;\n\nexport const Tile = 'Tile';\nexport type TileInputs = Pick;\nexport interface TileAttrs {\n reps: number[];\n}\n\nexport const TopK = 'TopK';\nexport type TopKInputs = Pick;\nexport interface TopKAttrs {\n k: number;\n sorted: boolean;\n}\n\nexport const Transpose = 'Transpose';\nexport type TransposeInputs = Pick;\nexport interface TransposeAttrs {\n perm: number[];\n}\n\nexport const Unique = 'Unique';\nexport type UniqueInputs = Pick;\nexport interface UniqueAttrs {\n axis: number;\n}\n\nexport type UnaryInputs = Pick;\n\nexport const Unpack = 'Unpack';\nexport type UnpackInputs = Pick;\nexport interface UnpackAttrs {\n axis: number;\n}\n\nexport const UnsortedSegmentSum = 'UnsortedSegmentSum';\nexport type UnsortedSegmentSumInputs =\n Pick;\nexport interface UnsortedSegmentSumAttrs {\n numSegments: number;\n}\n\nexport const ZerosLike = 'ZerosLike';\nexport type ZerosLikeInputs = UnaryInputs;\n\n/**\n * TensorFlow.js-only kernels\n */\nexport const Step = 'Step';\nexport type StepInputs = UnaryInputs;\nexport interface StepAttrs {\n alpha: number;\n}\n\nexport const FromPixels = 'FromPixels';\nexport interface FromPixelsInputs {\n pixels: PixelData|ImageData|HTMLImageElement|HTMLCanvasElement|\n HTMLVideoElement;\n}\nexport interface FromPixelsAttrs {\n numChannels: number;\n}\n\nexport const RotateWithOffset = 'RotateWithOffset';\nexport type RotateWithOffsetInputs = Pick;\nexport interface RotateWithOffsetAttrs {\n radians: number;\n fillValue: number|[number, number, number];\n center: number|[number, number];\n}\n\nexport const _FusedMatMul = '_FusedMatMul';\n// tslint:disable-next-line: class-name\nexport interface _FusedMatMulInputs extends NamedTensorInfoMap {\n a: TensorInfo;\n b: TensorInfo;\n bias?: TensorInfo;\n preluActivationWeights?: TensorInfo;\n}\n// tslint:disable-next-line: class-name\nexport interface _FusedMatMulAttrs {\n transposeA: boolean;\n transposeB: boolean;\n activation: Activation;\n}\n\nexport const FusedConv2D = 'FusedConv2D';\nexport interface FusedConv2DInputs extends NamedTensorInfoMap {\n x: TensorInfo;\n filter: TensorInfo;\n bias?: TensorInfo;\n preluActivationWeights?: TensorInfo;\n}\nexport interface FusedConv2DAttrs {\n strides: [number, number]|number;\n pad: 'valid'|'same'|number|ExplicitPadding;\n dataFormat: 'NHWC'|'NCHW';\n dilations: [number, number]|number;\n dimRoundingMode: 'floor'|'round'|'ceil';\n activation: Activation;\n}\n\nexport const FusedDepthwiseConv2D = 'FusedDepthwiseConv2D';\nexport interface FusedDepthwiseConv2DInputs extends NamedTensorInfoMap {\n x: TensorInfo;\n filter: TensorInfo;\n bias?: TensorInfo;\n preluActivationWeights?: TensorInfo;\n}\nexport interface FusedDepthwiseConv2DAttrs {\n strides: [number, number]|number;\n pad: 'valid'|'same'|number;\n dataFormat: 'NHWC'|'NCHW';\n dilations: [number, number]|number;\n dimRoundingMode: 'floor'|'round'|'ceil';\n activation: Activation;\n}\n", "/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport {env} from './environment';\n\nimport {getGlobal} from './global_util';\nimport {NamedGradientMap} from './tape';\nimport {Tensor} from './tensor';\nimport {DataType, RecursiveArray} from './types';\n\nconst kernelRegistry =\n getGlobal('kernelRegistry', () => new Map());\nconst gradRegistry =\n getGlobal('gradRegistry', () => new Map());\n\nexport type DataId = object;\n\ntype AttributeValue =\n number|number[]|boolean|boolean[]|string|string[]|NamedAttrMap;\n\n/** These are extra non-tensor/primitive params passed to kernel functions. */\nexport type Attribute = AttributeValue|RecursiveArray;\n\n/** Specifies the code to run when executing a kernel. */\nexport type KernelFunc = (params: {\n inputs: NamedTensorInfoMap,\n backend: {},\n attrs?: NamedAttrMap,\n}) => TensorInfo|TensorInfo[];\n\n/** The function to run when computing a gradient during backprop. */\nexport type GradFunc =\n (dy: Tensor|Tensor[], saved: Tensor[], attrs: NamedAttrMap) =>\n NamedGradientMap;\n\n/** Function that gets called after the backend initializes. */\nexport type KernelSetupFunc = (backend: {}) => void;\n/** Function that gets called right before the backend is disposed. */\nexport type KernelDisposeFunc = KernelSetupFunc;\n\n/** Config object for registering a kernel in the global registry. */\nexport interface KernelConfig {\n kernelName: string;\n backendName: string;\n kernelFunc: KernelFunc;\n setupFunc?: KernelSetupFunc;\n disposeFunc?: KernelDisposeFunc;\n}\n\n/** Config object for registering a gradient in the global registry. */\nexport interface GradConfig {\n kernelName: string;\n inputsToSave?: string[];\n // When saveAllInputs is true, all inputs will be saved. Only use this flag\n // if inputs is an array of Tensors.\n saveAllInputs?: boolean;\n outputsToSave?: boolean[];\n gradFunc: GradFunc;\n}\n\n/** Holds metadata for a given tensor. */\nexport interface TensorInfo {\n dataId: DataId;\n shape: number[];\n dtype: DataType;\n}\n\nexport interface NamedTensorInfoMap {\n [name: string]: TensorInfo;\n}\n\nexport interface NamedAttrMap {\n [name: string]: Attribute;\n}\n\n/**\n * Returns the kernel function (code) associated with the provided names.\n *\n * @param kernelName The official name of the kernel.\n * @param backendName The official name of the backend.\n */\nexport function getKernel(\n kernelName: string, backendName: string): KernelConfig {\n const key = makeKey(kernelName, backendName);\n return kernelRegistry.get(key);\n}\n\n/**\n * Returns the registered gradient info associated with the provided kernel.\n * @param kernelName The official TF kernel name.\n */\nexport function getGradient(kernelName: string): GradConfig {\n return gradRegistry.get(kernelName);\n}\n\nexport function getKernelsForBackend(backendName: string): KernelConfig[] {\n const it = kernelRegistry.entries();\n const result: KernelConfig[] = [];\n\n while (true) {\n const {done, value} = it.next();\n if (done) {\n break;\n }\n const [key, config] = value;\n const [backend, ] = key.split('_');\n if (backend === backendName) {\n result.push(config);\n }\n }\n return result;\n}\n\n/**\n * Registers the function (forward pass) for the kernel in a global registry.\n *\n * @param config A config object with the following properties:\n * - `kernelName` The official name of the kernel.\n * - `backendName` The official name of the backend.\n * - `kernelFunc` The function to run during the forward pass of the kernel.\n * - `setupFunc` Optional. Gets called once, after the backend initializes.\n * - `disposeFunc` Optional. Gets called once, right before the backend is\n * disposed.\n */\nexport function registerKernel(config: KernelConfig) {\n const {kernelName, backendName} = config;\n const key = makeKey(kernelName, backendName);\n if (kernelRegistry.has(key)) {\n console.warn(\n `The kernel '${kernelName}' for backend ` +\n `'${backendName}' is already registered`);\n }\n kernelRegistry.set(key, config);\n}\n\n/**\n * Registers a gradient function for a given kernel in the global registry,\n * to be used during the back-propagation of that kernel.\n *\n * @param config An object with the following properties:\n * - `kernelName` The name of the kernel that the gradient function is for.\n * - `gradFunc` The function to run during back-propagation.\n */\nexport function registerGradient(config: GradConfig) {\n const {kernelName} = config;\n\n if (gradRegistry.has(kernelName)) {\n // TODO (yassogba) after 3.0 assess whether we need to keep this gated\n // to debug mode.\n if (env().getBool('DEBUG')) {\n console.warn(`Overriding the gradient for '${kernelName}'`);\n }\n }\n gradRegistry.set(kernelName, config);\n}\n\n/**\n * Removes the kernel function from the registry.\n *\n * @param kernelName The official name of the kernel.\n * @param backendName The official name of the backend.\n *\n */\nexport function unregisterKernel(\n kernelName: string, backendName: string): void {\n const key = makeKey(kernelName, backendName);\n if (!kernelRegistry.has(key)) {\n throw new Error(\n `The kernel '${kernelName}' for backend ` +\n `'${backendName}' is not registered`);\n }\n kernelRegistry.delete(key);\n}\n\n/** Removes the registered gradient from the global registry. */\nexport function unregisterGradient(kernelName: string): void {\n if (!gradRegistry.has(kernelName)) {\n throw new Error(\n `The gradient '${kernelName}' for backend is not registered`);\n }\n gradRegistry.delete(kernelName);\n}\n\n/**\n * Finds kernels that have already been registered to a backend and re-registers\n * them for a new backend. Useful for registering custom backends.\n * @param registeredBackendName Already registered backend.\n * @param newBackendName New backend.\n */\nexport function copyRegisteredKernels(\n registeredBackendName: string, newBackendName: string): void {\n const kernels = getKernelsForBackend(registeredBackendName);\n kernels.forEach(kernelConfig => {\n const newKernelConfig =\n Object.assign({}, kernelConfig, {backendName: newBackendName});\n registerKernel(newKernelConfig);\n });\n}\n\nfunction makeKey(kernelName: string, backendName: string) {\n return `${backendName}_${kernelName}`;\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {env} from './environment';\nimport {BackendValues, DataType, DataTypeMap, FlatVector, NumericDataType, RecursiveArray, TensorLike, TypedArray} from './types';\n\n/**\n * Shuffles the array in-place using Fisher-Yates algorithm.\n *\n * ```js\n * const a = [1, 2, 3, 4, 5];\n * tf.util.shuffle(a);\n * console.log(a);\n * ```\n *\n * @param array The array to shuffle in-place.\n *\n * @doc {heading: 'Util', namespace: 'util'}\n */\n// tslint:disable-next-line:no-any\nexport function shuffle(array: any[]|Uint32Array|Int32Array|\n Float32Array): void {\n let counter = array.length;\n let temp = 0;\n let index = 0;\n // While there are elements in the array\n while (counter > 0) {\n // Pick a random index\n index = (Math.random() * counter) | 0;\n // Decrease counter by 1\n counter--;\n // And swap the last element with it\n temp = array[counter];\n array[counter] = array[index];\n array[index] = temp;\n }\n}\n\n/** Clamps a value to a specified range. */\nexport function clamp(min: number, x: number, max: number): number {\n return Math.max(min, Math.min(x, max));\n}\n\nexport function nearestLargerEven(val: number): number {\n return val % 2 === 0 ? val : val + 1;\n}\n\nexport function sum(arr: number[]): number {\n let sum = 0;\n for (let i = 0; i < arr.length; i++) {\n sum += arr[i];\n }\n return sum;\n}\n\n/**\n * Returns a sample from a uniform [a, b) distribution.\n *\n * @param a The minimum support (inclusive).\n * @param b The maximum support (exclusive).\n * @return A pseudorandom number on the half-open interval [a,b).\n */\nexport function randUniform(a: number, b: number) {\n const r = Math.random();\n return (b * r) + (1 - r) * a;\n}\n\n/** Returns the squared Euclidean distance between two vectors. */\nexport function distSquared(a: FlatVector, b: FlatVector): number {\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n const diff = Number(a[i]) - Number(b[i]);\n result += diff * diff;\n }\n return result;\n}\n\n/**\n * Asserts that the expression is true. Otherwise throws an error with the\n * provided message.\n *\n * ```js\n * const x = 2;\n * tf.util.assert(x === 2, 'x is not 2');\n * ```\n *\n * @param expr The expression to assert (as a boolean).\n * @param msg A function that returns the message to report when throwing an\n * error. We use a function for performance reasons.\n *\n * @doc {heading: 'Util', namespace: 'util'}\n */\nexport function assert(expr: boolean, msg: () => string) {\n if (!expr) {\n throw new Error(typeof msg === 'string' ? msg : msg());\n }\n}\n\nexport function assertShapesMatch(\n shapeA: number[], shapeB: number[], errorMessagePrefix = ''): void {\n assert(\n arraysEqual(shapeA, shapeB),\n () => errorMessagePrefix + ` Shapes ${shapeA} and ${shapeB} must match`);\n}\n\nexport function assertNonNull(a: TensorLike): void {\n assert(\n a != null,\n () => `The input to the tensor constructor must be a non-null value.`);\n}\n\n// NOTE: We explicitly type out what T extends instead of any so that\n// util.flatten on a nested array of number doesn't try to infer T as a\n// number[][], causing us to explicitly type util.flatten().\n/**\n * Flattens an arbitrarily nested array.\n *\n * ```js\n * const a = [[1, 2], [3, 4], [5, [6, [7]]]];\n * const flat = tf.util.flatten(a);\n * console.log(flat);\n * ```\n *\n * @param arr The nested array to flatten.\n * @param result The destination array which holds the elements.\n * @param skipTypedArray If true, avoids flattening the typed arrays. Defaults\n * to false.\n *\n * @doc {heading: 'Util', namespace: 'util'}\n */\nexport function\nflatten|TypedArray>(\n arr: T|RecursiveArray, result: T[] = [], skipTypedArray = false): T[] {\n if (result == null) {\n result = [];\n }\n if (Array.isArray(arr) || isTypedArray(arr) && !skipTypedArray) {\n for (let i = 0; i < arr.length; ++i) {\n flatten(arr[i], result, skipTypedArray);\n }\n } else {\n result.push(arr as T);\n }\n return result;\n}\n\n/**\n * Returns the size (number of elements) of the tensor given its shape.\n *\n * ```js\n * const shape = [3, 4, 2];\n * const size = tf.util.sizeFromShape(shape);\n * console.log(size);\n * ```\n *\n * @doc {heading: 'Util', namespace: 'util'}\n */\nexport function sizeFromShape(shape: number[]): number {\n if (shape.length === 0) {\n // Scalar.\n return 1;\n }\n let size = shape[0];\n for (let i = 1; i < shape.length; i++) {\n size *= shape[i];\n }\n return size;\n}\n\nexport function isScalarShape(shape: number[]): boolean {\n return shape.length === 0;\n}\n\nexport function arraysEqual(n1: FlatVector, n2: FlatVector) {\n if (n1 === n2) {\n return true;\n }\n if (n1 == null || n2 == null) {\n return false;\n }\n\n if (n1.length !== n2.length) {\n return false;\n }\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n return false;\n }\n }\n return true;\n}\n\nexport function isInt(a: number): boolean {\n return a % 1 === 0;\n}\n\nexport function tanh(x: number): number {\n // tslint:disable-next-line:no-any\n if ((Math as any).tanh != null) {\n // tslint:disable-next-line:no-any\n return (Math as any).tanh(x);\n }\n if (x === Infinity) {\n return 1;\n } else if (x === -Infinity) {\n return -1;\n } else {\n const e2x = Math.exp(2 * x);\n return (e2x - 1) / (e2x + 1);\n }\n}\n\nexport function sizeToSquarishShape(size: number): [number, number] {\n const width = Math.ceil(Math.sqrt(size));\n return [width, Math.ceil(size / width)];\n}\n\n/**\n * Creates a new array with randomized indicies to a given quantity.\n *\n * ```js\n * const randomTen = tf.util.createShuffledIndices(10);\n * console.log(randomTen);\n * ```\n *\n * @param number Quantity of how many shuffled indicies to create.\n *\n * @doc {heading: 'Util', namespace: 'util'}\n */\nexport function createShuffledIndices(n: number): Uint32Array {\n const shuffledIndices = new Uint32Array(n);\n for (let i = 0; i < n; ++i) {\n shuffledIndices[i] = i;\n }\n shuffle(shuffledIndices);\n return shuffledIndices;\n}\n\nexport function rightPad(a: string, size: number): string {\n if (size <= a.length) {\n return a;\n }\n return a + ' '.repeat(size - a.length);\n}\n\nexport function repeatedTry(\n checkFn: () => boolean, delayFn = (counter: number) => 0,\n maxCounter?: number): Promise {\n return new Promise((resolve, reject) => {\n let tryCount = 0;\n\n const tryFn = () => {\n if (checkFn()) {\n resolve();\n return;\n }\n\n tryCount++;\n\n const nextBackoff = delayFn(tryCount);\n\n if (maxCounter != null && tryCount >= maxCounter) {\n reject();\n return;\n }\n setTimeout(tryFn, nextBackoff);\n };\n\n tryFn();\n });\n}\n\n/**\n * Given the full size of the array and a shape that may contain -1 as the\n * implicit dimension, returns the inferred shape where -1 is replaced.\n * E.g. For shape=[2, -1, 3] and size=24, it will return [2, 4, 3].\n *\n * @param shape The shape, which may contain -1 in some dimension.\n * @param size The full size (number of elements) of the array.\n * @return The inferred shape where -1 is replaced with the inferred size.\n */\nexport function inferFromImplicitShape(\n shape: number[], size: number): number[] {\n let shapeProd = 1;\n let implicitIdx = -1;\n\n for (let i = 0; i < shape.length; ++i) {\n if (shape[i] >= 0) {\n shapeProd *= shape[i];\n } else if (shape[i] === -1) {\n if (implicitIdx !== -1) {\n throw Error(\n `Shapes can only have 1 implicit size. ` +\n `Found -1 at dim ${implicitIdx} and dim ${i}`);\n }\n implicitIdx = i;\n } else if (shape[i] < 0) {\n throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);\n }\n }\n\n if (implicitIdx === -1) {\n if (size > 0 && size !== shapeProd) {\n throw Error(`Size(${size}) must match the product of shape ${shape}`);\n }\n return shape;\n }\n\n if (shapeProd === 0) {\n throw Error(\n `Cannot infer the missing size in [${shape}] when ` +\n `there are 0 elements`);\n }\n if (size % shapeProd !== 0) {\n throw Error(\n `The implicit shape can't be a fractional number. ` +\n `Got ${size} / ${shapeProd}`);\n }\n\n const newShape = shape.slice();\n newShape[implicitIdx] = size / shapeProd;\n return newShape;\n}\n\nexport function parseAxisParam(\n axis: number|number[], shape: number[]): number[] {\n const rank = shape.length;\n\n // Normalize input\n axis = axis == null ? shape.map((s, i) => i) : [].concat(axis);\n\n // Check for valid range\n assert(\n axis.every(ax => ax >= -rank && ax < rank),\n () =>\n `All values in axis param must be in range [-${rank}, ${rank}) but ` +\n `got axis ${axis}`);\n\n // Check for only integers\n assert(\n axis.every(ax => isInt(ax)),\n () => `All values in axis param must be integers but ` +\n `got axis ${axis}`);\n\n // Handle negative axis.\n return axis.map(a => a < 0 ? rank + a : a);\n}\n\n/** Reduces the shape by removing all dimensions of shape 1. */\nexport function squeezeShape(shape: number[], axis?: number[]):\n {newShape: number[], keptDims: number[]} {\n const newShape: number[] = [];\n const keptDims: number[] = [];\n const isEmptyArray = axis != null && Array.isArray(axis) && axis.length === 0;\n const axes = (axis == null || isEmptyArray) ?\n null :\n parseAxisParam(axis, shape).sort();\n let j = 0;\n for (let i = 0; i < shape.length; ++i) {\n if (axes != null) {\n if (axes[j] === i && shape[i] !== 1) {\n throw new Error(\n `Can't squeeze axis ${i} since its dim '${shape[i]}' is not 1`);\n }\n if ((axes[j] == null || axes[j] > i) && shape[i] === 1) {\n newShape.push(shape[i]);\n keptDims.push(i);\n }\n if (axes[j] <= i) {\n j++;\n }\n }\n if (shape[i] !== 1) {\n newShape.push(shape[i]);\n keptDims.push(i);\n }\n }\n return {newShape, keptDims};\n}\n\nexport function getTypedArrayFromDType(\n dtype: D, size: number): DataTypeMap[D] {\n let values = null;\n if (dtype == null || dtype === 'float32') {\n values = new Float32Array(size);\n } else if (dtype === 'int32') {\n values = new Int32Array(size);\n } else if (dtype === 'bool') {\n values = new Uint8Array(size);\n } else {\n throw new Error(`Unknown data type ${dtype}`);\n }\n return values as DataTypeMap[D];\n}\n\nexport function getArrayFromDType(\n dtype: D, size: number): DataTypeMap[D] {\n let values = null;\n if (dtype == null || dtype === 'float32') {\n values = new Float32Array(size);\n } else if (dtype === 'int32') {\n values = new Int32Array(size);\n } else if (dtype === 'bool') {\n values = new Uint8Array(size);\n } else if (dtype === 'string') {\n values = new Array<'string'>(size);\n } else {\n throw new Error(`Unknown data type ${dtype}`);\n }\n return values as DataTypeMap[D];\n}\n\nexport function checkConversionForErrors(\n vals: DataTypeMap[D]|number[], dtype: D): void {\n for (let i = 0; i < vals.length; i++) {\n const num = vals[i] as number;\n if (isNaN(num) || !isFinite(num)) {\n throw Error(`A tensor of type ${dtype} being uploaded contains ${num}.`);\n }\n }\n}\n\n/** Returns true if the dtype is valid. */\nexport function isValidDtype(dtype: DataType): boolean {\n return dtype === 'bool' || dtype === 'complex64' || dtype === 'float32' ||\n dtype === 'int32' || dtype === 'string';\n}\n\n/**\n * Returns true if the new type can't encode the old type without loss of\n * precision.\n */\nexport function hasEncodingLoss(oldType: DataType, newType: DataType): boolean {\n if (newType === 'complex64') {\n return false;\n }\n if (newType === 'float32' && oldType !== 'complex64') {\n return false;\n }\n if (newType === 'int32' && oldType !== 'float32' && oldType !== 'complex64') {\n return false;\n }\n if (newType === 'bool' && oldType === 'bool') {\n return false;\n }\n return true;\n}\n\nexport function isTypedArray(a: {}): a is Float32Array|Int32Array|Uint8Array {\n return a instanceof Float32Array || a instanceof Int32Array ||\n a instanceof Uint8Array;\n}\n\nexport function bytesPerElement(dtype: DataType): number {\n if (dtype === 'float32' || dtype === 'int32') {\n return 4;\n } else if (dtype === 'complex64') {\n return 8;\n } else if (dtype === 'bool') {\n return 1;\n } else {\n throw new Error(`Unknown dtype ${dtype}`);\n }\n}\n\n/**\n * Returns the approximate number of bytes allocated in the string array - 2\n * bytes per character. Computing the exact bytes for a native string in JS is\n * not possible since it depends on the encoding of the html page that serves\n * the website.\n */\nexport function bytesFromStringArray(arr: Uint8Array[]): number {\n if (arr == null) {\n return 0;\n }\n let bytes = 0;\n arr.forEach(x => bytes += x.length);\n return bytes;\n}\n\n/** Returns true if the value is a string. */\nexport function isString(value: {}): value is string {\n return typeof value === 'string' || value instanceof String;\n}\n\nexport function isBoolean(value: {}): boolean {\n return typeof value === 'boolean';\n}\n\nexport function isNumber(value: {}): boolean {\n return typeof value === 'number';\n}\n\nexport function inferDtype(values: TensorLike): DataType {\n if (Array.isArray(values)) {\n return inferDtype(values[0]);\n }\n if (values instanceof Float32Array) {\n return 'float32';\n } else if (values instanceof Int32Array || values instanceof Uint8Array) {\n return 'int32';\n } else if (isNumber(values)) {\n return 'float32';\n } else if (isString(values)) {\n return 'string';\n } else if (isBoolean(values)) {\n return 'bool';\n }\n return 'float32';\n}\n\nexport function isFunction(f: Function) {\n return !!(f && f.constructor && f.call && f.apply);\n}\n\nexport function nearestDivisor(size: number, start: number): number {\n for (let i = start; i < size; ++i) {\n if (size % i === 0) {\n return i;\n }\n }\n return size;\n}\n\nexport function computeStrides(shape: number[]): number[] {\n const rank = shape.length;\n if (rank < 2) {\n return [];\n }\n\n // Last dimension has implicit stride of 1, thus having D-1 (instead of D)\n // strides.\n const strides = new Array(rank - 1);\n strides[rank - 2] = shape[rank - 1];\n for (let i = rank - 3; i >= 0; --i) {\n strides[i] = strides[i + 1] * shape[i + 1];\n }\n return strides;\n}\n\n/**\n * Create typed array for scalar value. Used for storing in `DataStorage`.\n */\nexport function createScalarValue(\n value: DataType, dtype: DataType): BackendValues {\n if (dtype === 'string') {\n return encodeString(value);\n }\n\n return toTypedArray([value], dtype);\n}\n\nexport function toTypedArray(a: TensorLike, dtype: DataType): TypedArray {\n if (dtype === 'string') {\n throw new Error('Cannot convert a string[] to a TypedArray');\n }\n if (Array.isArray(a)) {\n a = flatten(a);\n }\n\n if (env().getBool('DEBUG')) {\n checkConversionForErrors(a as number[], dtype);\n }\n if (noConversionNeeded(a, dtype)) {\n return a as TypedArray;\n }\n if (dtype == null || dtype === 'float32' || dtype === 'complex64') {\n return new Float32Array(a as number[]);\n } else if (dtype === 'int32') {\n return new Int32Array(a as number[]);\n } else if (dtype === 'bool') {\n const bool = new Uint8Array((a as number[]).length);\n for (let i = 0; i < bool.length; ++i) {\n if (Math.round((a as number[])[i]) !== 0) {\n bool[i] = 1;\n }\n }\n return bool;\n } else {\n throw new Error(`Unknown data type ${dtype}`);\n }\n}\n\nfunction createNestedArray(offset: number, shape: number[], a: TypedArray) {\n const ret = new Array();\n if (shape.length === 1) {\n const d = shape[0];\n for (let i = 0; i < d; i++) {\n ret[i] = a[offset + i];\n }\n } else {\n const d = shape[0];\n const rest = shape.slice(1);\n const len = rest.reduce((acc, c) => acc * c);\n for (let i = 0; i < d; i++) {\n ret[i] = createNestedArray(offset + i * len, rest, a);\n }\n }\n return ret;\n}\n\n// Provide a nested array of TypedArray in given shape.\nexport function toNestedArray(shape: number[], a: TypedArray) {\n if (shape.length === 0) {\n // Scalar type should return a single number.\n return a[0];\n }\n const size = shape.reduce((acc, c) => acc * c);\n if (size === 0) {\n // A tensor with shape zero should be turned into empty list.\n return [];\n }\n if (size !== a.length) {\n throw new Error(`[${shape}] does not match the input size ${a.length}.`);\n }\n\n return createNestedArray(0, shape, a);\n}\n\nfunction noConversionNeeded(a: TensorLike, dtype: DataType): boolean {\n return (a instanceof Float32Array && dtype === 'float32') ||\n (a instanceof Int32Array && dtype === 'int32') ||\n (a instanceof Uint8Array && dtype === 'bool');\n}\n\nexport function makeOnesTypedArray(\n size: number, dtype: D): DataTypeMap[D] {\n const array = makeZerosTypedArray(size, dtype);\n for (let i = 0; i < array.length; i++) {\n array[i] = 1;\n }\n return array;\n}\n\nexport function makeZerosTypedArray(\n size: number, dtype: D): DataTypeMap[D] {\n if (dtype == null || dtype === 'float32' || dtype === 'complex64') {\n return new Float32Array(size) as DataTypeMap[D];\n } else if (dtype === 'int32') {\n return new Int32Array(size) as DataTypeMap[D];\n } else if (dtype === 'bool') {\n return new Uint8Array(size) as DataTypeMap[D];\n } else {\n throw new Error(`Unknown data type ${dtype}`);\n }\n}\n\n/**\n * Make nested `TypedArray` filled with zeros.\n * @param shape The shape information for the nested array.\n * @param dtype dtype of the array element.\n */\nexport function makeZerosNestedTypedArray(\n shape: number[], dtype: D) {\n const size = shape.reduce((prev, curr) => prev * curr, 1);\n if (dtype == null || dtype === 'float32') {\n return toNestedArray(shape, new Float32Array(size));\n } else if (dtype === 'int32') {\n return toNestedArray(shape, new Int32Array(size));\n } else if (dtype === 'bool') {\n return toNestedArray(shape, new Uint8Array(size));\n } else {\n throw new Error(`Unknown data type ${dtype}`);\n }\n}\n\n/**\n * Returns the current high-resolution time in milliseconds relative to an\n * arbitrary time in the past. It works across different platforms (node.js,\n * browsers).\n *\n * ```js\n * console.log(tf.util.now());\n * ```\n *\n * @doc {heading: 'Util', namespace: 'util'}\n */\nexport function now(): number {\n return env().platform.now();\n}\n\nexport function assertNonNegativeIntegerDimensions(shape: number[]) {\n shape.forEach(dimSize => {\n assert(\n Number.isInteger(dimSize) && dimSize >= 0,\n () =>\n `Tensor must have a shape comprised of positive integers but got ` +\n `shape [${shape}].`);\n });\n}\n\n/**\n * Returns a platform-specific implementation of\n * [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).\n *\n * If `fetch` is defined on the global object (`window`, `process`, etc.),\n * `tf.util.fetch` returns that function.\n *\n * If not, `tf.util.fetch` returns a platform-specific solution.\n *\n * ```js\n * const resource = await tf.util.fetch('https://unpkg.com/@tensorflow/tfjs');\n * // handle response\n * ```\n *\n * @doc {heading: 'Util'}\n */\nexport function fetch(\n path: string, requestInits?: RequestInit): Promise {\n return env().platform.fetch(path, requestInits);\n}\n\n/**\n * Encodes the provided string into bytes using the provided encoding scheme.\n *\n * @param s The string to encode.\n * @param encoding The encoding scheme. Defaults to utf-8.\n *\n * @doc {heading: 'Util'}\n */\nexport function encodeString(s: string, encoding = 'utf-8'): Uint8Array {\n encoding = encoding || 'utf-8';\n return env().platform.encode(s, encoding);\n}\n\n/**\n * Decodes the provided bytes into a string using the provided encoding scheme.\n * @param bytes The bytes to decode.\n *\n * @param encoding The encoding scheme. Defaults to utf-8.\n *\n * @doc {heading: 'Util'}\n */\nexport function decodeString(bytes: Uint8Array, encoding = 'utf-8'): string {\n encoding = encoding || 'utf-8';\n return env().platform.decode(bytes, encoding);\n}\n\n/**\n * Computes flat index for a given location (multidimentionsal index) in a\n * Tensor/multidimensional array.\n *\n * @param locs Location in the tensor.\n * @param rank Rank of the tensor.\n * @param strides Tensor strides.\n */\nexport function locToIndex(\n locs: number[], rank: number, strides: number[]): number {\n if (rank === 0) {\n return 0;\n } else if (rank === 1) {\n return locs[0];\n }\n let index = locs[locs.length - 1];\n for (let i = 0; i < locs.length - 1; ++i) {\n index += strides[i] * locs[i];\n }\n return index;\n}\n\n/**\n * Computes the location (multidimensional index) in a tensor/multidimentional\n * array for a given flat index.\n *\n * @param index Index in flat array.\n * @param rank Rank of tensor.\n * @param strides Strides of tensor.\n */\nexport function indexToLoc(\n index: number, rank: number, strides: number[]): number[] {\n if (rank === 0) {\n return [];\n } else if (rank === 1) {\n return [index];\n }\n const locs: number[] = new Array(rank);\n for (let i = 0; i < locs.length - 1; ++i) {\n locs[i] = Math.floor(index / strides[i]);\n index -= locs[i] * strides[i];\n }\n locs[locs.length - 1] = index;\n return locs;\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {BackendTimer} from './backends/backend';\nimport {Tensor} from './tensor';\nimport {NamedTensorMap} from './tensor_types';\nimport {DataType, DataTypeMap, TypedArray} from './types';\nimport * as util from './util';\n\nexport type KernelProfile = {\n kernelName: string,\n outputs: Tensor[],\n inputs: NamedTensorMap,\n timeMs: Promise,\n extraInfo: Promise\n};\n\nexport class Profiler {\n constructor(private backendTimer: BackendTimer, private logger?: Logger) {\n if (logger == null) {\n this.logger = new Logger();\n }\n }\n\n profileKernel(kernelName: string, inputs: NamedTensorMap, f: () => Tensor[]):\n KernelProfile {\n let outputs: Tensor[];\n const holdResultWrapperFn = () => {\n outputs = f();\n };\n const timer = this.backendTimer.time(holdResultWrapperFn);\n\n for (let i = 0; i < outputs.length; i++) {\n const output = outputs[i];\n // Dangling promise here because we don't want to propagate up\n // asynchronicity.\n output.data().then(tensorVals => {\n checkComputationForErrors(tensorVals, output.dtype, kernelName);\n });\n }\n\n const kernelProfile = {\n kernelName,\n outputs,\n inputs,\n timeMs: timer.then(timing => timing.kernelMs),\n extraInfo: timer.then(\n timing => timing.getExtraProfileInfo != null ?\n timing.getExtraProfileInfo() :\n '')\n };\n return kernelProfile;\n }\n\n logKernelProfile(kernelProfile: KernelProfile): void {\n const {kernelName, outputs, timeMs, inputs, extraInfo} = kernelProfile;\n\n outputs.forEach(result => {\n Promise.all([result.data(), timeMs, extraInfo]).then(valueContainer => {\n this.logger.logKernelProfile(\n kernelName, result, valueContainer[0], valueContainer[1], inputs,\n valueContainer[2]);\n });\n });\n }\n}\n\nexport function checkComputationForErrors(\n vals: DataTypeMap[D], dtype: D, kernelName: string): boolean {\n if (dtype !== 'float32') {\n // Only floating point computations will generate NaN values\n return false;\n }\n for (let i = 0; i < vals.length; i++) {\n const num = vals[i] as number;\n if (isNaN(num) || !isFinite(num)) {\n // Throwing custom exception so behavior is testable.\n console.warn(`Found ${num} in the result of '${kernelName}'`);\n return true;\n }\n }\n return false;\n}\n\nexport class Logger {\n logKernelProfile(\n name: string, result: Tensor, vals: TypedArray,\n timeMs: number|{error: string}, inputs: NamedTensorMap,\n extraInfo?: string) {\n const time = typeof timeMs === 'number' ? util.rightPad(`${timeMs}ms`, 9) :\n timeMs['error'];\n const paddedName = util.rightPad(name, 25);\n const rank = result.rank;\n const size = result.size;\n const shape = util.rightPad(result.shape.toString(), 14);\n let inputShapesDescription = '';\n\n for (const name in inputs) {\n const input = inputs[name];\n if (input != null) {\n // The input might be a non-tensor (e.g HTMLImageElement), in which case\n // we claim the output shape as input shape.\n const inputShape = input.shape || result.shape;\n const inputRank = inputShape.length;\n inputShapesDescription +=\n `${name}: ${inputRank}D ${inputRank > 0 ? inputShape : ''} `;\n }\n }\n\n console.log(\n `%c${paddedName}\\t%c${time}\\t%c${rank}D ${shape}\\t%c${size}\\t%c${\n inputShapesDescription}\\t%c${extraInfo}`,\n 'font-weight:bold', 'color:red', 'color:blue', 'color: orange',\n 'color: green', 'color: steelblue');\n }\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Tensor} from './tensor';\nimport {NamedTensorMap} from './tensor_types';\nimport * as util from './util';\n\nexport interface TapeNode {\n id: number;\n kernelName: string;\n outputs: Tensor[];\n inputs: NamedTensorMap;\n // Optional params, defined only for ops with gradient impl.\n gradient?: (dys: Tensor[]) => NamedGradientMap;\n saved?: Tensor[];\n}\n\nexport type NamedGradientMap = {\n [inputName: string]: () => Tensor;\n};\n\n/**\n * Computes a list of TapeNodes that connect x to y, filtering everything else\n * out and preserving the order of the original tape elements.\n *\n * @param tape The tape elements to filter.\n * @param xs The input Tensors.\n * @param y The output Tensor.\n */\nexport function getFilteredNodesXToY(\n tape: TapeNode[], xs: Tensor[], y: Tensor): TapeNode[] {\n // Forward pass to compute all the nodes and Tensors that are transitively a\n // function of x.\n const tensorsFromX: {[tensorId: number]: boolean} = {};\n const nodesFromX: {[nodeId: number]: boolean} = {};\n for (let i = 0; i < xs.length; i++) {\n tensorsFromX[xs[i].id] = true;\n }\n\n for (let i = 0; i < tape.length; i++) {\n const node = tape[i];\n const nodeInputs = node.inputs;\n for (const inputName in nodeInputs) {\n const input = nodeInputs[inputName];\n\n let anyInputFromX = false;\n for (let j = 0; j < xs.length; j++) {\n if (tensorsFromX[input.id]) {\n node.outputs.forEach(output => tensorsFromX[output.id] = true);\n anyInputFromX = true;\n nodesFromX[node.id] = true;\n break;\n }\n }\n\n if (anyInputFromX) {\n break;\n }\n }\n }\n\n // Backward pass to find all of the nodes and Tensors that lead to y.\n const tensorsLeadToY: {[tensorId: number]: boolean} = {};\n tensorsLeadToY[y.id] = true;\n const nodesToY: {[nodeId: number]: boolean} = {};\n\n for (let i = tape.length - 1; i >= 0; i--) {\n const node = tape[i];\n const nodeInputs = node.inputs;\n\n // If any of the outputs lead to y, mark all of the inputs as leading to y.\n for (let j = 0; j < node.outputs.length; j++) {\n if (tensorsLeadToY[node.outputs[j].id]) {\n for (const inputName in nodeInputs) {\n tensorsLeadToY[nodeInputs[inputName].id] = true;\n nodesToY[node.id] = true;\n }\n break;\n }\n }\n }\n\n // Return the paths that come from x and lead to y.\n const filteredTape: TapeNode[] = [];\n for (let i = 0; i < tape.length; i++) {\n const node = tape[i];\n\n if (nodesFromX[node.id] && nodesToY[node.id]) {\n // Prune the inputs from the node that aren't a function of x.\n const prunedInputs: {[inputName: string]: Tensor} = {};\n for (const inputName in node.inputs) {\n const nodeInput = node.inputs[inputName];\n if (tensorsFromX[nodeInput.id]) {\n prunedInputs[inputName] = nodeInput;\n }\n }\n\n // Copy the node and overwrite inputsAndArgs to the pruned version.\n const prunedNode = Object.assign({}, node);\n prunedNode.inputs = prunedInputs;\n prunedNode.outputs = node.outputs;\n\n filteredTape.push(prunedNode);\n }\n }\n\n return filteredTape;\n}\n\n/**\n * Backpropagate gradients through the filtered TapeNodes.\n *\n * @param tensorAccumulatedGradientMap A map of Tensor to its gradient. This map\n * is mutated by this method.\n * @param filteredTape The filtered TapeNodes to backprop through.\n */\nexport function backpropagateGradients(\n tensorAccumulatedGradientMap: {[tensorId: number]: Tensor},\n filteredTape: TapeNode[], tidy: (f: Function) => Tensor,\n add: (a: Tensor, b: Tensor) => Tensor) {\n // Walk the tape backward and keep a map of Tensor to its gradient.\n for (let i = filteredTape.length - 1; i >= 0; i--) {\n const node = filteredTape[i];\n\n const dys: Tensor[] = [];\n node.outputs.forEach(o => {\n const gradTensor = tensorAccumulatedGradientMap[o.id];\n if (gradTensor != null) {\n dys.push(gradTensor);\n } else {\n // This particular output is not in the back-propagation subgraph, so it\n // does not affect the final output, thus we put null for its dy.\n dys.push(null);\n }\n });\n\n if (node.gradient == null) {\n throw new Error(\n `Cannot compute gradient: gradient function not found ` +\n `for ${node.kernelName}.`);\n }\n\n // Backprop dy through this node and accumulate gradients over the inputs.\n const inputGradients = node.gradient(dys);\n\n for (const inputName in node.inputs) {\n if (!(inputName in inputGradients)) {\n throw new Error(\n `Cannot backprop through input ${inputName}. ` +\n `Available gradients found: ${Object.keys(inputGradients)}.`);\n }\n\n // Call the gradient function.\n const dx = tidy(() => inputGradients[inputName]());\n if (dx.dtype !== 'float32') {\n throw new Error(\n `Error in gradient for op ${\n node.kernelName}. The gradient of input ` +\n `${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);\n }\n const x = node.inputs[inputName];\n if (!util.arraysEqual(dx.shape, x.shape)) {\n throw new Error(\n `Error in gradient for op ${\n node.kernelName}. The gradient of input ` +\n `'${inputName}' has shape '${dx.shape}', which does not match ` +\n `the shape of the input '${x.shape}'`);\n }\n\n if (tensorAccumulatedGradientMap[x.id] == null) {\n tensorAccumulatedGradientMap[x.id] = dx;\n } else {\n const curGradient = tensorAccumulatedGradientMap[x.id];\n tensorAccumulatedGradientMap[x.id] = add(curGradient, dx);\n curGradient.dispose();\n }\n }\n }\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {DataType, TypedArray} from './types';\nimport {computeStrides, isString, rightPad, sizeFromShape} from './util';\n\n// Maximum number of values before we decide to show ellipsis.\nconst FORMAT_LIMIT_NUM_VALS = 20;\n// Number of first and last values to show when displaying a, b,...,y, z.\nconst FORMAT_NUM_FIRST_LAST_VALS = 3;\n// Number of significant digits to show.\nconst FORMAT_NUM_SIG_DIGITS = 7;\n\nexport function tensorToString(\n vals: TypedArray|string[], shape: number[], dtype: DataType,\n verbose: boolean) {\n const strides = computeStrides(shape);\n const padPerCol = computeMaxSizePerColumn(vals, shape, dtype, strides);\n const rank = shape.length;\n const valsLines = subTensorToString(vals, shape, dtype, strides, padPerCol);\n const lines = ['Tensor'];\n if (verbose) {\n lines.push(` dtype: ${dtype}`);\n lines.push(` rank: ${rank}`);\n lines.push(` shape: [${shape}]`);\n lines.push(` values:`);\n }\n lines.push(valsLines.map(l => ' ' + l).join('\\n'));\n return lines.join('\\n');\n}\n\nfunction computeMaxSizePerColumn(\n vals: TypedArray|string[], shape: number[], dtype: DataType,\n strides: number[]): number[] {\n const n = sizeFromShape(shape);\n const numCols = strides[strides.length - 1];\n const padPerCol = new Array(numCols).fill(0);\n const rank = shape.length;\n const valuesOrTuples =\n dtype === 'complex64' ? createComplexTuples(vals) : vals;\n\n if (rank > 1) {\n for (let row = 0; row < n / numCols; row++) {\n const offset = row * numCols;\n for (let j = 0; j < numCols; j++) {\n padPerCol[j] = Math.max(\n padPerCol[j],\n valToString(valuesOrTuples[offset + j], 0, dtype).length);\n }\n }\n }\n return padPerCol;\n}\n\nfunction valToString(\n val: number|string|[number, number], pad: number, dtype: DataType) {\n let valStr: string;\n if (Array.isArray(val)) {\n valStr = `${parseFloat(val[0].toFixed(FORMAT_NUM_SIG_DIGITS))} + ` +\n `${parseFloat(val[1].toFixed(FORMAT_NUM_SIG_DIGITS))}j`;\n } else if (isString(val)) {\n valStr = `'${val}'`;\n } else if (dtype === 'bool') {\n valStr = boolNumToString(val);\n } else {\n valStr = parseFloat(val.toFixed(FORMAT_NUM_SIG_DIGITS)).toString();\n }\n\n return rightPad(valStr, pad);\n}\n\nfunction boolNumToString(v: number): string {\n return v === 0 ? 'false' : 'true';\n}\n\nfunction subTensorToString(\n vals: TypedArray|string[], shape: number[], dtype: DataType,\n strides: number[], padPerCol: number[], isLast = true): string[] {\n const storagePerElement = dtype === 'complex64' ? 2 : 1;\n\n const size = shape[0];\n const rank = shape.length;\n if (rank === 0) {\n if (dtype === 'complex64') {\n const complexTuple = createComplexTuples(vals);\n return [valToString(complexTuple[0], 0, dtype)];\n }\n if (dtype === 'bool') {\n return [boolNumToString(vals[0] as number)];\n }\n return [vals[0].toString()];\n }\n\n if (rank === 1) {\n if (size > FORMAT_LIMIT_NUM_VALS) {\n const firstValsSize = FORMAT_NUM_FIRST_LAST_VALS * storagePerElement;\n\n let firstVals = Array.from(\n vals.slice(0, firstValsSize));\n let lastVals = Array.from(vals.slice(\n (size - FORMAT_NUM_FIRST_LAST_VALS) * storagePerElement,\n size * storagePerElement));\n if (dtype === 'complex64') {\n firstVals = createComplexTuples(firstVals);\n lastVals = createComplexTuples(lastVals);\n }\n return [\n '[' +\n firstVals.map((x, i) => valToString(x, padPerCol[i], dtype))\n .join(', ') +\n ', ..., ' +\n lastVals\n .map(\n (x, i) => valToString(\n x, padPerCol[size - FORMAT_NUM_FIRST_LAST_VALS + i], dtype))\n .join(', ') +\n ']'\n ];\n }\n const displayVals: Array =\n dtype === 'complex64' ? createComplexTuples(vals) :\n Array.from(vals);\n\n return [\n '[' +\n displayVals.map((x, i) => valToString(x, padPerCol[i], dtype))\n .join(', ') +\n ']'\n ];\n }\n\n // The array is rank 2 or more.\n const subshape = shape.slice(1);\n const substrides = strides.slice(1);\n const stride = strides[0] * storagePerElement;\n const lines: string[] = [];\n if (size > FORMAT_LIMIT_NUM_VALS) {\n for (let i = 0; i < FORMAT_NUM_FIRST_LAST_VALS; i++) {\n const start = i * stride;\n const end = start + stride;\n lines.push(...subTensorToString(\n vals.slice(start, end), subshape, dtype, substrides, padPerCol,\n false /* isLast */));\n }\n lines.push('...');\n for (let i = size - FORMAT_NUM_FIRST_LAST_VALS; i < size; i++) {\n const start = i * stride;\n const end = start + stride;\n lines.push(...subTensorToString(\n vals.slice(start, end), subshape, dtype, substrides, padPerCol,\n i === size - 1 /* isLast */));\n }\n } else {\n for (let i = 0; i < size; i++) {\n const start = i * stride;\n const end = start + stride;\n lines.push(...subTensorToString(\n vals.slice(start, end), subshape, dtype, substrides, padPerCol,\n i === size - 1 /* isLast */));\n }\n }\n const sep = rank === 2 ? ',' : '';\n lines[0] = '[' + lines[0] + sep;\n for (let i = 1; i < lines.length - 1; i++) {\n lines[i] = ' ' + lines[i] + sep;\n }\n let newLineSep = ',\\n';\n for (let i = 2; i < rank; i++) {\n newLineSep += '\\n';\n }\n lines[lines.length - 1] =\n ' ' + lines[lines.length - 1] + ']' + (isLast ? '' : newLineSep);\n return lines;\n}\n\nfunction createComplexTuples(vals: Array<{}>|\n TypedArray): Array<[number, number]> {\n const complexTuples: Array<[number, number]> = [];\n for (let i = 0; i < vals.length; i += 2) {\n complexTuples.push([vals[i], vals[i + 1]] as [number, number]);\n }\n return complexTuples;\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {tensorToString} from './tensor_format';\nimport {ArrayMap, BackendValues, DataType, DataTypeMap, DataValues, NumericDataType, Rank, ShapeMap, SingleValueMap, TypedArray} from './types';\nimport * as util from './util';\nimport {computeStrides, toNestedArray} from './util';\n\nexport interface TensorData {\n dataId?: DataId;\n values?: DataTypeMap[D];\n}\n\n// This interface mimics KernelBackend (in backend.ts), which would create a\n// circular dependency if imported.\nexport interface Backend {}\n\n/**\n * A mutable object, similar to `tf.Tensor`, that allows users to set values\n * at locations before converting to an immutable `tf.Tensor`.\n *\n * See `tf.buffer` for creating a tensor buffer.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\nexport class TensorBuffer {\n size: number;\n shape: ShapeMap[R];\n strides: number[];\n values: DataTypeMap[D];\n\n constructor(shape: ShapeMap[R], public dtype: D, values?: DataTypeMap[D]) {\n this.shape = shape.slice() as ShapeMap[R];\n this.size = util.sizeFromShape(shape);\n\n if (values != null) {\n const n = values.length;\n util.assert(\n n === this.size,\n () => `Length of values '${n}' does not match the size ` +\n `inferred by the shape '${this.size}'.`);\n }\n if (dtype === 'complex64') {\n throw new Error(\n `complex64 dtype TensorBuffers are not supported. Please create ` +\n `a TensorBuffer for the real and imaginary parts separately and ` +\n `call tf.complex(real, imag).`);\n }\n this.values = values || util.getArrayFromDType(dtype, this.size);\n this.strides = computeStrides(shape);\n }\n\n /**\n * Sets a value in the buffer at a given location.\n *\n * @param value The value to set.\n * @param locs The location indices.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\n set(value: SingleValueMap[D], ...locs: number[]): void {\n if (locs.length === 0) {\n locs = [0];\n }\n util.assert(\n locs.length === this.rank,\n () => `The number of provided coordinates (${locs.length}) must ` +\n `match the rank (${this.rank})`);\n\n const index = this.locToIndex(locs);\n this.values[index] = value as number;\n }\n\n /**\n * Returns the value in the buffer at the provided location.\n *\n * @param locs The location indices.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\n get(...locs: number[]): SingleValueMap[D] {\n if (locs.length === 0) {\n locs = [0];\n }\n let i = 0;\n for (const loc of locs) {\n if (loc < 0 || loc >= this.shape[i]) {\n const msg = `Requested out of range element at ${locs}. ` +\n ` Buffer shape=${this.shape}`;\n throw new Error(msg);\n }\n i++;\n }\n let index = locs[locs.length - 1];\n for (let i = 0; i < locs.length - 1; ++i) {\n index += this.strides[i] * locs[i];\n }\n return this.values[index] as SingleValueMap[D];\n }\n\n locToIndex(locs: number[]): number {\n if (this.rank === 0) {\n return 0;\n } else if (this.rank === 1) {\n return locs[0];\n }\n let index = locs[locs.length - 1];\n for (let i = 0; i < locs.length - 1; ++i) {\n index += this.strides[i] * locs[i];\n }\n return index;\n }\n\n indexToLoc(index: number): number[] {\n if (this.rank === 0) {\n return [];\n } else if (this.rank === 1) {\n return [index];\n }\n const locs: number[] = new Array(this.shape.length);\n for (let i = 0; i < locs.length - 1; ++i) {\n locs[i] = Math.floor(index / this.strides[i]);\n index -= locs[i] * this.strides[i];\n }\n locs[locs.length - 1] = index;\n return locs;\n }\n\n get rank() {\n return this.shape.length;\n }\n\n /**\n * Creates an immutable `tf.Tensor` object from the buffer.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\n toTensor(): Tensor {\n return trackerFn().makeTensor(this.values, this.shape, this.dtype) as\n Tensor;\n }\n}\n\nexport interface TensorTracker {\n makeTensor(\n values: DataValues, shape: number[], dtype: DataType,\n backend?: Backend): Tensor;\n makeVariable(\n initialValue: Tensor, trainable?: boolean, name?: string,\n dtype?: DataType): Variable;\n incRef(a: Tensor, backend: Backend): void;\n disposeTensor(t: Tensor): void;\n disposeVariable(v: Variable): void;\n read(dataId: DataId): Promise;\n readSync(dataId: DataId): BackendValues;\n}\n\n/**\n * The Tensor class calls into this handler to delegate chaining operations.\n */\nexport interface OpHandler {\n cast(x: T, dtype: DataType): T;\n buffer(\n shape: ShapeMap[R], dtype: D,\n values?: DataTypeMap[D]): TensorBuffer;\n print(x: T, verbose: boolean): void;\n clone(x: T): T;\n // TODO(yassogba) bring reshape back?\n}\n\n// For tracking tensor creation and disposal.\nlet trackerFn: () => TensorTracker = null;\n// Used by chaining methods to call into ops.\nlet opHandler: OpHandler = null;\n// Used to warn about deprecated methods.\nlet deprecationWarningFn: (msg: string) => void = null;\n// This here so that we can use this method on dev branches and keep the\n// functionality at master.\n// tslint:disable-next-line:no-unused-expression\n[deprecationWarningFn];\n\n/**\n * An external consumer can register itself as the tensor tracker. This way\n * the Tensor class can notify the tracker for every tensor created and\n * disposed.\n */\nexport function setTensorTracker(fn: () => TensorTracker) {\n trackerFn = fn;\n}\n\n/**\n * An external consumer can register itself as the op handler. This way the\n * Tensor class can have chaining methods that call into ops via the op\n * handler.\n */\nexport function setOpHandler(handler: OpHandler) {\n opHandler = handler;\n}\n\n/**\n * Sets the deprecation warning function to be used by this file. This way the\n * Tensor class can be a leaf but still use the environment.\n */\nexport function setDeprecationWarningFn(fn: (msg: string) => void) {\n deprecationWarningFn = fn;\n}\n\n/**\n * We wrap data id since we use weak map to avoid memory leaks.\n * Since we have our own memory management, we have a reference counter\n * mapping a tensor to its data, so there is always a pointer (even if that\n * data is otherwise garbage collectable).\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/\n * Global_Objects/WeakMap\n */\nexport type DataId = object; // object instead of {} to force non-primitive.\n\n// Declare this namespace to make Tensor class augmentation work in google3.\nexport declare namespace Tensor {}\n/**\n * A `tf.Tensor` object represents an immutable, multidimensional array of\n * numbers that has a shape and a data type.\n *\n * See `tf.tensor` for details on how to create a `tf.Tensor`.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\nexport class Tensor {\n /** Unique id of this tensor. */\n readonly id: number;\n /**\n * Id of the bucket holding the data for this tensor. Multiple arrays can\n * point to the same bucket (e.g. when calling array.reshape()).\n */\n dataId: DataId;\n /** The shape of the tensor. */\n readonly shape: ShapeMap[R];\n /** Number of elements in the tensor. */\n readonly size: number;\n /** The data type for the array. */\n readonly dtype: DataType;\n /** The rank type for the array (see `Rank` enum). */\n readonly rankType: R;\n\n /** Whether this tensor has been globally kept. */\n kept = false;\n /** The id of the scope this tensor is being tracked in. */\n scopeId: number;\n\n /**\n * Number of elements to skip in each dimension when indexing. See\n * https://docs.scipy.org/doc/numpy/reference/generated/\\\n * numpy.ndarray.strides.html\n */\n readonly strides: number[];\n\n constructor(shape: ShapeMap[R], dtype: DataType, dataId: DataId, id: number) {\n this.shape = shape.slice() as ShapeMap[R];\n this.dtype = dtype || 'float32';\n this.size = util.sizeFromShape(shape);\n this.strides = computeStrides(shape);\n this.dataId = dataId;\n this.id = id;\n this.rankType = (this.rank < 5 ? this.rank.toString() : 'higher') as R;\n }\n\n get rank(): number {\n return this.shape.length;\n }\n\n /**\n * Returns a promise of `tf.TensorBuffer` that holds the underlying data.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n async buffer(): Promise> {\n const vals = await this.data();\n return opHandler.buffer(this.shape, this.dtype as D, vals);\n }\n\n /**\n * Returns a `tf.TensorBuffer` that holds the underlying data.\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n bufferSync(): TensorBuffer {\n return opHandler.buffer(this.shape, this.dtype as D, this.dataSync());\n }\n\n /**\n * Returns the tensor data as a nested array. The transfer of data is done\n * asynchronously.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n async array(): Promise {\n const vals = await this.data();\n return toNestedArray(this.shape, vals) as ArrayMap[R];\n }\n\n /**\n * Returns the tensor data as a nested array. The transfer of data is done\n * synchronously.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n arraySync(): ArrayMap[R] {\n return toNestedArray(this.shape, this.dataSync()) as ArrayMap[R];\n }\n\n /**\n * Asynchronously downloads the values from the `tf.Tensor`. Returns a\n * promise of `TypedArray` that resolves when the computation has finished.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n async data(): Promise {\n this.throwIfDisposed();\n const data = trackerFn().read(this.dataId);\n if (this.dtype === 'string') {\n const bytes = await data as Uint8Array[];\n try {\n return bytes.map(b => util.decodeString(b)) as DataTypeMap[D];\n } catch {\n throw new Error(\n 'Failed to decode the string bytes into utf-8. ' +\n 'To get the original bytes, call tensor.bytes().');\n }\n }\n return data as Promise;\n }\n\n /**\n * Synchronously downloads the values from the `tf.Tensor`. This blocks the\n * UI thread until the values are ready, which can cause performance issues.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n dataSync(): DataTypeMap[D] {\n this.throwIfDisposed();\n const data = trackerFn().readSync(this.dataId);\n if (this.dtype === 'string') {\n try {\n return (data as Uint8Array[]).map(b => util.decodeString(b)) as\n DataTypeMap[D];\n } catch {\n throw new Error(\n 'Failed to decode the string bytes into utf-8. ' +\n 'To get the original bytes, call tensor.bytes().');\n }\n }\n return data as DataTypeMap[D];\n }\n\n /** Returns the underlying bytes of the tensor's data. */\n async bytes(): Promise {\n this.throwIfDisposed();\n const data = await trackerFn().read(this.dataId);\n if (this.dtype === 'string') {\n return data as Uint8Array[];\n } else {\n return new Uint8Array((data as TypedArray).buffer);\n }\n }\n\n /**\n * Disposes `tf.Tensor` from memory.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n dispose(): void {\n if (this.isDisposed) {\n return;\n }\n trackerFn().disposeTensor(this);\n this.isDisposedInternal = true;\n }\n\n protected isDisposedInternal = false;\n get isDisposed(): boolean {\n return this.isDisposedInternal;\n }\n\n throwIfDisposed() {\n if (this.isDisposed) {\n throw new Error(`Tensor is disposed.`);\n }\n }\n\n /**\n * Prints the `tf.Tensor`. See `tf.print` for details.\n *\n * @param verbose Whether to print verbose information about the tensor,\n * including dtype and size.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n print(verbose = false): void {\n return opHandler.print(this, verbose);\n }\n\n /**\n * Returns a copy of the tensor. See `tf.clone` for details.\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n clone(this: T): T {\n this.throwIfDisposed();\n return opHandler.clone(this);\n }\n\n /**\n * Returns a human-readable description of the tensor. Useful for logging.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n toString(verbose = false): string {\n const vals = this.dataSync();\n return tensorToString(vals, this.shape, this.dtype, verbose);\n }\n\n cast(dtype: DataType): T {\n this.throwIfDisposed();\n return opHandler.cast(this as T, dtype);\n }\n variable(trainable = true, name?: string, dtype?: DataType): Variable {\n this.throwIfDisposed();\n return trackerFn().makeVariable(this, trainable, name, dtype) as\n Variable;\n }\n}\nObject.defineProperty(Tensor, Symbol.hasInstance, {\n value: (instance: Tensor) => {\n // Implementation note: we should use properties of the object that will be\n // defined before the constructor body has finished executing (methods).\n // This is because when this code is transpiled by babel, babel will call\n // classCallCheck before the constructor body is run.\n // See https://github.com/tensorflow/tfjs/issues/3384 for backstory.\n return !!instance && instance.data != null && instance.dataSync != null &&\n instance.throwIfDisposed != null;\n }\n});\n\nexport interface NumericTensor extends Tensor {\n dtype: NumericDataType;\n dataSync(): DataTypeMap[D];\n data(): Promise;\n}\n\nexport interface StringTensor extends Tensor {\n dtype: 'string';\n dataSync(): DataTypeMap[D];\n data(): Promise;\n}\n\n/** @doclink Tensor */\nexport type Scalar = Tensor;\n/** @doclink Tensor */\nexport type Tensor1D = Tensor;\n/** @doclink Tensor */\nexport type Tensor2D = Tensor;\n/** @doclink Tensor */\nexport type Tensor3D = Tensor;\n/** @doclink Tensor */\nexport type Tensor4D = Tensor;\n/** @doclink Tensor */\nexport type Tensor5D = Tensor;\n/** @doclink Tensor */\nexport type Tensor6D = Tensor;\n\n/**\n * A mutable `tf.Tensor`, useful for persisting state, e.g. for training.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\nexport class Variable extends Tensor {\n name: string;\n\n constructor(\n initialValue: Tensor, public trainable: boolean, name: string,\n tensorId: number) {\n super(\n initialValue.shape, initialValue.dtype, initialValue.dataId, tensorId);\n this.name = name;\n }\n\n /**\n * Assign a new `tf.Tensor` to this variable. The new `tf.Tensor` must have\n * the same shape and dtype as the old `tf.Tensor`.\n *\n * @param newValue New tensor to be assigned to this variable.\n *\n * @doc {heading: 'Tensors', subheading: 'Classes'}\n */\n assign(newValue: Tensor): void {\n if (newValue.dtype !== this.dtype) {\n throw new Error(\n `dtype of the new value (${newValue.dtype}) and ` +\n `previous value (${this.dtype}) must match`);\n }\n if (!util.arraysEqual(newValue.shape, this.shape)) {\n throw new Error(\n `shape of the new value (${newValue.shape}) and ` +\n `previous value (${this.shape}) must match`);\n }\n trackerFn().disposeTensor(this);\n this.dataId = newValue.dataId;\n trackerFn().incRef(this, null /* backend */);\n }\n\n dispose(): void {\n trackerFn().disposeVariable(this);\n this.isDisposedInternal = true;\n }\n}\n\nObject.defineProperty(Variable, Symbol.hasInstance, {\n value: (instance: Variable) => {\n return instance instanceof Tensor && instance.assign != null &&\n instance.assign instanceof Function;\n }\n});\n", "/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n/** @docalias number[] */\nexport interface ShapeMap {\n R0: number[];\n R1: [number];\n R2: [number, number];\n R3: [number, number, number];\n R4: [number, number, number, number];\n R5: [number, number, number, number, number];\n R6: [number, number, number, number, number, number];\n}\n\n/** @docalias number[] */\nexport interface ArrayMap {\n R0: number;\n R1: number[];\n R2: number[][];\n R3: number[][][];\n R4: number[][][][];\n R5: number[][][][][];\n R6: number[][][][][][];\n}\n\nexport interface DataTypeMap {\n float32: Float32Array;\n int32: Int32Array;\n bool: Uint8Array;\n complex64: Float32Array;\n string: string[];\n}\n\nexport interface SingleValueMap {\n bool: boolean;\n int32: number;\n float32: number;\n complex64: number;\n string: string;\n}\n\n/** @docalias 'float32'|'int32'|'bool'|'complex64'|'string' */\nexport type DataType = keyof DataTypeMap;\nexport type NumericDataType = 'float32'|'int32'|'bool'|'complex64';\nexport type TypedArray = Float32Array|Int32Array|Uint8Array;\n/** Tensor data used in tensor creation and user-facing API. */\nexport type DataValues = DataTypeMap[DataType];\n/** The underlying tensor data that gets stored in a backend. */\nexport type BackendValues = Float32Array|Int32Array|Uint8Array|Uint8Array[];\n\nexport enum Rank {\n R0 = 'R0',\n R1 = 'R1',\n R2 = 'R2',\n R3 = 'R3',\n R4 = 'R4',\n R5 = 'R5',\n R6 = 'R6'\n}\n\nexport type FlatVector = boolean[]|number[]|TypedArray;\nexport type RegularArray =\n T[]|T[][]|T[][][]|T[][][][]|T[][][][][]|T[][][][][][];\n\n// tslint:disable-next-line:no-any\nexport interface RecursiveArray {\n [index: number]: T|RecursiveArray;\n}\n\n// Looks for upcasting types. Used, for example, in operations with mixed dtype\n// inputs.\nenum UpcastInt32AndMap {\n 'float32' = 'float32',\n 'int32' = 'int32',\n 'bool' = 'int32',\n 'complex64' = 'complex64'\n}\n\nenum UpcastBoolAndMap {\n 'float32' = 'float32',\n 'int32' = 'int32',\n 'bool' = 'bool',\n 'complex64' = 'complex64'\n}\n\nenum UpcastFloat32AndMap {\n 'float32' = 'float32',\n 'int32' = 'float32',\n 'bool' = 'float32',\n 'complex64' = 'complex64'\n}\n\nenum UpcastComplex64AndMap {\n 'float32' = 'complex64',\n 'int32' = 'complex64',\n 'bool' = 'complex64',\n 'complex64' = 'complex64'\n}\n\nconst upcastTypeMap = {\n 'float32': UpcastFloat32AndMap,\n 'int32': UpcastInt32AndMap,\n 'bool': UpcastBoolAndMap,\n 'complex64': UpcastComplex64AndMap\n};\n\nexport function upcastType(typeA: DataType, typeB: DataType): DataType {\n if (typeA === 'string' || typeB === 'string') {\n if (typeA === 'string' && typeB === 'string') {\n return 'string';\n }\n throw new Error(`Can not upcast ${typeA} with ${typeB}`);\n }\n return upcastTypeMap[typeA][typeB];\n}\n\n/** Returns the output type after summation. */\nexport function sumOutType(type: DataType): DataType {\n return upcastType(type, 'int32');\n}\n\n/** @docalias TypedArray|Array */\nexport type TensorLike =\n TypedArray|number|boolean|string|RecursiveArray|\n RecursiveArray|RecursiveArray|Uint8Array[];\nexport type ScalarLike = number|boolean|string|Uint8Array;\n/** @docalias TypedArray|Array */\nexport type TensorLike1D = TypedArray|number[]|boolean[]|string[]|Uint8Array[];\n/** @docalias TypedArray|Array */\nexport type TensorLike2D = TypedArray|number[]|number[][]|boolean[]|boolean[][]|\n string[]|string[][]|Uint8Array[]|Uint8Array[][];\n/** @docalias TypedArray|Array */\nexport type TensorLike3D = TypedArray|number[]|number[][][]|boolean[]|\n boolean[][][]|string[]|string[][][]|Uint8Array[]|Uint8Array[][][];\n/** @docalias TypedArray|Array */\nexport type TensorLike4D = TypedArray|number[]|number[][][][]|boolean[]|\n boolean[][][][]|string[]|string[][][][]|Uint8Array[]|Uint8Array[][][][];\n/** @docalias TypedArray|Array */\nexport type TensorLike5D =\n TypedArray|number[]|number[][][][][]|boolean[]|boolean[][][][][]|string[]|\n string[][][][][]|Uint8Array[]|Uint8Array[][][][][];\n/** @docalias TypedArray|Array */\nexport type TensorLike6D =\n TypedArray|number[]|number[][][][][][]|boolean[]|boolean[][][][][][]|\n string[]|string[][][][][][]|Uint8Array[]|Uint8Array[][][][][];\n\n/** Type for representing image dat in Uint8Array type. */\nexport interface PixelData {\n width: number;\n height: number;\n data: Uint8Array;\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Tensor} from './tensor';\nimport {TensorContainer, TensorContainerArray} from './tensor_types';\nimport {upcastType} from './types';\nimport {assert} from './util';\n\nexport function makeTypesMatch(a: T, b: T): [T, T] {\n if (a.dtype === b.dtype) {\n return [a, b];\n }\n const dtype = upcastType(a.dtype, b.dtype);\n return [a.cast(dtype), b.cast(dtype)];\n}\n\nexport function assertTypesMatch(a: Tensor, b: Tensor): void {\n assert(\n a.dtype === b.dtype,\n () => `The dtypes of the first(${a.dtype}) and` +\n ` second(${b.dtype}) input must match`);\n}\n\nexport function isTensorInList(tensor: Tensor, tensorList: Tensor[]): boolean {\n return tensorList.some(x => x.id === tensor.id);\n}\n\n/**\n * Extracts any `Tensor`s found within the provided object.\n *\n * @param container an object that may be a `Tensor` or may directly contain\n * `Tensor`s, such as a `Tensor[]` or `{key: Tensor, ...}`. In general it\n * is safe to pass any object here, except that `Promise`s are not\n * supported.\n * @returns An array of `Tensors` found within the passed object. If the\n * argument is simply a `Tensor', a list containing that `Tensor` is\n * returned. If the object is not a `Tensor` or does not\n * contain `Tensors`, an empty list is returned.\n */\nexport function getTensorsInContainer(result: TensorContainer): Tensor[] {\n const list: Tensor[] = [];\n const seen = new Set<{}|void>();\n walkTensorContainer(result, list, seen);\n return list;\n}\n\nfunction walkTensorContainer(\n container: TensorContainer, list: Tensor[], seen: Set<{}|void>): void {\n if (container == null) {\n return;\n }\n if (container instanceof Tensor) {\n list.push(container);\n return;\n }\n if (!isIterable(container)) {\n return;\n }\n // Iteration over keys works also for arrays.\n const iterable = container as TensorContainerArray;\n for (const k in iterable) {\n const val = iterable[k];\n if (!seen.has(val)) {\n seen.add(val);\n walkTensorContainer(val, list, seen);\n }\n }\n}\n\n// tslint:disable-next-line:no-any\nfunction isIterable(obj: any): boolean {\n return Array.isArray(obj) || typeof obj === 'object';\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {BackendTimingInfo, DataMover, KernelBackend} from './backends/backend';\nimport {Environment, setEnvironmentGlobal} from './environment';\nimport {getGlobalNamespace} from './global_util';\nimport {Add, Cast} from './kernel_names';\nimport {getGradient, getKernel, getKernelsForBackend, GradFunc, NamedAttrMap, TensorInfo} from './kernel_registry';\nimport {KernelProfile, Profiler} from './profiler';\nimport {backpropagateGradients, getFilteredNodesXToY, TapeNode} from './tape';\nimport {DataId, setTensorTracker, Tensor, TensorTracker, Variable} from './tensor';\nimport {GradSaveFunc, NamedTensorMap, NamedVariableMap, TensorContainer} from './tensor_types';\nimport {getTensorsInContainer} from './tensor_util';\nimport {BackendValues, DataType, DataValues} from './types';\nimport * as util from './util';\nimport {bytesFromStringArray, makeOnesTypedArray, now, sizeFromShape} from './util';\n\n/**\n * A function that computes an output. The save function is for saving tensors\n * computed in the forward pass, that we need in the backward pass.\n */\nexport type ForwardFunc = (backend: KernelBackend, save?: GradSaveFunc) => T;\n\n/**\n * @docalias (a: Tensor, b: Tensor,..., save?: Function) => {\n * value: Tensor,\n * gradFunc: (dy: Tensor, saved?: NamedTensorMap) => Tensor | Tensor[]\n * }\n */\nexport type CustomGradientFunc =\n (...inputs: Array) => {\n value: T;\n gradFunc: (dy: T, saved: Tensor[]) => Tensor | Tensor[];\n };\n\nexport type MemoryInfo = {\n numTensors: number; numDataBuffers: number; numBytes: number;\n unreliable?: boolean; reasons: string[];\n};\n\ntype KernelInfo = {\n name: string; bytesAdded: number; totalBytesSnapshot: number;\n tensorsAdded: number;\n totalTensorsSnapshot: number;\n inputShapes: number[][];\n outputShapes: number[][];\n kernelTimeMs: number | {error: string} | Promise;\n extraInfo: string | Promise;\n};\n\nexport type ProfileInfo = {\n newBytes: number; newTensors: number; peakBytes: number;\n kernels: KernelInfo[];\n result: TensorContainer;\n};\n\nexport interface TimingInfo extends BackendTimingInfo {\n wallMs: number;\n}\n\n/** @docalias Function */\nexport type ScopeFn = () => T;\n\ninterface ScopeState {\n track: Tensor[];\n name: string;\n id: number;\n}\n\nclass EngineState {\n // Public since optimizers will use it.\n registeredVariables: NamedVariableMap = {};\n\n nextTapeNodeId = 0;\n numBytes = 0;\n numTensors = 0;\n numStringTensors = 0;\n numDataBuffers = 0;\n\n activeTape: TapeNode[];\n // Number of nested tf.grad() statements when computing higher-order\n // gradients. E.g. `1` for first-order gradients and `2` for second-order\n // gradients. Used to track if the tape should be removed after a backprop.\n gradientDepth = 0;\n // Number of nested kernel calls. When kernel depth is greater than 1, we turn\n // off the tape.\n kernelDepth = 0;\n\n // Keep Tensors that parallel the tapes.\n activeScope: ScopeState;\n scopeStack: ScopeState[] = [];\n /**\n * Keeps track of the number of data moves during a kernel execution. We\n * maintain a stack since kernels can call other kernels, recursively.\n */\n numDataMovesStack: number[] = [];\n nextScopeId = 0;\n\n tensorInfo = new WeakMap();\n\n profiling = false;\n activeProfile: ProfileInfo =\n {newBytes: 0, newTensors: 0, peakBytes: 0, kernels: [], result: null};\n\n dispose() {\n for (const variableName in this.registeredVariables) {\n this.registeredVariables[variableName].dispose();\n }\n }\n}\n\nexport class Engine implements TensorTracker, DataMover {\n state: EngineState;\n backendName: string;\n registry: {[id: string]: KernelBackend} = {};\n registryFactory: {\n [id: string]: {\n factory: () => KernelBackend | Promise,\n priority: number\n }\n } = {};\n\n private profiler: Profiler;\n private backendInstance: KernelBackend;\n private pendingBackendInit: Promise;\n private pendingBackendInitId = 0;\n\n constructor(public ENV: Environment) {\n this.state = new EngineState();\n }\n\n async ready(): Promise {\n if (this.pendingBackendInit != null) {\n return this.pendingBackendInit.then(() => {});\n }\n if (this.backendInstance != null) {\n return;\n }\n const sortedBackends = this.getSortedBackends();\n\n for (let i = 0; i < sortedBackends.length; i++) {\n const backendName = sortedBackends[i];\n const success = await this.initializeBackend(backendName).success;\n if (success) {\n await this.setBackend(backendName);\n return;\n }\n }\n\n throw new Error(\n `Could not initialize any backends, all backend initializations ` +\n `failed.`);\n }\n\n get backend(): KernelBackend {\n if (this.pendingBackendInit != null) {\n throw new Error(\n `Backend '${this.backendName}' has not yet been initialized. Make ` +\n `sure to await tf.ready() or await tf.setBackend() before calling ` +\n `other methods`);\n }\n if (this.backendInstance == null) {\n const {name, asyncInit} = this.initializeBackendsAndReturnBest();\n if (asyncInit) {\n throw new Error(\n `The highest priority backend '${name}' has not yet been ` +\n `initialized. Make sure to await tf.ready() or ` +\n `await tf.setBackend() before calling other methods`);\n }\n this.setBackend(name);\n }\n return this.backendInstance;\n }\n\n backendNames(): string[] {\n return Object.keys(this.registryFactory);\n }\n\n findBackend(backendName: string): KernelBackend {\n if (!(backendName in this.registry)) {\n // If the backend hasn't been initialized but we have a registry entry for\n // it, initialize it and return it.\n if (backendName in this.registryFactory) {\n const {asyncInit} = this.initializeBackend(backendName);\n if (asyncInit) {\n // Backend is not ready yet.\n return null;\n }\n } else {\n return null;\n }\n }\n return this.registry[backendName];\n }\n\n findBackendFactory(backendName: string):\n () => KernelBackend | Promise {\n if (!(backendName in this.registryFactory)) {\n return null;\n }\n return this.registryFactory[backendName].factory;\n }\n\n registerBackend(\n backendName: string,\n factory: () => KernelBackend | Promise,\n priority = 1): boolean {\n if (backendName in this.registryFactory) {\n console.warn(\n `${backendName} backend was already registered. ` +\n `Reusing existing backend factory.`);\n return false;\n }\n this.registryFactory[backendName] = {factory, priority};\n return true;\n }\n\n async setBackend(backendName: string): Promise {\n if (this.registryFactory[backendName] == null) {\n throw new Error(`Backend name '${backendName}' not found in registry`);\n }\n this.backendName = backendName;\n if (this.registry[backendName] == null) {\n this.backendInstance = null;\n const {success, asyncInit} = this.initializeBackend(backendName);\n const result = asyncInit ? await success : success;\n if (!result) {\n return false;\n }\n }\n this.backendInstance = this.registry[backendName];\n this.setupRegisteredKernels();\n // Reset the profiler.\n this.profiler = new Profiler(this.backendInstance);\n\n return true;\n }\n\n private setupRegisteredKernels(): void {\n const kernels = getKernelsForBackend(this.backendName);\n kernels.forEach(kernel => {\n if (kernel.setupFunc != null) {\n kernel.setupFunc(this.backendInstance);\n }\n });\n }\n\n private disposeRegisteredKernels(backendName: string): void {\n const kernels = getKernelsForBackend(backendName);\n kernels.forEach(kernel => {\n if (kernel.disposeFunc != null) {\n kernel.disposeFunc(this.registry[backendName]);\n }\n });\n }\n\n /**\n * Initializes a backend by looking up the backend name in the factory\n * registry and calling the factory method. Returns a boolean representing\n * whether the initialization of the backend suceeded. Throws an error if\n * there is no backend in the factory registry.\n */\n private initializeBackend(backendName: string):\n {success: boolean|Promise, asyncInit: boolean} {\n const registryFactoryEntry = this.registryFactory[backendName];\n if (registryFactoryEntry == null) {\n throw new Error(\n `Cannot initialize backend ${backendName}, no registration found.`);\n }\n\n try {\n const backend = registryFactoryEntry.factory();\n /* Test if the factory returns a promise.\n Done in a more liberal way than\n previous 'Promise.resolve(backend)===backend'\n as we needed to account for custom Promise\n implementations (e.g. Angular) */\n if (backend && !(backend instanceof KernelBackend)\n && typeof backend.then === 'function') {\n const promiseId = ++this.pendingBackendInitId;\n const success =\n backend\n .then(backendInstance => {\n // Outdated promise. Another backend was set in the meantime.\n if (promiseId < this.pendingBackendInitId) {\n return false;\n }\n this.registry[backendName] = backendInstance;\n this.pendingBackendInit = null;\n return true;\n })\n .catch(err => {\n // Outdated promise. Another backend was set in the meantime.\n if (promiseId < this.pendingBackendInitId) {\n return false;\n }\n this.pendingBackendInit = null;\n console.warn(\n `Initialization of backend ${backendName} failed`);\n console.warn(err.stack || err.message);\n return false;\n });\n this.pendingBackendInit = success;\n return {success, asyncInit: true};\n } else {\n this.registry[backendName] = backend as KernelBackend;\n return {success: true, asyncInit: false};\n }\n } catch (err) {\n console.warn(`Initialization of backend ${backendName} failed`);\n console.warn(err.stack || err.message);\n return {success: false, asyncInit: false};\n }\n }\n\n removeBackend(backendName: string): void {\n if (!(backendName in this.registryFactory)) {\n throw new Error(`${backendName} backend not found in registry`);\n }\n if (this.backendName === backendName && this.pendingBackendInit != null) {\n // There is a pending promise of the backend we want to remove. Make it\n // obsolete.\n this.pendingBackendInitId++;\n }\n\n if (backendName in this.registry) {\n this.disposeRegisteredKernels(backendName);\n this.registry[backendName].dispose();\n delete this.registry[backendName];\n }\n\n delete this.registryFactory[backendName];\n\n // Unset the backend if it is active.\n if (this.backendName === backendName) {\n this.pendingBackendInit = null;\n this.backendName = null;\n this.backendInstance = null;\n }\n }\n\n private getSortedBackends(): string[] {\n if (Object.keys(this.registryFactory).length === 0) {\n throw new Error('No backend found in registry.');\n }\n return Object.keys(this.registryFactory).sort((a: string, b: string) => {\n // Highest priority comes first.\n return this.registryFactory[b].priority -\n this.registryFactory[a].priority;\n });\n }\n\n private initializeBackendsAndReturnBest():\n {name: string, asyncInit: boolean} {\n const sortedBackends = this.getSortedBackends();\n\n for (let i = 0; i < sortedBackends.length; i++) {\n const backendName = sortedBackends[i];\n const {success, asyncInit} = this.initializeBackend(backendName);\n if (asyncInit || success) {\n return {name: backendName, asyncInit};\n }\n }\n throw new Error(\n `Could not initialize any backends, all backend initializations ` +\n `failed.`);\n }\n\n moveData(backend: KernelBackend, dataId: DataId) {\n const info = this.state.tensorInfo.get(dataId);\n const srcBackend = info.backend;\n const values = this.readSync(dataId);\n // Delete the tensor from the old backend and move it to the new\n // backend.\n srcBackend.disposeData(dataId);\n info.backend = backend;\n backend.move(dataId, values, info.shape, info.dtype);\n if (this.shouldCheckForMemLeaks()) {\n // Track the number of moves during a kernel execution to correctly\n // detect memory leaks.\n this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++;\n }\n }\n\n tidy(nameOrFn: string|ScopeFn, fn?: ScopeFn):\n T {\n let name: string = null;\n if (fn == null) {\n // Called with only 1 argument.\n if (typeof nameOrFn !== 'function') {\n throw new Error('Please provide a function to tidy()');\n }\n fn = nameOrFn;\n } else {\n // Called with 2 arguments.\n if (typeof nameOrFn !== 'string' && !(nameOrFn instanceof String)) {\n throw new Error(\n 'When calling with two arguments, the first argument ' +\n 'to tidy() must be a string');\n }\n if (typeof fn !== 'function') {\n throw new Error(\n 'When calling with two arguments, the 2nd argument ' +\n 'to tidy() must be a function');\n }\n name = nameOrFn as string;\n // TODO(nsthorat,smilkov): Do operation logging and performance\n // profiling.\n }\n let result: T;\n return this.scopedRun(\n () => this.startScope(name), () => this.endScope(result), () => {\n result = fn();\n if (result instanceof Promise) {\n console.error('Cannot return a Promise inside of tidy.');\n }\n return result;\n });\n }\n\n private scopedRun(start: () => void, end: () => void, f: () => T): T {\n start();\n try {\n const res = f();\n end();\n return res;\n } catch (ex) {\n end();\n throw ex;\n }\n }\n\n private static nextTensorId = 0;\n private nextTensorId(): number {\n return Engine.nextTensorId++;\n }\n\n private static nextVariableId = 0;\n private nextVariableId(): number {\n return Engine.nextVariableId++;\n }\n\n /**\n * This method is called instead of the public-facing tensor.clone() when\n * saving a tensor for backwards pass. It makes sure to add the clone\n * operation to the tape regardless of being called inside a kernel\n * execution.\n *\n * This method will go away once all kernels are modularized since we won't\n * need to turn off the tape inside runKernel().\n */\n private clone(x: Tensor): Tensor {\n const y = this.makeTensorFromDataId(x.dataId, x.shape, x.dtype);\n const inputs = {x};\n const grad = (dy: Tensor) => ({\n x: () => {\n const dtype = 'float32';\n const gradInputs = {x: dy};\n const attrs = {dtype};\n\n return ENGINE.runKernelFunc(\n backend => backend.cast(dy, dtype),\n gradInputs as {} as NamedTensorMap, null /* grad */, Cast,\n attrs as {} as NamedAttrMap);\n }\n });\n const saved: Tensor[] = [];\n this.addTapeNode(this.state.activeScope.name, inputs, [y], grad, saved, {});\n return y;\n }\n\n /**\n * Execute a kernel with the given name and return the output tensor.\n *\n * @param kernelName The name of the kernel to execute.\n * @param inputs A map of input names to tensors.\n * @param attrs A map of attribute names to their values. An attribute is a\n * primitive (non-tensor) input to the kernel.\n * @param inputsToSave A list of tensors, inputs to save for the backprop\n * computation.\n * @param outputsToSave A list of booleans, specifying which output to save\n * for the backprop computation. These are booleans since the output\n * tensors are not visible to the user.\n */\n runKernel(\n kernelName: string, inputs: NamedTensorMap, attrs: NamedAttrMap,\n inputsToSave?: Tensor[], outputsToSave?: boolean[]): Tensor|Tensor[] {\n const forwardFunc: null = null;\n const backwardsFunc: null = null;\n // Call runKernel as a stop-gap until we modularize all kernels.\n // Once we modularize all kernels, we will remove the existing\n // `runKernelFunc`.\n return this.runKernelFunc(\n forwardFunc, inputs, backwardsFunc, kernelName, attrs, inputsToSave,\n outputsToSave);\n }\n\n private shouldCheckForMemLeaks(): boolean {\n return this.ENV.getBool('IS_TEST');\n }\n\n private checkKernelForMemLeak(\n kernelName: string, numDataIdsBefore: number,\n outInfos: TensorInfo[]): void {\n const numDataIdsAfter = this.backend.numDataIds();\n\n // Count the number of data ids associated with the result of the kernel.\n let numOutputDataIds = 0;\n outInfos.forEach(info => {\n // Complex numbers allocate 3 data ids, one for 'real', one for\n // 'imaginary', and one for the container that holds the former two.\n numOutputDataIds += (info.dtype === 'complex64' ? 3 : 1);\n });\n\n // Account for the number of moves during kernel execution. A \"data move\"\n // can happen in the middle of a kernel execution, placing a new (key,value)\n // pair in the data storage. Since data moves have net zero effect (we\n // always remove the data from the old backend), we have to cancel them out\n // when detecting memory leaks.\n const numMoves =\n this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1];\n const dataIdsLeaked =\n numDataIdsAfter - numDataIdsBefore - numOutputDataIds - numMoves;\n if (dataIdsLeaked > 0) {\n throw new Error(\n `Backend '${this.backendName}' has an internal memory leak ` +\n `(${dataIdsLeaked} data ids) after running '${kernelName}'`);\n }\n }\n\n /**\n * @deprecated Use `runKernel` for newly added kernels. Keep using this method\n * only for kernels that are not yet fully modularized.\n */\n runKernelFunc(\n forwardFunc: ForwardFunc, inputs: I,\n backwardsFunc?: (dy: T, saved: Tensor[]) => {[P in keyof I]: () => I[P]},\n kernelName?: string, attrs?: NamedAttrMap, inputsToSave?: Tensor[],\n outputsToSave?: boolean[]): T {\n let outputs: Tensor[];\n let saved: Tensor[] = [];\n const isTapeOn = this.isTapeOn();\n if (kernelName == null) {\n kernelName =\n this.state.activeScope != null ? this.state.activeScope.name : '';\n }\n\n const startingBytecount = this.state.numBytes;\n const startingNumTensors = this.state.numTensors;\n\n if (this.shouldCheckForMemLeaks()) {\n this.state.numDataMovesStack.push(0);\n }\n\n let kernelFunc: () => Tensor[];\n const kernel = getKernel(kernelName, this.backendName);\n let out: TensorInfo|TensorInfo[];\n if (kernel != null) {\n kernelFunc = () => {\n const numDataIdsBefore = this.backend.numDataIds();\n out = kernel.kernelFunc({inputs, attrs, backend: this.backend});\n const outInfos = Array.isArray(out) ? out : [out];\n if (this.shouldCheckForMemLeaks()) {\n this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos);\n }\n const outTensors = outInfos.map(\n ({dataId, shape, dtype}) =>\n this.makeTensorFromDataId(dataId, shape, dtype));\n\n // Save the inputs and outputs.\n // Do not save unless we are recording to the tape. Otherwise it would\n // cause a mem leak since we would never run backprop, which disposes\n // the kept tensors.\n if (isTapeOn) {\n let tensorsToSave =\n this.getTensorsForGradient(kernelName, inputs, outTensors);\n if (tensorsToSave == null) {\n // Fallback for ops that call runKernelFunc and pass in\n // inputsToSave and outputsToSave. Currently this is the set of ops\n // with kernel support in the WASM backend. Once those ops and\n // respective gradients are modularised we can remove this path.\n if (outputsToSave == null) {\n outputsToSave = [];\n }\n const outsToSave = outTensors.filter((_, i) => outputsToSave[i]);\n tensorsToSave = (inputsToSave || []).slice().concat(outsToSave);\n }\n saved = this.saveTensorsForBackwardMode(tensorsToSave);\n }\n return outTensors;\n };\n } else {\n const saveFunc: GradSaveFunc = (tensors) => {\n // Do not save unless we are recording to the tape. Otherwise it would\n // cause a mem leak since we would never run backprop, which disposes\n // the kept tensors.\n if (!isTapeOn) {\n return;\n }\n saved = tensors.map(tensor => this.keep(this.clone(tensor)));\n };\n\n kernelFunc = () => {\n const numDataIdsBefore = this.backend.numDataIds();\n out = this.tidy(() => forwardFunc(this.backend, saveFunc));\n const outs = (Array.isArray(out) ? out : [out]) as Tensor[];\n if (this.shouldCheckForMemLeaks()) {\n this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outs);\n }\n return outs;\n };\n }\n\n // Stop recording to a tape when running a kernel.\n let kernelProfile: KernelProfile;\n this.scopedRun(\n () => this.state.kernelDepth++, () => this.state.kernelDepth--, () => {\n if (!this.ENV.getBool('DEBUG') && !this.state.profiling) {\n outputs = kernelFunc();\n } else {\n kernelProfile = this.profiler.profileKernel(\n kernelName, inputs, () => kernelFunc());\n if (this.ENV.getBool('DEBUG')) {\n this.profiler.logKernelProfile(kernelProfile);\n }\n outputs = kernelProfile.outputs;\n }\n });\n\n if (isTapeOn) {\n this.addTapeNode(\n kernelName, inputs, outputs, backwardsFunc, saved, attrs);\n }\n\n if (this.state.profiling) {\n this.state.activeProfile.kernels.push({\n name: kernelName,\n bytesAdded: this.state.numBytes - startingBytecount,\n totalBytesSnapshot: this.state.numBytes,\n tensorsAdded: this.state.numTensors - startingNumTensors,\n totalTensorsSnapshot: this.state.numTensors,\n inputShapes: Object.keys(inputs).map(\n key => inputs[key] != null ? inputs[key].shape : null),\n outputShapes: outputs.map(item => item.shape),\n kernelTimeMs: kernelProfile.timeMs,\n extraInfo: kernelProfile.extraInfo\n });\n }\n return (Array.isArray(out) ? outputs : outputs[0]) as T;\n }\n\n /**\n * Saves tensors used in forward mode for use in backward mode.\n *\n * @param tensors the list of tensors to save.\n */\n private saveTensorsForBackwardMode(tensors: Tensor[]): Tensor[] {\n const saved = tensors.map(tensor => this.keep(this.clone(tensor)));\n return saved;\n }\n\n /**\n * Returns a list of tensors to save for a given gradient calculation.\n *\n * Returns undefined if their is no registered gradient for this kernel in the\n * gradient registry.\n *\n * @param kernelName name of kernel to look up gradient for.\n * @param inputs a map of input tensors.\n * @param outputs an array of output tensors from forward mode of kernel.\n */\n private getTensorsForGradient(\n kernelName: string, inputs: NamedTensorMap,\n outputs: Tensor[]): Tensor[]|null {\n const gradConfig = getGradient(kernelName);\n if (gradConfig != null) {\n const inputsToSave: string[] = gradConfig.inputsToSave || [];\n const outputsToSave: boolean[] = gradConfig.outputsToSave || [];\n\n // If saveAllInputs is true, all inputs will be saved. Otherwise, inputs\n // specified in inputsToSave will be saved.\n let inputTensorsToSave: Tensor[];\n if (gradConfig.saveAllInputs) {\n util.assert(\n Array.isArray(inputs),\n () => 'saveAllInputs is true, expected inputs to be an array.');\n\n inputTensorsToSave = Object.keys(inputs).map((key) => inputs[key]);\n } else {\n inputTensorsToSave = inputsToSave.map((inputName) => inputs[inputName]);\n }\n\n const outputTensorsToSave: Tensor[] =\n outputs.filter((_, i) => outputsToSave[i]);\n\n return inputTensorsToSave.concat(outputTensorsToSave);\n }\n // TODO(yassogba) throw exception here once all runkernelFunc calls with\n // inputsToSave/outputsToSave are removed\n return null;\n }\n\n /**\n * Internal method used by public APIs for tensor creation. Makes a new\n * tensor with the provided shape, dtype and values. It always\n * creates a new data id and writes the values to the underlying backend.\n */\n makeTensor(\n values: DataValues, shape: number[], dtype: DataType,\n backend?: KernelBackend): Tensor {\n if (values == null) {\n throw new Error('Values passed to engine.makeTensor() are null');\n }\n dtype = dtype || 'float32';\n backend = backend || this.backend;\n let backendVals = values as BackendValues;\n if (dtype === 'string' && util.isString(values[0])) {\n backendVals = (values as string[]).map(d => util.encodeString(d));\n }\n const dataId = backend.write(backendVals, shape, dtype);\n const t = new Tensor(shape, dtype, dataId, this.nextTensorId());\n this.incRef(t, backend);\n\n // Count bytes for string tensors.\n if (dtype === 'string') {\n const info = this.state.tensorInfo.get(dataId);\n const newBytes = bytesFromStringArray(backendVals as Uint8Array[]);\n this.state.numBytes += newBytes - info.bytes;\n info.bytes = newBytes;\n }\n return t;\n }\n\n /**\n * Internal method used by backends. Makes a new tensor\n * that is a wrapper around an existing data id. It doesn't create\n * a new data id, only increments the ref count used in memory tracking.\n */\n makeTensorFromDataId(\n dataId: DataId, shape: number[], dtype: DataType,\n backend?: KernelBackend): Tensor {\n dtype = dtype || 'float32';\n const t = new Tensor(shape, dtype, dataId, this.nextTensorId());\n this.incRef(t, backend);\n return t;\n }\n\n makeVariable(\n initialValue: Tensor, trainable = true, name?: string,\n dtype?: DataType): Variable {\n name = name || this.nextVariableId().toString();\n if (dtype != null && dtype !== initialValue.dtype) {\n initialValue = initialValue.cast(dtype);\n }\n const v = new Variable(initialValue, trainable, name, this.nextTensorId());\n if (this.state.registeredVariables[v.name] != null) {\n throw new Error(`Variable with name ${v.name} was already registered`);\n }\n this.state.registeredVariables[v.name] = v;\n this.incRef(v, this.backend);\n return v;\n }\n\n incRef(a: Tensor, backend: KernelBackend): void {\n const refCount = this.state.tensorInfo.has(a.dataId) ?\n this.state.tensorInfo.get(a.dataId).refCount :\n 0;\n this.state.numTensors++;\n if (a.dtype === 'string') {\n this.state.numStringTensors++;\n }\n if (refCount === 0) {\n this.state.numDataBuffers++;\n\n // Bytes for complex numbers are counted by their components. Bytes for\n // string tensors are counted when writing values.\n let bytes = 0;\n if (a.dtype !== 'complex64' && a.dtype !== 'string') {\n bytes = a.size * util.bytesPerElement(a.dtype);\n }\n this.state.tensorInfo.set(a.dataId, {\n backend: backend || this.backend,\n dtype: a.dtype,\n shape: a.shape,\n bytes,\n refCount: 0\n });\n this.state.numBytes += bytes;\n }\n\n this.state.tensorInfo.get(a.dataId).refCount++;\n\n if (!(a instanceof Variable)) {\n this.track(a);\n }\n }\n\n disposeTensor(a: Tensor): void {\n if (!this.state.tensorInfo.has(a.dataId)) {\n return;\n }\n\n this.state.numTensors--;\n if (a.dtype === 'string') {\n this.state.numStringTensors--;\n }\n const info = this.state.tensorInfo.get(a.dataId);\n const refCount = info.refCount;\n\n if (refCount <= 1) {\n // Don't count bytes for complex numbers as they are counted by their\n // components.\n if (a.dtype !== 'complex64') {\n this.state.numBytes -= info.bytes;\n }\n this.state.numDataBuffers--;\n\n info.backend.disposeData(a.dataId);\n this.state.tensorInfo.delete(a.dataId);\n } else {\n this.state.tensorInfo.get(a.dataId).refCount--;\n }\n // TODO(nsthorat): Construct an error and save the stack trace for\n // debugging when in debug mode. Creating a stack trace is too expensive\n // to do unconditionally.\n }\n\n disposeVariables(): void {\n for (const varName in this.state.registeredVariables) {\n const v = this.state.registeredVariables[varName];\n this.disposeVariable(v);\n }\n }\n\n disposeVariable(v: Variable): void {\n this.disposeTensor(v);\n if (this.state.registeredVariables[v.name] != null) {\n delete this.state.registeredVariables[v.name];\n }\n }\n\n memory(): MemoryInfo {\n const info = this.backend.memory() as MemoryInfo;\n info.numTensors = this.state.numTensors;\n info.numDataBuffers = this.state.numDataBuffers;\n info.numBytes = this.state.numBytes;\n if (this.state.numStringTensors > 0) {\n info.unreliable = true;\n if (info.reasons == null) {\n info.reasons = [];\n }\n info.reasons.push(\n 'Memory usage by string tensors is approximate ' +\n '(2 bytes per character)');\n }\n return info;\n }\n\n async profile(query: () => (TensorContainer | Promise)):\n Promise {\n this.state.profiling = true;\n\n const startBytes = this.state.numBytes;\n const startNumTensors = this.state.numTensors;\n\n this.state.activeProfile.kernels = [];\n this.state.activeProfile.result = await query();\n\n this.state.profiling = false;\n\n this.state.activeProfile.peakBytes = Math.max(\n ...this.state.activeProfile.kernels.map(d => d.totalBytesSnapshot));\n this.state.activeProfile.newBytes = this.state.numBytes - startBytes;\n this.state.activeProfile.newTensors =\n this.state.numTensors - startNumTensors;\n for (const kernel of this.state.activeProfile.kernels) {\n kernel.kernelTimeMs = await kernel.kernelTimeMs;\n kernel.extraInfo = await kernel.extraInfo;\n }\n return this.state.activeProfile;\n }\n\n isTapeOn(): boolean {\n return this.state.gradientDepth > 0 && this.state.kernelDepth === 0;\n }\n\n private addTapeNode(\n kernelName: string, inputs: NamedTensorMap, outputs: Tensor[],\n gradientsFunc: GradFunc, saved: Tensor[], attrs: NamedAttrMap): void {\n const tapeNode: TapeNode =\n {id: this.state.nextTapeNodeId++, kernelName, inputs, outputs, saved};\n\n const gradConfig = getGradient(kernelName);\n if (gradConfig != null) {\n gradientsFunc = gradConfig.gradFunc;\n }\n if (gradientsFunc != null) {\n tapeNode.gradient = (dys: Tensor[]) => {\n // TODO(smilkov): To optimize back-prop, pass dys that are not used in\n // the backprop graph to the user as null instead of zeros\n dys = dys.map((dy, i) => {\n if (dy == null) {\n const output = outputs[i];\n const vals = util.makeZerosTypedArray(output.size, output.dtype);\n return this.makeTensor(vals, output.shape, output.dtype);\n }\n return dy;\n });\n // Grad functions of ops with single outputs expect a dy, while ops\n // with multiple outputs expect dys (array of dy).\n return gradientsFunc(dys.length > 1 ? dys : dys[0], saved, attrs);\n };\n }\n this.state.activeTape.push(tapeNode);\n }\n\n keep(result: T): T {\n result.kept = true;\n return result;\n }\n\n private startTape() {\n if (this.state.gradientDepth === 0) {\n this.state.activeTape = [];\n }\n this.state.gradientDepth++;\n }\n\n private endTape() {\n this.state.gradientDepth--;\n }\n\n /**\n * Start a scope. Use this with endScope() to achieve the same functionality\n * as scope() without the need for a function closure.\n */\n startScope(name?: string) {\n const scopeInfo: ScopeState = {\n track: [],\n name: 'unnamed scope',\n id: this.state.nextScopeId++\n };\n if (name) {\n scopeInfo.name = name;\n }\n this.state.scopeStack.push(scopeInfo);\n this.state.activeScope = scopeInfo;\n }\n\n /**\n * End a scope. Use this with startScope() to achieve the same functionality\n * as scope() without the need for a function closure.\n */\n endScope(result?: TensorContainer) {\n const tensorsToTrackInParent = getTensorsInContainer(result);\n const tensorsToTrackInParentSet =\n new Set(tensorsToTrackInParent.map(t => t.id));\n\n // Dispose the arrays tracked in this scope.\n for (let i = 0; i < this.state.activeScope.track.length; i++) {\n const tensor = this.state.activeScope.track[i];\n if (!tensor.kept && !tensorsToTrackInParentSet.has(tensor.id)) {\n tensor.dispose();\n }\n }\n\n const oldScope = this.state.scopeStack.pop();\n this.state.activeScope = this.state.scopeStack.length === 0 ?\n null :\n this.state.scopeStack[this.state.scopeStack.length - 1];\n\n // Track the current result in the parent scope.\n tensorsToTrackInParent.forEach(tensor => {\n // Only track the tensor if was allocated in the inner scope and is not\n // globally kept.\n if (!tensor.kept && tensor.scopeId === oldScope.id) {\n this.track(tensor);\n }\n });\n }\n\n /**\n * Returns gradients of `f` with respect to each of the `xs`. The gradients\n * returned are of the same length as `xs`, but some might be null if `f`\n * was not a function of that `x`. It also takes optional dy to multiply the\n * gradient, which defaults to `1`.\n */\n gradients(\n f: () => T, xs: Tensor[], dy?: T,\n allowNoGradients = false): {value: T, grads: Tensor[]} {\n util.assert(\n xs.length > 0, () => 'gradients() received an empty list of xs.');\n if (dy != null && dy.dtype !== 'float32') {\n throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);\n }\n\n const y = this.scopedRun(\n () => this.startTape(), () => this.endTape(),\n () => this.tidy('forward', f));\n\n util.assert(\n y instanceof Tensor,\n () => 'The result y returned by f() must be a tensor.');\n // Filter out the nodes that don't connect x => y.\n const filteredTape = getFilteredNodesXToY(this.state.activeTape, xs, y);\n if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) {\n throw new Error(\n 'Cannot compute gradient of y=f(x) with respect to x. Make sure ' +\n 'that the f you passed encloses all operations that lead from x ' +\n 'to y.');\n }\n\n return this.tidy('backward', () => {\n const accumulatedGradientMap: {[tensorId: number]: Tensor} = {};\n accumulatedGradientMap[y.id] = (dy == null) ? ones(y.shape) : dy;\n\n // Backprop gradients through the filtered nodes.\n backpropagateGradients(\n accumulatedGradientMap, filteredTape,\n // Pass the tidy function to avoid circular dep with `tape.ts`.\n f => this.tidy(f as ScopeFn),\n // Pass an add function to avoide a circular dep with `tape.ts`.\n add);\n const grads = xs.map(x => accumulatedGradientMap[x.id]);\n\n if (this.state.gradientDepth === 0) {\n // This means that we are not computing higher-order gradients\n // and can clean up the tape.\n this.state.activeTape.forEach(node => {\n for (const tensor of node.saved) {\n tensor.dispose();\n }\n });\n this.state.activeTape = null;\n }\n return {value: y, grads};\n });\n }\n\n customGrad(f: CustomGradientFunc):\n (...args: Array) => T {\n util.assert(\n util.isFunction(f),\n () => 'The f passed in customGrad(f) must be a function.');\n return (...inputs: Tensor[]): T => {\n util.assert(\n inputs.every(t => t instanceof Tensor),\n () => 'The args passed in customGrad(f)(x1, x2,...) must all be ' +\n 'tensors');\n\n let res: {\n value: T,\n gradFunc: (dy: T, saved: Tensor[]) => Tensor | Tensor[],\n };\n const inputMap: NamedTensorMap = {};\n inputs.forEach((input, i) => {\n inputMap[i] = input;\n });\n return this.runKernelFunc(\n (_, save) => {\n res = f(...[...inputs, save]);\n util.assert(\n res.value instanceof Tensor,\n () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.value` is a tensor');\n util.assert(\n util.isFunction(res.gradFunc),\n () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function.');\n return res.value;\n },\n inputMap,\n (dy: T, saved: Tensor[]) => {\n const gradRes = res.gradFunc(dy, saved);\n const grads: Tensor[] =\n Array.isArray(gradRes) ? gradRes : [gradRes];\n util.assert(\n grads.length === inputs.length,\n () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function that returns ' +\n 'the same number of tensors as inputs passed to f(...).');\n util.assert(\n grads.every(t => t instanceof Tensor),\n () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function that returns ' +\n 'a list of only tensors.');\n const gradMap: {[key: string]: () => Tensor} = {};\n grads.forEach((grad, i) => {\n gradMap[i] = () => grad;\n });\n return gradMap;\n });\n };\n }\n\n readSync(dataId: DataId): BackendValues {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.readSync(dataId);\n }\n read(dataId: DataId): Promise {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.read(dataId);\n }\n\n async time(query: () => void): Promise {\n const start = now();\n const timingInfo = await this.backend.time(query) as TimingInfo;\n timingInfo.wallMs = now() - start;\n return timingInfo;\n }\n\n /**\n * Tracks a Tensor in the current scope to be automatically cleaned up\n * when the current scope ends, and returns the value.\n *\n * @param result The Tensor to track in the current scope.\n */\n private track(result: T): T {\n if (this.state.activeScope != null) {\n result.scopeId = this.state.activeScope.id;\n this.state.activeScope.track.push(result);\n }\n\n return result;\n }\n\n get registeredVariables(): NamedVariableMap {\n return this.state.registeredVariables;\n }\n\n /**\n * Resets the engine state. Removes all backends but does not remove\n * registered backend factories.\n */\n reset(): void {\n // Make any pending promise obsolete.\n this.pendingBackendInitId++;\n\n this.state.dispose();\n this.ENV.reset();\n this.state = new EngineState();\n\n for (const backendName in this.registry) {\n this.disposeRegisteredKernels(backendName);\n this.registry[backendName].dispose();\n delete this.registry[backendName];\n }\n this.backendName = null;\n this.backendInstance = null;\n this.pendingBackendInit = null;\n }\n}\n\nfunction ones(shape: number[]): Tensor {\n const values = makeOnesTypedArray(sizeFromShape(shape), 'float32');\n return ENGINE.makeTensor(values, shape, 'float32');\n}\n\nexport function getOrMakeEngine(): Engine {\n const ns = getGlobalNamespace() as {} as {_tfengine: Engine};\n if (ns._tfengine == null) {\n const environment = new Environment(ns);\n ns._tfengine = new Engine(environment);\n }\n setEnvironmentGlobal(ns._tfengine.ENV);\n\n // Tell the current tensor interface that the global engine is responsible\n // for tracking.\n setTensorTracker(() => ns._tfengine);\n return ns._tfengine;\n}\n\nexport const ENGINE = getOrMakeEngine();\n\n/**\n * A implementation of the add op for use within engine and tape.\n *\n * This allows us to avoid a circular dependency between add.ts and engine.\n * It is exported to be available in tape tests.\n */\nexport function add(a: Tensor, b: Tensor): Tensor {\n // We duplicate Add here to avoid a circular dependency with add.ts.\n const inputs = {a, b};\n return ENGINE.runKernelFunc((backend, save) => {\n const res = backend.add(a, b);\n save([a, b]);\n return res;\n }, inputs as {} as NamedTensorMap, null /* gradient */, Add);\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n// tslint:disable-next-line:no-any\nfunction _isNavigatorDefined(): boolean {\n return typeof navigator !== 'undefined' && navigator != null;\n}\n\nexport function isMobile(): boolean {\n if (_isNavigatorDefined()) {\n // tslint:disable-next-line:no-any\n const a = navigator.userAgent || navigator.vendor || (window as any).opera;\n // tslint:disable-next-line:max-line-length\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i\n .test(a) ||\n // tslint:disable-next-line:max-line-length\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i\n .test(a.substr(0, 4));\n }\n return false;\n}\n\nexport function isBrowser(): boolean {\n return (typeof window !== 'undefined' && window.document != null) ||\n //@ts-ignore\n (typeof WorkerGlobalScope !== 'undefined');\n}\n", "/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport './engine';\n\nimport * as device_util from './device_util';\nimport {env} from './environment';\n\nconst ENV = env();\n\n/**\n * This file contains environment-related flag registrations.\n */\n\n/** Whether to enable debug mode. */\nENV.registerFlag('DEBUG', () => false, debugValue => {\n if (debugValue) {\n console.warn(\n 'Debugging mode is ON. The output of every math call will ' +\n 'be downloaded to CPU and checked for NaNs. ' +\n 'This significantly impacts performance.');\n }\n});\n\n/** Whether we are in a browser (as versus, say, node.js) environment. */\nENV.registerFlag('IS_BROWSER', () => device_util.isBrowser());\n\n/** Whether we are in a browser (as versus, say, node.js) environment. */\nENV.registerFlag(\n 'IS_NODE',\n () => (typeof process !== 'undefined') &&\n (typeof process.versions !== 'undefined') &&\n (typeof process.versions.node !== 'undefined'));\n\n/** Whether this browser is Chrome. */\nENV.registerFlag(\n 'IS_CHROME',\n () => typeof navigator !== 'undefined' && navigator != null &&\n navigator.userAgent != null && /Chrome/.test(navigator.userAgent) &&\n /Google Inc/.test(navigator.vendor));\n\n/**\n * True when the environment is \"production\" where we disable safety checks\n * to gain performance.\n */\nENV.registerFlag('PROD', () => false);\n\n/**\n * Whether to do sanity checks when inferring a shape from user-provided\n * values, used when creating a new tensor.\n */\nENV.registerFlag(\n 'TENSORLIKE_CHECK_SHAPE_CONSISTENCY', () => ENV.getBool('DEBUG'));\n\n/** Whether deprecation warnings are enabled. */\nENV.registerFlag('DEPRECATION_WARNINGS_ENABLED', () => true);\n\n/** True if running unit tests. */\nENV.registerFlag('IS_TEST', () => false);\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {ENGINE} from './engine';\nimport {env} from './environment';\nimport {Tensor} from './tensor';\nimport {DataType, TensorLike} from './types';\nimport {assert, flatten, inferDtype, isTypedArray, toTypedArray} from './util';\n\nexport function inferShape(val: TensorLike, dtype?: DataType): number[] {\n let firstElem: typeof val = val;\n\n if (isTypedArray(val)) {\n return dtype === 'string' ? [] : [val.length];\n }\n if (!Array.isArray(val)) {\n return []; // Scalar.\n }\n const shape: number[] = [];\n\n while (Array.isArray(firstElem) ||\n isTypedArray(firstElem) && dtype !== 'string') {\n shape.push(firstElem.length);\n firstElem = firstElem[0];\n }\n if (Array.isArray(val) &&\n env().getBool('TENSORLIKE_CHECK_SHAPE_CONSISTENCY')) {\n deepAssertShapeConsistency(val, shape, []);\n }\n\n return shape;\n}\n\nfunction deepAssertShapeConsistency(\n val: TensorLike, shape: number[], indices: number[]) {\n indices = indices || [];\n if (!(Array.isArray(val)) && !isTypedArray(val)) {\n assert(\n shape.length === 0,\n () => `Element arr[${indices.join('][')}] is a primitive, ` +\n `but should be an array/TypedArray of ${shape[0]} elements`);\n return;\n }\n assert(\n shape.length > 0,\n () => `Element arr[${indices.join('][')}] should be a primitive, ` +\n `but is an array of ${val.length} elements`);\n assert(\n val.length === shape[0],\n () => `Element arr[${indices.join('][')}] should have ${shape[0]} ` +\n `elements, but has ${val.length} elements`);\n const subShape = shape.slice(1);\n for (let i = 0; i < val.length; ++i) {\n deepAssertShapeConsistency(val[i], subShape, indices.concat(i));\n }\n}\n\nfunction assertDtype(\n expectedDtype: DataType|'numeric', actualDType: DataType, argName: string,\n functionName: string) {\n if (expectedDtype == null) {\n return;\n }\n if (expectedDtype !== 'numeric' && expectedDtype !== actualDType ||\n expectedDtype === 'numeric' && actualDType === 'string') {\n throw new Error(\n `Argument '${argName}' passed to '${functionName}' must ` +\n `be ${expectedDtype} tensor, but got ${actualDType} tensor`);\n }\n}\n\nexport function convertToTensor(\n x: T|TensorLike, argName: string, functionName: string,\n parseAsDtype: DataType|'numeric' = 'numeric'): T {\n if (x instanceof Tensor) {\n assertDtype(parseAsDtype, x.dtype, argName, functionName);\n return x;\n }\n let inferredDtype = inferDtype(x);\n // If the user expects a bool/int/float, use that info to update the\n // inferredDtype when it is not a string.\n if (inferredDtype !== 'string' &&\n ['bool', 'int32', 'float32'].indexOf(parseAsDtype) >= 0) {\n inferredDtype = parseAsDtype as DataType;\n }\n assertDtype(parseAsDtype, inferredDtype, argName, functionName);\n\n if ((x == null) ||\n (!isTypedArray(x) && !Array.isArray(x) && typeof x !== 'number' &&\n typeof x !== 'boolean' && typeof x !== 'string')) {\n const type = x == null ? 'null' : (x as {}).constructor.name;\n throw new Error(\n `Argument '${argName}' passed to '${functionName}' must be a ` +\n `Tensor or TensorLike, but got '${type}'`);\n }\n const inferredShape = inferShape(x, inferredDtype);\n if (!isTypedArray(x) && !Array.isArray(x)) {\n x = [x] as number[];\n }\n const skipTypedArray = true;\n const values = inferredDtype !== 'string' ?\n toTypedArray(x, inferredDtype as DataType) :\n flatten(x as string[], [], skipTypedArray) as string[];\n return ENGINE.makeTensor(values, inferredShape, inferredDtype) as T;\n}\n\nexport function convertToTensorArray(\n arg: Array, argName: string, functionName: string,\n parseAsDtype: DataType|'numeric' = 'numeric'): T[] {\n if (!Array.isArray(arg)) {\n throw new Error(\n `Argument ${argName} passed to ${functionName} must be a ` +\n '`Tensor[]` or `TensorLike[]`');\n }\n const tensors = arg as T[];\n return tensors.map(\n (t, i) => convertToTensor(t, `${argName}[${i}]`, functionName),\n parseAsDtype);\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport {ENGINE} from '../engine';\n\nexport const OP_SCOPE_SUFFIX = '__op';\n\n/**\n * Used for wrapping functions that perform math operations on\n * Tensors. The function will be wrapped in a named scope that cleans all\n * memory usage after the function is done.\n */\nexport function op(f: {[name: string]: T}): T {\n const keys = Object.keys(f);\n if (keys.length !== 1) {\n throw new Error(\n `Please provide an object with a single key ` +\n `(operation name) mapping to a function. Got an object with ` +\n `${keys.length} keys.`);\n }\n\n let opName = keys[0];\n const fn = f[opName];\n\n // Strip the underscore from the end of the function name.\n if (opName.endsWith('_')) {\n opName = opName.substring(0, opName.length - 1);\n }\n\n // add an __op suffix to distinguish ops from kernels in tf.profile\n opName = opName + OP_SCOPE_SUFFIX;\n\n // tslint:disable-next-line:no-any\n const f2 = (...args: any[]) => {\n ENGINE.startScope(opName);\n try {\n const result = fn(...args);\n if (result instanceof Promise) {\n console.error('Cannot return a Promise inside of tidy.');\n }\n ENGINE.endScope(result);\n return result;\n } catch (ex) {\n ENGINE.endScope(null);\n throw ex;\n }\n };\n Object.defineProperty(f2, 'name', {value: opName, configurable: true});\n\n // tslint:disable-next-line:no-any\n return f2 as any as T;\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport {ENGINE, ForwardFunc} from '../engine';\nimport {Complex, ComplexInputs} from '../kernel_names';\nimport {Tensor} from '../tensor';\nimport {NamedTensorMap} from '../tensor_types';\nimport {convertToTensor} from '../tensor_util_env';\nimport {TensorLike} from '../types';\nimport * as util from '../util';\n\nimport {op} from './operation';\n\n/**\n * Converts two real numbers to a complex number.\n *\n * Given a tensor `real` representing the real part of a complex number, and a\n * tensor `imag` representing the imaginary part of a complex number, this\n * operation returns complex numbers elementwise of the form [r0, i0, r1, i1],\n * where r represents the real part and i represents the imag part.\n *\n * The input tensors real and imag must have the same shape.\n *\n * ```js\n * const real = tf.tensor1d([2.25, 3.25]);\n * const imag = tf.tensor1d([4.75, 5.75]);\n * const complex = tf.complex(real, imag);\n *\n * complex.print();\n * ```\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\nfunction complex_(real: T|TensorLike, imag: T|TensorLike): T {\n const $real = convertToTensor(real, 'real', 'complex');\n const $imag = convertToTensor(imag, 'imag', 'complex');\n util.assertShapesMatch(\n $real.shape, $imag.shape,\n `real and imag shapes, ${$real.shape} and ${$imag.shape}, ` +\n `must match in call to tf.complex().`);\n\n const forward: ForwardFunc = (backend) => {\n return backend.complex($real, $imag);\n };\n const inputs: ComplexInputs = {real: $real, imag: $imag};\n return ENGINE.runKernelFunc(\n forward, inputs as {} as NamedTensorMap, null /* gradient */,\n Complex) as T;\n}\n\nexport const complex = op({complex_});\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {ENGINE} from '../engine';\nimport {Tensor} from '../tensor';\nimport {TensorLike, TypedArray} from '../types';\nimport {DataType} from '../types';\nimport {assert, assertNonNegativeIntegerDimensions, flatten, inferDtype, isTypedArray, sizeFromShape, toTypedArray} from '../util';\n\n/** This is shared code across all tensor creation methods. */\nexport function makeTensor(\n values: TensorLike, shape: number[], inferredShape: number[],\n dtype?: DataType): Tensor {\n if (dtype == null) {\n dtype = inferDtype(values);\n }\n if (dtype === 'complex64') {\n throw new Error(\n `Cannot construct a complex64 tensor directly. ` +\n `Please use tf.complex(real, imag).`);\n }\n if (!isTypedArray(values) && !Array.isArray(values) &&\n typeof values !== 'number' && typeof values !== 'boolean' &&\n typeof values !== 'string') {\n throw new Error(\n 'values passed to tensor(values) must be a number/boolean/string or ' +\n 'an array of numbers/booleans/strings, or a TypedArray');\n }\n if (shape != null) {\n assertNonNegativeIntegerDimensions(shape);\n\n const providedSize = sizeFromShape(shape);\n const inferredSize = sizeFromShape(inferredShape);\n assert(\n providedSize === inferredSize,\n () =>\n `Based on the provided shape, [${shape}], the tensor should have ` +\n `${providedSize} values but has ${inferredSize}`);\n\n for (let i = 0; i < inferredShape.length; ++i) {\n const inferred = inferredShape[i];\n const flatDimsDontMatch = i === inferredShape.length - 1 ?\n inferred !== sizeFromShape(shape.slice(i)) :\n true;\n assert(\n inferredShape[i] === shape[i] || !flatDimsDontMatch,\n () => `Error creating a new Tensor. Inferred shape ` +\n `(${inferredShape}) does not match the provided ` +\n `shape (${shape}). `);\n }\n }\n\n if (!isTypedArray(values) && !Array.isArray(values)) {\n values = [values] as number[];\n }\n\n shape = shape || inferredShape;\n values = dtype !== 'string' ?\n toTypedArray(values, dtype) :\n flatten(values as string[], [], true) as string[];\n return ENGINE.makeTensor(values as TypedArray, shape, dtype);\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Tensor} from '../tensor';\nimport {inferShape} from '../tensor_util_env';\nimport {TensorLike} from '../types';\nimport {DataType, Rank, ShapeMap} from '../types';\n\nimport {makeTensor} from './tensor_ops_util';\n\n/**\n * Creates a `tf.Tensor` with the provided values, shape and dtype.\n *\n * ```js\n * // Pass an array of values to create a vector.\n * tf.tensor([1, 2, 3, 4]).print();\n * ```\n *\n * ```js\n * // Pass a nested array of values to make a matrix or a higher\n * // dimensional tensor.\n * tf.tensor([[1, 2], [3, 4]]).print();\n * ```\n *\n * ```js\n * // Pass a flat array and specify a shape yourself.\n * tf.tensor([1, 2, 3, 4], [2, 2]).print();\n * ```\n *\n * @param values The values of the tensor. Can be nested array of numbers,\n * or a flat array, or a `TypedArray`. If the values are strings,\n * they will be encoded as utf-8 and kept as `Uint8Array[]`.\n * @param shape The shape of the tensor. Optional. If not provided,\n * it is inferred from `values`.\n * @param dtype The data type.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\nexport function tensor(\n values: TensorLike, shape?: ShapeMap[R], dtype?: DataType): Tensor {\n const inferredShape = inferShape(values, dtype);\n return makeTensor(values, shape, inferredShape, dtype) as Tensor;\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n/* Type definitions for exporting and importing of models. */\n\n/**\n * A map from Tensor dtype to number of bytes per element of the Tensor.\n */\nexport const DTYPE_VALUE_SIZE_MAP: {[dtype: string]: number} = {\n 'float32': 4,\n 'float16': 2,\n 'int32': 4,\n 'uint16': 2,\n 'uint8': 1,\n 'bool': 1,\n 'complex64': 8\n};\n\n/**\n * A weight manifest.\n *\n * The weight manifest consists of an ordered list of weight-manifest groups.\n * Each weight-manifest group (\"group\" for short hereafter) consists of a\n * number of weight values stored in a number of paths.\n * See the documentation of `WeightManifestGroupConfig` below for more details.\n */\nexport declare type WeightsManifestConfig = WeightsManifestGroupConfig[];\n\n/**\n * A weight-manifest group.\n *\n * Consists of an ordered list of weight values encoded in binary format,\n * stored in an ordered list of paths.\n */\nexport declare interface WeightsManifestGroupConfig {\n /**\n * An ordered list of paths.\n *\n * Paths are intentionally abstract in order to be general. For example, they\n * can be relative URL paths or relative paths on the file system.\n */\n paths: string[];\n\n /**\n * Specifications of the weights stored in the paths.\n */\n weights: WeightsManifestEntry[];\n}\n\n/**\n * Group to which the weight belongs.\n *\n * - 'optimizer': Weight from a stateful optimizer.\n */\nexport type WeightGroup = 'model'|'optimizer';\n\n/**\n * An entry in the weight manifest.\n *\n * The entry contains specification of a weight.\n */\nexport declare interface WeightsManifestEntry {\n /**\n * Name of the weight, e.g., 'Dense_1/bias'\n */\n name: string;\n\n /**\n * Shape of the weight.\n */\n shape: number[];\n\n /**\n * Data type of the weight.\n */\n dtype: 'float32'|'int32'|'bool'|'string'|'complex64';\n\n /**\n * Type of the weight.\n *\n * Optional.\n *\n * The value 'optimizer' indicates the weight belongs to an optimizer\n * (i.e., used only during model training and not during inference).\n */\n group?: WeightGroup;\n\n /**\n * Information for dequantization of the weight.\n */\n quantization?: {\n scale?: number, // The scaling constant to multiply by.\n min?: number, // The (possibly nudged) minimum weight to add.\n dtype: 'uint16'|'uint8'|'float16' // The dtype of the quantized weights.\n };\n}\n\n/**\n * Options for saving a model.\n * @innamespace io\n */\nexport interface SaveConfig {\n /**\n * Whether to save only the trainable weights of the model, ignoring the\n * non-trainable ones.\n */\n trainableOnly?: boolean;\n\n /**\n * Whether the optimizer will be saved (if exists).\n *\n * Default: `false`.\n */\n includeOptimizer?: boolean;\n}\n\n/**\n * Result of a saving operation.\n */\nexport interface SaveResult {\n /**\n * Information about the model artifacts saved.\n */\n modelArtifactsInfo: ModelArtifactsInfo;\n\n /**\n * HTTP responses from the server that handled the model-saving request (if\n * any). This is applicable only to server-based saving routes.\n */\n responses?: Response[];\n\n /**\n * Error messages and related data (if any).\n */\n errors?: Array<{}|string>;\n}\n\nexport declare interface ModelArtifactsInfo {\n /**\n * Timestamp for when the model is saved.\n */\n dateSaved: Date;\n\n /**\n * TODO (cais,yassogba) consider removing GraphDef as GraphDefs now\n * come in a JSON format and none of our IOHandlers support a non json\n * format. We could conder replacing this with 'Binary' if we want to\n * allow future handlers to save to non json formats (though they will\n * probably want more information than 'Binary').\n * Type of the model topology\n *\n * Type of the model topology\n *\n * Possible values:\n * - JSON: JSON config (human-readable, e.g., Keras JSON).\n * - GraphDef: TensorFlow\n * [GraphDef](https://www.tensorflow.org/extend/tool_developers/#graphdef)\n * protocol buffer (binary).\n */\n modelTopologyType: 'JSON'|'GraphDef';\n\n /**\n * Size of model topology (Keras JSON or GraphDef), in bytes.\n */\n modelTopologyBytes?: number;\n\n /**\n * Size of weight specification or manifest, in bytes.\n */\n weightSpecsBytes?: number;\n\n /**\n * Size of weight value data, in bytes.\n */\n weightDataBytes?: number;\n}\n\n/** Model training configuration. */\nexport declare interface TrainingConfig {\n // TODO(cais): Tighten the typing once keras spec is available to tfjs-core.\n // See\n // tslint:disable-next-line:max-line-length\n // https://github.com/tensorflow/tfjs-layers/blob/master/src/keras_format/training_config.ts\n /** Optimizer used for the model training. */\n optimizer_config: {};\n\n // TODO(cais): Tighten the typing once keras spec is available to tfjs-core.\n /** Loss function(s) for the model's output(s). */\n loss: string|string[]|{[key: string]: string};\n\n // TODO(cais): Tighten the typing once keras spec is available to tfjs-core.\n /** Metric function(s) for the model's output(s). */\n metrics?: string[]|{[key: string]: string};\n\n // TODO(cais): Tighten the typing once keras spec is available to tfjs-core.\n weighted_metrics?: string[];\n\n // TODO(cais): Tighten the typing once keras spec is available to tfjs-core.\n sample_weight_mode?: string;\n\n loss_weights?: number[]|{[key: string]: number};\n}\n\n/**\n * The serialized artifacts of a model, including topology and weights.\n *\n * The `modelTopology`, `trainingConfig`, `weightSpecs` and `weightData` fields\n * of this interface are optional, in order to support topology- or weights-only\n * saving and loading.\n *\n * Note this interface is used internally in IOHandlers. For the file format\n * written to disk as `model.json`, see `ModelJSON`.\n */\nexport declare interface ModelArtifacts {\n /**\n * Model topology.\n *\n * For Keras-style `tf.Model`s, this is a JSON object.\n * For TensorFlow-style models (e.g., `SavedModel`), this is the JSON\n * encoding of the `GraphDef` protocol buffer.\n */\n modelTopology?: {}|ArrayBuffer;\n\n /**\n * Serialized configuration for the model's training.\n */\n trainingConfig?: TrainingConfig;\n\n /**\n * Weight specifications.\n *\n * This corresponds to the weightsData below.\n */\n weightSpecs?: WeightsManifestEntry[];\n\n /**\n * Binary buffer for all weight values concatenated in the order specified\n * by `weightSpecs`.\n */\n weightData?: ArrayBuffer;\n\n /**\n * Hard-coded format name for models saved from TensorFlow.js or converted\n * by TensorFlow.js Converter.\n */\n format?: string;\n\n /**\n * What library is responsible for originally generating this artifact.\n *\n * Used for debugging purposes. E.g., 'TensorFlow.js v1.0.0'.\n */\n generatedBy?: string;\n\n /**\n * What library or tool is responsible for converting the original model\n * to this format, applicable only if the model is output by a converter.\n *\n * Used for debugging purposes. E.g., 'TensorFlow.js Converter v1.0.0'.\n *\n * A value of `null` means the model artifacts are generated without any\n * conversion process (e.g., saved directly from a TensorFlow.js\n * `tf.LayersModel` instance.)\n */\n convertedBy?: string|null;\n\n /**\n * User-defined metadata about the model.\n */\n userDefinedMetadata?: {};\n\n /**\n * Initializer for the model.\n */\n modelInitializer?: {};\n}\n\n/**\n * The on-disk format of the `model.json` file.\n *\n * TF.js 1.0 always populates the optional fields when writing model.json.\n * Prior versions did not provide those fields.\n */\nexport declare interface ModelJSON {\n /**\n * Model topology.\n *\n * For Keras-style `tf.Model`s, this is a JSON object.\n * For TensorFlow-style models (e.g., `SavedModel`), this is the JSON\n * encoding of the `GraphDef` protocol buffer.\n */\n modelTopology: {};\n\n /** Model training configuration. */\n trainingConfig?: TrainingConfig;\n\n /**\n * Weights manifest.\n *\n * The weights manifest consists of an ordered list of weight-manifest\n * groups. Each weight-manifest group consists of a number of weight values\n * stored in a number of paths. See the documentation of\n * `WeightsManifestConfig` for more details.\n */\n weightsManifest: WeightsManifestConfig;\n\n /**\n * Hard-coded format name for models saved from TensorFlow.js or converted\n * by TensorFlow.js Converter.\n */\n format?: string;\n\n /**\n * What library is responsible for originally generating this artifact.\n *\n * Used for debugging purposes. E.g., 'TensorFlow.js v1.0.0'.\n */\n generatedBy?: string;\n\n /**\n * What library or tool is responsible for converting the original model\n * to this format, applicable only if the model is output by a converter.\n *\n * Used for debugging purposes. E.g., 'TensorFlow.js Converter v1.0.0'.\n *\n * A value of `null` means the model artifacts are generated without any\n * conversion process (e.g., saved directly from a TensorFlow.js\n * `tf.LayersModel` instance.)\n */\n convertedBy?: string|null;\n\n /**\n * User-defined metadata about the model.\n */\n userDefinedMetadata?: {};\n\n /**\n * Initializer for the model.\n */\n modelInitializer?: {};\n}\n\n/**\n * Type definition for handlers of loading operations.\n */\nexport type LoadHandler = () => Promise;\n\n/**\n * Type definition for handlers of saving operations.\n */\nexport type SaveHandler = (modelArtifact: ModelArtifacts) =>\n Promise;\n\n/**\n * Interface for a model import/export handler.\n *\n * The `save` and `load` handlers are both optional, in order to allow handlers\n * that support only saving or loading.\n */\n// tslint:disable-next-line:interface-name\nexport interface IOHandler {\n save?: SaveHandler;\n load?: LoadHandler;\n}\n\n/**\n * An interface for the manager of a model store.\n *\n * A model store is defined as a storage medium on which multiple models can\n * be stored. Each stored model has a unique `path` as its identifier.\n * A `ModelStoreManager` for the store allows actions including\n *\n * - Listing the models stored in the store.\n * - Deleting a model from the store.\n */\nexport interface ModelStoreManager {\n /**\n * List all models in the model store.\n *\n * @returns A dictionary mapping paths of existing models to their\n * model artifacts info. Model artifacts info include type of the model's\n * topology, byte sizes of the topology, weights, etc.\n */\n listModels(): Promise<{[path: string]: ModelArtifactsInfo}>;\n\n /**\n * Remove a model specified by `path`.\n *\n * @param path\n * @returns ModelArtifactsInfo of the deleted model (if and only if deletion\n * is successful).\n * @throws Error if deletion fails, e.g., if no model exists at `path`.\n */\n removeModel(path: string): Promise;\n}\n\n/**\n * Callback for the progress of a long-running action such as an HTTP\n * request for a large binary object.\n *\n * `fraction` should be a number in the [0, 1] interval, indicating how\n * much of the action has completed.\n */\nexport type OnProgressCallback = (fraction: number) => void;\n\n/** @innamespace io */\nexport interface LoadOptions {\n /**\n * RequestInit (options) for HTTP requests.\n *\n * For detailed information on the supported fields, see\n * [https://developer.mozilla.org/en-US/docs/Web/API/Request/Request](\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/Request)\n */\n requestInit?: RequestInit;\n\n /**\n * Progress callback.\n */\n onProgress?: OnProgressCallback;\n\n /**\n * A function used to override the `window.fetch` function.\n */\n fetchFunc?: Function;\n\n /**\n * Strict loading model: whether extraneous weights or missing\n * weights should trigger an `Error`.\n *\n * If `true`, require that the provided weights exactly match those\n * required by the layers. `false` means that both extra weights\n * and missing weights will be silently ignored.\n *\n * Default: `true`.\n */\n strict?: boolean;\n\n /**\n * Path prefix for weight files, by default this is calculated from the\n * path of the model JSON file.\n *\n * For instance, if the path to the model JSON file is\n * `http://localhost/foo/model.json`, then the default path prefix will be\n * `http://localhost/foo/`. If a weight file has the path value\n * `group1-shard1of2` in the weight manifest, then the weight file will be\n * loaded from `http://localhost/foo/group1-shard1of2` by default. However,\n * if you provide a `weightPathPrefix` value of\n * `http://localhost/foo/alt-weights`, then the weight file will be loaded\n * from the path `http://localhost/foo/alt-weights/group1-shard1of2` instead.\n */\n weightPathPrefix?: string;\n\n /**\n * Whether the module or model is to be loaded from TF Hub.\n *\n * Setting this to `true` allows passing a TF-Hub module URL, omitting the\n * standard model file name and the query parameters.\n *\n * Default: `false`.\n */\n fromTFHub?: boolean;\n\n /**\n * An async function to convert weight file name to URL. The weight file\n * names are stored in model.json's weightsManifest.paths field. By default we\n * consider weight files are colocated with the model.json file. For example:\n * model.json URL: https://www.google.com/models/1/model.json\n * group1-shard1of1.bin url:\n * https://www.google.com/models/1/group1-shard1of1.bin\n *\n * With this func you can convert the weight file name to any URL.\n */\n weightUrlConverter?: (weightFileName: string) => Promise;\n}\n\n/**\n * Additional options for Platform.fetch\n */\nexport interface RequestDetails {\n /**\n * Is this request for a binary file (as opposed to a json file)\n */\n isBinary?: boolean;\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {complex} from '../ops/complex';\n\nimport {tensor} from '../ops/tensor';\nimport {NamedTensor, NamedTensorMap} from '../tensor_types';\nimport {TypedArray} from '../types';\nimport {sizeFromShape} from '../util';\n\nimport {DTYPE_VALUE_SIZE_MAP, ModelArtifacts, ModelArtifactsInfo, WeightGroup, WeightsManifestEntry} from './types';\n\n/** Number of bytes reserved for the length of the string. (32bit integer). */\nconst NUM_BYTES_STRING_LENGTH = 4;\n\n/**\n * Encode a map from names to weight values as an ArrayBuffer, along with an\n * `Array` of `WeightsManifestEntry` as specification of the encoded weights.\n *\n * This function does not perform sharding.\n *\n * This function is the reverse of `decodeWeights`.\n *\n * @param tensors A map (\"dict\") from names to tensors.\n * @param group Group to which the weights belong (optional).\n * @returns A `Promise` of\n * - A flat `ArrayBuffer` with all the binary values of the `Tensor`s\n * concatenated.\n * - An `Array` of `WeightManifestEntry`s, carrying information including\n * tensor names, `dtype`s and shapes.\n * @throws Error: on unsupported tensor `dtype`.\n */\nexport async function encodeWeights(\n tensors: NamedTensorMap|NamedTensor[], group?: WeightGroup):\n Promise<{data: ArrayBuffer, specs: WeightsManifestEntry[]}> {\n // TODO(adarob, cais): Support quantization.\n const specs: WeightsManifestEntry[] = [];\n const dataPromises: Array> = [];\n\n const names: string[] = Array.isArray(tensors) ?\n tensors.map(tensor => tensor.name) :\n Object.keys(tensors);\n\n for (let i = 0; i < names.length; ++i) {\n const name = names[i];\n const t = Array.isArray(tensors) ? tensors[i].tensor : tensors[name];\n if (t.dtype !== 'float32' && t.dtype !== 'int32' && t.dtype !== 'bool' &&\n t.dtype !== 'string' && t.dtype !== 'complex64') {\n throw new Error(`Unsupported dtype in weight '${name}': ${t.dtype}`);\n }\n const spec: WeightsManifestEntry = {name, shape: t.shape, dtype: t.dtype};\n if (t.dtype === 'string') {\n const utf8bytes = new Promise(async resolve => {\n const vals = await t.bytes() as Uint8Array[];\n const totalNumBytes = vals.reduce((p, c) => p + c.length, 0) +\n NUM_BYTES_STRING_LENGTH * vals.length;\n const bytes = new Uint8Array(totalNumBytes);\n let offset = 0;\n for (let i = 0; i < vals.length; i++) {\n const val = vals[i];\n const bytesOfLength =\n new Uint8Array(new Uint32Array([val.length]).buffer);\n bytes.set(bytesOfLength, offset);\n offset += NUM_BYTES_STRING_LENGTH;\n bytes.set(val, offset);\n offset += val.length;\n }\n resolve(bytes);\n });\n dataPromises.push(utf8bytes);\n } else {\n dataPromises.push(t.data());\n }\n if (group != null) {\n spec.group = group;\n }\n specs.push(spec);\n }\n\n const tensorValues = await Promise.all(dataPromises);\n return {data: concatenateTypedArrays(tensorValues), specs};\n}\n\n/**\n * Decode flat ArrayBuffer as weights.\n *\n * This function does not handle sharding.\n *\n * This function is the reverse of `encodeWeights`.\n *\n * @param buffer A flat ArrayBuffer carrying the binary values of the tensors\n * concatenated in the order specified in `specs`.\n * @param specs Specifications of the names, dtypes and shapes of the tensors\n * whose value are encoded by `buffer`.\n * @return A map from tensor name to tensor value, with the names corresponding\n * to names in `specs`.\n * @throws Error, if any of the tensors has unsupported dtype.\n */\nexport function decodeWeights(\n buffer: ArrayBuffer, specs: WeightsManifestEntry[]): NamedTensorMap {\n // TODO(adarob, cais): Support quantization.\n const out: NamedTensorMap = {};\n let float16Decode: (buffer: Uint16Array) => Float32Array | undefined;\n let offset = 0;\n for (const spec of specs) {\n const name = spec.name;\n const dtype = spec.dtype;\n const shape = spec.shape;\n const size = sizeFromShape(shape);\n let values: TypedArray|string[]|Uint8Array[];\n\n if ('quantization' in spec) {\n const quantization = spec.quantization;\n if (quantization.dtype === 'uint8' || quantization.dtype === 'uint16') {\n if (!('min' in quantization && 'scale' in quantization)) {\n throw new Error(\n `Weight ${spec.name} with quantization ${quantization.dtype} ` +\n `doesn't have corresponding metadata min and scale.`);\n }\n } else if (quantization.dtype === 'float16') {\n if (dtype !== 'float32') {\n throw new Error(\n `Weight ${spec.name} is quantized with ${quantization.dtype} ` +\n `which only supports weights of type float32 not ${dtype}.`);\n }\n } else {\n throw new Error(\n `Weight ${spec.name} has unknown ` +\n `quantization dtype ${quantization.dtype}. ` +\n `Supported quantization dtypes are: ` +\n `'uint8', 'uint16', and 'float16'.`);\n }\n const quantizationSizeFactor = DTYPE_VALUE_SIZE_MAP[quantization.dtype];\n const byteBuffer =\n buffer.slice(offset, offset + size * quantizationSizeFactor);\n const quantizedArray = (quantization.dtype === 'uint8') ?\n new Uint8Array(byteBuffer) :\n new Uint16Array(byteBuffer);\n if (dtype === 'float32') {\n if (quantization.dtype === 'uint8' || quantization.dtype === 'uint16') {\n values = new Float32Array(quantizedArray.length);\n for (let i = 0; i < quantizedArray.length; i++) {\n const v = quantizedArray[i];\n values[i] = v * quantization.scale + quantization.min;\n }\n } else if (quantization.dtype === 'float16') {\n if (float16Decode === undefined) {\n float16Decode = getFloat16Decoder();\n }\n values = float16Decode(quantizedArray as Uint16Array);\n } else {\n throw new Error(\n `Unsupported quantization type ${quantization.dtype} ` +\n `for weight type float32.`);\n }\n } else if (dtype === 'int32') {\n if (quantization.dtype !== 'uint8' && quantization.dtype !== 'uint16') {\n throw new Error(\n `Unsupported quantization type ${quantization.dtype} ` +\n `for weight type int32.`);\n }\n values = new Int32Array(quantizedArray.length);\n for (let i = 0; i < quantizedArray.length; i++) {\n const v = quantizedArray[i];\n values[i] = Math.round(v * quantization.scale + quantization.min);\n }\n } else {\n throw new Error(`Unsupported dtype in weight '${name}': ${dtype}`);\n }\n offset += size * quantizationSizeFactor;\n } else if (dtype === 'string') {\n const size = sizeFromShape(spec.shape);\n values = [];\n for (let i = 0; i < size; i++) {\n const byteLength = new Uint32Array(\n buffer.slice(offset, offset + NUM_BYTES_STRING_LENGTH))[0];\n offset += NUM_BYTES_STRING_LENGTH;\n const bytes = new Uint8Array(buffer.slice(offset, offset + byteLength));\n (values as Uint8Array[]).push(bytes);\n offset += byteLength;\n }\n } else {\n const dtypeFactor = DTYPE_VALUE_SIZE_MAP[dtype];\n const byteBuffer = buffer.slice(offset, offset + size * dtypeFactor);\n\n if (dtype === 'float32') {\n values = new Float32Array(byteBuffer);\n } else if (dtype === 'int32') {\n values = new Int32Array(byteBuffer);\n } else if (dtype === 'bool') {\n values = new Uint8Array(byteBuffer);\n } else if (dtype === 'complex64') {\n values = new Float32Array(byteBuffer);\n const real = new Float32Array(values.length / 2);\n const image = new Float32Array(values.length / 2);\n for (let i = 0; i < real.length; i++) {\n real[i] = values[i * 2];\n image[i] = values[i * 2 + 1];\n }\n const realTensor = tensor(real, shape, 'float32');\n const imageTensor = tensor(image, shape, 'float32');\n out[name] = complex(realTensor, imageTensor);\n } else {\n throw new Error(`Unsupported dtype in weight '${name}': ${dtype}`);\n }\n offset += size * dtypeFactor;\n }\n if (dtype !== 'complex64') {\n out[name] = tensor(values, shape, dtype);\n }\n }\n return out;\n}\n\n/**\n * Concatenate TypedArrays into an ArrayBuffer.\n */\nexport function concatenateTypedArrays(xs: TypedArray[]): ArrayBuffer {\n // TODO(adarob, cais): Support quantization.\n if (xs === null) {\n throw new Error(`Invalid input value: ${JSON.stringify(xs)}`);\n }\n\n let totalByteLength = 0;\n\n // `normalizedXs` is here for this reason: a `TypedArray`'s `buffer'\n // can have a different byte length from that of the `TypedArray` itself,\n // for example, when the `TypedArray` is created from an offset in an\n // `ArrayBuffer`. `normliazedXs` holds `TypedArray`s whose `buffer`s match\n // the `TypedArray` in byte length. If an element of `xs` does not show\n // this property, a new `TypedArray` that satisfy this property will be\n // constructed and pushed into `normalizedXs`.\n const normalizedXs: TypedArray[] = [];\n xs.forEach((x: TypedArray) => {\n totalByteLength += x.byteLength;\n // tslint:disable:no-any\n normalizedXs.push(\n x.byteLength === x.buffer.byteLength ? x :\n new (x.constructor as any)(x));\n if (!(x as any instanceof Float32Array || x as any instanceof Int32Array ||\n x as any instanceof Uint8Array)) {\n throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`);\n }\n // tslint:enable:no-any\n });\n\n const y = new Uint8Array(totalByteLength);\n let offset = 0;\n normalizedXs.forEach((x: TypedArray) => {\n y.set(new Uint8Array(x.buffer), offset);\n offset += x.byteLength;\n });\n\n return y.buffer;\n}\n\n// Use Buffer on Node.js instead of Blob/atob/btoa\nconst useNodeBuffer = typeof Buffer !== 'undefined' &&\n (typeof Blob === 'undefined' || typeof atob === 'undefined' ||\n typeof btoa === 'undefined');\n\n/**\n * Calculate the byte length of a JavaScript string.\n *\n * Note that a JavaScript string can contain wide characters, therefore the\n * length of the string is not necessarily equal to the byte length.\n *\n * @param str Input string.\n * @returns Byte length.\n */\nexport function stringByteLength(str: string): number {\n if (useNodeBuffer) {\n return Buffer.byteLength(str);\n }\n return new Blob([str]).size;\n}\n\n/**\n * Encode an ArrayBuffer as a base64 encoded string.\n *\n * @param buffer `ArrayBuffer` to be converted.\n * @returns A string that base64-encodes `buffer`.\n */\nexport function arrayBufferToBase64String(buffer: ArrayBuffer): string {\n if (useNodeBuffer) {\n return Buffer.from(buffer).toString('base64');\n }\n const buf = new Uint8Array(buffer);\n let s = '';\n for (let i = 0, l = buf.length; i < l; i++) {\n s += String.fromCharCode(buf[i]);\n }\n return btoa(s);\n}\n\n/**\n * Decode a base64 string as an ArrayBuffer.\n *\n * @param str Base64 string.\n * @returns Decoded `ArrayBuffer`.\n */\nexport function base64StringToArrayBuffer(str: string): ArrayBuffer {\n if (useNodeBuffer) {\n const buf = Buffer.from(str, 'base64');\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n }\n const s = atob(str);\n const buffer = new Uint8Array(s.length);\n for (let i = 0; i < s.length; ++i) {\n buffer.set([s.charCodeAt(i)], i);\n }\n return buffer.buffer;\n}\n\n/**\n * Concatenate a number of ArrayBuffers into one.\n *\n * @param buffers A number of array buffers to concatenate.\n * @returns Result of concatenating `buffers` in order.\n */\nexport function concatenateArrayBuffers(buffers: ArrayBuffer[]): ArrayBuffer {\n if (buffers.length === 1) {\n return buffers[0];\n }\n\n let totalByteLength = 0;\n buffers.forEach((buffer: ArrayBuffer) => {\n totalByteLength += buffer.byteLength;\n });\n\n const temp = new Uint8Array(totalByteLength);\n let offset = 0;\n buffers.forEach((buffer: ArrayBuffer) => {\n temp.set(new Uint8Array(buffer), offset);\n offset += buffer.byteLength;\n });\n return temp.buffer;\n}\n\n/**\n * Get the basename of a path.\n *\n * Behaves in a way analogous to Linux's basename command.\n *\n * @param path\n */\nexport function basename(path: string): string {\n const SEPARATOR = '/';\n path = path.trim();\n while (path.endsWith(SEPARATOR)) {\n path = path.slice(0, path.length - 1);\n }\n const items = path.split(SEPARATOR);\n return items[items.length - 1];\n}\n\n/**\n * Populate ModelArtifactsInfo fields for a model with JSON topology.\n * @param modelArtifacts\n * @returns A ModelArtifactsInfo object.\n */\nexport function getModelArtifactsInfoForJSON(modelArtifacts: ModelArtifacts):\n ModelArtifactsInfo {\n if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n throw new Error('Expected JSON model topology, received ArrayBuffer.');\n }\n\n return {\n dateSaved: new Date(),\n modelTopologyType: 'JSON',\n modelTopologyBytes: modelArtifacts.modelTopology == null ?\n 0 :\n stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),\n weightSpecsBytes: modelArtifacts.weightSpecs == null ?\n 0 :\n stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),\n weightDataBytes: modelArtifacts.weightData == null ?\n 0 :\n modelArtifacts.weightData.byteLength,\n };\n}\n\n/**\n * Computes mantisa table for casting Float16 to Float32\n * See http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n *\n * @returns Uint32Array, 2048 mantissa lookup values.\n */\nfunction computeFloat16MantisaTable(): Uint32Array {\n const convertMantissa = (i: number): number => {\n let m = i << 13;\n let e = 0;\n\n while ((m & 0x00800000) === 0) {\n e -= 0x00800000;\n m <<= 1;\n }\n m &= ~0x00800000;\n e += 0x38800000;\n\n return m | e;\n };\n\n const mantisaTable = new Uint32Array(2048);\n\n mantisaTable[0] = 0;\n for (let i = 1; i < 1024; i++) {\n mantisaTable[i] = convertMantissa(i);\n }\n for (let i = 1024; i < 2048; i++) {\n mantisaTable[i] = 0x38000000 + ((i - 1024) << 13);\n }\n\n return mantisaTable;\n}\n\n/**\n * Computes exponent table for casting Float16 to Float32\n * See http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n *\n * @returns Uint32Array, 64 exponent lookup values.\n */\nfunction computeFloat16ExponentTable(): Uint32Array {\n const exponentTable = new Uint32Array(64);\n\n exponentTable[0] = 0;\n exponentTable[31] = 0x47800000;\n exponentTable[32] = 0x80000000;\n exponentTable[63] = 0xc7800000;\n for (let i = 1; i < 31; i++) {\n exponentTable[i] = i << 23;\n }\n for (let i = 33; i < 63; i++) {\n exponentTable[i] = 0x80000000 + ((i - 32) << 23);\n }\n\n return exponentTable;\n}\n\n/**\n * Computes offset table for casting Float16 to Float32\n * See http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n *\n * @returns Uint32Array, 6d offset values.\n */\nfunction computeFloat16OffsetTable(): Uint32Array {\n const offsetTable = new Uint32Array(64);\n\n for (let i = 0; i < 64; i++) {\n offsetTable[i] = 1024;\n }\n offsetTable[0] = offsetTable[32] = 0;\n\n return offsetTable;\n}\n\n/**\n * Retrieve a Float16 decoder which will decode a ByteArray of Float16 values\n * to a Float32Array.\n *\n * @returns Function (buffer: Uint16Array) => Float32Array which decodes\n * the Uint16Array of Float16 bytes to a Float32Array.\n */\nexport function getFloat16Decoder(): (buffer: Uint16Array) => Float32Array {\n // Algorithm is based off of\n // http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\n // Cache lookup tables\n const mantisaTable = computeFloat16MantisaTable();\n const exponentTable = computeFloat16ExponentTable();\n const offsetTable = computeFloat16OffsetTable();\n\n return (quantizedArray: Uint16Array) => {\n const buffer = new ArrayBuffer(4 * quantizedArray.length);\n const bufferUint32View = new Uint32Array(buffer);\n for (let index = 0; index < quantizedArray.length; index++) {\n const float16Bits = quantizedArray[index];\n const float32Bits =\n mantisaTable[offsetTable[float16Bits >> 10] + (float16Bits & 0x3ff)] +\n exponentTable[float16Bits >> 10];\n bufferUint32View[index] = float32Bits;\n }\n return new Float32Array(buffer);\n };\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {IOHandler, LoadOptions} from './types';\n\nexport type IORouter = (url: string|string[], loadOptions?: LoadOptions) =>\n IOHandler;\n\nexport class IORouterRegistry {\n // Singleton instance.\n private static instance: IORouterRegistry;\n\n private saveRouters: IORouter[];\n private loadRouters: IORouter[];\n\n private constructor() {\n this.saveRouters = [];\n this.loadRouters = [];\n }\n\n private static getInstance(): IORouterRegistry {\n if (IORouterRegistry.instance == null) {\n IORouterRegistry.instance = new IORouterRegistry();\n }\n return IORouterRegistry.instance;\n }\n\n /**\n * Register a save-handler router.\n *\n * @param saveRouter A function that maps a URL-like string onto an instance\n * of `IOHandler` with the `save` method defined or `null`.\n */\n static registerSaveRouter(saveRouter: IORouter) {\n IORouterRegistry.getInstance().saveRouters.push(saveRouter);\n }\n\n /**\n * Register a load-handler router.\n *\n * @param loadRouter A function that maps a URL-like string onto an instance\n * of `IOHandler` with the `load` method defined or `null`.\n */\n static registerLoadRouter(loadRouter: IORouter) {\n IORouterRegistry.getInstance().loadRouters.push(loadRouter);\n }\n\n /**\n * Look up IOHandler for saving, given a URL-like string.\n *\n * @param url\n * @returns If only one match is found, an instance of IOHandler with the\n * `save` method defined. If no match is found, `null`.\n * @throws Error, if more than one match is found.\n */\n static getSaveHandlers(url: string|string[]): IOHandler[] {\n return IORouterRegistry.getHandlers(url, 'save');\n }\n\n /**\n * Look up IOHandler for loading, given a URL-like string.\n *\n * @param url\n * @param loadOptions Optional, custom load options.\n * @returns All valid handlers for `url`, given the currently registered\n * handler routers.\n */\n static getLoadHandlers(url: string|string[], loadOptions?: LoadOptions):\n IOHandler[] {\n return IORouterRegistry.getHandlers(url, 'load', loadOptions);\n }\n\n private static getHandlers(\n url: string|string[], handlerType: 'save'|'load',\n loadOptions?: LoadOptions): IOHandler[] {\n const validHandlers: IOHandler[] = [];\n const routers = handlerType === 'load' ?\n IORouterRegistry.getInstance().loadRouters :\n IORouterRegistry.getInstance().saveRouters;\n routers.forEach(router => {\n const handler = router(url, loadOptions);\n if (handler !== null) {\n validHandlers.push(handler);\n }\n });\n return validHandlers;\n }\n}\n\nexport const registerSaveRouter = (loudRouter: IORouter) =>\n IORouterRegistry.registerSaveRouter(loudRouter);\nexport const registerLoadRouter = (loudRouter: IORouter) =>\n IORouterRegistry.registerLoadRouter(loudRouter);\nexport const getSaveHandlers = (url: string|string[]) =>\n IORouterRegistry.getSaveHandlers(url);\nexport const getLoadHandlers =\n (url: string|string[], loadOptions?: LoadOptions) =>\n IORouterRegistry.getLoadHandlers(url, loadOptions);\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport '../flags';\n\nimport {env} from '../environment';\n\nimport {getModelArtifactsInfoForJSON} from './io_utils';\nimport {IORouter, IORouterRegistry} from './router_registry';\nimport {IOHandler, ModelArtifacts, ModelArtifactsInfo, ModelStoreManager, SaveResult} from './types';\n\nconst DATABASE_NAME = 'tensorflowjs';\nconst DATABASE_VERSION = 1;\n\n// Model data and ModelArtifactsInfo (metadata) are stored in two separate\n// stores for efficient access of the list of stored models and their metadata.\n// 1. The object store for model data: topology, weights and weight manifests.\nconst MODEL_STORE_NAME = 'models_store';\n// 2. The object store for ModelArtifactsInfo, including meta-information such\n// as the type of topology (JSON vs binary), byte size of the topology, byte\n// size of the weights, etc.\nconst INFO_STORE_NAME = 'model_info_store';\n\n/**\n * Delete the entire database for tensorflow.js, including the models store.\n */\nexport async function deleteDatabase(): Promise {\n const idbFactory = getIndexedDBFactory();\n\n return new Promise((resolve, reject) => {\n const deleteRequest = idbFactory.deleteDatabase(DATABASE_NAME);\n deleteRequest.onsuccess = () => resolve();\n deleteRequest.onerror = error => reject(error);\n });\n}\n\nfunction getIndexedDBFactory(): IDBFactory {\n if (!env().getBool('IS_BROWSER')) {\n // TODO(cais): Add more info about what IOHandler subtypes are available.\n // Maybe point to a doc page on the web and/or automatically determine\n // the available IOHandlers and print them in the error message.\n throw new Error(\n 'Failed to obtain IndexedDB factory because the current environment' +\n 'is not a web browser.');\n }\n // tslint:disable-next-line:no-any\n const theWindow: any = typeof window === 'undefined' ? self : window;\n const factory = theWindow.indexedDB || theWindow.mozIndexedDB ||\n theWindow.webkitIndexedDB || theWindow.msIndexedDB ||\n theWindow.shimIndexedDB;\n if (factory == null) {\n throw new Error(\n 'The current browser does not appear to support IndexedDB.');\n }\n return factory;\n}\n\nfunction setUpDatabase(openRequest: IDBRequest) {\n const db = openRequest.result as IDBDatabase;\n db.createObjectStore(MODEL_STORE_NAME, {keyPath: 'modelPath'});\n db.createObjectStore(INFO_STORE_NAME, {keyPath: 'modelPath'});\n}\n\n/**\n * IOHandler subclass: Browser IndexedDB.\n *\n * See the doc string of `browserIndexedDB` for more details.\n */\nexport class BrowserIndexedDB implements IOHandler {\n protected readonly indexedDB: IDBFactory;\n protected readonly modelPath: string;\n\n static readonly URL_SCHEME = 'indexeddb://';\n\n constructor(modelPath: string) {\n this.indexedDB = getIndexedDBFactory();\n\n if (modelPath == null || !modelPath) {\n throw new Error(\n 'For IndexedDB, modelPath must not be null, undefined or empty.');\n }\n this.modelPath = modelPath;\n }\n\n async save(modelArtifacts: ModelArtifacts): Promise {\n // TODO(cais): Support saving GraphDef models.\n if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n throw new Error(\n 'BrowserLocalStorage.save() does not support saving model topology ' +\n 'in binary formats yet.');\n }\n\n return this.databaseAction(this.modelPath, modelArtifacts) as\n Promise;\n }\n\n async load(): Promise {\n return this.databaseAction(this.modelPath) as Promise;\n }\n\n /**\n * Perform database action to put model artifacts into or read model artifacts\n * from IndexedDB object store.\n *\n * Whether the action is put or get depends on whether `modelArtifacts` is\n * specified. If it is specified, the action will be put; otherwise the action\n * will be get.\n *\n * @param modelPath A unique string path for the model.\n * @param modelArtifacts If specified, it will be the model artifacts to be\n * stored in IndexedDB.\n * @returns A `Promise` of `SaveResult`, if the action is put, or a `Promise`\n * of `ModelArtifacts`, if the action is get.\n */\n private databaseAction(modelPath: string, modelArtifacts?: ModelArtifacts):\n Promise {\n return new Promise((resolve, reject) => {\n const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n openRequest.onupgradeneeded = () => setUpDatabase(openRequest);\n\n openRequest.onsuccess = () => {\n const db = openRequest.result;\n\n if (modelArtifacts == null) {\n // Read model out from object store.\n const modelTx = db.transaction(MODEL_STORE_NAME, 'readonly');\n const modelStore = modelTx.objectStore(MODEL_STORE_NAME);\n const getRequest = modelStore.get(this.modelPath);\n getRequest.onsuccess = () => {\n if (getRequest.result == null) {\n db.close();\n return reject(new Error(\n `Cannot find model with path '${this.modelPath}' ` +\n `in IndexedDB.`));\n } else {\n resolve(getRequest.result.modelArtifacts);\n }\n };\n getRequest.onerror = error => {\n db.close();\n return reject(getRequest.error);\n };\n modelTx.oncomplete = () => db.close();\n } else {\n // Put model into object store.\n const modelArtifactsInfo: ModelArtifactsInfo =\n getModelArtifactsInfoForJSON(modelArtifacts);\n // First, put ModelArtifactsInfo into info store.\n const infoTx = db.transaction(INFO_STORE_NAME, 'readwrite');\n let infoStore = infoTx.objectStore(INFO_STORE_NAME);\n const putInfoRequest =\n infoStore.put({modelPath: this.modelPath, modelArtifactsInfo});\n let modelTx: IDBTransaction;\n putInfoRequest.onsuccess = () => {\n // Second, put model data into model store.\n modelTx = db.transaction(MODEL_STORE_NAME, 'readwrite');\n const modelStore = modelTx.objectStore(MODEL_STORE_NAME);\n const putModelRequest = modelStore.put({\n modelPath: this.modelPath,\n modelArtifacts,\n modelArtifactsInfo\n });\n putModelRequest.onsuccess = () => resolve({modelArtifactsInfo});\n putModelRequest.onerror = error => {\n // If the put-model request fails, roll back the info entry as\n // well.\n infoStore = infoTx.objectStore(INFO_STORE_NAME);\n const deleteInfoRequest = infoStore.delete(this.modelPath);\n deleteInfoRequest.onsuccess = () => {\n db.close();\n return reject(putModelRequest.error);\n };\n deleteInfoRequest.onerror = error => {\n db.close();\n return reject(putModelRequest.error);\n };\n };\n };\n putInfoRequest.onerror = error => {\n db.close();\n return reject(putInfoRequest.error);\n };\n infoTx.oncomplete = () => {\n if (modelTx == null) {\n db.close();\n } else {\n modelTx.oncomplete = () => db.close();\n }\n };\n }\n };\n openRequest.onerror = error => reject(openRequest.error);\n });\n }\n}\n\nexport const indexedDBRouter: IORouter = (url: string|string[]) => {\n if (!env().getBool('IS_BROWSER')) {\n return null;\n } else {\n if (!Array.isArray(url) && url.startsWith(BrowserIndexedDB.URL_SCHEME)) {\n return browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length));\n } else {\n return null;\n }\n }\n};\nIORouterRegistry.registerSaveRouter(indexedDBRouter);\nIORouterRegistry.registerLoadRouter(indexedDBRouter);\n\n/**\n * Creates a browser IndexedDB IOHandler for saving and loading models.\n *\n * ```js\n * const model = tf.sequential();\n * model.add(\n * tf.layers.dense({units: 1, inputShape: [100], activation: 'sigmoid'}));\n *\n * const saveResult = await model.save('indexeddb://MyModel'));\n * console.log(saveResult);\n * ```\n *\n * @param modelPath A unique identifier for the model to be saved. Must be a\n * non-empty string.\n * @returns An instance of `BrowserIndexedDB` (sublcass of `IOHandler`),\n * which can be used with, e.g., `tf.Model.save`.\n */\nexport function browserIndexedDB(modelPath: string): IOHandler {\n return new BrowserIndexedDB(modelPath);\n}\n\nfunction maybeStripScheme(key: string) {\n return key.startsWith(BrowserIndexedDB.URL_SCHEME) ?\n key.slice(BrowserIndexedDB.URL_SCHEME.length) :\n key;\n}\n\nexport class BrowserIndexedDBManager implements ModelStoreManager {\n private indexedDB: IDBFactory;\n\n constructor() {\n this.indexedDB = getIndexedDBFactory();\n }\n\n async listModels(): Promise<{[path: string]: ModelArtifactsInfo}> {\n return new Promise<{[path: string]: ModelArtifactsInfo}>(\n (resolve, reject) => {\n const openRequest =\n this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n openRequest.onupgradeneeded = () => setUpDatabase(openRequest);\n\n openRequest.onsuccess = () => {\n const db = openRequest.result;\n const tx = db.transaction(INFO_STORE_NAME, 'readonly');\n const store = tx.objectStore(INFO_STORE_NAME);\n // tslint:disable:max-line-length\n // Need to cast `store` as `any` here because TypeScript's DOM\n // library does not have the `getAll()` method even though the\n // method is supported in the latest version of most mainstream\n // browsers:\n // https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/getAll\n // tslint:enable:max-line-length\n // tslint:disable-next-line:no-any\n const getAllInfoRequest = (store as any).getAll() as IDBRequest;\n getAllInfoRequest.onsuccess = () => {\n const out: {[path: string]: ModelArtifactsInfo} = {};\n for (const item of getAllInfoRequest.result) {\n out[item.modelPath] = item.modelArtifactsInfo;\n }\n resolve(out);\n };\n getAllInfoRequest.onerror = error => {\n db.close();\n return reject(getAllInfoRequest.error);\n };\n tx.oncomplete = () => db.close();\n };\n openRequest.onerror = error => reject(openRequest.error);\n });\n }\n\n async removeModel(path: string): Promise {\n path = maybeStripScheme(path);\n return new Promise((resolve, reject) => {\n const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n openRequest.onupgradeneeded = () => setUpDatabase(openRequest);\n\n openRequest.onsuccess = () => {\n const db = openRequest.result;\n const infoTx = db.transaction(INFO_STORE_NAME, 'readwrite');\n const infoStore = infoTx.objectStore(INFO_STORE_NAME);\n\n const getInfoRequest = infoStore.get(path);\n let modelTx: IDBTransaction;\n getInfoRequest.onsuccess = () => {\n if (getInfoRequest.result == null) {\n db.close();\n return reject(new Error(\n `Cannot find model with path '${path}' ` +\n `in IndexedDB.`));\n } else {\n // First, delete the entry in the info store.\n const deleteInfoRequest = infoStore.delete(path);\n const deleteModelData = () => {\n // Second, delete the entry in the model store.\n modelTx = db.transaction(MODEL_STORE_NAME, 'readwrite');\n const modelStore = modelTx.objectStore(MODEL_STORE_NAME);\n const deleteModelRequest = modelStore.delete(path);\n deleteModelRequest.onsuccess = () =>\n resolve(getInfoRequest.result.modelArtifactsInfo);\n deleteModelRequest.onerror = error =>\n reject(getInfoRequest.error);\n };\n // Proceed with deleting model data regardless of whether deletion\n // of info data succeeds or not.\n deleteInfoRequest.onsuccess = deleteModelData;\n deleteInfoRequest.onerror = error => {\n deleteModelData();\n db.close();\n return reject(getInfoRequest.error);\n };\n }\n };\n getInfoRequest.onerror = error => {\n db.close();\n return reject(getInfoRequest.error);\n };\n\n infoTx.oncomplete = () => {\n if (modelTx == null) {\n db.close();\n } else {\n modelTx.oncomplete = () => db.close();\n }\n };\n };\n openRequest.onerror = error => reject(openRequest.error);\n });\n }\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport '../flags';\nimport {env} from '../environment';\n\nimport {assert} from '../util';\nimport {arrayBufferToBase64String, base64StringToArrayBuffer, getModelArtifactsInfoForJSON} from './io_utils';\nimport {IORouter, IORouterRegistry} from './router_registry';\nimport {IOHandler, ModelArtifacts, ModelArtifactsInfo, ModelStoreManager, SaveResult} from './types';\n\nconst PATH_SEPARATOR = '/';\nconst PATH_PREFIX = 'tensorflowjs_models';\nconst INFO_SUFFIX = 'info';\nconst MODEL_TOPOLOGY_SUFFIX = 'model_topology';\nconst WEIGHT_SPECS_SUFFIX = 'weight_specs';\nconst WEIGHT_DATA_SUFFIX = 'weight_data';\nconst MODEL_METADATA_SUFFIX = 'model_metadata';\n\n/**\n * Purge all tensorflow.js-saved model artifacts from local storage.\n *\n * @returns Paths of the models purged.\n */\nexport function purgeLocalStorageArtifacts(): string[] {\n if (!env().getBool('IS_BROWSER') || typeof window === 'undefined' ||\n typeof window.localStorage === 'undefined') {\n throw new Error(\n 'purgeLocalStorageModels() cannot proceed because local storage is ' +\n 'unavailable in the current environment.');\n }\n const LS = window.localStorage;\n const purgedModelPaths: string[] = [];\n for (let i = 0; i < LS.length; ++i) {\n const key = LS.key(i);\n const prefix = PATH_PREFIX + PATH_SEPARATOR;\n if (key.startsWith(prefix) && key.length > prefix.length) {\n LS.removeItem(key);\n const modelName = getModelPathFromKey(key);\n if (purgedModelPaths.indexOf(modelName) === -1) {\n purgedModelPaths.push(modelName);\n }\n }\n }\n return purgedModelPaths;\n}\n\nfunction getModelKeys(path: string): {\n info: string,\n topology: string,\n weightSpecs: string,\n weightData: string,\n modelMetadata: string\n} {\n return {\n info: [PATH_PREFIX, path, INFO_SUFFIX].join(PATH_SEPARATOR),\n topology: [PATH_PREFIX, path, MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),\n weightSpecs: [PATH_PREFIX, path, WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),\n weightData: [PATH_PREFIX, path, WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),\n modelMetadata:\n [PATH_PREFIX, path, MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)\n };\n}\n\n/**\n * Get model path from a local-storage key.\n *\n * E.g., 'tensorflowjs_models/my/model/1/info' --> 'my/model/1'\n *\n * @param key\n */\nfunction getModelPathFromKey(key: string) {\n const items = key.split(PATH_SEPARATOR);\n if (items.length < 3) {\n throw new Error(`Invalid key format: ${key}`);\n }\n return items.slice(1, items.length - 1).join(PATH_SEPARATOR);\n}\n\nfunction maybeStripScheme(key: string) {\n return key.startsWith(BrowserLocalStorage.URL_SCHEME) ?\n key.slice(BrowserLocalStorage.URL_SCHEME.length) :\n key;\n}\n\ndeclare type LocalStorageKeys = {\n info: string,\n topology: string,\n weightSpecs: string,\n weightData: string,\n modelMetadata: string\n};\n\n/**\n * IOHandler subclass: Browser Local Storage.\n *\n * See the doc string to `browserLocalStorage` for more details.\n */\nexport class BrowserLocalStorage implements IOHandler {\n protected readonly LS: Storage;\n protected readonly modelPath: string;\n protected readonly keys: LocalStorageKeys;\n\n static readonly URL_SCHEME = 'localstorage://';\n\n constructor(modelPath: string) {\n if (!env().getBool('IS_BROWSER') || typeof window === 'undefined' ||\n typeof window.localStorage === 'undefined') {\n // TODO(cais): Add more info about what IOHandler subtypes are\n // available.\n // Maybe point to a doc page on the web and/or automatically determine\n // the available IOHandlers and print them in the error message.\n throw new Error(\n 'The current environment does not support local storage.');\n }\n this.LS = window.localStorage;\n\n if (modelPath == null || !modelPath) {\n throw new Error(\n 'For local storage, modelPath must not be null, undefined or empty.');\n }\n this.modelPath = modelPath;\n this.keys = getModelKeys(this.modelPath);\n }\n\n /**\n * Save model artifacts to browser local storage.\n *\n * See the documentation to `browserLocalStorage` for details on the saved\n * artifacts.\n *\n * @param modelArtifacts The model artifacts to be stored.\n * @returns An instance of SaveResult.\n */\n async save(modelArtifacts: ModelArtifacts): Promise {\n if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n throw new Error(\n 'BrowserLocalStorage.save() does not support saving model topology ' +\n 'in binary formats yet.');\n } else {\n const topology = JSON.stringify(modelArtifacts.modelTopology);\n const weightSpecs = JSON.stringify(modelArtifacts.weightSpecs);\n\n const modelArtifactsInfo: ModelArtifactsInfo =\n getModelArtifactsInfoForJSON(modelArtifacts);\n\n try {\n this.LS.setItem(this.keys.info, JSON.stringify(modelArtifactsInfo));\n this.LS.setItem(this.keys.topology, topology);\n this.LS.setItem(this.keys.weightSpecs, weightSpecs);\n this.LS.setItem(\n this.keys.weightData,\n arrayBufferToBase64String(modelArtifacts.weightData));\n this.LS.setItem(this.keys.modelMetadata, JSON.stringify({\n format: modelArtifacts.format,\n generatedBy: modelArtifacts.generatedBy,\n convertedBy: modelArtifacts.convertedBy,\n userDefinedMetadata: modelArtifacts.userDefinedMetadata\n }));\n\n return {modelArtifactsInfo};\n } catch (err) {\n // If saving failed, clean up all items saved so far.\n this.LS.removeItem(this.keys.info);\n this.LS.removeItem(this.keys.topology);\n this.LS.removeItem(this.keys.weightSpecs);\n this.LS.removeItem(this.keys.weightData);\n this.LS.removeItem(this.keys.modelMetadata);\n\n throw new Error(\n `Failed to save model '${this.modelPath}' to local storage: ` +\n `size quota being exceeded is a possible cause of this failure: ` +\n `modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, ` +\n `weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, ` +\n `weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`);\n }\n }\n }\n\n /**\n * Load a model from local storage.\n *\n * See the documentation to `browserLocalStorage` for details on the saved\n * artifacts.\n *\n * @returns The loaded model (if loading succeeds).\n */\n async load(): Promise {\n const info =\n JSON.parse(this.LS.getItem(this.keys.info)) as ModelArtifactsInfo;\n if (info == null) {\n throw new Error(\n `In local storage, there is no model with name '${this.modelPath}'`);\n }\n\n if (info.modelTopologyType !== 'JSON') {\n throw new Error(\n 'BrowserLocalStorage does not support loading non-JSON model ' +\n 'topology yet.');\n }\n\n const out: ModelArtifacts = {};\n\n // Load topology.\n const topology = JSON.parse(this.LS.getItem(this.keys.topology));\n if (topology == null) {\n throw new Error(\n `In local storage, the topology of model '${this.modelPath}' ` +\n `is missing.`);\n }\n out.modelTopology = topology;\n\n // Load weight specs.\n const weightSpecs = JSON.parse(this.LS.getItem(this.keys.weightSpecs));\n if (weightSpecs == null) {\n throw new Error(\n `In local storage, the weight specs of model '${this.modelPath}' ` +\n `are missing.`);\n }\n out.weightSpecs = weightSpecs;\n\n // Load meta-data fields.\n const metadataString = this.LS.getItem(this.keys.modelMetadata);\n if (metadataString != null) {\n const metadata = JSON.parse(metadataString) as ModelArtifacts;\n out.format = metadata['format'];\n out.generatedBy = metadata['generatedBy'];\n out.convertedBy = metadata['convertedBy'];\n out.userDefinedMetadata = metadata['userDefinedMetadata'];\n }\n\n // Load weight data.\n const weightDataBase64 = this.LS.getItem(this.keys.weightData);\n if (weightDataBase64 == null) {\n throw new Error(\n `In local storage, the binary weight values of model ` +\n `'${this.modelPath}' are missing.`);\n }\n out.weightData = base64StringToArrayBuffer(weightDataBase64);\n\n return out;\n }\n}\n\nexport const localStorageRouter: IORouter = (url: string|string[]) => {\n if (!env().getBool('IS_BROWSER')) {\n return null;\n } else {\n if (!Array.isArray(url) && url.startsWith(BrowserLocalStorage.URL_SCHEME)) {\n return browserLocalStorage(\n url.slice(BrowserLocalStorage.URL_SCHEME.length));\n } else {\n return null;\n }\n }\n};\nIORouterRegistry.registerSaveRouter(localStorageRouter);\nIORouterRegistry.registerLoadRouter(localStorageRouter);\n\n/**\n * Factory function for local storage IOHandler.\n *\n * This `IOHandler` supports both `save` and `load`.\n *\n * For each model's saved artifacts, four items are saved to local storage.\n * - `${PATH_SEPARATOR}/${modelPath}/info`: Contains meta-info about the\n * model, such as date saved, type of the topology, size in bytes, etc.\n * - `${PATH_SEPARATOR}/${modelPath}/topology`: Model topology. For Keras-\n * style models, this is a stringized JSON.\n * - `${PATH_SEPARATOR}/${modelPath}/weight_specs`: Weight specs of the\n * model, can be used to decode the saved binary weight values (see\n * item below).\n * - `${PATH_SEPARATOR}/${modelPath}/weight_data`: Concatenated binary\n * weight values, stored as a base64-encoded string.\n *\n * Saving may throw an `Error` if the total size of the artifacts exceed the\n * browser-specific quota.\n *\n * @param modelPath A unique identifier for the model to be saved. Must be a\n * non-empty string.\n * @returns An instance of `IOHandler`, which can be used with, e.g.,\n * `tf.Model.save`.\n */\nexport function browserLocalStorage(modelPath: string): IOHandler {\n return new BrowserLocalStorage(modelPath);\n}\n\nexport class BrowserLocalStorageManager implements ModelStoreManager {\n private readonly LS: Storage;\n\n constructor() {\n assert(\n env().getBool('IS_BROWSER'),\n () => 'Current environment is not a web browser');\n assert(\n typeof window === 'undefined' ||\n typeof window.localStorage !== 'undefined',\n () => 'Current browser does not appear to support localStorage');\n this.LS = window.localStorage;\n }\n\n async listModels(): Promise<{[path: string]: ModelArtifactsInfo}> {\n const out: {[path: string]: ModelArtifactsInfo} = {};\n const prefix = PATH_PREFIX + PATH_SEPARATOR;\n const suffix = PATH_SEPARATOR + INFO_SUFFIX;\n for (let i = 0; i < this.LS.length; ++i) {\n const key = this.LS.key(i);\n if (key.startsWith(prefix) && key.endsWith(suffix)) {\n const modelPath = getModelPathFromKey(key);\n out[modelPath] = JSON.parse(this.LS.getItem(key)) as ModelArtifactsInfo;\n }\n }\n return out;\n }\n\n async removeModel(path: string): Promise {\n path = maybeStripScheme(path);\n const keys = getModelKeys(path);\n if (this.LS.getItem(keys.info) == null) {\n throw new Error(`Cannot find model at path '${path}'`);\n }\n const info = JSON.parse(this.LS.getItem(keys.info)) as ModelArtifactsInfo;\n\n this.LS.removeItem(keys.info);\n this.LS.removeItem(keys.topology);\n this.LS.removeItem(keys.weightSpecs);\n this.LS.removeItem(keys.weightData);\n return info;\n }\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n/**\n * Classes and functions for model management across multiple storage mediums.\n *\n * Supported client actions:\n * - Listing models on all registered storage mediums.\n * - Remove model by URL from any registered storage mediums, by using URL\n * string.\n * - Moving or copying model from one path to another in the same medium or from\n * one medium to another, by using URL strings.\n */\n\nimport {assert} from '../util';\n\nimport {IORouterRegistry} from './router_registry';\nimport {ModelArtifactsInfo, ModelStoreManager} from './types';\n\nconst URL_SCHEME_SUFFIX = '://';\n\nexport class ModelStoreManagerRegistry {\n // Singleton instance.\n private static instance: ModelStoreManagerRegistry;\n\n private managers: {[scheme: string]: ModelStoreManager};\n\n private constructor() {\n this.managers = {};\n }\n\n private static getInstance(): ModelStoreManagerRegistry {\n if (ModelStoreManagerRegistry.instance == null) {\n ModelStoreManagerRegistry.instance = new ModelStoreManagerRegistry();\n }\n return ModelStoreManagerRegistry.instance;\n }\n\n /**\n * Register a save-handler router.\n *\n * @param saveRouter A function that maps a URL-like string onto an instance\n * of `IOHandler` with the `save` method defined or `null`.\n */\n static registerManager(scheme: string, manager: ModelStoreManager) {\n assert(scheme != null, () => 'scheme must not be undefined or null.');\n if (scheme.endsWith(URL_SCHEME_SUFFIX)) {\n scheme = scheme.slice(0, scheme.indexOf(URL_SCHEME_SUFFIX));\n }\n assert(scheme.length > 0, () => 'scheme must not be an empty string.');\n const registry = ModelStoreManagerRegistry.getInstance();\n assert(\n registry.managers[scheme] == null,\n () => `A model store manager is already registered for scheme '${\n scheme}'.`);\n registry.managers[scheme] = manager;\n }\n\n static getManager(scheme: string): ModelStoreManager {\n const manager = this.getInstance().managers[scheme];\n if (manager == null) {\n throw new Error(`Cannot find model manager for scheme '${scheme}'`);\n }\n return manager;\n }\n\n static getSchemes(): string[] {\n return Object.keys(this.getInstance().managers);\n }\n}\n\n/**\n * Helper method for parsing a URL string into a scheme and a path.\n *\n * @param url E.g., 'localstorage://my-model'\n * @returns A dictionary with two fields: scheme and path.\n * Scheme: e.g., 'localstorage' in the example above.\n * Path: e.g., 'my-model' in the example above.\n */\nfunction parseURL(url: string): {scheme: string, path: string} {\n if (url.indexOf(URL_SCHEME_SUFFIX) === -1) {\n throw new Error(\n `The url string provided does not contain a scheme. ` +\n `Supported schemes are: ` +\n `${ModelStoreManagerRegistry.getSchemes().join(',')}`);\n }\n return {\n scheme: url.split(URL_SCHEME_SUFFIX)[0],\n path: url.split(URL_SCHEME_SUFFIX)[1],\n };\n}\n\nasync function cloneModelInternal(\n sourceURL: string, destURL: string,\n deleteSource = false): Promise {\n assert(\n sourceURL !== destURL,\n () => `Old path and new path are the same: '${sourceURL}'`);\n\n const loadHandlers = IORouterRegistry.getLoadHandlers(sourceURL);\n assert(\n loadHandlers.length > 0,\n () => `Copying failed because no load handler is found for source URL ${\n sourceURL}.`);\n assert(\n loadHandlers.length < 2,\n () => `Copying failed because more than one (${loadHandlers.length}) ` +\n `load handlers for source URL ${sourceURL}.`);\n const loadHandler = loadHandlers[0];\n\n const saveHandlers = IORouterRegistry.getSaveHandlers(destURL);\n assert(\n saveHandlers.length > 0,\n () => `Copying failed because no save handler is found for destination ` +\n `URL ${destURL}.`);\n assert(\n saveHandlers.length < 2,\n () => `Copying failed because more than one (${loadHandlers.length}) ` +\n `save handlers for destination URL ${destURL}.`);\n const saveHandler = saveHandlers[0];\n\n const sourceScheme = parseURL(sourceURL).scheme;\n const sourcePath = parseURL(sourceURL).path;\n const sameMedium = sourceScheme === parseURL(sourceURL).scheme;\n\n const modelArtifacts = await loadHandler.load();\n\n // If moving within the same storage medium, remove the old model as soon as\n // the loading is done. Without doing this, it is possible that the combined\n // size of the two models will cause the cloning to fail.\n if (deleteSource && sameMedium) {\n await ModelStoreManagerRegistry.getManager(sourceScheme)\n .removeModel(sourcePath);\n }\n\n const saveResult = await saveHandler.save(modelArtifacts);\n\n // If moving between mediums, the deletion is done after the save succeeds.\n // This guards against the case in which saving to the destination medium\n // fails.\n if (deleteSource && !sameMedium) {\n await ModelStoreManagerRegistry.getManager(sourceScheme)\n .removeModel(sourcePath);\n }\n\n return saveResult.modelArtifactsInfo;\n}\n\n/**\n * List all models stored in registered storage mediums.\n *\n * For a web browser environment, the registered mediums are Local Storage and\n * IndexedDB.\n *\n * ```js\n * // First create and save a model.\n * const model = tf.sequential();\n * model.add(tf.layers.dense(\n * {units: 1, inputShape: [10], activation: 'sigmoid'}));\n * await model.save('localstorage://demo/management/model1');\n *\n * // Then list existing models.\n * console.log(JSON.stringify(await tf.io.listModels()));\n *\n * // Delete the model.\n * await tf.io.removeModel('localstorage://demo/management/model1');\n *\n * // List models again.\n * console.log(JSON.stringify(await tf.io.listModels()));\n * ```\n *\n * @returns A `Promise` of a dictionary mapping URLs of existing models to\n * their model artifacts info. URLs include medium-specific schemes, e.g.,\n * 'indexeddb://my/model/1'. Model artifacts info include type of the\n * model's topology, byte sizes of the topology, weights, etc.\n *\n * @doc {\n * heading: 'Models',\n * subheading: 'Management',\n * namespace: 'io',\n * ignoreCI: true\n * }\n */\nasync function listModels(): Promise<{[url: string]: ModelArtifactsInfo}> {\n const schemes = ModelStoreManagerRegistry.getSchemes();\n const out: {[url: string]: ModelArtifactsInfo} = {};\n for (const scheme of schemes) {\n const schemeOut =\n await ModelStoreManagerRegistry.getManager(scheme).listModels();\n for (const path in schemeOut) {\n const url = scheme + URL_SCHEME_SUFFIX + path;\n out[url] = schemeOut[path];\n }\n }\n return out;\n}\n\n/**\n * Remove a model specified by URL from a reigstered storage medium.\n *\n * ```js\n * // First create and save a model.\n * const model = tf.sequential();\n * model.add(tf.layers.dense(\n * {units: 1, inputShape: [10], activation: 'sigmoid'}));\n * await model.save('localstorage://demo/management/model1');\n *\n * // Then list existing models.\n * console.log(JSON.stringify(await tf.io.listModels()));\n *\n * // Delete the model.\n * await tf.io.removeModel('localstorage://demo/management/model1');\n *\n * // List models again.\n * console.log(JSON.stringify(await tf.io.listModels()));\n * ```\n *\n * @param url A URL to a stored model, with a scheme prefix, e.g.,\n * 'localstorage://my-model-1', 'indexeddb://my/model/2'.\n * @returns ModelArtifactsInfo of the deleted model (if and only if deletion\n * is successful).\n * @throws Error if deletion fails, e.g., if no model exists at `path`.\n *\n * @doc {\n * heading: 'Models',\n * subheading: 'Management',\n * namespace: 'io',\n * ignoreCI: true\n * }\n */\nasync function removeModel(url: string): Promise {\n const schemeAndPath = parseURL(url);\n const manager = ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);\n return manager.removeModel(schemeAndPath.path);\n}\n\n/**\n * Copy a model from one URL to another.\n *\n * This function supports:\n *\n * 1. Copying within a storage medium, e.g.,\n * `tf.io.copyModel('localstorage://model-1', 'localstorage://model-2')`\n * 2. Copying between two storage mediums, e.g.,\n * `tf.io.copyModel('localstorage://model-1', 'indexeddb://model-1')`\n *\n * ```js\n * // First create and save a model.\n * const model = tf.sequential();\n * model.add(tf.layers.dense(\n * {units: 1, inputShape: [10], activation: 'sigmoid'}));\n * await model.save('localstorage://demo/management/model1');\n *\n * // Then list existing models.\n * console.log(JSON.stringify(await tf.io.listModels()));\n *\n * // Copy the model, from Local Storage to IndexedDB.\n * await tf.io.copyModel(\n * 'localstorage://demo/management/model1',\n * 'indexeddb://demo/management/model1');\n *\n * // List models again.\n * console.log(JSON.stringify(await tf.io.listModels()));\n *\n * // Remove both models.\n * await tf.io.removeModel('localstorage://demo/management/model1');\n * await tf.io.removeModel('indexeddb://demo/management/model1');\n * ```\n *\n * @param sourceURL Source URL of copying.\n * @param destURL Destination URL of copying.\n * @returns ModelArtifactsInfo of the copied model (if and only if copying\n * is successful).\n * @throws Error if copying fails, e.g., if no model exists at `sourceURL`, or\n * if `oldPath` and `newPath` are identical.\n *\n * @doc {\n * heading: 'Models',\n * subheading: 'Management',\n * namespace: 'io',\n * ignoreCI: true\n * }\n */\nasync function copyModel(\n sourceURL: string, destURL: string): Promise {\n const deleteSource = false;\n return cloneModelInternal(sourceURL, destURL, deleteSource);\n}\n\n/**\n * Move a model from one URL to another.\n *\n * This function supports:\n *\n * 1. Moving within a storage medium, e.g.,\n * `tf.io.moveModel('localstorage://model-1', 'localstorage://model-2')`\n * 2. Moving between two storage mediums, e.g.,\n * `tf.io.moveModel('localstorage://model-1', 'indexeddb://model-1')`\n *\n * ```js\n * // First create and save a model.\n * const model = tf.sequential();\n * model.add(tf.layers.dense(\n * {units: 1, inputShape: [10], activation: 'sigmoid'}));\n * await model.save('localstorage://demo/management/model1');\n *\n * // Then list existing models.\n * console.log(JSON.stringify(await tf.io.listModels()));\n *\n * // Move the model, from Local Storage to IndexedDB.\n * await tf.io.moveModel(\n * 'localstorage://demo/management/model1',\n * 'indexeddb://demo/management/model1');\n *\n * // List models again.\n * console.log(JSON.stringify(await tf.io.listModels()));\n *\n * // Remove the moved model.\n * await tf.io.removeModel('indexeddb://demo/management/model1');\n * ```\n *\n * @param sourceURL Source URL of moving.\n * @param destURL Destination URL of moving.\n * @returns ModelArtifactsInfo of the copied model (if and only if copying\n * is successful).\n * @throws Error if moving fails, e.g., if no model exists at `sourceURL`, or\n * if `oldPath` and `newPath` are identical.\n *\n * @doc {\n * heading: 'Models',\n * subheading: 'Management',\n * namespace: 'io',\n * ignoreCI: true\n * }\n */\nasync function moveModel(\n sourceURL: string, destURL: string): Promise {\n const deleteSource = true;\n return cloneModelInternal(sourceURL, destURL, deleteSource);\n}\n\nexport {moveModel, copyModel, removeModel, listModels};\n", "/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport '../flags';\n\nimport {env} from '../environment';\nimport {BrowserIndexedDB, BrowserIndexedDBManager} from '../io/indexed_db';\nimport {BrowserLocalStorage, BrowserLocalStorageManager} from '../io/local_storage';\nimport {ModelStoreManagerRegistry} from '../io/model_management';\n\nimport {Platform} from './platform';\n\nexport class PlatformBrowser implements Platform {\n // According to the spec, the built-in encoder can do only UTF-8 encoding.\n // https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder/TextEncoder\n private textEncoder: TextEncoder;\n\n fetch(path: string, init?: RequestInit): Promise {\n return fetch(path, init);\n }\n\n now(): number {\n return performance.now();\n }\n\n encode(text: string, encoding: string): Uint8Array {\n if (encoding !== 'utf-8' && encoding !== 'utf8') {\n throw new Error(\n `Browser's encoder only supports utf-8, but got ${encoding}`);\n }\n if (this.textEncoder == null) {\n this.textEncoder = new TextEncoder();\n }\n return this.textEncoder.encode(text);\n }\n decode(bytes: Uint8Array, encoding: string): string {\n return new TextDecoder(encoding).decode(bytes);\n }\n}\n\nif (env().get('IS_BROWSER')) {\n env().setPlatform('browser', new PlatformBrowser());\n\n // Register LocalStorage IOHandler\n try {\n ModelStoreManagerRegistry.registerManager(\n BrowserLocalStorage.URL_SCHEME, new BrowserLocalStorageManager());\n } catch (err) {\n }\n\n // Register IndexedDB IOHandler\n try {\n ModelStoreManagerRegistry.registerManager(\n BrowserIndexedDB.URL_SCHEME, new BrowserIndexedDBManager());\n } catch (err) {\n }\n}\n", "/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport {env} from '../environment';\n\nimport {Platform} from './platform';\n\n// We are wrapping this within an object so it can be stubbed by Jasmine.\nexport const getNodeFetch = {\n // tslint:disable-next-line:no-require-imports\n importFetch: () => require('node-fetch')\n};\n\ntype FetchFn = (url: string, init?: RequestInit) => Promise;\nlet systemFetch: FetchFn;\n// These getters and setters are for testing so we don't export a mutable\n// variable.\nexport function resetSystemFetch() {\n systemFetch = null;\n}\nexport function setSystemFetch(fetchFn: FetchFn) {\n systemFetch = fetchFn;\n}\nexport function getSystemFetch(): FetchFn {\n return systemFetch;\n}\n\nexport class PlatformNode implements Platform {\n private textEncoder: TextEncoder;\n // tslint:disable-next-line:no-any\n util: any;\n\n constructor() {\n // tslint:disable-next-line:no-require-imports\n this.util = require('util');\n // According to the spec, the built-in encoder can do only UTF-8 encoding.\n // https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder/TextEncoder\n this.textEncoder = new this.util.TextEncoder();\n }\n\n fetch(path: string, requestInits?: RequestInit): Promise {\n if (env().global.fetch != null) {\n return env().global.fetch(path, requestInits);\n }\n\n if (systemFetch == null) {\n systemFetch = getNodeFetch.importFetch();\n }\n return systemFetch(path, requestInits);\n }\n\n now(): number {\n const time = process.hrtime();\n return time[0] * 1000 + time[1] / 1000000;\n }\n\n encode(text: string, encoding: string): Uint8Array {\n if (encoding !== 'utf-8' && encoding !== 'utf8') {\n throw new Error(\n `Node built-in encoder only supports utf-8, but got ${encoding}`);\n }\n return this.textEncoder.encode(text);\n }\n decode(bytes: Uint8Array, encoding: string): string {\n if (bytes.length === 0) {\n return '';\n }\n return new this.util.TextDecoder(encoding).decode(bytes);\n }\n}\n\nif (env().get('IS_NODE')) {\n env().setPlatform('node', new PlatformNode());\n}\n", "/**\n * @license\n * Copyright 2020 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {TensorBuffer} from '../tensor';\nimport {DataType, DataTypeMap, Rank, ShapeMap} from '../types';\nimport * as util from '../util';\n\n/**\n * Creates an empty `tf.TensorBuffer` with the specified `shape` and `dtype`.\n *\n * The values are stored in CPU as `TypedArray`. Fill the buffer using\n * `buffer.set()`, or by modifying directly `buffer.values`.\n *\n * When done, call `buffer.toTensor()` to get an immutable `tf.Tensor` with\n * those values.\n *\n * ```js\n * // Create a buffer and set values at particular indices.\n * const buffer = tf.buffer([2, 2]);\n * buffer.set(3, 0, 0);\n * buffer.set(5, 1, 0);\n *\n * // Convert the buffer back to a tensor.\n * buffer.toTensor().print();\n * ```\n *\n * @param shape An array of integers defining the output tensor shape.\n * @param dtype The dtype of the buffer. Defaults to 'float32'.\n * @param values The values of the buffer as `TypedArray`. Defaults to\n * zeros.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\nexport function buffer(\n shape: ShapeMap[R], dtype: D = 'float32' as D,\n values?: DataTypeMap[D]): TensorBuffer {\n dtype = dtype || 'float32' as D;\n util.assertNonNegativeIntegerDimensions(shape);\n return new TensorBuffer(shape, dtype, values);\n}\n", "/**\n * @license\n * Copyright 2020 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport {ENGINE} from '../engine';\nimport {Cast, CastAttrs, CastInputs} from '../kernel_names';\nimport {NamedAttrMap} from '../kernel_registry';\nimport {Tensor} from '../tensor';\nimport {NamedTensorMap} from '../tensor_types';\nimport {convertToTensor} from '../tensor_util_env';\nimport {DataType, TensorLike} from '../types';\nimport * as util from '../util';\n\nimport {op} from './operation';\n\n/**\n * Casts a `tf.Tensor` to a new dtype.\n *\n * ```js\n * const x = tf.tensor1d([1.5, 2.5, 3]);\n * tf.cast(x, 'int32').print();\n * ```\n * @param x The input tensor to be casted.\n * @param dtype The dtype to cast the input tensor to.\n *\n * @doc {heading: 'Tensors', subheading: 'Transformations'}\n */\nfunction cast_(x: T|TensorLike, dtype: DataType): T {\n const $x = convertToTensor(x, 'x', 'cast');\n\n // Sanity checks.\n if (!util.isValidDtype(dtype)) {\n throw new Error(`Failed to cast to unknown dtype ${dtype}`);\n }\n if (dtype === 'string' && $x.dtype !== 'string' ||\n dtype !== 'string' && $x.dtype === 'string') {\n throw new Error('Only strings can be casted to strings');\n }\n\n const inputs: CastInputs = {x: $x};\n const attrs: CastAttrs = {dtype};\n\n return ENGINE.runKernelFunc(\n backend => backend.cast($x, dtype), inputs as {} as NamedTensorMap,\n null /* grad */, Cast, attrs as {} as NamedAttrMap);\n}\n\nexport const cast = op({cast_});\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {ENGINE} from '../engine';\nimport {Identity, IdentityInputs} from '../kernel_names';\nimport {Tensor} from '../tensor';\nimport {NamedTensorMap} from '../tensor_types';\nimport {convertToTensor} from '../tensor_util_env';\nimport {TensorLike} from '../types';\n\nimport {op} from './operation';\n\n/**\n * Creates a new tensor with the same values and shape as the specified\n * tensor.\n *\n * ```js\n * const x = tf.tensor([1, 2]);\n *\n * x.clone().print();\n * ```\n *\n * @param x The tensor to clone.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\nfunction clone_(x: T|TensorLike): T {\n const $x = convertToTensor(x, 'x', 'clone', null);\n const forward = () =>\n ENGINE.makeTensorFromDataId($x.dataId, $x.shape, $x.dtype) as T;\n\n const inputs: IdentityInputs = {x: $x};\n\n // Note this op is called tf.identity in python. Hence the kernel name used\n // here.\n return ENGINE.runKernelFunc(\n forward, inputs as {} as NamedTensorMap, null /* grad */, Identity);\n}\n\nexport const clone = op({clone_});\n", "/**\n * @license\n * Copyright 2020 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Tensor} from '../tensor';\n\n/**\n * Prints information about the `tf.Tensor` including its data.\n *\n * ```js\n * const verbose = true;\n * tf.tensor2d([1, 2, 3, 4], [2, 2]).print(verbose);\n * ```\n * @param x The tensor to be printed.\n * @param verbose Whether to print verbose information about the ` Tensor`,\n * including dtype and size.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\nexport function print(x: T, verbose = false): void {\n console.log(x.toString(verbose));\n}\n", "/**\n * @license\n * Copyright 2020 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n// Required side effectful code for tfjs-core\n\n// Set up Engine and ENV\nimport {getOrMakeEngine} from './engine';\ngetOrMakeEngine();\n\n// Register backend-agnostic flags.\nimport './flags';\n// Register platforms\nimport './platforms/platform_browser';\nimport './platforms/platform_node';\n\n// Set up OpHandler\nimport {buffer} from './ops/buffer';\nimport {cast} from './ops/cast';\nimport {clone} from './ops/clone';\nimport {print} from './ops/print';\nimport {OpHandler, setOpHandler} from './tensor';\nconst opHandler: OpHandler = {\n buffer,\n cast,\n clone,\n print\n};\nsetOpHandler(opHandler);\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n/**\n * IOHandlers related to files, such as browser-triggered file downloads,\n * user-selected files in browser.\n */\n\nimport '../flags';\nimport {env} from '../environment';\n\nimport {basename, concatenateArrayBuffers, getModelArtifactsInfoForJSON} from './io_utils';\nimport {IORouter, IORouterRegistry} from './router_registry';\nimport {IOHandler, ModelArtifacts, ModelJSON, SaveResult, WeightsManifestConfig, WeightsManifestEntry} from './types';\n\nconst DEFAULT_FILE_NAME_PREFIX = 'model';\nconst DEFAULT_JSON_EXTENSION_NAME = '.json';\nconst DEFAULT_WEIGHT_DATA_EXTENSION_NAME = '.weights.bin';\n\nfunction defer(f: () => T): Promise {\n return new Promise(resolve => setTimeout(resolve)).then(f);\n}\n\nexport class BrowserDownloads implements IOHandler {\n private readonly modelTopologyFileName: string;\n private readonly weightDataFileName: string;\n private readonly jsonAnchor: HTMLAnchorElement;\n private readonly weightDataAnchor: HTMLAnchorElement;\n\n static readonly URL_SCHEME = 'downloads://';\n\n constructor(fileNamePrefix?: string) {\n if (!env().getBool('IS_BROWSER')) {\n // TODO(cais): Provide info on what IOHandlers are available under the\n // current environment.\n throw new Error(\n 'browserDownloads() cannot proceed because the current environment ' +\n 'is not a browser.');\n }\n\n if (fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)) {\n fileNamePrefix = fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length);\n }\n if (fileNamePrefix == null || fileNamePrefix.length === 0) {\n fileNamePrefix = DEFAULT_FILE_NAME_PREFIX;\n }\n\n this.modelTopologyFileName = fileNamePrefix + DEFAULT_JSON_EXTENSION_NAME;\n this.weightDataFileName =\n fileNamePrefix + DEFAULT_WEIGHT_DATA_EXTENSION_NAME;\n }\n\n async save(modelArtifacts: ModelArtifacts): Promise {\n if (typeof (document) === 'undefined') {\n throw new Error(\n 'Browser downloads are not supported in ' +\n 'this environment since `document` is not present');\n }\n const weightsURL = window.URL.createObjectURL(new Blob(\n [modelArtifacts.weightData], {type: 'application/octet-stream'}));\n\n if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n throw new Error(\n 'BrowserDownloads.save() does not support saving model topology ' +\n 'in binary formats yet.');\n } else {\n const weightsManifest: WeightsManifestConfig = [{\n paths: ['./' + this.weightDataFileName],\n weights: modelArtifacts.weightSpecs\n }];\n const modelTopologyAndWeightManifest: ModelJSON = {\n modelTopology: modelArtifacts.modelTopology,\n format: modelArtifacts.format,\n generatedBy: modelArtifacts.generatedBy,\n convertedBy: modelArtifacts.convertedBy,\n weightsManifest\n };\n const modelTopologyAndWeightManifestURL =\n window.URL.createObjectURL(new Blob(\n [JSON.stringify(modelTopologyAndWeightManifest)],\n {type: 'application/json'}));\n\n // If anchor elements are not provided, create them without attaching them\n // to parents, so that the downloaded file names can be controlled.\n const jsonAnchor = this.jsonAnchor == null ? document.createElement('a') :\n this.jsonAnchor;\n jsonAnchor.download = this.modelTopologyFileName;\n jsonAnchor.href = modelTopologyAndWeightManifestURL;\n // Trigger downloads by evoking a click event on the download anchors.\n // When multiple downloads are started synchronously, Firefox will only\n // save the last one.\n await defer(() => jsonAnchor.dispatchEvent(new MouseEvent('click')));\n\n if (modelArtifacts.weightData != null) {\n const weightDataAnchor = this.weightDataAnchor == null ?\n document.createElement('a') :\n this.weightDataAnchor;\n weightDataAnchor.download = this.weightDataFileName;\n weightDataAnchor.href = weightsURL;\n await defer(\n () => weightDataAnchor.dispatchEvent(new MouseEvent('click')));\n }\n\n return {modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts)};\n }\n }\n}\n\nclass BrowserFiles implements IOHandler {\n private readonly files: File[];\n\n constructor(files: File[]) {\n if (files == null || files.length < 1) {\n throw new Error(\n `When calling browserFiles, at least 1 file is required, ` +\n `but received ${files}`);\n }\n this.files = files;\n }\n\n async load(): Promise {\n const jsonFile = this.files[0];\n const weightFiles = this.files.slice(1);\n\n return new Promise((resolve, reject) => {\n const jsonReader = new FileReader();\n jsonReader.onload = (event: Event) => {\n // tslint:disable-next-line:no-any\n const modelJSON = JSON.parse((event.target as any).result) as ModelJSON;\n const modelTopology = modelJSON.modelTopology;\n if (modelTopology == null) {\n reject(new Error(\n `modelTopology field is missing from file ${jsonFile.name}`));\n return;\n }\n\n if (weightFiles.length === 0) {\n resolve({modelTopology});\n }\n\n const weightsManifest = modelJSON.weightsManifest;\n if (weightsManifest == null) {\n reject(new Error(\n `weightManifest field is missing from file ${jsonFile.name}`));\n return;\n }\n\n let pathToFile: {[path: string]: File};\n try {\n pathToFile =\n this.checkManifestAndWeightFiles(weightsManifest, weightFiles);\n } catch (err) {\n reject(err);\n return;\n }\n\n const weightSpecs: WeightsManifestEntry[] = [];\n const paths: string[] = [];\n const perFileBuffers: ArrayBuffer[] = [];\n weightsManifest.forEach(weightsGroup => {\n weightsGroup.paths.forEach(path => {\n paths.push(path);\n perFileBuffers.push(null);\n });\n weightSpecs.push(...weightsGroup.weights);\n });\n\n weightsManifest.forEach(weightsGroup => {\n weightsGroup.paths.forEach(path => {\n const weightFileReader = new FileReader();\n weightFileReader.onload = (event: Event) => {\n // tslint:disable-next-line:no-any\n const weightData = (event.target as any).result as ArrayBuffer;\n const index = paths.indexOf(path);\n perFileBuffers[index] = weightData;\n if (perFileBuffers.indexOf(null) === -1) {\n resolve({\n modelTopology,\n weightSpecs,\n weightData: concatenateArrayBuffers(perFileBuffers),\n format: modelJSON.format,\n generatedBy: modelJSON.generatedBy,\n convertedBy: modelJSON.convertedBy,\n userDefinedMetadata: modelJSON.userDefinedMetadata\n });\n }\n };\n weightFileReader.onerror = error =>\n reject(`Failed to weights data from file of path '${path}'.`);\n weightFileReader.readAsArrayBuffer(pathToFile[path]);\n });\n });\n };\n jsonReader.onerror = error => reject(\n `Failed to read model topology and weights manifest JSON ` +\n `from file '${jsonFile.name}'. BrowserFiles supports loading ` +\n `Keras-style tf.Model artifacts only.`);\n jsonReader.readAsText(jsonFile);\n });\n }\n\n /**\n * Check the compatibility between weights manifest and weight files.\n */\n private checkManifestAndWeightFiles(\n manifest: WeightsManifestConfig, files: File[]): {[path: string]: File} {\n const basenames: string[] = [];\n const fileNames = files.map(file => basename(file.name));\n const pathToFile: {[path: string]: File} = {};\n for (const group of manifest) {\n group.paths.forEach(path => {\n const pathBasename = basename(path);\n if (basenames.indexOf(pathBasename) !== -1) {\n throw new Error(\n `Duplicate file basename found in weights manifest: ` +\n `'${pathBasename}'`);\n }\n basenames.push(pathBasename);\n if (fileNames.indexOf(pathBasename) === -1) {\n throw new Error(\n `Weight file with basename '${pathBasename}' is not provided.`);\n } else {\n pathToFile[path] = files[fileNames.indexOf(pathBasename)];\n }\n });\n }\n\n if (basenames.length !== files.length) {\n throw new Error(\n `Mismatch in the number of files in weights manifest ` +\n `(${basenames.length}) and the number of weight files provided ` +\n `(${files.length}).`);\n }\n return pathToFile;\n }\n}\n\nexport const browserDownloadsRouter: IORouter = (url: string|string[]) => {\n if (!env().getBool('IS_BROWSER')) {\n return null;\n } else {\n if (!Array.isArray(url) && url.startsWith(BrowserDownloads.URL_SCHEME)) {\n return browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length));\n } else {\n return null;\n }\n }\n};\nIORouterRegistry.registerSaveRouter(browserDownloadsRouter);\n\n/**\n * Creates an IOHandler that triggers file downloads from the browser.\n *\n * The returned `IOHandler` instance can be used as model exporting methods such\n * as `tf.Model.save` and supports only saving.\n *\n * ```js\n * const model = tf.sequential();\n * model.add(tf.layers.dense(\n * {units: 1, inputShape: [10], activation: 'sigmoid'}));\n * const saveResult = await model.save('downloads://mymodel');\n * // This will trigger downloading of two files:\n * // 'mymodel.json' and 'mymodel.weights.bin'.\n * console.log(saveResult);\n * ```\n *\n * @param fileNamePrefix Prefix name of the files to be downloaded. For use with\n * `tf.Model`, `fileNamePrefix` should follow either of the following two\n * formats:\n * 1. `null` or `undefined`, in which case the default file\n * names will be used:\n * - 'model.json' for the JSON file containing the model topology and\n * weights manifest.\n * - 'model.weights.bin' for the binary file containing the binary weight\n * values.\n * 2. A single string or an Array of a single string, as the file name prefix.\n * For example, if `'foo'` is provided, the downloaded JSON\n * file and binary weights file will be named 'foo.json' and\n * 'foo.weights.bin', respectively.\n * @param config Additional configuration for triggering downloads.\n * @returns An instance of `BrowserDownloads` `IOHandler`.\n *\n * @doc {\n * heading: 'Models',\n * subheading: 'Loading',\n * namespace: 'io',\n * ignoreCI: true\n * }\n */\nexport function browserDownloads(fileNamePrefix = 'model'): IOHandler {\n return new BrowserDownloads(fileNamePrefix);\n}\n\n/**\n * Creates an IOHandler that loads model artifacts from user-selected files.\n *\n * This method can be used for loading from files such as user-selected files\n * in the browser.\n * When used in conjunction with `tf.loadLayersModel`, an instance of\n * `tf.LayersModel` (Keras-style) can be constructed from the loaded artifacts.\n *\n * ```js\n * // Note: This code snippet won't run properly without the actual file input\n * // elements in the HTML DOM.\n *\n * // Suppose there are two HTML file input (``)\n * // elements.\n * const uploadJSONInput = document.getElementById('upload-json');\n * const uploadWeightsInput = document.getElementById('upload-weights');\n * const model = await tf.loadLayersModel(tf.io.browserFiles(\n * [uploadJSONInput.files[0], uploadWeightsInput.files[0]]));\n * ```\n *\n * @param files `File`s to load from. Currently, this function supports only\n * loading from files that contain Keras-style models (i.e., `tf.Model`s), for\n * which an `Array` of `File`s is expected (in that order):\n * - A JSON file containing the model topology and weight manifest.\n * - Optionally, One or more binary files containing the binary weights.\n * These files must have names that match the paths in the `weightsManifest`\n * contained by the aforementioned JSON file, or errors will be thrown\n * during loading. These weights files have the same format as the ones\n * generated by `tensorflowjs_converter` that comes with the `tensorflowjs`\n * Python PIP package. If no weights files are provided, only the model\n * topology will be loaded from the JSON file above.\n * @returns An instance of `Files` `IOHandler`.\n *\n * @doc {\n * heading: 'Models',\n * subheading: 'Loading',\n * namespace: 'io',\n * ignoreCI: true\n * }\n */\nexport function browserFiles(files: File[]): IOHandler {\n return new BrowserFiles(files);\n}\n", "/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {assert} from '../util';\n\nimport {OnProgressCallback} from './types';\n\n/**\n * Monitor Promise.all progress, fire onProgress callback function.\n *\n * @param promises Promise list going to be monitored\n * @param onProgress Callback function. Fired when a promise resolved.\n * @param startFraction Optional fraction start. Default to 0.\n * @param endFraction Optional fraction end. Default to 1.\n */\nexport function monitorPromisesProgress(\n promises: Array>, onProgress: OnProgressCallback,\n startFraction?: number, endFraction?: number) {\n checkPromises(promises);\n startFraction = startFraction == null ? 0 : startFraction;\n endFraction = endFraction == null ? 1 : endFraction;\n checkFraction(startFraction, endFraction);\n let resolvedPromise = 0;\n\n const registerMonitor = (promise: Promise<{}>) => {\n promise.then(value => {\n const fraction = startFraction +\n ++resolvedPromise / promises.length * (endFraction - startFraction);\n // pass fraction as parameter to callback function.\n onProgress(fraction);\n return value;\n });\n return promise;\n };\n\n function checkPromises(promises: Array>): void {\n assert(\n promises != null && Array.isArray(promises) && promises.length > 0,\n () => 'promises must be a none empty array');\n }\n\n function checkFraction(startFraction: number, endFraction: number): void {\n assert(\n startFraction >= 0 && startFraction <= 1,\n () => `Progress fraction must be in range [0, 1], but ` +\n `got startFraction ${startFraction}`);\n assert(\n endFraction >= 0 && endFraction <= 1,\n () => `Progress fraction must be in range [0, 1], but ` +\n `got endFraction ${endFraction}`);\n assert(\n endFraction >= startFraction,\n () => `startFraction must be no more than endFraction, but ` +\n `got startFraction ${startFraction} and endFraction ` +\n `${endFraction}`);\n }\n\n return Promise.all(promises.map(registerMonitor));\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {env} from '../environment';\n\nimport {NamedTensorMap} from '../tensor_types';\nimport * as util from '../util';\nimport {decodeWeights} from './io_utils';\nimport {monitorPromisesProgress} from './progress';\nimport {DTYPE_VALUE_SIZE_MAP, LoadOptions, WeightsManifestConfig, WeightsManifestEntry} from './types';\n\n/**\n * Reads binary weights data from a number of URLs.\n *\n * @param fetchURLs URLs to send the HTTP requests at, using `fetch` calls.\n * @param requestOptions RequestInit (options) for the HTTP requests.\n * @param fetchFunc Optional overriding value for the `window.fetch` function.\n * @param onProgress Optional, progress callback function, fired periodically\n * before the load is completed.\n * @returns A `Promise` of an Array of `ArrayBuffer`. The Array has the same\n * length as `fetchURLs`.\n */\nexport async function loadWeightsAsArrayBuffer(\n fetchURLs: string[], loadOptions?: LoadOptions): Promise {\n if (loadOptions == null) {\n loadOptions = {};\n }\n\n const fetchFunc = loadOptions.fetchFunc == null ? env().platform.fetch :\n loadOptions.fetchFunc;\n\n // Create the requests for all of the weights in parallel.\n const requests = fetchURLs.map(\n fetchURL =>\n fetchFunc(fetchURL, loadOptions.requestInit, {isBinary: true}));\n\n const fetchStartFraction = 0;\n const fetchEndFraction = 0.5;\n\n const responses = loadOptions.onProgress == null ?\n await Promise.all(requests) :\n await monitorPromisesProgress(\n requests, loadOptions.onProgress, fetchStartFraction,\n fetchEndFraction);\n\n const bufferPromises = responses.map(response => response.arrayBuffer());\n\n const bufferStartFraction = 0.5;\n const bufferEndFraction = 1;\n\n const buffers = loadOptions.onProgress == null ?\n await Promise.all(bufferPromises) :\n await monitorPromisesProgress(\n bufferPromises, loadOptions.onProgress, bufferStartFraction,\n bufferEndFraction);\n return buffers;\n}\n\n/**\n * Reads a weights manifest JSON configuration, fetches the weights and\n * returns them as `Tensor`s.\n *\n * @param manifest The weights manifest JSON.\n * @param filePathPrefix The path prefix for filenames given in the manifest.\n * Defaults to the empty string.\n * @param weightNames The names of the weights to be fetched.\n */\nexport async function loadWeights(\n manifest: WeightsManifestConfig, filePathPrefix = '',\n weightNames?: string[],\n requestInit?: RequestInit): Promise {\n // TODO(nsthorat): Groups are currently fetched atomically. If you need a\n // single weight from a group, the whole group will be fetched. At a future\n // date, we should support fetching only the individual shards within a\n // group that are needed to reconstruct the requested weight.\n // TODO(cais): Use `decodeWeights` for implementation.\n\n const fetchWeights = (fetchUrls: string[]) =>\n loadWeightsAsArrayBuffer(fetchUrls, {requestInit});\n const loadWeights = weightsLoaderFactory(fetchWeights);\n\n return loadWeights(manifest, filePathPrefix, weightNames);\n}\n\n/**\n * Creates a function, which reads a weights manifest JSON configuration,\n * fetches the weight files using the specified function and returns them as\n * `Tensor`s.\n *\n * ```js\n * // example for creating a nodejs weight loader, which reads the weight files\n * // from disk using fs.readFileSync\n *\n * import * as fs from 'fs'\n *\n * const fetchWeightsFromDisk = (filePaths: string[]) =>\n * filePaths.map(filePath => fs.readFileSync(filePath).buffer)\n *\n * const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk)\n *\n * const manifest = JSON.parse(\n * fs.readFileSync('./my_model-weights_manifest').toString()\n * )\n * const weightMap = await loadWeights(manifest, './')\n * ```\n * @param fetchWeightsFunction The function used for fetching the weight files.\n * @returns Weight loading function.\n */\nexport function weightsLoaderFactory(\n fetchWeightsFunction: (fetchUrls: string[]) => Promise):\n (manifest: WeightsManifestConfig, filePathPrefix?: string,\n weightNames?: string[]) => Promise {\n return async(\n manifest: WeightsManifestConfig, filePathPrefix = '',\n weightNames?: string[]): Promise => {\n // Collect all the groups, weights, and their relative offsets to be\n // fetched.\n const groupIndicesToFetchMap = manifest.map(() => false);\n const groupWeightsToFetch: {\n [group: number]: Array<{\n manifestEntry: WeightsManifestEntry; groupOffset: number;\n sizeBytes: number;\n }>\n } = {};\n const weightsFound =\n weightNames != null ? weightNames.map(() => false) : [];\n const allManifestWeightNames: string[] = [];\n manifest.forEach((manifestGroupConfig, groupIndex) => {\n let groupOffset = 0;\n manifestGroupConfig.weights.forEach(weightsEntry => {\n const rawDtype = ('quantization' in weightsEntry) ?\n weightsEntry.quantization.dtype :\n weightsEntry.dtype;\n\n const weightsBytes = DTYPE_VALUE_SIZE_MAP[rawDtype] *\n util.sizeFromShape(weightsEntry.shape);\n\n const enqueueWeightsForFetchingFn = () => {\n groupIndicesToFetchMap[groupIndex] = true;\n if (groupWeightsToFetch[groupIndex] == null) {\n groupWeightsToFetch[groupIndex] = [];\n }\n\n groupWeightsToFetch[groupIndex].push({\n manifestEntry: weightsEntry,\n groupOffset,\n sizeBytes: weightsBytes\n });\n };\n\n if (weightNames != null) {\n weightNames.forEach((weightName, weightIndex) => {\n if (weightName === weightsEntry.name) {\n enqueueWeightsForFetchingFn();\n weightsFound[weightIndex] = true;\n }\n });\n } else {\n enqueueWeightsForFetchingFn();\n }\n\n allManifestWeightNames.push(weightsEntry.name);\n groupOffset += weightsBytes;\n });\n });\n\n if (!weightsFound.every(found => found)) {\n const weightsNotFound = weightNames.filter((_, i) => !weightsFound[i]);\n throw new Error(\n `Could not find weights in manifest with names: ` +\n `${weightsNotFound.join(', ')}. \\n` +\n `Manifest JSON has weights with names: ` +\n `${allManifestWeightNames.join(', ')}.`);\n }\n\n // Convert the one-hot boolean groupId => shouldFetch map to a list of group\n // IDs.\n const groupIndicesToFetch =\n groupIndicesToFetchMap.reduce((accumulator, shouldFetch, i) => {\n if (shouldFetch) {\n accumulator.push(i);\n }\n return accumulator;\n }, []);\n\n const fetchUrls: string[] = [];\n groupIndicesToFetch.forEach(i => {\n manifest[i].paths.forEach(filepath => {\n const fetchUrl = filePathPrefix +\n (!filePathPrefix.endsWith('/') ? '/' : '') + filepath;\n fetchUrls.push(fetchUrl);\n });\n });\n const buffers = await fetchWeightsFunction(fetchUrls);\n\n const weightsTensorMap: NamedTensorMap = {};\n let bufferIndexOffset = 0;\n groupIndicesToFetch.forEach(i => {\n const numBuffers = manifest[i].paths.length;\n\n let groupBytes = 0;\n for (let i = 0; i < numBuffers; i++) {\n groupBytes += buffers[bufferIndexOffset + i].byteLength;\n }\n\n // Create a buffer for the whole group.\n const groupBuffer = new ArrayBuffer(groupBytes);\n const groupByteBuffer = new Uint8Array(groupBuffer);\n let groupBufferOffset = 0;\n for (let i = 0; i < numBuffers; i++) {\n const buffer = new Uint8Array(buffers[bufferIndexOffset + i]);\n groupByteBuffer.set(buffer, groupBufferOffset);\n groupBufferOffset += buffer.byteLength;\n }\n\n const weightsEntries = groupWeightsToFetch[i];\n weightsEntries.forEach(weightsEntry => {\n const byteBuffer = groupBuffer.slice(\n weightsEntry.groupOffset,\n weightsEntry.groupOffset + weightsEntry.sizeBytes);\n const nameToTensorMap =\n decodeWeights(byteBuffer, [weightsEntry.manifestEntry]);\n for (const name in nameToTensorMap) {\n weightsTensorMap[name] = nameToTensorMap[name];\n }\n });\n\n bufferIndexOffset += numBuffers;\n });\n\n return weightsTensorMap;\n };\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n/**\n * IOHandler implementations based on HTTP requests in the web browser.\n *\n * Uses [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).\n */\n\nimport {env} from '../environment';\n\nimport {assert} from '../util';\nimport {concatenateArrayBuffers, getModelArtifactsInfoForJSON} from './io_utils';\nimport {IORouter, IORouterRegistry} from './router_registry';\nimport {IOHandler, LoadOptions, ModelArtifacts, ModelJSON, OnProgressCallback, SaveResult, WeightsManifestConfig, WeightsManifestEntry} from './types';\nimport {loadWeightsAsArrayBuffer} from './weights_loader';\n\nconst OCTET_STREAM_MIME_TYPE = 'application/octet-stream';\nconst JSON_TYPE = 'application/json';\nexport class HTTPRequest implements IOHandler {\n protected readonly path: string;\n protected readonly requestInit: RequestInit;\n\n private readonly fetch: Function;\n private readonly weightUrlConverter: (weightName: string) => Promise;\n\n readonly DEFAULT_METHOD = 'POST';\n\n static readonly URL_SCHEME_REGEX = /^https?:\\/\\//;\n\n private readonly weightPathPrefix: string;\n private readonly onProgress: OnProgressCallback;\n\n constructor(path: string, loadOptions?: LoadOptions) {\n if (loadOptions == null) {\n loadOptions = {};\n }\n this.weightPathPrefix = loadOptions.weightPathPrefix;\n this.onProgress = loadOptions.onProgress;\n this.weightUrlConverter = loadOptions.weightUrlConverter;\n\n if (loadOptions.fetchFunc != null) {\n assert(\n typeof loadOptions.fetchFunc === 'function',\n () => 'Must pass a function that matches the signature of ' +\n '`fetch` (see ' +\n 'https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)');\n this.fetch = loadOptions.fetchFunc;\n } else {\n this.fetch = env().platform.fetch;\n }\n\n assert(\n path != null && path.length > 0,\n () => 'URL path for http must not be null, undefined or ' +\n 'empty.');\n\n if (Array.isArray(path)) {\n assert(\n path.length === 2,\n () => 'URL paths for http must have a length of 2, ' +\n `(actual length is ${path.length}).`);\n }\n this.path = path;\n\n if (loadOptions.requestInit != null &&\n loadOptions.requestInit.body != null) {\n throw new Error(\n 'requestInit is expected to have no pre-existing body, but has one.');\n }\n this.requestInit = loadOptions.requestInit || {};\n }\n\n async save(modelArtifacts: ModelArtifacts): Promise {\n if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n throw new Error(\n 'BrowserHTTPRequest.save() does not support saving model topology ' +\n 'in binary formats yet.');\n }\n\n const init = Object.assign({method: this.DEFAULT_METHOD}, this.requestInit);\n init.body = new FormData();\n\n const weightsManifest: WeightsManifestConfig = [{\n paths: ['./model.weights.bin'],\n weights: modelArtifacts.weightSpecs,\n }];\n const modelTopologyAndWeightManifest: ModelJSON = {\n modelTopology: modelArtifacts.modelTopology,\n format: modelArtifacts.format,\n generatedBy: modelArtifacts.generatedBy,\n convertedBy: modelArtifacts.convertedBy,\n userDefinedMetadata: modelArtifacts.userDefinedMetadata,\n weightsManifest\n };\n\n init.body.append(\n 'model.json',\n new Blob(\n [JSON.stringify(modelTopologyAndWeightManifest)],\n {type: JSON_TYPE}),\n 'model.json');\n\n if (modelArtifacts.weightData != null) {\n init.body.append(\n 'model.weights.bin',\n new Blob([modelArtifacts.weightData], {type: OCTET_STREAM_MIME_TYPE}),\n 'model.weights.bin');\n }\n\n const response = await this.fetch(this.path, init);\n\n if (response.ok) {\n return {\n modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts),\n responses: [response],\n };\n } else {\n throw new Error(\n `BrowserHTTPRequest.save() failed due to HTTP response status ` +\n `${response.status}.`);\n }\n }\n\n /**\n * Load model artifacts via HTTP request(s).\n *\n * See the documentation to `tf.io.http` for details on the saved\n * artifacts.\n *\n * @returns The loaded model artifacts (if loading succeeds).\n */\n async load(): Promise {\n const modelConfigRequest = await this.fetch(this.path, this.requestInit);\n\n if (!modelConfigRequest.ok) {\n throw new Error(\n `Request to ${this.path} failed with status code ` +\n `${modelConfigRequest.status}. Please verify this URL points to ` +\n `the model JSON of the model to load.`);\n }\n let modelConfig: ModelJSON;\n try {\n modelConfig = await modelConfigRequest.json();\n } catch (e) {\n let message = `Failed to parse model JSON of response from ${this.path}.`;\n // TODO(nsthorat): Remove this after some time when we're comfortable that\n // .pb files are mostly gone.\n if (this.path.endsWith('.pb')) {\n message += ' Your path contains a .pb file extension. ' +\n 'Support for .pb models have been removed in TensorFlow.js 1.0 ' +\n 'in favor of .json models. You can re-convert your Python ' +\n 'TensorFlow model using the TensorFlow.js 1.0 conversion scripts ' +\n 'or you can convert your.pb models with the \\'pb2json\\'' +\n 'NPM script in the tensorflow/tfjs-converter repository.';\n } else {\n message += ' Please make sure the server is serving valid ' +\n 'JSON for this request.';\n }\n throw new Error(message);\n }\n const modelTopology = modelConfig.modelTopology;\n const weightsManifest = modelConfig.weightsManifest;\n const generatedBy = modelConfig.generatedBy;\n const convertedBy = modelConfig.convertedBy;\n const format = modelConfig.format;\n const userDefinedMetadata = modelConfig.userDefinedMetadata;\n\n // We do not allow both modelTopology and weightsManifest to be missing.\n if (modelTopology == null && weightsManifest == null) {\n throw new Error(\n `The JSON from HTTP path ${this.path} contains neither model ` +\n `topology or manifest for weights.`);\n }\n\n let weightSpecs: WeightsManifestEntry[];\n let weightData: ArrayBuffer;\n if (weightsManifest != null) {\n const results = await this.loadWeights(weightsManifest);\n [weightSpecs, weightData] = results;\n }\n\n const artifacts: ModelArtifacts = {\n modelTopology,\n weightSpecs,\n weightData,\n userDefinedMetadata,\n generatedBy,\n convertedBy,\n format\n };\n\n const initializer = modelConfig.modelInitializer;\n if (initializer) {\n artifacts.modelInitializer = initializer;\n }\n\n return artifacts;\n }\n\n private async loadWeights(weightsManifest: WeightsManifestConfig):\n Promise<[WeightsManifestEntry[], ArrayBuffer]> {\n const weightPath = Array.isArray(this.path) ? this.path[1] : this.path;\n const [prefix, suffix] = parseUrl(weightPath);\n const pathPrefix = this.weightPathPrefix || prefix;\n\n const weightSpecs = [];\n for (const entry of weightsManifest) {\n weightSpecs.push(...entry.weights);\n }\n\n const fetchURLs: string[] = [];\n const urlPromises: Array> = [];\n for (const weightsGroup of weightsManifest) {\n for (const path of weightsGroup.paths) {\n if (this.weightUrlConverter != null) {\n urlPromises.push(this.weightUrlConverter(path));\n } else {\n fetchURLs.push(pathPrefix + path + suffix);\n }\n }\n }\n\n if (this.weightUrlConverter) {\n fetchURLs.push(...await Promise.all(urlPromises));\n }\n\n const buffers = await loadWeightsAsArrayBuffer(fetchURLs, {\n requestInit: this.requestInit,\n fetchFunc: this.fetch,\n onProgress: this.onProgress\n });\n return [weightSpecs, concatenateArrayBuffers(buffers)];\n }\n}\n\n/**\n * Extract the prefix and suffix of the url, where the prefix is the path before\n * the last file, and suffix is the search params after the last file.\n * ```\n * const url = 'http://tfhub.dev/model/1/tensorflowjs_model.pb?tfjs-format=file'\n * [prefix, suffix] = parseUrl(url)\n * // prefix = 'http://tfhub.dev/model/1/'\n * // suffix = '?tfjs-format=file'\n * ```\n * @param url the model url to be parsed.\n */\nexport function parseUrl(url: string): [string, string] {\n const lastSlash = url.lastIndexOf('/');\n const lastSearchParam = url.lastIndexOf('?');\n const prefix = url.substring(0, lastSlash);\n const suffix =\n lastSearchParam > lastSlash ? url.substring(lastSearchParam) : '';\n return [prefix + '/', suffix];\n}\n\nexport function isHTTPScheme(url: string): boolean {\n return url.match(HTTPRequest.URL_SCHEME_REGEX) != null;\n}\n\nexport const httpRouter: IORouter =\n (url: string, loadOptions?: LoadOptions) => {\n if (typeof fetch === 'undefined' &&\n (loadOptions == null || loadOptions.fetchFunc == null)) {\n // `http` uses `fetch` or `node-fetch`, if one wants to use it in\n // an environment that is not the browser or node they have to setup a\n // global fetch polyfill.\n return null;\n } else {\n let isHTTP = true;\n if (Array.isArray(url)) {\n isHTTP = url.every(urlItem => isHTTPScheme(urlItem));\n } else {\n isHTTP = isHTTPScheme(url);\n }\n if (isHTTP) {\n return http(url, loadOptions);\n }\n }\n return null;\n };\nIORouterRegistry.registerSaveRouter(httpRouter);\nIORouterRegistry.registerLoadRouter(httpRouter);\n\n/**\n * Creates an IOHandler subtype that sends model artifacts to HTTP server.\n *\n * An HTTP request of the `multipart/form-data` mime type will be sent to the\n * `path` URL. The form data includes artifacts that represent the topology\n * and/or weights of the model. In the case of Keras-style `tf.Model`, two\n * blobs (files) exist in form-data:\n * - A JSON file consisting of `modelTopology` and `weightsManifest`.\n * - A binary weights file consisting of the concatenated weight values.\n * These files are in the same format as the one generated by\n * [tfjs_converter](https://js.tensorflow.org/tutorials/import-keras.html).\n *\n * The following code snippet exemplifies the client-side code that uses this\n * function:\n *\n * ```js\n * const model = tf.sequential();\n * model.add(\n * tf.layers.dense({units: 1, inputShape: [100], activation: 'sigmoid'}));\n *\n * const saveResult = await model.save(tf.io.http(\n * 'http://model-server:5000/upload', {requestInit: {method: 'PUT'}}));\n * console.log(saveResult);\n * ```\n *\n * If the default `POST` method is to be used, without any custom parameters\n * such as headers, you can simply pass an HTTP or HTTPS URL to `model.save`:\n *\n * ```js\n * const saveResult = await model.save('http://model-server:5000/upload');\n * ```\n *\n * The following GitHub Gist\n * https://gist.github.com/dsmilkov/1b6046fd6132d7408d5257b0976f7864\n * implements a server based on [flask](https://github.com/pallets/flask) that\n * can receive the request. Upon receiving the model artifacts via the requst,\n * this particular server reconsistutes instances of [Keras\n * Models](https://keras.io/models/model/) in memory.\n *\n *\n * @param path A URL path to the model.\n * Can be an absolute HTTP path (e.g.,\n * 'http://localhost:8000/model-upload)') or a relative path (e.g.,\n * './model-upload').\n * @param requestInit Request configurations to be used when sending\n * HTTP request to server using `fetch`. It can contain fields such as\n * `method`, `credentials`, `headers`, `mode`, etc. See\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/Request\n * for more information. `requestInit` must not have a body, because the\n * body will be set by TensorFlow.js. File blobs representing the model\n * topology (filename: 'model.json') and the weights of the model (filename:\n * 'model.weights.bin') will be appended to the body. If `requestInit` has a\n * `body`, an Error will be thrown.\n * @param loadOptions Optional configuration for the loading. It includes the\n * following fields:\n * - weightPathPrefix Optional, this specifies the path prefix for weight\n * files, by default this is calculated from the path param.\n * - fetchFunc Optional, custom `fetch` function. E.g., in Node.js,\n * the `fetch` from node-fetch can be used here.\n * - onProgress Optional, progress callback function, fired periodically\n * before the load is completed.\n * @returns An instance of `IOHandler`.\n *\n * @doc {\n * heading: 'Models',\n * subheading: 'Loading',\n * namespace: 'io',\n * ignoreCI: true\n * }\n */\nexport function http(path: string, loadOptions?: LoadOptions): IOHandler {\n return new HTTPRequest(path, loadOptions);\n}\n\n/**\n * Deprecated. Use `tf.io.http`.\n * @param path\n * @param loadOptions\n */\nexport function browserHTTPRequest(\n path: string, loadOptions?: LoadOptions): IOHandler {\n return http(path, loadOptions);\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n/**\n * IOHandlers that pass through the in-memory ModelArtifacts format.\n */\n\nimport {IOHandler, ModelArtifacts, SaveResult, TrainingConfig, WeightsManifestEntry} from './types';\n\nclass PassthroughLoader implements IOHandler {\n constructor(private readonly modelArtifacts?: ModelArtifacts) {}\n\n async load(): Promise {\n return this.modelArtifacts;\n }\n}\n\nclass PassthroughSaver implements IOHandler {\n constructor(\n private readonly saveHandler:\n (artifacts: ModelArtifacts) => Promise) {}\n\n async save(modelArtifacts: ModelArtifacts) {\n return this.saveHandler(modelArtifacts);\n }\n}\n\n/**\n * Creates an IOHandler that loads model artifacts from memory.\n *\n * When used in conjunction with `tf.loadLayersModel`, an instance of\n * `tf.LayersModel` (Keras-style) can be constructed from the loaded artifacts.\n *\n * ```js\n * const model = await tf.loadLayersModel(tf.io.fromMemory(\n * modelTopology, weightSpecs, weightData));\n * ```\n *\n * @param modelArtifacts a object containing model topology (i.e., parsed from\n * the JSON format).\n * @param weightSpecs An array of `WeightsManifestEntry` objects describing the\n * names, shapes, types, and quantization of the weight data.\n * @param weightData A single `ArrayBuffer` containing the weight data,\n * concatenated in the order described by the weightSpecs.\n * @param trainingConfig Model training configuration. Optional.\n *\n * @returns A passthrough `IOHandler` that simply loads the provided data.\n */\nexport function fromMemory(\n modelArtifacts: {}|ModelArtifacts, weightSpecs?: WeightsManifestEntry[],\n weightData?: ArrayBuffer, trainingConfig?: TrainingConfig): IOHandler {\n if (arguments.length === 1) {\n const isModelArtifacts =\n (modelArtifacts as ModelArtifacts).modelTopology != null ||\n (modelArtifacts as ModelArtifacts).weightSpecs != null;\n if (isModelArtifacts) {\n return new PassthroughLoader(modelArtifacts as ModelArtifacts);\n } else {\n // Legacy support: with only modelTopology.\n // TODO(cais): Remove this deprecated API.\n console.warn(\n 'Please call tf.io.fromMemory() with only one argument. ' +\n 'The argument should be of type ModelArtifacts. ' +\n 'The multi-argument signature of tf.io.fromMemory() has been ' +\n 'deprecated and will be removed in a future release.');\n return new PassthroughLoader({modelTopology: modelArtifacts as {}});\n }\n } else {\n // Legacy support.\n // TODO(cais): Remove this deprecated API.\n console.warn(\n 'Please call tf.io.fromMemory() with only one argument. ' +\n 'The argument should be of type ModelArtifacts. ' +\n 'The multi-argument signature of tf.io.fromMemory() has been ' +\n 'deprecated and will be removed in a future release.');\n return new PassthroughLoader({\n modelTopology: modelArtifacts as {},\n weightSpecs,\n weightData,\n trainingConfig\n });\n }\n}\n\n/**\n * Creates an IOHandler that passes saved model artifacts to a callback.\n *\n * ```js\n * function handleSave(artifacts) {\n * // ... do something with the artifacts ...\n * return {modelArtifactsInfo: {...}, ...};\n * }\n *\n * const saveResult = model.save(tf.io.withSaveHandler(handleSave));\n * ```\n *\n * @param saveHandler A function that accepts a `ModelArtifacts` and returns a\n * `SaveResult`.\n */\nexport function withSaveHandler(\n saveHandler: (artifacts: ModelArtifacts) =>\n Promise): IOHandler {\n return new PassthroughSaver(saveHandler);\n}\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n// Importing local_storage and indexed_db is necessary for the routers to be\n// registered.\nimport './indexed_db';\nimport './local_storage';\n\nimport {browserFiles} from './browser_files';\nimport {browserHTTPRequest, http, isHTTPScheme} from './http';\nimport {concatenateArrayBuffers, decodeWeights, encodeWeights, getModelArtifactsInfoForJSON} from './io_utils';\nimport {fromMemory, withSaveHandler} from './passthrough';\nimport {getLoadHandlers, getSaveHandlers, registerLoadRouter, registerSaveRouter} from './router_registry';\nimport {IOHandler, LoadHandler, LoadOptions, ModelArtifacts, ModelArtifactsInfo, ModelJSON, ModelStoreManager, OnProgressCallback, RequestDetails, SaveConfig, SaveHandler, SaveResult, WeightGroup, WeightsManifestConfig, WeightsManifestEntry} from './types';\nimport {loadWeights, weightsLoaderFactory} from './weights_loader';\n\nexport {copyModel, listModels, moveModel, removeModel} from './model_management';\nexport {\n browserFiles,\n browserHTTPRequest,\n concatenateArrayBuffers,\n decodeWeights,\n encodeWeights,\n fromMemory,\n getLoadHandlers,\n getModelArtifactsInfoForJSON,\n getSaveHandlers,\n http,\n IOHandler,\n isHTTPScheme,\n LoadHandler,\n LoadOptions,\n loadWeights,\n ModelArtifacts,\n ModelArtifactsInfo,\n ModelJSON,\n ModelStoreManager,\n OnProgressCallback,\n registerLoadRouter,\n registerSaveRouter,\n RequestDetails,\n SaveConfig,\n SaveHandler,\n SaveResult,\n WeightGroup,\n weightsLoaderFactory,\n WeightsManifestConfig,\n WeightsManifestEntry,\n withSaveHandler\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {KernelBackend} from '../backends/backend';\nimport {ENGINE, ForwardFunc} from '../engine';\nimport {Reshape, ReshapeAttrs, ReshapeInputs} from '../kernel_names';\nimport {NamedAttrMap} from '../kernel_registry';\nimport {Tensor} from '../tensor';\nimport {GradSaveFunc, NamedTensorMap} from '../tensor_types';\nimport {convertToTensor} from '../tensor_util_env';\nimport {Rank, ShapeMap, TensorLike} from '../types';\nimport * as util from '../util';\n\nimport {op} from './operation';\n\n/**\n * Reshapes a `tf.Tensor` to a given shape.\n *\n * Given an input tensor, returns a new tensor with the same values as the\n * input tensor with shape `shape`.\n *\n * If one component of shape is the special value -1, the size of that\n * dimension is computed so that the total size remains constant. In\n * particular, a shape of [-1] flattens into 1-D. At most one component of\n * shape can be -1.\n *\n * If shape is 1-D or higher, then the operation returns a tensor with shape\n * shape filled with the values of tensor. In this case, the number of\n * elements implied by shape must be the same as the number of elements in\n * tensor.\n *\n * ```js\n * const x = tf.tensor1d([1, 2, 3, 4]);\n * x.reshape([2, 2]).print();\n * ```\n *\n * @param x The input tensor to be reshaped.\n * @param shape An array of integers defining the output tensor shape.\n *\n * @doc {heading: 'Tensors', subheading: 'Transformations'}\n */\nfunction reshape_(\n x: Tensor|TensorLike, shape: ShapeMap[R]): Tensor {\n const $x = convertToTensor(x, 'x', 'reshape', null);\n\n const inputs: ReshapeInputs = {x: $x};\n const attrs: ReshapeAttrs = {shape};\n const forward: ForwardFunc<\n Tensor> = (backend: KernelBackend, save: GradSaveFunc) => {\n shape = util.inferFromImplicitShape(shape, $x.size) as ShapeMap[R];\n util.assert(\n $x.size === util.sizeFromShape(shape),\n () => 'new shape and old shape must have the same number of elements.');\n save([$x]);\n return backend.reshape($x, shape);\n };\n return ENGINE.runKernelFunc(\n forward, inputs as {} as NamedTensorMap, null /* grad */, Reshape,\n attrs as {} as NamedAttrMap);\n}\nexport const reshape = op({reshape_});\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport {ENGINE, ForwardFunc} from '../engine';\nimport {BatchMatMul, BatchMatMulAttrs, BatchMatMulInputs} from '../kernel_names';\nimport {NamedAttrMap} from '../kernel_registry';\nimport {Tensor, Tensor3D} from '../tensor';\nimport {NamedTensorMap} from '../tensor_types';\nimport {makeTypesMatch} from '../tensor_util';\nimport {convertToTensor} from '../tensor_util_env';\nimport {TensorLike} from '../types';\nimport * as util from '../util';\n\nimport {op} from './operation';\nimport {reshape} from './reshape';\n\n/**\n * Computes the dot product of two matrices, A * B. These must be matrices.\n *\n * ```js\n * const a = tf.tensor2d([1, 2], [1, 2]);\n * const b = tf.tensor2d([1, 2, 3, 4], [2, 2]);\n *\n * a.matMul(b).print(); // or tf.matMul(a, b)\n * ```\n * @param a First matrix in dot product operation.\n * @param b Second matrix in dot product operation.\n * @param transposeA If true, `a` is transposed before multiplication.\n * @param transposeB If true, `b` is transposed before multiplication.\n *\n * @doc {heading: 'Operations', subheading: 'Matrices'}\n */\nfunction matMul_(\n a: T|TensorLike, b: T|TensorLike, transposeA = false,\n transposeB = false): T {\n let $a = convertToTensor(a, 'a', 'matMul');\n let $b = convertToTensor(b, 'b', 'matMul');\n [$a, $b] = makeTypesMatch($a, $b);\n\n util.assert(\n $a.rank >= 2 && $b.rank >= 2 && $a.rank === $b.rank,\n () => `Error in matMul: inputs must have the same rank of at least 2, ` +\n `got ranks ${$a.rank} and ${$b.rank}.`);\n\n const innerShapeA =\n transposeA ? $a.shape[$a.rank - 2] : $a.shape[$a.rank - 1];\n const innerShapeB =\n transposeB ? $b.shape[$b.rank - 1] : $b.shape[$b.rank - 2];\n\n const outerShapeA =\n transposeA ? $a.shape[$a.rank - 1] : $a.shape[$a.rank - 2];\n const outerShapeB =\n transposeB ? $b.shape[$b.rank - 2] : $b.shape[$b.rank - 1];\n\n const outerDimsA = $a.shape.slice(0, -2);\n const outerDimsB = $b.shape.slice(0, -2);\n const batchDimA = util.sizeFromShape(outerDimsA);\n const batchDimB = util.sizeFromShape(outerDimsB);\n\n util.assert(\n util.arraysEqual(outerDimsA, outerDimsB),\n () => `Error in matMul: outer dimensions (${outerDimsA}) and (` +\n `${outerDimsB}) of Tensors with shapes ${$a.shape} and ` +\n `${$b.shape} must match.`);\n\n util.assert(\n innerShapeA === innerShapeB,\n () => `Error in matMul: inner shapes (${innerShapeA}) and (` +\n `${innerShapeB}) of Tensors with shapes ${$a.shape} and ` +\n `${$b.shape} and transposeA=${transposeA}` +\n ` and transposeB=${transposeB} must match.`);\n\n const outShape = $a.shape.slice(0, -2).concat([outerShapeA, outerShapeB]);\n\n const a3D = transposeA ? reshape($a, [batchDimA, innerShapeA, outerShapeA]) :\n reshape($a, [batchDimA, outerShapeA, innerShapeA]);\n const b3D = transposeB ? reshape($b, [batchDimB, outerShapeB, innerShapeB]) :\n reshape($b, [batchDimB, innerShapeB, outerShapeB]);\n\n const forward: ForwardFunc = (backend, save) => {\n save([a3D, b3D]);\n\n return backend.batchMatMul(\n a3D as Tensor3D, b3D as Tensor3D, transposeA, transposeB);\n };\n\n const inputs: BatchMatMulInputs = {a: a3D, b: b3D};\n\n const attrs: BatchMatMulAttrs = {transposeA, transposeB};\n\n const res = ENGINE.runKernelFunc(\n forward, inputs as {} as NamedTensorMap, null /* grad */, BatchMatMul,\n attrs as {} as NamedAttrMap);\n\n return reshape(res, outShape) as T;\n}\n\nexport const matMul = op({matMul_});\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {ENGINE, ForwardFunc} from '../engine';\nimport {OneHot, OneHotAttrs, OneHotInputs} from '../kernel_names';\nimport {NamedAttrMap} from '../kernel_registry';\nimport {Tensor} from '../tensor';\nimport {NamedTensorMap} from '../tensor_types';\nimport {convertToTensor} from '../tensor_util_env';\nimport {TensorLike} from '../types';\n\nimport {op} from './operation';\nimport {reshape} from './reshape';\n\n/**\n * Creates a one-hot `tf.Tensor`. The locations represented by `indices` take\n * value `onValue` (defaults to 1), while all other locations take value\n * `offValue` (defaults to 0). If `indices` is rank `R`, the output has rank\n * `R+1` with the last axis of size `depth`.\n *\n * ```js\n * tf.oneHot(tf.tensor1d([0, 1], 'int32'), 3).print();\n * ```\n *\n * @param indices `tf.Tensor` of indices with dtype `int32`.\n * @param depth The depth of the one hot dimension.\n * @param onValue A number used to fill in the output when the index matches\n * the location.\n * @param offValue A number used to fill in the output when the index does\n * not match the location.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\nfunction oneHot_(\n indices: Tensor|TensorLike, depth: number, onValue = 1,\n offValue = 0): Tensor {\n if (depth < 2) {\n throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);\n }\n const $indices = convertToTensor(indices, 'indices', 'oneHot', 'int32');\n const outShape = [...$indices.shape, depth];\n\n const forward: ForwardFunc = (backend, save) => {\n save([$indices]);\n return reshape(\n backend.oneHot(\n reshape($indices, [$indices.size]), depth, onValue, offValue),\n outShape);\n };\n\n const inputs: OneHotInputs = {indices: $indices};\n const attrs: OneHotAttrs = {depth, onValue, offValue};\n\n return ENGINE.runKernelFunc(\n forward, inputs as unknown as NamedTensorMap, null /* grad */, OneHot,\n attrs as unknown as NamedAttrMap);\n}\n\nexport const oneHot = op({oneHot_});\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {ENGINE} from '../engine';\nimport {Transpose, TransposeAttrs, TransposeInputs} from '../kernel_names';\nimport {NamedAttrMap} from '../kernel_registry';\nimport {Tensor} from '../tensor';\nimport {NamedTensorMap} from '../tensor_types';\nimport {convertToTensor} from '../tensor_util_env';\nimport {TensorLike} from '../types';\nimport * as util from '../util';\n\nimport {op} from './operation';\n\n/**\n * Transposes the `tf.Tensor`. Permutes the dimensions according to `perm`.\n *\n * The returned `tf.Tensor`'s dimension `i` will correspond to the input\n * dimension `perm[i]`. If `perm` is not given, it is set to `[n-1...0]`,\n * where `n` is the rank of the input `tf.Tensor`. Hence by default, this\n * operation performs a regular matrix transpose on 2-D input `tf.Tensor`s.\n *\n * ```js\n * const a = tf.tensor2d([1, 2, 3, 4, 5, 6], [2, 3]);\n *\n * a.transpose().print(); // or tf.transpose(a)\n * ```\n *\n * @param x The tensor to transpose.\n * @param perm The permutation of the dimensions of a.\n *\n * @doc {heading: 'Operations', subheading: 'Matrices'}\n */\nfunction transpose_(x: T|TensorLike, perm?: number[]): T {\n const $x = convertToTensor(x, 'x', 'transpose');\n\n if (perm == null) {\n perm = $x.shape.map((s, i) => i).reverse();\n }\n util.assert(\n $x.rank === perm.length,\n () => `Error in transpose: rank of input ${$x.rank} ` +\n `must match length of perm ${perm}.`);\n perm.forEach(axis => {\n util.assert(\n axis >= 0 && axis < $x.rank,\n () => `All entries in 'perm' must be between 0 and ${$x.rank - 1}` +\n ` but got ${perm}`);\n });\n\n if ($x.rank <= 1) {\n return $x.clone();\n }\n\n const inputs: TransposeInputs = {x: $x};\n const attrs: TransposeAttrs = {perm};\n\n return ENGINE.runKernelFunc(\n backend => backend.transpose($x, perm), inputs as {} as NamedTensorMap,\n null /* gradient */, Transpose, attrs as {} as NamedAttrMap);\n}\n\nexport const transpose = op({transpose_});\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Tensor1D, Tensor2D} from '../tensor';\nimport {convertToTensor} from '../tensor_util_env';\nimport {TensorLike} from '../types';\nimport * as util from '../util';\n\nimport {cast} from './cast';\nimport {matMul} from './mat_mul';\nimport {oneHot} from './one_hot';\nimport {op} from './operation';\nimport {transpose} from './transpose';\n\n/**\n * Computes the confusion matrix from true labels and predicted labels.\n *\n * ```js\n * const labels = tf.tensor1d([0, 1, 2, 1, 0], 'int32');\n * const predictions = tf.tensor1d([0, 2, 2, 1, 0], 'int32');\n * const numClasses = 3;\n * const out = tf.math.confusionMatrix(labels, predictions, numClasses);\n * out.print();\n * // Expected output matrix:\n * // [[2, 0, 0],\n * // [0, 1, 1],\n * // [0, 0, 1]]\n * ```\n *\n * @param labels The target labels, assumed to be 0-based integers\n * for the classes. The shape is `[numExamples]`, where\n * `numExamples` is the number of examples included.\n * @param predictions The predicted classes, assumed to be\n * 0-based integers for the classes. Must have the same shape as `labels`.\n * @param numClasses Number of all classes, as an integer.\n * Its value must be larger than the largest element in `labels` and\n * `predictions`.\n * @returns The confusion matrix as a int32-type 2D tensor. The value at\n * row `r` and column `c` is the number of times examples of actual class\n * `r` were predicted as class `c`.\n *\n * @doc {heading: 'Operations', subheading: 'Evaluation'}\n */\nexport function confusionMatrix_(\n labels: Tensor1D|TensorLike, predictions: Tensor1D|TensorLike,\n numClasses: number): Tensor2D {\n const $labels = convertToTensor(labels, 'labels', 'confusionMatrix');\n const $predictions =\n convertToTensor(predictions, 'predictions', 'confusionMatrix');\n\n util.assert(\n numClasses == null || numClasses > 0 && Number.isInteger(numClasses),\n () => `If provided, numClasses must be a positive integer, ` +\n `but got ${numClasses}`);\n util.assert(\n $labels.rank === 1,\n () => `Expected the rank of labels to be 1, but got ${$labels.rank}`);\n util.assert(\n $predictions.rank === 1,\n () => `Expected the rank of predictions to be 1, ` +\n `but got ${$predictions.rank}`);\n util.assert(\n $labels.shape[0] === $predictions.shape[0],\n () => `Mismatch in the number of examples: ` +\n `${$labels.shape[0]} vs. ${$predictions.shape[0]}. ` +\n `Labels and predictions should have the same number of elements.`);\n util.assert(\n numClasses > 0 && Number.isInteger(numClasses),\n () => `numClasses is required to be a positive integer, but got ` +\n `${numClasses}`);\n // TODO(cais): In the future, if oneHot supports tensors inputs for\n // `numClasses`, `confusionMatrix` can make `numClasses` optional.\n\n const oneHotLabels = oneHot(cast($labels, 'int32'), numClasses) as Tensor2D;\n const oneHotPredictions =\n oneHot(cast($predictions, 'int32'), numClasses) as Tensor2D;\n const oneHotLabelsT: Tensor2D = transpose(oneHotLabels);\n return cast(matMul(oneHotLabelsT, oneHotPredictions), 'int32');\n}\n\nexport const confusionMatrix = op({confusionMatrix_});\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n/**\n * Exports under the tf.math.* namespace.\n */\n\nimport {confusionMatrix} from './ops/confusion_matrix';\n\nexport {confusionMatrix};\n", "/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {Tensor3D} from '../tensor';\nimport {inferShape} from '../tensor_util_env';\nimport {TensorLike3D} from '../types';\nimport {DataType} from '../types';\nimport {assertNonNull} from '../util';\nimport {makeTensor} from './tensor_ops_util';\n\n/**\n * Creates rank-3 `tf.Tensor` with the provided values, shape and dtype.\n *\n * The same functionality can be achieved with `tf.tensor`, but in general\n * we recommend using `tf.tensor3d` as it makes the code more readable.\n *\n * ```js\n * // Pass a nested array.\n * tf.tensor3d([[[1], [2]], [[3], [4]]]).print();\n * ```\n * ```js\n * // Pass a flat array and specify a shape.\n * tf.tensor3d([1, 2, 3, 4], [2, 2, 1]).print();\n * ```\n *\n * @param values The values of the tensor. Can be nested array of numbers,\n * or a flat array, or a `TypedArray`.\n * @param shape The shape of the tensor. If not provided, it is inferred from\n * `values`.\n * @param dtype The data type.\n *\n * @doc {heading: 'Tensors', subheading: 'Creation'}\n */\nexport function tensor3d(\n values: TensorLike3D, shape?: [number, number, number],\n dtype?: DataType): Tensor3D {\n assertNonNull(values);\n if (shape != null && shape.length !== 3) {\n throw new Error('tensor3d() requires shape to have three numbers');\n }\n const inferredShape = inferShape(values, dtype);\n if (inferredShape.length !== 3 && inferredShape.length !== 1) {\n throw new Error(\n 'tensor3d() requires values to be number[][][] or flat/TypedArray');\n }\n if (inferredShape.length === 1 && shape == null) {\n throw new Error(\n 'tensor3d() requires shape to be provided when `values` ' +\n 'are a flat array');\n }\n return makeTensor(values, shape, inferredShape, dtype) as Tensor3D;\n}\n", "/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport {ENGINE} from '../engine';\nimport {FromPixels, FromPixelsAttrs, FromPixelsInputs} from '../kernel_names';\nimport {getKernel, NamedAttrMap} from '../kernel_registry';\nimport {Tensor, Tensor2D, Tensor3D} from '../tensor';\nimport {NamedTensorMap} from '../tensor_types';\nimport {convertToTensor} from '../tensor_util_env';\nimport {PixelData, TensorLike} from '../types';\n\nimport {cast} from './cast';\nimport {op} from './operation';\nimport {tensor3d} from './tensor3d';\n\nlet fromPixels2DContext: CanvasRenderingContext2D;\n\n/**\n * Creates a `tf.Tensor` from an image.\n *\n * ```js\n * const image = new ImageData(1, 1);\n * image.data[0] = 100;\n * image.data[1] = 150;\n * image.data[2] = 200;\n * image.data[3] = 255;\n *\n * tf.browser.fromPixels(image).print();\n * ```\n *\n * @param pixels The input image to construct the tensor from. The\n * supported image types are all 4-channel. You can also pass in an image\n * object with following attributes:\n * `{data: Uint8Array; width: number; height: number}`\n * @param numChannels The number of channels of the output tensor. A\n * numChannels value less than 4 allows you to ignore channels. Defaults to\n * 3 (ignores alpha channel of input image).\n *\n * @doc {heading: 'Browser', namespace: 'browser', ignoreCI: true}\n */\nfunction fromPixels_(\n pixels: PixelData|ImageData|HTMLImageElement|HTMLCanvasElement|\n HTMLVideoElement,\n numChannels = 3): Tensor3D {\n // Sanity checks.\n if (numChannels > 4) {\n throw new Error(\n 'Cannot construct Tensor with more than 4 channels from pixels.');\n }\n if (pixels == null) {\n throw new Error('pixels passed to tf.browser.fromPixels() can not be null');\n }\n let isPixelData = false;\n let isImageData = false;\n let isVideo = false;\n let isImage = false;\n let isCanvasLike = false;\n if ((pixels as PixelData).data instanceof Uint8Array) {\n isPixelData = true;\n } else if (\n typeof (ImageData) !== 'undefined' && pixels instanceof ImageData) {\n isImageData = true;\n } else if (\n typeof (HTMLVideoElement) !== 'undefined' &&\n pixels instanceof HTMLVideoElement) {\n isVideo = true;\n } else if (\n typeof (HTMLImageElement) !== 'undefined' &&\n pixels instanceof HTMLImageElement) {\n isImage = true;\n // tslint:disable-next-line: no-any\n } else if ((pixels as any).getContext != null) {\n isCanvasLike = true;\n } else {\n throw new Error(\n 'pixels passed to tf.browser.fromPixels() must be either an ' +\n `HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData ` +\n `in browser, or OffscreenCanvas, ImageData in webworker` +\n ` or {data: Uint32Array, width: number, height: number}, ` +\n `but was ${(pixels as {}).constructor.name}`);\n }\n if (isVideo) {\n const HAVE_CURRENT_DATA_READY_STATE = 2;\n if (isVideo &&\n (pixels as HTMLVideoElement).readyState <\n HAVE_CURRENT_DATA_READY_STATE) {\n throw new Error(\n 'The video element has not loaded data yet. Please wait for ' +\n '`loadeddata` event on the

9$7X10A1Dy*yMReoCJg?U}l4^X06f*}P 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 F{|C4|h`;~< literal 0 HcmV?d00001 diff --git a/assets/screenshot1.jpg b/assets/screenshot1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e958474663bc68257153fb619fc2eee87508fdc GIT binary patch literal 369127 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⁡Cjk|XA?ORZ)qX*on#_YLb&2IsK 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 Wb@mNn3KJ%-iAn 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