From 68bc9fbff0d2f296ff6dc2131e9180e56dd3dfc2 Mon Sep 17 00:00:00 2001 From: Lubos Lenco Date: Tue, 25 Jul 2017 17:37:46 +0200 Subject: [PATCH] Update armorui --- Assets/console.ttf | Bin 31264 -> 117072 bytes Assets/droid_sans.ttf | Bin 190044 -> 41028 bytes blender/arm/props_traits.py | 13 +- blender/arm/write_data.py | 2 +- tools/armorui/DroidSans.ttf | Bin 190044 -> 0 bytes tools/armorui/electron.js | 14 - tools/armorui/index.html | 24 - tools/armorui/kha.js | 24476 -------------------------- tools/armorui/{ => krom}/.gitignore | 0 tools/armorui/krom/DroidSans.ttf | Bin 0 -> 41028 bytes tools/armorui/krom/color_wheel.png | Bin 0 -> 36585 bytes tools/armorui/krom/krom.js | 1 + 12 files changed, 6 insertions(+), 24524 deletions(-) mode change 100755 => 100644 Assets/console.ttf mode change 100755 => 100644 Assets/droid_sans.ttf delete mode 100644 tools/armorui/DroidSans.ttf delete mode 100644 tools/armorui/electron.js delete mode 100644 tools/armorui/index.html delete mode 100644 tools/armorui/kha.js rename tools/armorui/{ => krom}/.gitignore (100%) create mode 100644 tools/armorui/krom/DroidSans.ttf create mode 100644 tools/armorui/krom/color_wheel.png create mode 100644 tools/armorui/krom/krom.js diff --git a/Assets/console.ttf b/Assets/console.ttf old mode 100755 new mode 100644 index 310b6f7a0474a1c67d0d0042bfdeed875d131f49..d604425b26f52cc6415ccaa028d4b420f8043447 GIT binary patch literal 117072 zcmb@ud3;RQ|37|~J9oBZ_L*$ROhytBgp7zNGPWc_iM0`p1QF527A>iIhk7fq6t%V# zRYg&TY7l#MeS6nZ)mB??NjKF}>846@^L?H>iR$O`{yZMPKYlZFXYM`s-g92(bzb}H zb%#(wh>6T5oD>cml9c?ief7J9&=Ry3j(vReSd{z2FTHV$tEeX8h>V$wVSrLO^ zSM@8-UB}j`1Pvjh*#L~!62~n|9-lVj_P>7{iR1UtpZwUQv7>+Qx$-kYqBe=+$4AeY ztoe~m$N4N=@18jN@o_VM`zoH$S346T|9kSJ(rKUNyw-})T@oS9(Fqwc-5YQ=Yro4hGz%3^)3}W0d`*C*a;iC(#I;cLB#vvK_Ge^(L6brN(y+ zW+C20ox@PfLA;NV9Lys4_F!gPaQ3fvTR<|e@%;|Q5bycw97-_{@m`Brd;s}0XJjB9wM;pql@!&BsE^}buAH!xF-9)@Dp z7tkhXZW4~>V|C`@jE6*l;?hVq&U;81`G9Pqy8vUEiv9UG-i)IaX!{ftzDcF>Qph(! zk#oo+XvrptfGv-5?2FaQ!-!$z7S1j~pMus2>4}yL7%8}x^Kn+jRRnmc!21H$CCCc` zsyTovN`*>LP8mjw0!;@nlQDpEJ~%8uy?}Kd?gzAZe+nKGBa2PIRR%m};~v3*v&iFs zZwf{`NM_=Sc|^k9yRbq*>LZwggdPUt-di{$)}d(=>v6E*4&K-4F}y#Z$3Pj^z{R!X zTRM{rKwq_x0?X-g(m;05Zh(C{?kOZX@LmMq%f^w77)dy32B@;ZzuAB(jATGw2jzo+ zumj##$$a_~{TlBy8cTEVJ&AUpY3SqsdZhyH`GClP+1oI~hk=v%%KM;-w!n8!l{!Ib zbTfEc0bkbv2SSDfrG$exfX_|nyc>RJ;@5y4W`bvy0?Rq--RXc{Y#EKmgGsI`VFVA3 zBEOJdXbr6)33ykKeUQ%Guu2;s4+W=us)D@;D`n2&%-Y=TkZkPrSYKJ-UzXQ)kHWEw*NaiepV{9ErVVMADe>`z)*-8Sj74a{4@dnFhcW4J?8k zVehdI*k$%Br<`*=H*+sv$QSdM`5FEZ|3rFLV{buQq_>#Y;?L*@-A1?5-NGH?j&rwn z``lgJUERIiGS=!U)x9U4|E z^OS!oPd1b^jBOaxkWa=p^sYZwf42Ti{fEjkN;%*r-{gK1{`FIYd>#5#&zhSxKh@l* z`Jtw!rn=^fn$K%4)VxshWX&`}YQk%bHTr6$`fl}a)$dowR>xFFR!3CZs?F8>%GE39 zu6+3A1T5GqL8b3QF8_<3rvIiN(lhidJx9;ekLU&ZF}+AXp`X&v=q36&{epf; zFVp`(S5`x6eFZuD4gHpW2aD%>dW}6of1p3o>+}X>@J&$7&-54iEB%fB&K{+==pXDc z_Bfl!Cb7wE3Y*GG*);Y9dy-9OGgujWip^wCvsvsPtenkebJ#O%F8e2&$DU>L*#cI< z7P3WbF}9r@y~4Jz zSJ_s!jcsSIu^ntD+r?gIyV)KVV0+m<_6FO}-ei^R06WMIu_|^LRDP5lW5?MEc9Olt zPO-PyJD~gb*!!UUf3ef--|RznhMi^S*m?F5yTCqX7uhH5Q}D$l_Bs24eF;we54*yu zSq=M&ea*gM-?H!6RrWo*#(rQwvg_;y`-$CTwd`m13;UJ*#(rnF*dOdR`;*;acUc{) zX9{Zok5SIRXA;+NnQOTYoNwSp9>PPp2{ORKt=z`#+`*mP#lv_wkKmC!iZ|oUc?%xR z-Q2@tASqh%SRTjYc`Kg4Tk}NThPUPIcoJ{VJMd)g;~jYl@5EDiXP(Bp@CSHT-i>$X z>D5nJmc&6vwSrb^4QL$WG|sUF3DL z2R=!F>?LoIH{p9!LIWRw20BcRl4C5COeIBR9GSq(WCnSeOeT*qH+hmg!rGGs(K51}JV#cM)tKQ* z*m5tCb>vstj}9hN=m0v9=8&i85ITtV7c1)TGa`4`&>@2d&rI%HscVr9XJ3|K63<;_gbi zwr%6?<8=o}5n3Duxa4*gm6+ z0y%?n`}B_Tct*5s(>Gx9q9>dpz0@uPa<70^?b1CV0MN-I_ue)q7A`($A!7;?LyEjb zqaV%<@X@$;A@8$r;rxI#F_7Tx9Y}cUn{eQ9T%e7&cb`C_=(XSAd*k%`Ye*W<#9F-W zg}=k&DD>XAj(ObIGP1?+=H<_1`7hPz}mrjJj$*V8%5W5onigk<3U z|9+YP5kLoU>hXw)FFNQaV{j0dJt#ML>?UKP_7Q(l;)nn%6lYE}opBBmXJ$8@xp#Y^ z7pvKCNbbUb6x+AR+XpyaG&(SQ4Cv_*u@qiQz;r9h<6UU8y3>*XBd&D==)Of0+yPBo zKo)o1e*>sc+_Df~SOn9p;LnXH3=n6vxzoJpM)cFi+o!Pc^JGalMs&Ar6Ua&oF8$El zfWJ4e;UC>d7Jc@%Pr@Ce3$a8K#7Yjz4J3Id2OQp>LApVM0ISc0A-U=;!PY(jN3Q@W z9NTzTAgK@T1+n*8C}>N7Ao}tS$~{DU4b^))x})9@GIK<4GzVP0Kv!{n7UmWe2ciq3 zioj{b?%XI(z&`>DJi?nhZiFB-U?`y)!{LQ#1z4}4x&4NC`why=#j1KnsAt3p(VZ0A z=YMqL&5a6n1Ck5qVs-9Z7R5*4LJJz)8QAgm?27MzHdcqt0)(rrf>e8Ub?4G3(sVVz z2qd`sjO*QaojCqmr#RrTy|S8mlf@zW>6I1b0aL55wrvDFgDlu)X}XS~O$xU8)wU6MVU@y5K#&mZecVN2eV!gs zvaoQ3pmE{?M(}|-?(Gijc)RbVOb!VcyyJQXjNYE2Jzcb?2is-QuJ!f|P#106=Bb62 zKHlHM+Y-#pd7C#x|2!!&I_c)5o9w%9e9_;26A=xl{T5%tuq(dH!~Wyr!vYQG8rZ>x z6aJD0y)}bec3+-+nO~-S*q6BblZ(FS3m-*9&;N)jZ$(7QRj#V@~~Q)UJ_UTYYFX>%5xQuA;|RQTM9$tNg2GuUfWh(<*u8^AXW2 z(7pM2IxjOK`kkW`L3y$j-<4FmkMY@6*j+}o{_X6^CnBP!2o9IEm=Z(Ht!cm z9+Ddm=n)r-_ig6FB)2hIgAP7K~F?nn$r7Q+GSc@U!dVdM!-rRGDB!pZ34*RcHP9PIuy`G>I6`jcOK%W&FD$?7`)7$ z@aonhDs@L{D`iU)r1{c^(jCo%ntd{phskfq*R=FZLvOx_e&p zT#jiKvpVKr%pGqxZ-IBc_ib-o%ib+ZTW)Q6A=Ve$FLq39S?u!Iow4WRy2SO5D~g*L z_k7&WxKnYT$Nd~{h|i0k5?>L&DgI#m+4%2UrM7yt)zMZTxB4+bN{C9xPq>iqLu=ML zvUR7{Lt8)A`bO)9L|0;RVpd{d;`GENiCYqnwn=Hzug#b?GukX|^J<%8ZS`%-+pccA ztL{OH`|?QcOywkic0F5G&pHOQhCzqq+LmGCsikX-+n;* z;`UFsU(x=x_9xnZ(*B3`N(X0$#11_>jOZ|}!=etGI~?qAro%TK?k3xki;^poKTQ56 z`L56AOYo)p2K&bOp7w3`eb=#H$1xqtIxg$DEk#Ocmf}mvP8pr@M9QL+jVT8@**ZPl zX+@{kI-ThBX{Vd1n$!WQ+f#q)tmz!p+1I&m=P{k1>U=J(Z`$az>1ofU?M{0)?Q+_0 zT?}13T~fPbcPZ%dWS7NVUg>hE%egM!J<$Gv6%Xuq;KT!;J@8XkxofkoDP0G29pAOQ z>+@ZAc73bsrLMKz>&$=I)_dh`p(eH!%~MW8MbQJOT%6r_WH0lhaDaE&hVbYvxg5JK7aU; zhv-B34{dztW^S9@r*pp_kvU@Eh^={=yta9Z@>Y!OKJtZ;w;r}VJmukA`Lpv6=AX#F zntwC@k5R2gwI8)?)Y?)1E}#W{3f2~US=h0#wDA0B-{|K?ZyjS8;~rBsX3m(3F`LKi z7#lfu^4J+;pBuYn?0)ajVC@Gw#n~ zck$TbKym%}4&$F1zh(Tbl0zjYOFk%3Cd5tXJ)vmA<_W(%GX9avkLEo3&0_-}H$49M z<4-((>TzXa%EXBiw@th=>FG(^C)3GMld~r8oBaKh9#dYL^5fLhsZUP*xHP(SKAj|(nEui9&u2`Z@pIWzWy{O9l^rkpw5;x_ zAy2(DGh*h-ne|VPc>48O)>#p=JhKvJJvM9ctSz&S%(^h^hkyK|oRtqR-!(gG_JTR` zoORC(dgjNu!{(m*=b(RnHSgH7o1fkB?7sP-^GD2oV}Wf!n+1IqT&q~Nu-U?Oi~hNI z_>#yaUp&|Lxf##>xin#E-qM9jk1Q)%9=d$~^RDMho(kd~ zuHW!d%a>Me&}~?>;q8rNW9G)^H(uM6v1!((6EAmt`OxNGoBzG}j=wU2kS+tFvo$Q{#mEZ*_zj$=FC-En5e)tzK#pW6BS&Ye3? z?fi1*Z@Xf54chg{u4i_A{Ce!`-Cxgp{o~#FyVvjDvPZwCe9x`GguunU-S_U(QxdYb@vV)NaJ09$R z@bQC74sJPEb@1H5s|S@sjzfuudK}6-H1*KpL$4k>cIcBsH>md&XMs)W*u2^WXF*c zM?O7r0>2557RIAgrusVRhG z!t@g1llg2lfUCu+^yDNTP0IIKefa9o-tMt_Qn8)ned`XCu(JC3n#w!bCDL~Yj9zW{ zntiMGXCxi{%}}BtuVw~ANNAD>h%%={Wr<4bblVxaO|Qw%x27fKTWvHg$ybw{me!#? z^&+mD>~wfzQaZ9NWxgv@%FD~?1}Xe*??sCjFG3%*Ip4|yjWD_w;tCh8@ysLjUBpd=;e9`_4<{|e3o*sLK#YT ziLHWWRnUNvBen|VAS^{rDjO;!hipU4IflfO5B<;DTT-bdwR@@LrFK1)^_1)EIs{p5 z9HCYlYH$#BWfDwn)-v2iCpS0aq$VpaH*Q88kDKU-@>?BQ{-~TN7L}mUxF?d3Wg(kF z&V@)JVJ%9{abA6RbGOW$HgkbxlBL|jEf%vm$((L3FiYl^x>BSW7$Y3s;~NH37AHxG zK3|em;147VZ25dPfhs`@HNGUvfASNPYXt52e4xAJs;#>J&{ z?39|~bGpK`aq(7{%W0uj+39eFSv!F|cU62-@%C#c*B#taad=hF#m~I=vSQvf=$nI+ zzPp^U>tVXj|H{I-yBzxi`aa9M8FF&Jv&jNHx^W_7E-%%DdTVIX{KWX?$`cU&8 zJQO?p6OmOudx*p|RKKAQ&2k@XsP>z%)69*pNbzMrlQ^Xlr##q^L@N_t<6Ez3y{$EG zy+7(r42_%Lv@J2MHElO>(|-M% z<85nf+icvnpSP-PaiC>octn`&3=gR!2P~DcmZaDGR+A3i{jG*3)#U$HlW+Mru_j-o z*~I)rpc-gLYlrr#|0Z0x7=cD#vdig^mcr{G@0^;*)f1xGtTB zrx!_L!PVdT&DQuhy#$JkB9K7ZmIoVZ{q0TGEPqSdu_bMpX>Vb{(ZCk;ffiJ5ks0B( zx3{ws5$7V9J;EMgDnmjmQxe!}rnhBDl2)6PkY(~4ELo-u8KpSGDNCg^O2iXVjixMh z5S=H-m8++@akO)MZahnfr>(3s2!_jyB-cPV@Dk@Psm&mxOXn2gFkKafVQDHQs@$E3 zU7D0w1JUclPY})d`Ief3{QN`<Ju0O3|}p#}0aEEM1`-J^gI{CazPq zlr8_^HRbZws!tBjJym>S%gS9lSDo%LaC&z3!y^VgS+AqZXYQM@1TG$}yt`4J$_v24X1BG{oVRMl*M#3i)3)!DNR7nTbp|3wHDoE z-E4HJGvb`Ak#Cbf)t*JCLbuhRXVGb}`)jE8QT!+9QRN6NMXE@q)0H*#Kh%GNp2<8m zUCKgS!9-g6oxef#X!KeMDNY*7LX0|DhH@2JGc1ipB!Lwuj}6nV^cMpolc}n zqLg{J-Uz&O=oh7;Ih~&9KlQlroFXT}9_AvsSVBtLZ#t=4w%5KFtJh>#QHYx1A6B(J3}OqOO#=cH<>R??`%Zq|ngV%PBv(Q*>JV3L%7Lsiy^ z`SpUsX_(Btwp7k6X%%bxd#M~=t(>R51cp!(b)E;{|8wH@+h!x}jhDuaFJS8e*#EXlgU$RQ9HlBSXuxI^sx{q8K|vT(pb7$r->zS>kCh7R1vdb& z6_6TfkQ#bqRy+A^p_9((s4mPti6CR`=161<2@nE#$t|TCt)Uc&S1>Imk~k{A21*44 zq={ixiznG;wZw`q<`u^_R`l(4dj9(xO5%!z3s)?kKi`2Gt%SbZ zMkv>mQ_5S)_hQv+0MIRfWgv-um!9f$h~H2P04E8gz>O2 zc~S$!lizI5vPN8Vee3$&#i2dE_lJQ7Tpq1Tn>G}m`0lOhC%;#&vcP&e>*D!; zOqp9Teb>itOuutSxro9NO6FoMq5)+LDe!kO+N11@Se%pGZeC!a7K<))(nh`qT+lM= ztnP~Lrj8RV6|t0-U=mhiWO!+Ft+7-uV}X2FA%F??7NF+)#5$=~r!T3-2Cos!id zc~q6}#^S+fN)C$4d*HK5IzhRv-2G+w!T0DGW$wIrn*s}_?%VqC;Xlt@-NKoiq+B?C zZQzbV>Y;4S+F8ZZ%Vw>9_tk|6;4x&?iBzl+ReClu+#jyB=*?M1EuV;5Xurjt1&fw3 zyTc|_Qn=BaWzz_~qM_0>y=>ANjZ7;uvDBD?Elrp!AU9tk?7yUZ7&)+BplPYs>a_yx zAa0MfquncOsZ@M1Q2#Jnd*q@rGgRNQlQNEG3FB=e|Fo_>EecRlJfMD)!1OK^)0Lp7 z!Tt`Ret-}fN;H!;I`%l2Bhq9x8}$YQLGW-BlJyeNYfFJ)UP{9vOw)`IA~irU5L%=9 z2*RR*0RS8Wz{C#iQ(;F5q{e9D?T||x^dLDMk~e18vd?IavVFvJd8uq){q^`qi$9`V zxqi3$fn9~P3yq6RV}Y$ozT?~Xen3GNBQF9V|=S7Zq?)YI99I9zsLBa7XroKbDyRAcQ28nb@%v#LeEsHCRfNTQ+^1A2XdGkFLNjhrlaAs73EZ;BdE@) zMum;UG;A8qiKQ11=UdJss}?IbEI;2PM7@*J0nAr#;=52^Z`r#1&KHoj>w%{ZkYRSz zf+Ucq{n3W#khqD^hpgGe5Z6Ro2;REmpt(fPM8Pva*#Tfo_bDtyL4q+M<}9rv%)!#4 zM?_DEE{m30N7HBn!J0*snzi0iO;G5;bIXs(-BE@}_HV zetEWv(gn|7dHLwE&EKVt-!tx!N5CHY`$bcA~9T8 zQjMk+)%6-HNTl%Nw?HCaQd&P}0u>~(Y2NJT*!l<>Nt1V6KlcsQDLa(&bzAwb%h$g$ ze$9V&1M;BXEEPlNnMqrJl!2`_wU-N_`KskwSSqr`s#_PbU0R3YpY$6|I?#7RD6&Q^ zXuqco;V_GrRJ;hUx|OQi%;<~CZFXH9!9;rd+eMfXOxH|*nk3WOkQelNw)$_wnJvbb zqD@Jrba(`fgEp!D{2R$hH&o@{G_WuNI;FD5G3KWx->i!6ag9SS2zy8QuHg^C0c*)+ z*f1Y}14jG1jhCm(^JQKl&5#yI{7KET8m2*10MtmejA~FbR!!&?Lj8oM<6iNR-24P* zW|-lyLGt0-sU|Yk2A-YJ>R=8?M6d?Q&yS@k6s#fn>c;VP^(pN1WqPWZp4tSo?+{e7 zmR2Ewb`89uC4PUrR>V6fUOLU|lO;M(Dv%~gsJ^0-L|$J?QHV{=I4j0g6&$|Bh)^VF zfPTARLu_mLIx!p{x@whDyc%hU`{!KX?^=RF!3B(?S_ySgyo^=|bt>s#*l00#OsiU^ zS7hp!X}U~_Ol6t<*C|7jHBK4hTN`I=r|Oi~vVYZg5^&I2@JNPlQo0o@P(F-oZ}?jB zLUu+#c4qrqqb$AIYPUO7n`!g9y_AH~P_0=F(3qW(RF0&P>so9NF$^+GU^6AE|4Y-$veT(;qz!uh;nHV@torBfcY2(^^vT^vmp<7u3uHn!#Lief zc=WWQhfDKb7=3EXyseKt^jMy4OJjtGL^othyCE;zp*C%)KhM>XcDw-NGrTkHe8FUF zVQMDRk4?1DL?cX8GEvzin_BAa)c#THE^-8o_^73|(?ygDcDSfdhnuyOpXFD$roG;; zKc^Q($ogikPvUvAPg-~g!cOT>3TnIsqDuq}D7;$BCn7qawqn(-X=u++M*Kh+tBoQ6 zx+08Yst#XrlbJ_+$*E4+>xO6`9ta2rGzo`hft>Rt+j+EDHvcd@LZ{~Yj^7X~OKOv-@}IFruJ*u8A(+e?D-gK1nHzi`E8ESM8!*mD$Q( z<$Y!6fO&&aN;{P8ewrHXlS^G>d{~{O1a{JFxr|>J;;U;t=94ork=3krOX)#`CuJ9_3LM{fJ$ zrDtjXhA-=XK1`dfU;4sUo;|UAMoIme`dVsJARp#H zQ?FMonhuDR`k{~Dl^VmWBMD?a3N1_p5KN8&ZU=lYwS^4;MGH7#R>l5BX9!KH1`BkO zRP_AE%4t}6#kA9xuMBu`&8H2d_UbbqY<_?)pc7~wT{(RH0Js=GD>cdmEULiWOyEuj zt<%OI89Gv9HRP%C)`I6-I0{b-DK`{~B~{%Vff`_@Lwop`K`Q4~)w-JxdDD%KR-RY3 zO)X>&#SU-$S><(QjWSykcDI7{VjV@dc-{wcs1ly6-yf^fLFD^wt}GHN8}e!)VIgJp z1to$k4VnVR4F$q!Q~47!7q&arVm6Y zW-8qLO?2z28s(01iT0+=PP~}){Ie%Mp$kV(xWT1*Uq8B(j-dr~>F~`%l@F93>-RUO z`^8F#mCsODBHbUSM{+(?C*@f*ZVhv5+Cv@lg0(to)+Iqf>2wB}Yl3X;OG_H1BB7B- zpa2C1;Cz50tUf8@aQ%V9hgsjlY)AcYgx1%x5;0m081MC{b>iBfsd>xC^b~TQJfb9g-1|! zL2$uv0LNTA%piB})NU2jF$H}+jK1uo(jW4NomSfE8v8aovkQdAhFY`Y?I?Y6+1WMY zpGIbMhq|)57^&VEVN5Xc?{v3xObv!Vi1rj6m31y%oQ{M2;Q*{fAqwIK=mQThtBTBO zx>Frm8_LWudYnvihsYM$FXw>cja18R%rpXSqpVVUa(;3guTx;sfMj+It;~9qG24>JUP9@!!-!zfnG#V$8h*fWd9w8%;z0~{D`Xf5q zu8XXvY}zeVDL*c*y9%iL)1-0SEv(6*kZLp4D48A6Pe9OI&(qhTb1h#ufP1tYYL(bzp|f{GANBT%8XZN3~fV` zX!H90^>_r0A@mTGSb9AD(Aghj8Y$#7lkElwFGLqNp`4!-ZUmRdgj|%8$zJ<2&BnsqFrMrPaR&^)>X1TN{?WK*Q7-D`V6d z!(<@C4k2ZO?BWeZ^A>I>X)eI9vd?Thb_YlQL4STEX`ok?-HQ}rNMi5=``{zEl^IN$I zY4yMO|AsOqs>h@iperMiZl(Tyi6$CpqDCF4D8Wd>jgUz;>>8*JNYh*N`V1Y;Qp-r$ zZ+B(Mt`LD(5xCuiSOns0g&`r-0n8eNR)$vq+`?#TWR65J4h%I0sk?A*L*-$wRuJrV%QXr*QXH0Z+{{<&<)(}FXWfYQ>T zKclhY(H4s)FA#MC2||xE&qxS?$?4RXcwq~>y}%?~71fdlKyU{^c*0q0j6Wgd5HE6h zEn&06T5^jF9+G(w@a`oSPSa6KK0Ws)rPbda_MhCQd@=XKTdyiVHYk5|*f+ekWb%W3 zPjBA+&VVfg&KEzOnR|G}i7xqT1+-gZze@oa2dHfv3Lv3^g4A|%3dyb`0XfQAs zgh~OtN!5f97F?4qd-vzJgcSpFgd+2>Q-_sNTu}-%wk=!4%x7WdIhup8YUBN`(7b9q zkjAJ*pC>#+BkY7=Zo83`FjYa?2sXQ|5U=1hyH(1m`%P(H1xX&S(HyMnuhc2mSu?)7 z?qQ?_=5b-21pNdNVSd3MJ|4B6P{ultbpog1oa#9}0CgmMh6m6X$7mQlR)&AEpx@)d zt2n3ANm+RMhuw1$5Sq@^JfvZ<8l+cT!mEd5uJxOYh{z$-1Vs-GuTl@(*!;wxbI|A; z1YHB48r^D=O`stkh{s1=VVzR>x9=%ohn0x8X?#LbboXG?zHW5++2yAM#vn?O@v9^e zbgX}9LPS~w(?x_wuy`kRI+60CBBmAZ;Bl5t7M5U0Gq6@NjgYAhz7Xrgn3jbxmSrum zZnqw^N(t69E3;m;{9$45T0XI`{fIe>nRpN$A8Mg}a2WO-#gm7hQuZnyQe>+solfUt zjl@-p5#XiQ#2;>aM%WJUA$x()8K`-LD#9re`n}<{fqh`OWMGF4bb(>JflV-!8Q4ez z%?2-y*KgAw(DOKbCw&H-RjFlI$FP-QTf!tsa!5te+tSC9CM;BvLc_SN6>LchP^*iA zlC;~TuzsNrp* zV#3?;+WJ4f$V~yZ*WAfwy%#QfeNz1~7!?x&%46|sUd9@xU=5)mA+e76Tk3RrqtO5k z(`fJ)9`HIbORYvDOM1y@B#gl`(F*Deg8?OLUD`M;*9&7xuaD3tz|R-wx{7n~R^y-$ z)N{zRB)|dCfixvOaJ>hkl29#zu!y%Bb;zq2P)b0Nm=!D=mYg0Ya(D=8t9c_NI`E6Y zr$}_;-J$(_-3i?Z%m4a@UIE>LaPg5=Ur=6Bo<9orHSaw&Tmjhz^jq47FqlyN-qFXbGJ`k*=li4-;q_W#Pz~;z>D%eKuJEx(WHFO1P$e%-kVJtj-izWwrD$5-K z1dt@zw1`E4WFXyPF(ln5v3^c_ON79Z6D{wG@1PCYND_%+qR_1{A&Tg%50nV->1jM* z`gPsh`uA88hr98Y%+w?P*eXs(wYo4JgRs%z`A^2RT5%2jK88sWoc97`Np(R7Fz5w{ z{FX|&Nvev0)rEYA8U*)9MRklv)Yb8ebys=YaXck_g^E-&)%?zG%fHh+;oSHGkw%SfpQP<2qD>UeNU@s;f>fARIIG7JD$fQw- z?085|f1HteGM9#J3}a#5W?5FEv%vD#g%36wQM{33x6l>?G%nc(2@;k4P0|D2?eoE7u}si4a|<6kZ;ydvNpYR}N9-^lvNPOn>|E*QfVyetXON zEB34%-EY@A+TWt>bA50{;qDXl78aq^JvwpUD=Pu%20+>y^#GzGs*67+JnN>Z!Ng20 zpkM5nga<(2)Rkj(=^}HC7L?ZsDF2G;BqO${D)CsaR=Cm*tw==$)5jvkAgsa|nGOw! zomZ*TJ^JYf-+uT0+0sR8sYUr|-Ls1pp>|-wpygYXi^^}xFUke>z}F}7Wc`LCg5pJX z4^#o0Jkbwhb}8H&rzVRa0LBMVn?`m=H$-5y<8LK?feN#73j|BoY4)}oYEhVY=XbyaMQ7DnQ%(@9W zH98`Ts7Vbjn~5%`~i zrkoeJI5RCIq;iFK(OLzewYBqBY{NfygisT0yJ?Px?*H>Ty_0}CkvwJ0USZA818iBq zh?TgIk85Mk(wJdkGJ>+SECPQUuDBb1Ce1P1qHRoTvvFsR$-)O|bU;)vUJSAl*ir+9 zQ<4P@du%~m#SjF4v3AZ_59}~0tL~1D=A7EI_1)hQpfG>^aebY_x+%5F4fq@t{WtXk zq%t)iR`}Z$FBOtyJ#=8691S|o@VA0)3Pma|lWX}>%}oeu$eDmzR3p&=TG?T?GKD!BS&Kh+2CjhcdHLIYqneKR;(?Ldp1s<=dQ&uy7Lu*Gtj~&WCdI@K)@s`&41_H(C^R(2l03j3 z#o+cLUMxzV;G~Httneh%C>!Q+5_32SVn7fKWll*aF&n2=L}R@%@q%SVQ5jeRroE_j zN>%IiL|ne9%1o4+dEB5Fsrc<47muYz7rlIV_rdzppMPCjIB!Jp#dn7LU%XONL;D>0 z4oRLxMN;;ZsA02TJ}!5DaOjImmH96(|F}!iqmy%DcaE!k$5DUeyPLm!t%SV0`${hI zDpWkNBDDpTTj2%7wKR7$Gm;swo&cHK4RR*YTC{HMIW4NiBn}GFK^9`Al7snNP>`B| zhGFHg;t^vjR>@}-jE`MD{U_za%1WJK{57bLQ&du>*1rcXPhPfNnN;r+RQwLc_Q@t# z3^qvnW+oPz35$;pN0!s(u!q_PSe*I+MzdxJJSC(I;T$1DhC18)uwWETc>@fv$XxX36QbM&q#^8lM!Qpf%lW2>@7Em^?eRuRu^N)R)IG@l(f1Y0jB48*kw{vi zWd@BC|2F_`0ufq$sw@%}xN50Il25qmB%i|Q5$>%BlR@MKV`iL|&!>z2qu7|?qB4BW z{{8SW*3t?kwthLiJy^+;9rc|QtlVs8uT@GLl>%U`yk#FH9&f^~>e7^7AR(9~$`btf5((%cBgvo_!@* z?!R>QG4bKgk0Te2M9%?TH0Ru7nJ57%9%Cz z=bKGRq4F@eX#=EdZ;WZfe|L2E$3g-&TxlGywvrK4mQ?|L2n!HRGwW2a4B&g1XX%p1symIBA|DqQY=G@ch_3Q7cas<#p?_QNg zI{2fOfoO=$sLf15x>JZDEesqp9B!>pkD%dT0$bIKB999TCrGpcW1v>a+hOLoSN2w} zbm{uJ@o-8`-ADl==wCML)fCxko7T$MP(oim7#{Aa*Tz>TBD=}qjG2q zmp#X7LYan8$U$A!7?Aqk@hHI~0*t136a?VulY6Os%-(BdSKfJdXV=P#>*FdfEc)S- z+a0zJ-<&qo|IqTW3)W??%9_`$Z;uC8J+^u$AX_9L(@X-@j_{|3STZ$wjT>Ad`i{3Ww8V65h`qB)*)od4N$k%(fiDgNBV-3{R2UN={N`^*u|XG2e)c zXG$z0+`=n@xyqJ(_VsIPU8@Ry`s>ZyWXk$q<9nMOIW;m3Eo|=W2N%y6pG3RRf{Q0OX}t9zE0e7*D^p`oJwwB@;w`CQGz<1xnLC?VD^sqC z=}i$P)+&_78SwOlOCP7_vITu^m#L^YdqL){Mcaz4QUfwmJa3e$U&J|1aYi1ZZYmRa--0&?Gfx==h*2u?BEVJ_KnQpU`DPDvxL)d zoz`I-$>>m6rbamoD@>r(L>NkFRS|GPKn2Kaj6ek+8i0E%KCp(MT1AuisGIsD4n(tu zBjALO2tWBcr6S?d_{(|QxxM8c^N(KHJSHYgj*gvovOF zXAiy3de$F1^~x`6STvS`B4b6QM^u`5?ZDfHj}6~|3Is}8VqT|pU+8{B$+)O-I4yl4 z{U~us?7xlw&iaON8MIQ18Z%Q?U#L}!EiB8RkJPgaC=GFOiA&Uo;sTJD8mSZECa8SX=nyCZR)o=^B7`Ou2qfU$7+Vtlx|b@- z^t15Ayl0gs=u2myW+-G}k6ntiFMgO5;oFv=i%fkk3_?R#nX;O^OlkGAfD zm74nDu*v(uEb+VdSeJ(kE?SM10*hnhY}ig2eiU;6K!lAZWT0k4l3|bGxIr=)xaD{A zZT`Cy3^9qERIt(n&vBrRK-4p!3lz|O>f_@V}A z$3Vb|fB%JLsT#FHA&X}OR;`j9x6w+;*O=#Zb)JR(?wW|7LwUJU?PbLH+3}8C5H9V7AIWrAA(j zHbA|WWuula585TkAE~#Ci4dFRbv@sweVtqhp_4;sIto73;yqtYeR8mL&vHf-?g{Pd z3YKie#6t_O9lNq<(T7W!Wc-4g4!>huPA zwUM!qP}E0|b&{ydguAV}SXfH6{1wiX4}Ojo&)~6Ql)W9nvf*@-+lMentEFNvP9EXttZ!1NLe=S8?ma6?S{f z?r4}x12vO0#}R0eHJ}*SYrrdoG19mTrio7t6J(PbCZZ79Fs*phDqb5eq7M}D!=NMN zaM7eWW6H-(ojP{T*g3s=m5-h?cIuO(%L~hU&>2O`mW~^{cnRM=XUv@5z2_9p88>xC z0Z#Sojjw_yrz#s37mZu`Tyc?zqT>Jdh%^ga=^{rD5f{SzdP8UyGPa>v2>yTX?+Uso z#-HLbo5^Mhah-M2MNT?Rq`X341?my>ACFG7+&Ix;If17s+4vA@0cnMVg=@_Rsdm4~ zV3KXv@i(_~V&7<@?M;3YGuxx>8|~a=H`%Gt=AtO_7a4(IJtVZW8e9@zYCr+`AuMQe z8q7v`$Vo!>L%<1LpM>xeR2M2ugucRKsp73hqYy1lK?|}4dB>IVTID0!PWfn`a)Gv0 zF8rX(J0Wrh^`v4$g>r|=_~DRI>^_;MB_6+p$ve1s>=!zj%R$*D#uSt$gsG5lB4Q|{ zoRD)!h(^@?D!iKC8gB7Rh_S_!WHQU2D2yBj%0p-?N0N)QWm&Ch>%KOdJ45U0n2GNC z#)V{Ha1ux31W83AsT3FIbF?CDL)x}-OPUq~nnkz_19UK-f>u9LL>O2tOh%z2_!O0+ zqLK@HqO26gwHio3B!Pl(1VO31(3q8O3UCP>35rrP*HqA!2zj}}=$1|AUf;Z>^ZFSd zj9u~4%H_*1zw__uJJ;3@U;EBv`p(o9^X5%iBPHgnpRp`!QLky826XGbZc1ft&hmvX z_t-FaNm@?#p{q;YP)7HEe8i;o?aTWW+tirmTVr8CnHSDW!W^( zV6f`QijaXQi!PToN_(WUi25O$05soFvj~`%nt^VN>3EuAJ39&s3+bo$(p)MYKfYLO zBBF@@oR{8%)H6cvwIP%I842%rBcfX*;ctL>i-;Bxdh;pX&Us3o_(4>7RNM!imYzvb z@)?kzoK4A~Fh!BA_D?8J?r45o175!F?Q`f`dE; zH((SUcg7i&fpq2jpIenCi9Eme{XS+S=}@_K>(;sFp5=f3XLo>=1{Tuk8$ImpZ)t}A zk#p2;&+xcD^L@fHK9j+n^$ZBdyQMlH^|bRu;GB_SB6xN>(Sb7-Z_`L~l*_q!Q#XC` z_^t(OXD;n?=R>UE=bPqEowh*Ep1tIqo2RH2$I`MJ&iYOt&MNu93+rzfAEaILx-?5s zRZx{qAn7wLl)_bZSvy~UE#{?PPm~I$=-evStwA8q7DkxQ&3Nlq+TTx1W%+ zQ(v;hYdShQs})h=s6o>x-DH$%vezUgMe}=Qzn+s3ixt0~pPAp7!y5BhW68Q$f?7KQ)k4ab!l?h7Fb4``DhWgICs-)7NC8ZcUz6q8-)`MA z>EW-~1^SGd$H!iN!T&{;c@hpsquva*fS(`r-!)<=-b%+eYEU_%He;WApF>I+AS7%| zMkj$t5gs||RDM*0zlYqHfO~hNsRx!PGXCUv9&uO#Nc_q6Jc5<<-Daf?jt03MDATFg z46V_%^bUD)bqg%+D_J)ayJRiI$EeozN_`Sx4+?hOX2q`iNmsN>)vkyonwVBv8ypzo zcx2^yp{~`t`U3eup0424Pl)OgHi0+GGc2zoCUH@sEEG}?d$n9`l-2-pgq7L`&8lfZ zz$92Bo5>a-{)i-#=8M)iY@fM5;laf4<&&Y3a#;<{Uw%)YH^aTB|iH&1?Z_B9o=Mvj{@cj|d}EWQK#Z5&@I*I`yU((Q>+ zk`_1|$!6KvT+^(s!(N`tNAU)5WUmCrwH26~XjHN`T4w^aD0z>b(Abw6drV_9H0IPY z5$)9+5t?%(^jXFyj?V~6^c+6gEQfH+mO$ClYEo0`0csN7ff9^qiWp5>nDMC zq(??uwSwFm#U%V*FEHa~X*86~5mA$cLVTFr1#IJ_xs0jE`0G4!z?a0uGr~nz#2Jl>@jL5d>jEEH=rwtR- z2>r6@AKZ86w)-+2jc=|Pp|-WLCcVAw0L8{u|JP;fF4cFdgD{8l^mb*i$ediXOm|*RaCmDR4lnAD`DhPxtyGF^9j!5GR47#8=Lukf zC_*hDoVrgNRFFw&g|1`;EelW7hsOMzt3tq#I%H&VwCxSi7 z&rs|AAnc3Nm3qUCk|&W1MPqD1E-DWS#w(rwyyWg^N#r>LHP-%iPmK*g9;-vL-0o_? z6H6|a&w(=byF50jlu(Nm0(=0-xA&O;y=^ zMAN14bmR8tANk|gho3hlK!zeza0-ryFsVZU;gPdtKSouaiu>RE9B(IkuUMN##)=`d&I z`ZWD7H-G!>&1?|&=-1St*U*GI{mRT!-=bqf7+Mnmb6zaX*Z&J|v5~=~uW)-Q+ z5pge;xgRK@V}5qn&ldUFLO;`x=>$@S9hO*&1mbO$z?=37bx>}8DVHkC%P~5<2jwku z^!tp_cVTqtW>%lN0%)XuT#NE!8au49y&BsMbf1RsC%_C(yV*(r#m(Dvy$9XGyv;eP)-XYGt8{q9x6`!|yLk5#jyXTF>p;T;A z&_B9=ghet4_|A+71^7ZpYDjCE$qB|D{{rwLRL~P;s2+(em1&cjgbNgClBElCVTzA zb~U>Y_b{%e;ib^ !i3mXILughHYRxNg#(Mvk7N3S3nJ=P}kfTc*r>^oXR=5NsS zyUbrPe@BIIE&v-=hRnauV23hTGJ_>DSUiJi#v3z6@kfpOmYYHh`6|b|#~)<}A^=`! zhGmJdstv(rO%5n;1r7$j#C}7BNOgGX8OU832ywiWWu}K1qxlBjSW{ea`Acn6&z?g&xiI_|J{U3pw`=yxu8RqQo z>pJ^2J!jwZ`q|Q)F0-H8WA;6+J|*vBaafPp8&}ipjk!$6Y14J~y!-4;iKD7O7yR?u z#2K0t8gGwz{PhZi(I}kq@dnRSnU%^LP+E&Wes`lq_IK6^3Zo1W7@SaV;ES*ksPKn^ zdwGV#A`8J0sp+PsuEm4wxBBg(fRL}=$QPfgA=Gm=>TW6{glsfnM+~>p4nC7s7f+*@ ztA*FW6kmq5t7M3374a?xnD63gTn*h56uRfBR^Y3;>Ykq0&qiM}Lz`sa7cLJ*e(h@W zU8G0vXw5j?=rngR8;oo-N2lqip`6ozDDz=Q zOn4qn?6GIPDCHn{a1^v?l7>%`4d2=6J3Dxu!6Fpe?*+t6$wkJ104q|g zlro;8Xv`pFrf?pzMiG?j1BuMq^;f2$`t!W0`Yu*ES$|1?bu!<_DyQkMuwhg5UHb0H z>>T~|DL93b9j(ezOFPgGREggByc9qxafm%a)MofAm>E!_@$oJ@a$**zryx3>=UPf( zie?5ff=W2ML6Ti|#manvaDxK@C=qN!ii~LRFhc@*lFp)!h&z^)6jET8V&EcPD-#*befKzqGNt$E%n}tFLe7Sma<)^*8N(q2jkObJoZ3|` zdtN_V8fi!Z!x_g$di}q4b(cL)!{dxQ&DA6~#$3{J!x;`Oz?DNWY|K8RCj~zkhQ^i=WMk&x}fx`f>xxv09 z&KKi!F;FWaXh>0t5XC9F)nx7Xpj%BA1n5<;L7ythV$vo=5f>tc+gG|NaiJDw&Z@Y# zIx|~B9+i!XH^g~%oB`V8&CJc*mANPLP^LwSXJ*C$y|q*qoe`{-Ld~I;5I)7dz@H~s zpRg|(Mc|xbYLvAQB1K3ad?)H8$g-r_Q%Jk8Yit%xT!_;S4+2r6w1BXjM1c`ZCw6G% zvi;+)oPYJ=#h?Dr#vXg+;L@>Yo^|W0Nq^qf22jUSqbHwJck89MOrKuA>A=Z4rG?Gd zaNq5>j2M&uhpycC1Zg}%c&K@JpTqHXRO$RDB+_8{KC+(PX)VmRg*)HQX|A3< z7R_1_)$fhVllg3RexbM=W~*Us^%$L92v`kWPs2C%W_^1b!*{>l@@eO6*cgxl<-&)f z>lYQUnFXw|fRz-SVcZ2~OxOEZ4tD;YG~Fdh1qo0I6#1ablD%1?H|yV<_3M4=H`DTI z%(1EScUclXBu-$NZYuM5VTrK<#`VxN{jg#iVKL`RebDJ>YU1onM}e5Kz_jvy)#~B+u{e+S^(Cc(0$XOVe=;14WrvF$a?)k75tfG%9F_1B@df6x zakvR!Id~+=e#TEk$}b&Vpfr&mINLCp&=guWNcptF!aR{A0_I$p*MrKrW5u;oE0)~z z!dZ12mv7NEdC{~Pw_dyKlS$KFn{^jzKF(!lkFFkG-+I}>#NaVg`5J*g-?~-*=SMg0 z-ZpY$?a`x8t|wgjU7H@#zq9)GUfl4^x&eX}K^^u(UIf*h%jU=J1iuUDN7zSS?+i zpy$=IZxl0O8ZIC2aR1u1q;bjqG)DfqRXfedV&29);3dFE;LL+(#7w?w)q=+8ri2=` z4OMCZ7%F>7GoP27I0?`725ZzfO3YY(jplL6s?Fl2|AoKTIuH&k%C3>Zhr`E!ua+{C zF^}q$`^OlzlxL zqx}7k>uy?7T{OR{?#>%;(LdJvp_cYF=KTCCrrf7D>s#J@Z82H>%{Vjq39T`j-V__7 z8f)*v+FSgYR&SU0B#@XwE+Jy{R{tjCGAQKoAS^c7{wr6{hCe~RVg@cB9gO_iwd}%^ zT}Ez)wf4)a#hk@Fa6TI&(?q0D&S|bC?Pkn*`hQ3QV5pJcZtwU{YleA!T1Tywjw4dM z1ztTxeJ)N6P7rDY1TXF*cHt2^`h(W z&2s%;UoKw2)|^-W$lbgG5Qd45+?_XP?2?C>4P_PmD)8+?x(>#Z_gQbgs$kE1t?Z@L zth{~iZ6cY(DbY{J8G>*mXU~c~?ibqQ+18L>)w;-8&#OuQLCzT7FdO3!{o1wSOr>jS zXj}9&;|kqj%wjtHEa6>-NqMknmN9Z#=Z%48pC@JwyfB&;vqP~oMCSpnKBCLV%=X}DS>uB|A-QqXGay7yWGP;a(U%nqSb(auQ=(6X~(*I#R~i2qIt)r&@#EV@bx?-=)W{`_UM?5Mzgn zyIW;>dWG_m<%RUvquEMmlPFLO@y@eTiXi9-fupk%E7OGE7$Z(_nzghfwL7Ars^KbZbS7A*R|gkxr~#jpVd5=qDu zSqpSE^tF&~Xi@fX5IKr2JE6zeI2)TWb}@olVT`>ui?w92MOkcS7E5NaxmjUxE6nSZ zP0;;*D!OGEcY|hSV={uLx!Yi@oOlv8O4?*T2|RN4+pOp>pTu$$SJRWIY?L{&*rgfa z(~L}UNn_-Z()unV-;`raoJ5a2yqz#NdSd z)4llCsJnX`;}GvP(BPUX0pP7 z4=e+EI}UKQ!U{J0uHfP2ZEed>mas31|F&JfL7%gk)?38%#7^%m*6CuN&&p8Q>luX_a07@79D zF>;-0!IFjH&FXH!8Y5?+({bQDy~ zGB!irnZ|OvuYusb64DQ?1kH7!lr&d2hBdf6H%5pLBbtDDhzdh7@(5fF zT>uRoYLy4Wa6;s&^_;=st}AAYO>fQ^yH2_iW21clBfX~OFe!&k&oShhlK)oQm$V z*M|}#m^re_D=NgbEHhZl&W&aLa@Rsea573s>F(ym@97PKtxPf z^1Ccu*RUB^_p?5ZSx~No-j4@V{yoh>u#BP89 zECrxI(n`cfAi;ui0zxzqn^;p5@rpIcD^lB(SO0}SYfkPXhB2kz8hynf3Q{WcM9_Nz zsS3DS^{UKfFvVnh13}qZ?Q%%A76hpLj!|Bx(;bwPQbdcyiT2u!0!rvRVl3>c?%?nn zrVo*?Q6-sCDufU=%@h9<71~tWHs_m-tD)GovyJ)$hvT~McE5;r-pbB>sbk81(rVjR zJ+|wwsR@wtBO)t6v0o91heUOIM{YBVV4gO@R~5d8@F>}sl(0<=|MQDhr|D0cSBtTQ zt~AEJNJRPRjgqniO1YcXF~%mF$QT&=l>Hri(BGkZ6E_B!+)DqV3E3|;7l(HN1m znH&pf9-&7_n;EmDJ!{NzRC<=A%~)5x3waT<6qN*h(DjC@Fvn3{q{FG$>rgLNM^$V< zn3xDx3je?cK2?F4eX2%Q-jObj#a z;yJ172=gk^3-AlTgbIQ7L8Nt~;A(+96FK48@Lw!KUzKd}eAB(xb+ z9_c4k^NSpekY*|9vD&(vA5@Y22I)z5A!z?pKG=}vSfm)zd~>Uo(JeN<4;mQUvXGPC zkTmfM0EZ#_UMS%09WS@KwQid70Io)rF|H=5$JOx7aJ5g2y{*;jcckSRQgr~YVFjeh zBhC3g)+AdM%P)$O-IBdZ5=F_V9G9ph*-7GPXi+MjqUbq6oT$f58Ne(Qk^bL`l9#i4 z_jf5uX6>8VV>(Z@vi)Q91uz9w3)U*QFqI6mF z7x1Jd)-6~U+Gpf1)Ug%f1kvyw&g~IP`x2`Nwm@7>qhl4Z&oQ=5toc{J7#mlkLfRY~ zSAS(_C$Z)qxAq(xGs(4VGslMI%%qM-g;n%-)nU$=^aIU!OnOwhZWiRkhsLF#OKo*{ zOqC}reUsg=b4+*~KcwyxW4`aQ^%xUKDs!gjLB%GghR~C-g&Kyvyj63FVG#-iwGks5 zPa&p1H&Ew;9H8$*jgo9boNc*nolSPwGHiWq@@&40ui>%)Gb&b=cF!salvY-c-J^vebQZt@H8izEHeNL z!5b&z0US}#F2XlPEdsuA&u}aRh!bp=)jk=Fp1y=&vj;8SL?0VPtr`3QpR3LzIc1xI z(tI?E@`OvlP7GeQCI*O_eBWnif|SbFj9JW2ICRH^UdfXNGBtLX%ZL&@2dNd zisLt3^iMDtpgx`_C(K*PmxpdmHC#7uL+a0>QXbMk_R?@6?;?i``6Vlo&P(!OuhKxU z)7w;G{K_f$Y-xbp97qY&mwdcsVx}UJs z#mKzkGjVl5$oglkJ;&}oYfugw@d<|HF?OjAukzRC%|^P6d517>SIl>6-V*OPhOwtZ zHmT#l;6#qKI-22gSC@L2M`i7@;&UWJXt@>jgya;xu5Y1_a6SSk0zP;sBqYjkLJBJQ z0I2AwY!`_=QCW>|S*B;e@0Oq4TWftef^D95j> z7xnny#nk7E-4d0qd@gG9L~B6zbu2N6$T6*#Sg*0l1JPB)T4?3yb`c0zqBhq_cLo|? zoRlnw0cw;j;fA0O7+^VS6OGlNK#giC(w~^GNaYw?0~zgZB$(m^6Ge*UtdBv4>F_`G z=be*=T{L>%DNf9_%)glLKQZZzebMG13=mX1;|#|8#2TKRDDZe#pn8>~89O3Fk*a}H zgTw1fdR>`HIB7)zFC$Nz!fjN;B^FV%CV|CitR13j6kanXA{Ld6LlM6qFwj39J#f%D z3&9g&P#Cn|uWyar7kXU2p4dW2rwb&5un7lXYF0$bOq>LVjB_3gb;BBnn7if;Qtt`48k};Z!KP$_Z!ushSlEOD{YtTR;_x&IOUOFR%d-mP zE6@gMU=-qjMiHL!cIuV>Wxvs*TpCluv-O+U6n!1LJGJ|)TKz3nUIhdxxKASnakWdi zEYDy)m8A;Ibq(Z+vP6BP>k@q&QXgNnmYv8>X3xxCl--iOJ9}@oEj!y%SQSpEG)wZU z1)?_!f=`Pt*{4rtu_HI>vS|qFC!--w#e%6syNQ0RuQGGB4o)_dDp)<1Fi*oT*_*K6e+*ELR>f9Xp7v&SBDP-&8)=-qEBixWXm=a2X@RBbfxs_&{Q907h{d_@NS3SN1+7^tckV6_9x>@*C z9K?_~!Cve!va}OdgIxkw)5un27m$XMiV$fa_1xfNV0z01?9PXdT7QD77PsmQa{ls3 zpsoLIJPCpzxZlRs?9i`0iO|-tB}iFs@A$Yi2Di4$nIyPT#X1c#*QwDw!HRGgG{y_0 z%q~|8_6o5|IaWSrn$M1IRaCuFg}ZghD(T-xhm8(nO*3$%|e&_23A`{+udF{#7TX!Uw! zr(fj_G6FR?iP8bzPNLef*D6Z2e-7AP3YY^b!23=FRBNQ({h3l=7QwB{<$ieH0z+os=b1QjF-dNn0X9H)-mUjT=vqm#{MZ9h1Q1 z76jIl2=$ELgq^9Q=+AdOkmDQ%41 zc}fdNER7xPjv6z@rc>G&+dQR(0+J%#bC$-~lt_PIt0>CY0WSGe} z^7HT;cqz);VvnCC$S>Jf7k262CB*V1#b2$JK~`8<9Rryiv|Eo?(r4(I0sj zy9-i}U6|G%cG4eS`zfRzX3`^9%q}$Lg-%B~J8~*ljBAaN2{m{&%^FDeG*Z}2>y5H- zW9;;LpVDRLh~JnkRhavNVs2+Sx0FmgH(3RR+J<8T#+l9`A9X5;2=7~cYdI2+ZF+oQKgCCj;I!s_7srp;+rwxRq zC7 z^i1JhS(9(PXF2TylBg{>plE`E00ieiu(AY zg*~bykUlbMWsu}4uM}n%?kFtR``$axB5VPq0G?wkN?F6D&6Y z0vCQPpB>I;d-EBMycwp=)xi4Iw(Y=Z-T}QqPR!SG^izD?U_Fq1X8mWg3_%>NIr);p!xJ14gm*{#m zBtH{ezgyKjSRN$^PB~@SqTbJ7rpV5FQNT!jZa@|=;9H~W?y~_EF%W9QmH_WBiX_X? zLu@eUeM`Mp z0{=vuA)+=CA#>5(7UmMG;+3hFEi=Gj#40fMYRh-Pe2q-_)g=bWU!&;u(hSpx;(OGO z$YOCW$wlMHr={;v=WhWKtkZIzeWh1!0F^MF5*2rJms89nD!fm*Ou$X$)%NB)^nduS zw~m_noWt_n!Zj>3^2`PFWbGCSb&E%VIUA7}__@l|rTjzA-s0>@&X#iq)~@q72=Q4a zp2se&?#}t}y<#KQ2V!of{YHO`mS~;OvdJLtv>YYAPO52Kf+wv}oA9Jz>8|HCIa(11 zA?`3c!k3$Dtq5Jxrzk!>q3ndT#pye~6D8jCotJ_=eFJD+zC=QCWE^ECK@A^+OYBjX z4J+jOy;r5S#0%9u=#c26%bobK@AqkmJ5ut|#3LmPp&s!~mm2Rb1(P!Qu|zL7u!vtd zdEUIq*DPK*<;=>NNP;K_Z@%iPn`bv%IfvDpU4G-)<>hoRvWJniLL3`We)J*fXFbPy zkrmzLPrv~CfNk~b<@q|(%OsX{O+YC zk1sq=fBDA9^^;azx8TM`+)L82hVNKDm3-iM&5>@C*eV2(c9SgHZ*w>T+Df~8pLL~# zYAE73N;4c$Whlkt3Wzv447a_EkXtxq*yO3P9cN9MoS)2?mbty+>Z^N?Q4TWOkRdne z$17lFap@=AaX)+K zfr!FX2&hI?p#ifNy3qXk)1>4ZGn=nw(=WaB&6&;Dn5EH~v$s)!G*^h@=`@{%J+J4nsQX{8oc3nK2jj0IH**yfE~)oalCoeIoB)T-Xv420FH`tIpA0-c{Oj`d)Rx-Yw>y`O9T8~RrT3cheo+)xEH!N zxSw|KaUXJ9-L$md4yY(a4|B1y;>4ulVVZ>bT*aNauul3D9vsl;-HEr3S$@TkJ}7Cr z;)+H~(~6D3O)IaPeC8mN4W;vp?1Bp$t6$LZfD~=xezev0BD65P)f*6qHe?YhQBeB- zzjC^xqvLL9tpZ{B_Qs-H+1S+6xNBa*4O(y(7bHPwl)63jK&uO-urNQd*TwDeyVu}% ztHkdbSc9>tWvBh!rTATO40ie5M=1v`e%Hv-j!nHLo|bMaZuolohIBjJ?YHoN(QODP z`T%pLf52}9pXCu41gQt%1Djz?adiN5dt8h!Y*;+kKyfv5q19VzV5{A2n#bbmTXA(0 zjm>78V?StIolRG-1!R{S2Pj=F{S*Dfj;pP>ngms4m%IV4v8^(BFZHdNxke^X)Ef)C z2k%rRj3QYjxX+DwDh7Lc<7#$L?tG=j^YG(7J7`nCLHJj zp>Xsd_U!ek)=NhqbM#i$P5eBu~}!|oj}o`^AJNg?)j4S5QO>GQeYrv0#h5)Xu8y ztPnXH@Z52GBaR3M(M4Y7U^Ncb*TL+L7*zZs)=XLMQe?wsAlW@$WyH-~3k)-H8)W0m zK_*MKH=tWW<&laCG^T=ZA^dH2gv3^(gT-Lh6ug=wdvuNXyQB~>5mts19StLkl%|s} zvR8IClojgysrG>j7A&=#`OcvmQVxFXL9F{htOg;bR6;o6^JILcsE$frh524k$Ar(2 zWSsUQ_Ke7|U0_|VNF;6!-5%nlp~?`SA6yaS@nHWT4+TR(ei=;d@z&U-fV`NkuOf{b zf_s8|DniLYN4Gv$WaS&!Y$Bk6(J#tu37>ts##q!P`!vn57PANSYyS5RS^V)w@H|Jv z?xN?x?!xDNcwWkNtCZ`8+!=C79e-YWUb5n~3fVv!PRNFx^|7-k!64W+z|cuHa!EEE zL@62pt0*#-LN@H|3;erXQA9#!IEjXpRRgMV!n@1K6(l$%p2H;4C)G@j@@N1cG3;56z(5h)&5 z`okJQ?>z^m?xuB<9M*=Zn5rT<8ytQab%+8TLWMsFotKr~h)e+DW8%Hy#KRk;|FA>L zMO)y}{CLVH&uT|kOe4a-X%oF2Q`#^aXg1u1v;|fY_wkzoSXthV| ze6aO^^$Y9IR;7qogChh!{Tu%WKhBjH?}JWqKw+bKj4FsNk$eZ~i6lCd$kqllFy;z+ zMH$(Vib{H2+K~!D^F%B~pc1BXDI>`yc5qoaBUo1++MtA%z?8Z{UXViT0euQTzLrns zg{wEEzDpVFb85FDQi`V{=|ztmJQZ|1UO^^KhE{mPAz<5!rPjpd)FiMdAltn$Zyzt3 z0SS6jRS7FaiX7(7`r^=^Tx`9Itw133CImqf2!b}cTr=JM5K)O%r4R;n|= zg|SPt0=21q3TP|z!oL>O`-;Pj?xf?e;}}r|I|Dhnjl3~5GqebmgdvDF$fl?k3}ra< z1?B=MQecBZ1)zatw=R}QU{iam5S59cQE&k`8j)|I5}dMtVUCsv(==RG#)F$n_y3go zEVeoN`N<#mmu|K`xaHxMd7I-aAKvnyYI(a=fBTzn^jD7@VZ*-unhk2dc>m5V@4dHW zr$BZfRz*FPuxfB^AZ76SM31FR>6S!Y$WrhB6Et$zU%NuZqNvQ0MB8ybP#vzKHMQ!D z)q4f`>kPOe7Af0PzslL{-0j>;bk}qIO@8ig1W3h_5pc_ zKqLqhm8KQ|+~)(s5`mgfLO>uVgWp+M^N&w`o3+o6Zn^V*ZL{zGRHFDdB_SbF38q7GN!81stH&c7dnq`J$IIkPa5YR#cRhYtZt&3oMKC~vr^#UO z6CoS$KBEPa=z&D1Q66fHQL%y|DhmXgm^SlJ6@e^YKjzR`^u!4k>yVgBFF|6qMSo`X z>P=s>$Jr1z0kmd+)-V3Yrqy4to$TMb3zlCej*X&l!b0jAg+ovcXKwd;{my-1{r?iT zn}?mVo}vcqcUVSLZ)lX=;J-nXbbH4)twnvqU1JPy;cA<>`ZnY0Mk8*3dQvtq-pkW9 zIw|ts;@aDdYmImW0|p!TkI*T^0iu?`)5D&kSu8WI{n;3oV%dFNE@#&{Q1p1Hu)XdT z*ItrB^!Pd0Uc&tPu{Ezya#4^Jlo|9NUaxpYkvS~{*HXSFWmP*DT35pMCk%X;f$X>- z=|q}0EafI+nhb=M$i({~rH1r=gtjBpgoc4=x=aO8ZD%Ft=_%|dxpInDmW|EM9ay=c zx9hrhUOn{ryMMi8*=jIY+U{E@w@vA{S^r+2IK#0tfqzlzJZvr$OT5a8nycie*D{x zTiU+c`^Gnqq`qic&kA4KFsbV9N0z}!l+RK7>kqthv@-RjI`Hp5{&m|OZK-)lR&wtj z*RJ{9?Avu%p&ra6}_F zVxP8>@`dKnJgQfaaNF@i@Hl}GO=y=A6yZ|X;}rjTtQ4%mICPNk;l6@_Xkyh#3C=&g zVb?YK;N3q|_fj)zj=or_|3m+F4-DX8sg|eiow|!pqcx|9VHMUqhFalKi8D*gKC$j9 zDTDK9UXAs8e+Se@udEs=dN_J4Dx-2EL$>55Lt#hKW>S8d3<1fbXXYwAlEd5v^Dd!$Cv$U-}m4C)DJ9{d*z@}_mqw~lMR@UaJ8zR-Ez zwx)+huC7_X8MED}&k+4jvZUpSOC7j*lqN{$ z(|>4Zlu#8OJ1Ce(~uF`MTU*CN6i3jFAK5xn^ zN8e-TvAGA9>z}H@yY$2Q><($&;^LfZX57Dd>0|Uw z(Px~jCYxwAq`AWKDlB{-VjiOs16)J>OzjOfrN*A&EDj6?rzrZ7F*z{mFV3%=e65p} zIy=x7!5Q|V339lz%LyrsPN#*iQm|d12`wfd1eJg+k0Yd{qVE+#On!d#(QiKc_KWXQ z0bXWZx^l%*UXpr8z5VXHn}XmYx`F+c-JmbgSEmB#TnsPwgnqsLm3|V2H8|Yp6o9U9 z0$CAc&~7Mzb9)vJk|^|YS=Veyry|CR@GD=QdCkPz_4}0(?I&IhQTqv5C0p?T zECV2MVfCC4R?j(Dmu5tja-~ZWWp0)k^<;V^f6(8{&s8i=UanP&!`CjADxnf`Lp7N! zleuMwmh^|hmLzgQLb-xiWFm<82zX1aF)4FGwhQcAv{@}ec+FZ)dNo4qA_h{XSS|uV zpB3~d$IJ7_)eh-@?y$S>u3}Y%=Vs>)ICspYSxpzj)Ls|s|5k=JPpxs?<7?X2-iMBe zd%xc4zJRKGZ2=Gc?>|LAWo;J z3>^1e^J>DBUGd*fUT9JV?%3CzG7vL>zpRYFTXIV`C#u|_kE*e`S-I;1*Cj5wmy3m5 z=%p%JFuCt{{n5pjx!6^%SuSotT#_2x+zg6lMY2_+84LD?l)&#JetxV?Qrw}=_5tWp zUNV3@Wa_D51OYl7hZ6L8@B>TehfBe&1?RkY=mw|yhljVlbz~6uwcz%#wA7r&b zHZ;ik1*vytkOwKqJkQRqwKFt#7;0zz>?~;a6lCyGrDw1+&hQlGCkrGGbd9haXvZ88 z)XqZH81V{Ib*ICeK;^=>6lT4T)!8O!j(1+`l+j$hHvu%z z4Z7Ms*2^yNvO!)}>}85Kh-zW9eysLM_JloYZ?r3jyYEg!5W%wh?7mRgrCA+Gx7QvD zq|q8sYRJd{&q(IUej-kn* zXqrR?9m2FD_-6@O3`Q+8wHGvto3U|CGl-2<)wa|J?;ij8z+*Sgd}7t2+g9mcR6TWt z{;?83z_h>q4q7Us+2YBo_r3St9{uJ{x$A=&MWiW-^IUQjTLsyQ`M|lvZ0l4uUtOW{ z>s3~(vY{$FLq&7QsLJOBmk0T^ozizk5M1PvceLA~f$EV&OEeJ@GG+c{$`t6tv8g*H zhggoRWWJG=5emv%HqX2LQGF~Qyy@X#58tHU^WbhaS)cLfRc8;)s%Fpe`k`R_ui3e* z;Jh7okrhN0y=x!`E}R+z5;;6lgFyWE=?ikzk1~P zy}O>cQ0^vW_!E4A@J zu&Ds3@mV8aJmB=kstm<^kbQa9QDsLYbZ-J3Zffi(DGTsw$=8Bz4GKiePREqtC}O*V zm{vQAI1shsCUGh*LzhC1chlU){A-#j+bTc*mp%-dYpcHWA3uMa`Z1-yqW=|pl1n3S ztS^BCg@8?+kT@$mE;KpBt5LI4>r`>RN2`D~^yS!VlkzH%f)Z1grBtp&Vn)qKdMp-? z7Ir3s4E!KMa3~Hz;TVcPk`|&^44iX1%9#&-D!3g%b8ew&`Y}VRkA4U$Bkt0N?U{SU za298=O*>8;VrRC1w2yrd<5}#iAL|#tyG&o4$0xA``oVVnxc-($FXA(@84#_XVbx0T z40kDYh{}APm>}mUTF{GSl5&(l(2KKH!t#1xZd(zke}>IV{Z<~vUV6;2(s%s|tZ0&?LiI~wX<8!8 z#yKZDc{S8?ZOG-)w4+3aOVOK70T~FwUXqUj1O`L}n#IQ-XZ+lJ-$O_R%faN4e7D32j{9^T1C5xjMiG zQOj~ar5CR9`fCtNALOrss}+i!dP18mN2~Qx06vs=IjWTYBgrUzslb>3U*VS!W3FJe zh%U>u{c{pI$(&U=%{jYs_U2eib65_FXJQ^pGLjYc8yl2-dpx3eW}H4~;)Pdh?hHIO zthvq~()NWiGvZR@s{!(i)xcH(0|rv%PF->Sg?|`TxnkPpY5Jk(1~>;iryoK| z)d_vCKI87+u>tzKx82F^VFO^M>-vAE{G5^CnIWP$!tt$2s|6I4@+dqZ-Kx z{~^m#AIY{iB>c_(7K8u~`;YlmzuzM_unZI(HF$t?6_y(09x{N)y|6XSWDNDX10o6* z3Y4Qk?*=X}3RIeaSA;*7qzGp~lYj!qW>@4aBn}((pvFHGvEY&NiUT zVv;;wavyVZx7;ul*C86x5YQA$gVhl@1?@62OrqY43@vCS1S8F+#BszXCBr~~%QlkV zl3E&JyKj5_-uLylb(FucK_5L@xBh__PRMl|Q=gu-aVWckO=I=!zHtxL{RdW~z*z&g ztrBhGRT0~$MfkhRNiE=Us2l)qsoFAqY zMXm#8z>Lia1{cm8(mUR(pge{y_CFM}mp=R3p3VK3>&^#*7Jura)T^)i@9|V^m#_Gr z)LMPg-j6K)lXo-MvblJo^Waal;CcP1>^MJB=nT}`@RRUKZx#~43URJ08N9(cl`=AR ziyUYaMZyEXObE$^7NdfV0b=@u>7x>LGM~Y(Dq`sr*()eECyH3oD}VeW8@9Rl!%si^ zTOVV7R6TELORYtwaqWS(_kPqY=7k-IS^O=n7`u(O z8wo1*7G~dNyRmlKSUb|&OkVu**3=K|Cv%ID4DQ2BpAvhk)!bVTnFvvWPM_!WoZ4Hs znsP-g)@j&@FVfX~P#VEah+H*0>gl=@oAiYyza5Xs}pZN&}N!T}XFDW)PkY^&>Z0NgxjqR0<05g+jbd z@~RZjP)JPt=cK+L`IIqFym3;bBuO|S0ZZp$CUoaCRso-d4x^n)It(*Yu{N(`W^T-E zaUzDMhtV1*%(}P}UtxRD*O-IamK{sD?Pyyz-m29*f>uf>qsM>)7&!;Cf}9_*fs=?; z*1JN=NsHFtkOMBYL6$6F5{ArB9uWmfc%~!TM--GaV5-0YP-Q%cjcC|`o&!Sg2l)e7 zVSJ0O63Xk(v~O&=aq&|wo_tkb@`LZuYiX_Zg}nG1{@?7f6UUV4`cJ8A-^SB*LkN&= z#nThlg-?1rF>;E1j=c$OGy!)QWUsQ1Lq{!(rOG|d{gYcB>_&tt1f5(zRhlc^0YC#H z$Q4qpbU8#{QKop9=*Q{t_#9J^w1LBd9wv-U(VB3m39#A#-&E@zhymI(n{BG|4#eQ7 z*+SAm1%taCd$B^A!{t?FAY*(Uhu;dy0IUlYF`8i~1WXVnDJvaPHj)0rHv=dnh3zF= zY$!5>abeIH1}fwaW-2UG2qXT!MSox`oA@9bw-txjtmpNO59$xL@gMkWsk1x(OL_Rw zR3`n0Eh8#9N^v?BP-a4v!Vm>tczj+SI{4W=K%ZqqrI! zR#WR@+T@1_re5d)s9*pj5$qA3Sr{ryF)AHlTIHqF5&72QL8KmnaQ?UM(m&Hr{&3Is zH`!JC?3Y?v-}?RR9gj_Xg<0PF`dO&!NZZP{zZ~^=BSLq!2ku)i<<@x%*1Yk@N(~wVeTL}R`^>b!5{zOejjEzhO2q>aesN1!oy%{OBKmjXQ{*=|K^7Hm@@!L`_ z8~~B+;k#$9QCd%okYm4Rp_5gl&%_LchT3XsD6>fwiG=>c6FH>Y z5{(us6~gYf9<}~xRUJHo_vIh(ulNbB79*Z&#hD^0jmk`Ak)kMlYzJ*$+Wuohn@`Pd z@52tVFWG+(mEB88{e`p#07;S>k<8Z65Zz{x6%(FOfmb(#gbM9qNapaw5HArx&l6%L zBushg!_(;FKYW!hr{LQ^%L$EqJ9Fi99!1I8VCSZ{5FlKjfC{-P7H? zpZgs5MQ+*Y&U8~xl4A)C8bpcWFFb)qLp*?#NEm%@Jsuk%5Q$kn?3RsH+9l8RT3H`t=&pcgyUd52fH~fw-wD{Xg^~YjsVr-iHF1?S_ zVMicAuz7$L!oPPzZ{RcOP4VyS2J!DLou3JVfqyrxJN$l;_&gc^ZeWpsZot}z6AJG$ zB5h3AZSE*k3y?%W$Uci@qOXa|;qO?3)}ZGf5mp=WSf2>Xh%h?{ci<6x;bm3c zab7;y%ZlLYd6|kXjk%sto(9hhkK*w}uL-h2!Ow%dFvu{tEIAr%mVigdG8x5)ZX>8I z(raSX2*FGa68=EtoKqSF{0z}P7!3S@pOY6g26z8eG<-%#L)P^JIS+eQ%&-$yEfm0tD>S z&HB=vQ*K!I;Z8oTp3UObsrPQXCduERJI%w}hXICXnvh6b1NIpk8*Hn#{cMxxTUJ=O zt)BW)*YAcQMbsbktN;TsjrC^Yd=$=0a58dtey3db|{KnlJ`G#ynvJ z(y`t-+4L*woN(sWmi9O%{L|(x@5z`qhmR;Jw_x5b#IA=X@+|Ipg3F6uFI*dM4|4$Z zU?sV!veDhuN+JO_&L5E$f#qBdxrifZN(|(Nsl=*aARQf!Kt=)BZ1qVXhj`-k;qdNK zYd`q&U;YkT>GoT(Z5lC$>oEtMdx+RwoG7n_gL+a@HMKw5CoWQt0Yaln{*y)kBO*KM z<3OTuNecTgs{oT7jeenAg^hrK;g__8AsB@2BksjICsppEZcM;hN;-4^MGqEP&Sec#@i?j@(4Ylk z4Gu*?lOl?%84f078qna~s(@N2NH1CIKY_6_!@LH8IUqqG%2rby~B5NdhH6MHW` zU?31i1qx1xM!%oA8?CZ~vu^=Ge0K5YXOM*X^Qr5#|!#jHmz^v6H=S_$}8C*wi47I6ZlS;KljlYinl^lM=If%@iZ&( zc_=ut0ntI9fx^rh=A;+n%(FylB;Q`&Vc#*I;)__aljwI8OL{`FLG$_N9{lU$`hSih>GKJj$|~Py@s{Zo?a!tD&E~M{7E`vOe;06IN2!x2F z-n5u$BVxhvBXWFzk41MKxUd}_QujxOy1N~C_#DDl1R<#qi6i01N znb#eU+vF;@JFCi{Z<8X8k(rT25hW7I^X4XZ#o6*Wn;U2GxFZ7uCSgkT5m7a~VG(7a zUDA16&^E#T7w9F*zMX1hX$^_Mm~nW3y$%eMC$`*kV%gJ`&3}F8VF0=w zGH(Z1jxj}cIk*Z9cnq-*I%_;&lDAqM93@$4EJy^dCQcaS>E8wS7xLUh_hmvVg#1AV zb_O%beDXb?r2feV{Uh~pYbzf7pQ+bL%JALSxOr~J4~mA_d!=_1PFK7$j4Zs%88}Ry zv#`w;cE5#b^$824_^UJrl7!!%Fa)88Wt=QRc|j-1!(m6#m- z*QCem9A#I-Fd$F)ucC`7Jul^>=z+-%gR?CZ8-2#B|AkAdwdq?5x3&(;31!V_>cuz9 zEqXvNbuCfZhwR_D8N4f{9xD-*b|x~Twi+9cSgWo4E87WxiEJpzuu=GcUdr*rV0^Ut z{q7GUUqw!UCsp%>Y9>Uki~KespA{Jq;ju`c2-Ie6iv*2=wuAeSejdsb;4|I$z6;sXKXHDOAJhm#Oq0= zD#pnywx%#paSRIY(l~R_1~;#*Ep@03M{Nar^JE+QQjdr|*b{%#d4H?aClLj(OKFAy zWbfn(vnJ6Ykpv?REuaIJUOXMS-~yBH!d;XRC)?x}iZKYbe{pVIEIet!SS~)}NX65V z*Et3fUJ*7*-$1`qGF3S+?1!5Wqa_J1GN<1Q}j}apITfDP!~*+w>Xo zK|1y2mi3r{iTs5HHvxB)1)gCs04;7<+7W4DVrWnrXPIo_C^)m!dYmd^tF=@+9rM*D zMf>L6_PusXsl5{LRhJa-CMBm9^duE)*ph}cz}XcET+>f75Did^X#FN~)v!PdePuE% zLrtI@cpH0LFaLvnCfoCeKj;V9Ypg)2ACT%u{j0Cui+$7&$QDN*w&TPs`Rr_cvHm+b ztNo2Uz!oVQ-iQ^0_Qdmy7c00HR?S0LK__Z|<3KA))@q_WT#0HBHP{ts0`3wsg~SNH}$z&J>YAowJYCz4OGM+S;D`bMp>}qK zlnJL)pQx+?<v4N?#D7mq4?akbjuZ(X$zOlVzH0*iwN_P?^km#_yEz#`B=Oy_V#IuWLtMv^3#`@9`kUZr)c%`ts;;CRS+kJGVa`Z! zU6`}_2r30#)oEH3em1Ap863hi`D4d7&VHnQ+#|;~VuI~Sbci=!3|X~^{Q;jtXQ3Z? zyFQYux<%cs?p0+~wRvmh;2zr{P=3fZXL1*wNpjhecCRa`Vhfx0yhuA5U6Uzq#}IHJ ze~DrcD1ssTosU?@n)M0jHMf@MF4t%Oo;T@l=`Gk_sZIK0Tk6NqzM|+P>2ez+Bq&{# zIIq@yxqF&hcGot_Gv!6HtU?rJb+G?u04i#S05lYqhB%Hx(rX8+j3N|VwHtE`SiO#< zpQcDGAy8~IMZ;?~R*F8HnrT_*JR!$r%)g9nz+69h? zS%#bQ9hUIBtG-9)c8*Msqgq0kgj0L=gpc|knX{rv8OvtOh^zsUaMC`;l3^l-!-IaO zA+cf=Z9rOdu2*^rcn>IQpbTVBJesLLeck$D>z-xc9M%7>|GcwL^Ds7HJv*o3;i39R`cd?(`3TdPkGbE4 zxqA`unw-ds)k;*wvd4M|&LfK0Yh4Mu51>bN2nzN%uNCo$9Q;UT$z3X2uClr0huAfE z$6*3OdPy&(V-$F|luAyAD7r@|@(3207cVq0kpi&Fw%)&S;{ye3S{hXt;>axY<>iBLfmOW03cmX9C)v?9{Zp2$AKdpHd*}S)Yqmf!wybB9 zx9p(P)ad#^99QrH0mb~)USyCm1t=}zpwE}C1adDIV&uk&p4*I)i(bKKOa>>eT|mf$ zauK_r+&QtFog$_;XhZo@@Piuc^lfauzSQQJ{uw&Le>__6M?9g!S$CFteMb9B`c|Nm zL?l39eBKeyJ$tHw@gaKnL8@KunkhFe4D76liL;EYUw?Cu;z1EFLX!FWWDfK1rwsMiN*;V>2=5^vCFH( zE{}f~p9yPac9iSHT7mKDbe-Jr8^k|8PKC{cpPLSgb`bum#F)j{U7$@2)B_5 zeJlJtDs8dbfM zM9OlJ)I%(^|DkX{Nec`OihNM`18YY9kw~OcMjUp40c4>hdFLtfRvGEc_jcqBoX|Kd zC!E>m%zg#zyTNJw3GbmuZ@L!l!&vq^mP(&JoX}^=7CaxZYK((*GQ@wJ4jCBq-cYSA zgAMTvPJtUK4l1xHEGHl5t zKoYjFhJ<~Q9RU$BAOa#PB8s4Zlp>d^MXrT_*jqu-Y898O)_N@!epaomRqFNHR>H+ z!Jb|LM>yfvh-A}pJ)1lJR^d*Ay-d0+*~@z6TFPbAr(egNhP@B{E#(y$k|-qW)(Y<) z`D;|rL|96%H$ku09f4+xj9IQt=Th_&93?SAB=#Y6>5R)(G(=fbl#K~#?{Vp#9$8~j zG)3H#kQov6$I#~M5*F@~kbo;+(5VoyVsxAmiG+NtnqZWwMF6E4cxuQ&P5KbV97n1G zgC}1O4YIK8NbkLfw4u&lkxVEddj*B>RGV>+qJ&@7xJY)73!IK`Bg9s=+H2nHfQGPF#8VXyBjn<8gyQUIKhe(Z&CpYxyf*NTuS1EAOBs zvMnlda1Q-d&2rSB5NGO>LGX9;s=qPdzF8W?#>uasClHYm&UEFGD%78Wq)?IOjBoM6 zC4=~1^nGHBG-V6g&VC`B7K|!lG%rZ_-0B?lr|NIjqI##eYY}@MrVZ0*)q8}WfXiIr z#QU?X=H^y9VsLezwN$R&Qc zc}qMmUKEKOLo4i2U;Ff4`O}FY-5%#9b9~j_fmt9xe^2@rr3~@uuOhdW=e|U12PaDZ zN1wj;Z8f8$^?Fzz7#lDn$*lSEjj~fW`UW@J+!*-ML-)!0_ZxbVmq>F1jPNN0iOB8b zcTv)vidxNGYqc^ac29)Qjq``{YWLh$VNvx+z~b4@5(MaTjPV6|j7?w^E4yKoqp+bd z%5GDR=~F3%1dlB}L)?zlP_vmT#i8M-XIPL`n?)q5>DU-qPS0xDfgnzXBp z>gd3DVzJW`#F{d!q15Q+E7Qnt_}+B(%_`4*gIRrFo>dbxqy)8$r&iUI*I#ZEPYdXu zv}dpBtsAHLziC=(#`~I^r0Q+#lIcTc}@-XN){uf%+W5UxA z>4MS3sh&5eCD166GWspD;FSr2r$x?(&vrx{stT156S9SK($T69;vg}P$3LiI!-aF1 zmqp=n=FtrHBdIe3^5qlU=QG^L#l;ip4l6JI!h)h0D!0dBeBN$)!Ghc<*jO)!xE0;$ z+U;WU?MNBOcJT42drkF2&06r5fv{;q+7LZ+Ab|6RG!zWwVnJT{%KxFK-w4(35%WuVzr~=EX{nG zOpl4AV1CvY-3u1oCVVY@w|3LUbr9>2Vl7ubMx^XJNHYukT%Cyl<#v{h%v-w~s?iR& z+g#4GY#vGka0&blwYpr-vWZd04U2rodGkdmOy)GNmD4_o@>++;^N*ocMxA6HJQa8( zhXtNWOX4ZQy*{e3zUQ;u-Q9c|J$Ui(-Ijaq+0yromXR)WLiH;8?E+RY!bK4+9tz%+ z6@!m*F)Qj~R}~%Q0@eT@$UW+H-yhx=<`;##!&}3`R`+A>r`>P5#jrc<76u%(RI#c? zPgrrWN=)4PugJSETZ!mY>#R7mH3(V)cP-`j52a7*-0j{8Tt@y@lz_Eqg45U@% zUT2%CST6f-e)EIZGjZwd-z@3=y1pRVzb0D92YVax`IFK&OV|A8b?>$XyEe7MFKV@*ZvWK$JKb+JzzV^yo=RjaBP+s)=E(0E^&uKeS{%8GeruJWn1VbM4sy@L3=aOP9VppbqH0%hSwhmOy5p zKF}KI4r~oP9e6(QW4NwjYO{@z@SCb3IaAm$-)4hStk4hCZ-|| z#!4!b3Mc)=y=U1ApZ>r6e3m7BGf?PB%sRJh*}(R<-(FIO$`rqZnlqja@9-JNdE?hK0NPWaOl@AOrtQ)=}oCoqX&nnRiF5>o|e zv&%^}PWqCI1Wa0P91nJ|ASry&>?At^)+VTb>!fW>Ebp#6Z`~&ioO0kno_}y(F7tl) z{Qa%B-g4Iq!okfJv$xLa-Yo4x+7YkcoO8=&q?Kh(exMniLr?}>`J4Dl)oJ(*Jy^em z+<|AgFd(ryQ!+@N+YG!&58}Z`53>q(6dWuN3Xb}ZgEg zoLxCT$q{mnhKe{UdaDEtRJvKJ9jb!>EgrSx^<*5+>Pho@)EGofkMX#Gq+J|Vu?ye8 z6^BLe4JQ6V#~HXxf1M)pBUCJg>>JV$3-LwHDsnTHDI5^;f>yyN<+zS^HW%&;x`=lM zM-6%Th1pHb^LHOPx_>%9vNv}R|3T=^Cl21T{)q!y9({DLYWGc{KYkLrDf{UkKY7GJ z67Rb~&+hrrvF9G$dt&|{Kl|*D(8E7QKGkPf4PID~^AdGF_d>N%t<$N~7dyDcte#x{ ztlsgM<7vn94l&4>+JRC8Y9SoaX;XV}(_nww&TtUUU{70(rUj=^=e(3FYhy z$YFVfKwie+-Oj0~P=oj)o+1@O3=Umqm5L}8mM^tS-)woL{ifuq%^McpERw3$moB7VE`? z%jwPX@=i~dhxa=RoxI;(Xs7hww-R}FSMp}vojSfdar62>pJet-IxgT^@sm9-94fVJz z)=VUCxU4SoFn$t_U@#dcd9AP^kG1E`%3F~qbo+F|;KGlO?BGH9la}>Nj-_cP| z&naIWIbcXu{QANfB&nzTcMu)OCdTniA%8jS55bWtw~mpnK)j_-k8!H6SA570=Qkgg zp3^xt9btpj<_)ZL>89SLcinkQeMw1uqNHRy+beGCJW2?s1Wqva(PymRA66ZG@;2Ts?Oy%I{N1bBkiRe$Y90OR5}e;F zmrI{hTkTiA6?zhQQAbn~t4Fl`#&q_bh=kLea2Ny!FZxv7^=F0e3avuD?>f1buC}bWFMH zSIS-I;jY8MmM`#m@?G;7nEKb|F>4;<@>m}GCdA$iu`?ldG{hbZu@HBPW0X09``vIe zaOPjVTbg_~Xovg&>6L%DTU(+WcMHpR3$r6(wl>VHVa9=zpMB$J@A}ypKRfDY4}zG7 zLm%Jb815-|@V~ud`qewuOFvca`1G~@DR;EWceJu2R<_p4tl&DvBYRS2eVL?V!*r}% z$FeB1=^wgywX3NFxrsqpf*I2^hF0&!}w4Pk1E zA(G1*azJta!p@d!?8GZ+HB}&HNNKx3q+^Xa2#AHjtqv;`w6@@Gr)8Y-q7l$Oa&v4Zr=uItWB%;@( zalDZ)FfyIdi*S4=kfZP-nCUYUmH2g|VVr@_HZZlp4NpuP*M$kZNY*IIR;uh;t1T@# zNsBUj)!HVl5CG7DkL29p!}#2g1v%l9Iqsg_MN?ZJ1bLg-|p5#dGY` zrC;(ZYr;i^-|+{RsD^&`>>}Zjp1rSZ>=m(ab|Y3dUY2pC2@5yzyo^TEQJR!Yz??9k z-7@jANK_g!{6=<{D@KCi+!prso;WF>>aP0o-$l*-zfHmC5`V`we69i7=cxZH(`t%j z73|MR?go-oH08qeB&#wHm8_iIz_IG6xW=*CjI@(ig>R9|XX|}W7$G^A2@eQ`OAqww zF7J`8gPr^)F(w3{J^Ka2NlkPt5HXVBC?LL3S*VM*)dWDMbw;JjG`x8+*{#!$jOc z%uEpR_?F3l!u+%qkF0#?p_K>c-~9NB2OeJXtY6G@lN6vm)ELM^;5%EHEUBd3ofC4 zC^N1+U+qPo4GJwJX2S!9m{uYp2M&)0k#mYI3%P9TU)g|FQZu`>ar4~oq|>X}Nr_vx znVsCh#D|!_=KMp_`)3e`r$FCa^FfB-RO z;Ne*p)aN<&k$f=M)0E)97zBk6j|5*T5&>hG8V~1<9k!NCb4i95ynvJ3Yjv<|%+=Ijb z4*QD5(y%&ZVMp(fN{KmyRmEaDL2Q$1hD&wqh2hL3y&=8HO8E=DnUDa#@6F&jiR+ah zTS{^FLNI+2UvwDthYAD1MnY)_X~1Uy28rmXO7M?<8m=if3beO|G)@a(GX@qUKR7|n zWw$Ij0f5Lz*+7c)CC!#rlB^OYdxpWSDRIZQyoga~QUT(WzZo8Koln9&LXtt-(4Wvb?-Dx6p+h>(ozUqJxie@V5I~Sbb#5@tXzsN- zBVYP_x}#$TbcvtcbaRW-{BkG${$r_z|NP2&oQD2{Nvp*w);wV0Ghra2)g+D4W2Hw-}57<`}I-u38;DUIoK)XPXPK>D}Mrcd2jdxHHsyHAuz^&Uhn+bq^4Ray;P`gZs~DHAcAup7^pK#$T|&kN>HRln1J%6&wmL^fw?0?3Y}yn3rr z$`xs7Gw$2N3LknzdVBZohf#9jLU)Q=v^`O7>qOxl zNDv(nAn+XJJ8=AYgC7ZVACL!>I{zJyR>)i+b};r{A5;SA4jnzT zgFu5GLVX8Y3|)<@Asf2KY?U^%RrikhSe=)*TWCLgcp7hz#3Q37Hue7iW7o!S6Ts;Y zEXw3WHHtwQj0w5Y0Lr#f$OW;$D)oz8COR_9|#op!#-vBg+CdYw-52{ICe-!sog z=HDBBt1Kc?#vyUAmM9XL^2U<%LCa*km7GjM-2NJzh)OaEYnwH9|H1O6x=aQ(SX*Sk zitRhL-Nv6@H)Q(*wp_Mm;c4|93%c*SI!EupH|Ym@I74ushvs5CUjpkwXAvB~mybBk z`>F9G#{EuKI?*1u7)jPpV-y+V5#=m4<>r`0CVQ+&U#S!VMbhzd{eXKGuYY_a=z-5} zZ=TjMY{+QUdkYr6KY7>M4TqlF!ycAupBk5FUoshEw}{_|RYMW-ibNQ3EM`%)%DKC! z64l0cA=q#P_1o3FivLvjEq9Jwpk%5L$32ib7!-!{)5X|}tU_AJXGyOiMR?Du8NDqK z=B4~rp$n@8C5PdQU6UBCPdA3o^G=TUoj1DA+l~0Awea2i^H9_HjPsem&GOp0PIiKO zh5HRB%moHe|BC)MdSR}f%}swc{nhjj(#3RH=}Y^>^1I+CDrHgQFqe-_nQIdxCA(9I zBm_sk{D5}$jaGSFQTOn(MotZaCsVG#1d=}f(ueq>|l0RwvbKE)fsS>CE{)I^KmeW#pBsJp<(RU6-yU( zG~6`1bNJ137I)n;e@@r@`CW5_;f?v#)j9s#Z{HMzp}A?3v%9-1n`LKjbvn%#bJ(IB zmXlLnRC@(VlQ_s+gn#2lkH2;J=;@6ztqyjfJh4zeu=?aj3>}mJ`Ux+<*9X-E|F9gQ zO0U!yf;L>67D!W)>QaxoLsi zDboCkDoEApstRPTM^7zUbc*L#$$}SOTyWXCXc0*AEWIZd;Y+xq4&VwUAKIT;xR z@mO{slpPgS;}elcVti$MLVYAsKOruiuNah92~EuG%}F1aEFbZ8+i;aIiWdX<-w6Fi zk8U0|di1dMtYp#YzrV<$FDy_?i=?+s|D9j(g7mgf1fHSOixz!%h?#jF_nyP7y>pe< z-_L&N7^{&jY28Jw8_dCyZRG^H_b36nuL^2P|jXmAht0gkQ>jRA zyfmY1hlYe_9j3e(Q?KS{@iTiL?cK}o)HoyQD9T~qxhaxt7??gNKC7sr%#fCoo>}NO zxdxWG@`DaXFyB=+Q0=_jetDemlg|r1;ZWEUs;+A+zU?lvH)P+JnO{-h%gf46OOI97 zWW~Q7*x#HH4ThruQx$psNXPjJ;Su>b#4otn{>pKN9)#JfoL;7eLxebmV}cxpU5%4g z4=>X*>Oy#LT7fBvYa0d+_Hi|hBNTFR>qyJUr$_R!1~BIO>RMY{xR!8BK9_IJ=Uehy z@~c!WNmkY3Qb=6oEp=VEQGvS9*^HAAQmI&wjo}PlMFc%K?EChHJd|qS+A)&YB~CNG zGq7XqV4BJ;#z-sM#}ji2^GwwvCY20tFP`@#tA*2i-I?`^9%v8i4f@Q?v`TAs_KeE1 zq5T~A*;Ufg|G)vBKm7HM!MP*5C(QZL@?rL^!rSwoxOu?%WYyeJvAf;96$!FN~`Wip0$zZwMam);Tlo6gXF2gSbGKB!ebRmz(m5)`5 zle4d=Hf6R|pCu|CxUMkHbpnAsJ_baoaFr#|KYGh`!@H>8<6YNX}5t3w$?Rz;kvsv*7knPM}xWxKyWn0wRA>L_&ic)T>%N_5V(8KrGL z4oe334EVyzD9wSCB*JKr#!ax4YUtgnl;lJ(ka(O)WRf@~3UoEY_R0-mzsc(a+YNYi zW#h5ctqX@{>fI6VfsJDNqiGS3K6B{8)+vj82Hzs~t=;2ptaqF#-@~o`Nhz*>Z zS>+L{bI96bO9$V)aOogWLJwNH@aDlwkF6atZqlT2>`!$|7q1vRc*WwSb(7YO%E?bo ztA6dZJMPXIwGMlZa%U!MmIKFGf<-~Bj5F9683jxL)EUqSvN>x$=d|2-b>RRE*k2Z3mIUqmT(jgs>^n%S!93<7M^I;n>KkK%lBM7Hh?GytTZdmI`hH2FtS| zagMMB){PDAD@phg*vbi`(N11K``R>5h9{#{u8WH1ypDw!#p3jxMO@w|Be!5OxxjOb zb*CKMD(tqH%PeRjtmu|oYpXM}GRulofzs^=6+Y1jqw-8SmT0iW;iY_N@+**Ifp~G0Fo2?#kXlFwTk0P{KSHv}P7Ve_ z5hwx{sjqaBA?7Y0Y`|260H27beiHK!y!PX>2TxNy#_`tnKH`GKL?Iq@tT zThtpmo8~O?&=DuRcDX|N9#}VO-o0ZYZd1VTF|Rk++~wmEb7n1TQETbd_xe3GQQ6O# z@AC!nMUGMD9HqIuj zrmMZavCke-qWXFryS~>#^1knNx})lFVCO^;Lz6W-zZJhmj|yS^rQ0(yI8U=TC&?9|JQ4^hGV&wOFZcE6!fzq=ZLyNl8+W?f0|o19hmiY5oRc6{8Q;9&#G=_pH?}n0`Rt;pPY%i{ zbg5ppSPH6#mF5&&et*v+ta8tzk37ofZhmju@ZsCu+kDqM+lCDqXst?)EAb3nI%%+L z(BsqJd7B;h_cz{v$m7;P26`|PIb0NxXK6^apOM`9{`3QvhAgphhGtp4JJM}y7pGTn)s1iVn&@3nX{y}TD*ddvh# zIC5=}{t!zoCygeOi}ov;I3l1V-Gq?8s5Y!$V$QB9@Hn%|0_o*eYgzt=4XSr?`{(<# zi;k$RX`!^VpaZ1|=L;$%YNO6Il4sw(vIcqQmSa?cdK*0KaN7R4q*O)lGAOgMV!|#D zDC$>l3*@?s27Fr^kJknY)6H@8it<$>avnw=K2C!imE%et1`#)(xU%mkDlT8mgTwVu zFU1C#jrN(;^~aR!iH!Edm7_We2GV_%Im-w;FiAT5fqF(`W%~gEu8W^JFqP z0^Ftk{c|;!9CgK9(UBs)h*n}4zbh(=U5e(i+?txI0%LKpzNFJyAaect2l%Saw6M(J z2}|0Bv+6HpFGMLOA*U=6fiFP1vI+9ewXKou50s1#NAs%& zjc^nWDXGqW;$-231E1W>9LyQm>9I?@q(@FkAHF=(l$M=_|E8HQvusqpV6*L>odM|! z>Cg9ma$rIs`z^*v&d%8k&A0%u+F}j#{2X)0)f;Bd0dx@dTbeqFk%{@6jOi@BUjezt z4styl{~(5#hRtKJVD9)PmSZw;elxSU!eLD-ZQ2VEk2u-LAt8HQp?oa?5RxK~vWJ>% zQ<=pT(UTC>D+75VP6LM!b7Tm3$=fSpPM(LmSI9v?TMf=ZzjR^WkDXzysIu6d`t}7o zHfzDTs8QFq7Fl=s1}z!?<1r{ErLt;4R?s_n?4FptYT)1uKpD>V9tm~L?h4KM_fHxB z@Q+ci>c4us*%)7y(^==14%0~hSH8F$64edt*uX>xP`im%qtWc2p-#?i?gTOl zZg`80^K=oTGZ^BaWXTvX0y0^D_qx1^p~2u(=rah3o(c{S1*s}KHDF&y*mqNQzS$kG zz5Rua((7u-a@^kZ2icCV*tK!B;7hPp4S_NYTPP zprvSFN)nKtMoyq*$TLj20{D;7Jnr4sqca~{BDH+^We+Qq-n$s@7?Kkj*p)zf>VjzC>pzF)S#QIGink|{cd^YmO7D$<_yEvKC^ht zL$yss^HjNsTaPT-f5)qLCnKKy7LQpo1L(KM6r%90fBKin{R(ymi%G&z#emhwNiRY* zt!QSr$!Jk!BHkHNg|vn4s6o@j!RzTsA88A#+cHsF%m%u4t*an+WMRsPq|TvdC=st{ z6$GtP(pb@3$Y>mD*LNiYOf|AA;<_FqP}n{8p`{IK%11X0Te^L8cu1n!6?K)B$2_ao z8QFemvY3_V7?5065?$!*zxwnh;$V@gVKkQOtZw5YdZ5}KKKRJwJICZ@d-n%2XfNPP zX2UdKmHi|Uv?5JOtFdX!7OP;>Xf6bu@<%BaGuM=O&~L`*tF z1&I$-`vz}HHR_J2&fp6k0lWhqAe;QI@+K7^i3kzkU+`#)2%%g>Xz

Up~WYpX2pC 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 diff --git a/Assets/droid_sans.ttf b/Assets/droid_sans.ttf old mode 100755 new mode 100644 index 767c63ad000e3eea20f3cb7a43ba9f4154ed7a5d..efd1f8bbd882a6a434159fa1da7238babbaa2fb3 GIT binary patch delta 6326 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 SFT!Pb6RzQvBlQ1)>i-YNi+%3^ literal 190044 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%0D=-PBu&{ zc#2hK`b9|l`YVeQ)TwH4>9GfoJGg(314d2G|L)$`XI0J})4S`nsccQ5WH7e*MgFP$ zB75IS%rBP;^WPA)fPBq=g(T)$IcZLzy>^{c=OBA6@7a~v>!gHdk~t-8x&55O3!O@P zo$4%dYVCCw+V@d=o#w1@erm6~JCjw3z3$=UsNlDKbpD>BlDbl^wd!*Am62;^Pu0iv z+I4!k>Gqm%xI5ThCnY?S>`Zj$*w0g(KJEs4o$B1^?y%QgoGfp+y-ssp_T-deq1DYP zNy@O->6~%C&|Y`v`VM>D!#OHBX-?Ies)nl5DpqH%E^jE$TvfYaOI_8PwGEkfX6EPS z7EjEaS6jQLx*~ISZQX|2y7Gpq+M3C8>T0W2XC7HzQ@^BQ&8F(|x|#K>Dr#0&)MZY} zjDNSZqOP8&GxH|r=IT%72j=Ul`pojohPv|A73<6EPR^{Y45*aXtj=6tz9n;IMP^;a znyUJSiaJVGRg<}@qOPHwbls-9s`}MctE3$DlS8@*rHdCJQS}AMR?#%;*Kgv& zw86qEs$9=6H|dHutgXnLxuJX&iT!3`X3zlnlXKTLG;EkQWy-0io;tZ)KQ+0wZq1Zx zlSloOg@?>8TXbaEB%Wmcp$ZnNkNXFd5;@omsX_0*zc8+6{DiFF9-m8tVIwOI=dDPfKNOnR+e-$`xjb$P0E-5RLF z2JS2QR>~=TU%?Z?6E$2(O)GU@W|E`%rO>Id^$dPzTG6yjh2{jQm-M)lU=_ItC#~mi zll>%-H-xVmD91EL$|;SKNXwbKw!abCXwRwnP{`e9x#M|F)^%M&YgD%>M?Ie`bPhqv z$`~<@}h)4;#dKk0JPV!*~aG1oau|jAAAI7~kphT=d3#YO=sNlo}mIZ4P%9J4c`sj&zQ4 zj;7^~A;NSlqvdhD$8~~pB0l5_+WPy>?anz)BO~Os&L5p~ol7|>^(J)EPUSflswC%Z z=PFL1`Kxn@^DXCmmF)b=`M|l^+2#DV^O4iy+~)j%HyEE~f3%hK+U4};3-sepoadca zoEJHD=4IzkwBFBHg!5D9hseMl-j4mb^Q!Y2efDSPFTC-vj{Z0qKCXrvZl#wt!U4iL zo8aJ6;M;ed&FIlB&gssX&Kb^w&bOUy&Q@o;bC%;f?>P_Q`LkuR>Z;OIH|H~FuS!?E zDzADvt%|i0s<-N+`m%*UKh<9iPy^K8v+^$2iK#r5&xnW;i`5atnvYaRaT3i^b&Oi(eBylS{LXnt z9jlh}lFISw1a%_ug%zq?tyHVjYE_{s)f%-{RjGCAWL3?aYmM`;s^t};jjGQ1z4HfE z?|heY88&go&8cd$+M-TVr#ruJ-co0*QjgRU->$9y^5$C)Q##U_FuR~-KxH= zZd13bo$5R4yXt%D4i+fxQvad8uYRDK)DP8N>TY$9x>q%`zU2mWzj{DD$O6WP)Whl# z^{9GGJd(qoe^KwL_thTtf%;JW zRei*{87-^~{#gB8{X>1CK2@Koy{Z*q)%!ZjD>Z*4`W4I=7zpvo^V>xTm_C-7W5EtUNr! zJ=5LlZgaQ0XSqAvv)yypRQFu>JokL}0{24qBKKnV68BQ~GWT-#3inF)D)(yl8uwau zeZJ1U-i^37xHq~txi`DFxVO6Bc5icUcXztqVRzo|xp%mCy1U%}aKG>Vz-@AW=-%bt z?cU?w>o&Xhx%aydxDUENavyRZb{}ycbsuvdcb{;7>^|v6-KX5A-Dliq-JiJ6xzD>V zxG%adxi7n~urc{h-T!ib=DzB_=KkD`xxa8yT5VYa)0Z-?f%Yv z$Njzg2ltQepWJuZG}w3l;=ad0gL~W$+z;Kqx*xg!?Y6job3bd-Vkr7 zH_T)0u9xYJ^hSB3y)oWcZ=5&Y%kr{0qiTXT(VN6M)Kk1%FVD;O3cNyZs#nCh#U);; zH_bc1JCIl658{lA8Qx59mN(m*hb57UVQ}7yA)z($?*np*8yBZ@~`v9pk*O#xt4o@vNY0Au%brq*nq?GF< zb!P3F+M0@!Q_D@-ZT70Fx>cLjS5{YS?zSp^oiuxOZ9~#3{z;j$s+{anR-0rFd6zeE zCrN6VrG9zWqj8ngj9b(H_Wzw`m!Ya6jEO4vVbz2Z8(QRG)I{nauGNqr~=4MS@MMX_D?o!pNl!fK1 zHZ@eFRO=*tVd8Vu2{$PVP5V^qBx#|vLpA@TEHb~ZF~47w@RRhKgqxH_=Jz$GeQU}$ z)YjvtZCG33mDQ~ADr(lG9&X#A*0#gprX6Z^(*5wYn`+jS*KJx~UB0QIdu`%f$`VtC zI#Y%v31rjj5^hqKm@?Fvf_hxMca!PeqiwD5YBg^jZECeiC&@?GRn@FX#z(GM)BWhgI(6Tac$a##<$_Hn?RHGO zgxyX}xIQ-FdQ1E|Wx1*AX*x+;9`aDyY2jsZb#2X>`m~u+7V}tnc$qr0On;PGUZK-& zhu2q^*RM6#wejopBNG}Z9la2WNQ$X`azkxRZGHFERm2JEaq{IZZD#d`wdMM8;wo>++S=qJtJbV9_l_#xlxj=kEnZvY%?69>s|=Z$rRkDiP@#CVT&YJDkY;reOrPiAId39@RQ;52(FV9QXiPu0KEq!kT^;-ofPI9d@e7a;C z6su>uVy4?XO|RK6^-Y@ovA*nDURhO@mz$ek5L`{o3$OCStN6Et;b&9BtD^9#IJ_ze zuS$cfqTKK*q)`;m$SVx<%L{YK3vBl z%()=UxggBBAk4WSY=eT3MnOoUAf!MQ5e!F3QJWK{-P-SMN#;RqVN~RVX2D4vJ{79DGtk09Ohgc=3E@+TpZ?H9OhgS z=3Eliw&8fJRXDZl(#Q*G#LGN2_$;@y zB;}Yjb>*0Kr<&v#JtCx>s*|qA1Ztq`slipsvF5=oI?*LW&~r<=>!_?YBv-Gj?!Ivo z!+_X}bwq4a)>qYtiBey&sP5GeZK|u) zpBCliTYluq_D@kBC&zcKsBggHYN%M<6-%^2Lg;JL8`feOnd|y)l~tz%*Xi|?rN(}d zJV$F)Ea17ba`QxKlIC|`MI64G2(cd6yD+R)SJc<9>!q!Ogn_VI!gcS2>pD^G73rr{ z)YS&nO0TTlR2RRYIKfS~`l`*rb$4C1@J<&pxJ$38stJE2C1r{r*QUDU+~?c-0-F}v zbgE5@Y+7v75}TIVbf!&bNjkS|?p&SDojcp6b0p2po2%*O=Fiff=N8P-^hq^+QcWkX zte{MuC)N4nm6`IA>gV(37MlF>=N5EbU0z>RUc0$U590KJt^sLb^5JW1>uQo~^}k2! ze>cg$x+DcA$J_#wBWXd>+S=NarOQ@URM(!WpDMIZ73Laxg;P!W3#Z!qB70wC>QPu^ z>QPvvOOabxq}!2HwpAE|CfQr(WEx*bV%JCf>lBsJ|+SQOCH?ZW4}U2+SHE&XCk zzu3|*w)BfF{bEbM*wQby^ouS1VoSf+(l563i!J?POTXCCFShhcEd3Hozr@lnvGhwU z{Sr&R#L_RZbW1GV5=*zl(k-!cODx?IOSi<*Ewyw?EgeiZ;jh9{OQ+P*DYf-1we(6Y zy;4iB)Y2=p^hzzgQcJJY(wk}PIn&m2rlmjA(w}MR&$RSsTKY3B{h5~jOiO>Jr9acs zpK0mOwDf0M`ZF#4S(g4ROMjN7Kg-geW$Dkd^k-T6vn>5tmi{bDf0m^`%hI>@?B)4#mr9a2gpJVCIvGnIy`g1J(IhOt$OMi}~UuNl- z+4`5+`j=VyWtM)KrC(<2UuNl-S^8y`ewn3TX6ct%`el}WnWbN5>07;7IM>pjYw6Fm z^ygaob1nV3mi}Bzf3BrJ*V3PB>Cd(Fjh@aeoNMXNwe*c1&z)-Z;8d$Er<(DC&kg;l zxrYAKTtk0quAx6Q*U+DuYv@nSHT0+E8v0Xn4gIOPrv6i{o}HR&=ugcx^`Dw&+J9=E zssGeGQ~#-XntooHkxx?nJ*oblH27YZk9%D{Qe8e$T|QD>K2lviQe8e$T|QD>K2qI2 zq`G{hx_o(MMm|X`eIuXTTlz*mxwrI%%quhUNownF-nPGyPws8|8~MyDGxAAl+uO(^_qM%_JaTXAYveIM*Ny`P zxpVu*<2BlT#yDJ=@R_!l<+DEV=frMl_n3}4$!9&ZAsXgnZo^Ev>u-bKn=iwk_6lrS z`M$cMvY~hI!Ak68K0A7L`%f0mmKjr*c~O@Y$*gJNE*(S^(|Yddy|vHx`|ilNE8|y#Rt$P?*ySUOMz0;eBXwccTK;Ol_Uysgx!FZ> zpFKZ&X;w}4tJ&{nznkOaypgjfb>W1ECj4Z=&nJ(WJZ8erb1U<|-)&Uk-l@MU+*`P} z#~AZh^kngz;IH@AlAFz6=^dJaP~k6oepbyvEA3zPL8k?O+4B#&+Wy@`M1>rtBb1VR4)hB)fZMjRsHkq`RgaHKS;{B{^FXN+SPUU z*B90=sBdn#a?|Qla!$E*^U^IJoiX@~r_Nlk?fmUmp0(_(56>QR&eq1O&%ODgKVEXm zrJ0w$aoLTRUwcKbE3UjU^U7oNuMC-(-|Wqv33(l@S;$ZyZtdTrLZH-GEIQ*z{!YqR9vARkHP-h3~=6-shCG3WU~%p3F{!1uo9w@ zwGi2?hFHRSh-_zWYt)$s=7R;TF=q+sQQ#Q9I~FWw9mesbJILp3a1Lk$=YsRV`K`yZ z`XQTH*KAfYWV2Esn>F@JoIA+lPOuC72lzht0cZyIf&0M&;6d;Zc%0w;7(7XyPl0E^ zbA0{+cnQ1$UIQ`kI@k@~1U|pn13q-JRnOL_>J9pWeqfBVMDbpuDsn1SF>4Gw)S>bsTc-Y$Mqw8_bB(&S3Siw^-{k8)JOf2&)x*T;`&|i z7w`|t{t3VRl=L&wy`-&92Fq-gxa{%bX0DqACW#p`Y_Kv%JuW4FSj0T;GYmIv8pa-Az0=-)sz5d(} zaF%!jxgX5+5I!5$+T@J@Bf)4e7K{hkU;>x~rhq(90E+ls377^B1P6f`U>2AI%E)^j zSito{um~&$@Vy7$drQGGupAr@P6V{AS4+7z@H_a!t0QIIpw|H3d8|4*oi#nDtJ_IW zbjHDxIUpYtg5uVQQ-WNTl1_uC4}~Kq_yGKs zwnG-Z0j&{l5a}V{P;eMH92^0T1V@8oz_H*sZ~~w#9%b=XfeNq&RDqMhdQeNA)W@r* zjRr_d>)O>(v%9GMeL!l6HgQj(Mz;Vdd18ql<})ev^Q13>cgQsvq=Mc+N^si6<`cQ48e|`ElO8>@e|N8W=PyhP#uTTH_^si6<`t+|)|N8W=PyhP1 ze|`Gbr+!e$bBw=K7H)d$FYPy_UU7vR%oP;efrp^ z1sdt&7=0Y0k7K%zQ)!WI;G|ZczV_*BpT73#YoEUM>1&_9_UUV%7Hg!hefrv`}kb+NaeT>1&_9_UUV%zV_*BpT73#YoEUM>1&_9_UUV% zzV_*BpT73#YoEUM>1&_9_UUV%zV_Sn^+1PKpyj32eTN<9X?1BypH}i|C7%}Y;d*Ha zX#t;FOHHH(J~i;Eflm#jq`p@M=4lE(+~mVeeQs9HXCO^mB}Uj?vFC`ZtM}Q;2 z(cl60-3{KPUk9K~hLMf{Bf)4e z7K{hkU;>x~rhq(90OGt6gEwOE2AUk+m=14D*Syga-P0S4f*;1{Z!@s5GO({QLO$8S z=Vt@@lU9q-YB5?Zrd#b6o_mt(r@%9`LXoypGO$rHXoVQ95Tg}hv_K47K7_AVa6=KvlMvY_CI7V$_)HX(KW7IZAZDZ6nMr~u%Hb!k@)HX(KW7HOX z>SQp!WiYm7=vo>HK%UxYybHMBmv;LJ-|b(M`Eb6`QdUDHaQ^-^(cSdpy22jr%f%}%J~08wnbn6JIS|0PSYMbs(`lb_mPGvGaFJXLM0_Q~7+c|N3ZtUQnVSx}E$#CXi$Ik`x zz`*lVgd=@yek+Hs!vA&V9zLBxM zk+Hs!v0gZG-+te1JaaqP3BCiq3%&>L0NCKfQ5uP(G!jQ?B#zSP+zb6?QfzW!DUHNZ z8i}Pe5=&`x9_G78z@y+X@HljT44&k>D0m7y4W0qd0`V`OBYgq91jN^Th4eKL1FwVK z;7!op2Tegzx&VA5?T_|E)8ory<4PQ+5#L2(F^y^{y*7+=1jyuiB;H_h3nIyxs`M~-_h=h*p$LYC05f&tfrAzO{2Pk z`>ROtw~5s>602z>R@10%g*I)9{cU|=@_e3q>Pu z4}8LBpMh3JBn4bFgU5)JN_?an$ig>T295>dPp=?d2gIkQ{Mc!Y+PB_DdKUL*1M#!r z7wmnB(==l9ORT0*``j0CEq?bU+~0}aw~On$!9CoI4-Ov?x5;qt=lTIs>O|Zo!+nVK zQBwNPeFIP@_m_ZvBxWQ2TijRQ!~F-`e@KeYP7J5f{h0J0fYFzDO(XG|Mvs_-*9(YG z-=F&d*oyy3CV|Od3djX{ zARiQfLQn)sz%+0mI0(!DvjDuJV+#vNCBCqbRALN^NF~m&nDhwJC8QE>IEqwa4ogWT z?m&Ox7fIZw5#LB+KaKcD68~w`aR~a*TSFL5(ud*wv_yRv_f?`D{MtE`eJ+T{gQMuc7&_3zh4CSE zY#2Wh9T-Cg$_N}q-$l`PQS@CDeHTUFMbUSS`}L1+YG#MyM58UL_NocSs~Cq5X)my!D*UVyHOwuv31m(fusX8a!hUtAYO(M3^oQ50Pi z3**ERV}M_EoM9U&v~`U5TvGZ^#~c{1!nngFT;I)i_mI*TI#x`3p;w~ll_+{8ie8E8 zSa4!&LSn)n@cf6QeKsLw$ z6Tn0;2}}l4KrYAw`Jez4f+A1?rhx;&L4a{4j0;Q5WC8aQH(5w3v6Drl5kjN=I7zveVn~#LXkWe2>B-TMfXYl!KKBs-Hl#2H*u_uYp`ABIDOT$M>V@PQX zE5k=hV^|n5EQ}b|MGPs8A*C@a3lpiau??g&hLrM7CZOC{5;3GSh9wchk`O7a#A2un zBRI$MnfSFUNZ}AH28nG+G|+dqkwP0Om8hVPluBgK$4Zdspo!LA!nMRn?je;}3H_lX zLT`{lA1T$5A*56yi1Fy{9_~Nj{zKBgl70kdrh#RHB_eQYsNoA1Rfnr;n6MLaBwMtC17^^sB^DP;$KKp!BbKJT3dF=1-xP%DR$JCqu!^pQ#*sT4^RDfIU{_T9nv zcrQqhj|BNhkdFk3^!P}RkM#IRkB{{DNRMyFEgz}ykqU{h$++bs6+TkoBNaYU;Ug6? zhtM(J+!K!N4f?=!eMvJ&=~cMg#Gtou4Tr(q!r4BY?ZeqVobAKeKAi2t*?u_oKpT$s z;b$R6lMgrfaFY)=`EV0w%Yr%J z5T0K^YIMHLQ;5!&xeC$wGG8G&U*;@C=gYi>=zN*G5S=gc7cscWw>n?uF+}IfT!!d; zpS>MBx4a|{*Or4QDIRD9PKv-u5jZJ=eisikihhs6RT1>N%*;p7?@{!76V{h_o-yZm zev74wo{wOOMXH{XmDx-PL05+5jZu1o{ysEqv-i4dY)N*%JyUMB;Q5BQ{ZXv40sm& zgz`T}`T}?f7|xEs*%3H90%u3y>A=}3SUX(+)&%-qEV2k(9a*O!9J z!ByZ|a6PyI+{*W~T_`orbNveV1)xrNmLfe7q$h&(L>Ld6@Fqoy0xvRxC4y!XjG2F5>%(dHxcfH&Pa{QWn8u^zjyb z#)=3QU4*eB!dMZ(qKhDbGOL>?fe|Z#5i5ZaJVhT*(Z^F1X^bF^5j;g7Pce{6nf(#7B_$2ofJb;v-h#BUa)gR^lU8;v-h#BUa)gR^lU8;v-h#BUa)gR^lU8 z;vG|ITo&5FB zuCOl|@-6$k==n0rqUWpFwI#53k0tVERv2Zl0w{wOKtzE+DcBA!1XqBo!7ss^Kvu)Z zN*GxM!|r0_YHX=oM(*(6*Y|+;FZKSt@o!~p*yWo2u3Z4ef@=Kn@ zN))L#wK$gRH^499l;L0$7z4(EERX{xg2^BkN`vAGjYR*zM?4V?*~P726s8u}`~KY+S65pmoq!#)cKURcuzVSH)Hp8}%Ll zO>KvY?fD`22>k%RXq!{)O|dl>0I~DL#uNLF@-h<3C@dqejK1P+$*3zMZcNwL%*~qm z8h*>yR+(5`&7czti+UOhNvtEWjP_>*{ethYdZ?eVaKy3^t41suv1Y`I5eo)d+IrbT z`XTs;o=O8^sfd*_7%Tt_fmj`j!4hy35G!LDSPmH9wN(KLx-N^B-SUvFHRvS=9v=GQohI9cF>kc=>ZNFwu7}yY&+&a z9qU43JhAD5Gmte)kMo-!gP(B!GN8p0*S4@?>O@9uu}O_RN_p^Q}B{7U|jG9Inp==YtEuMSKR===CzYxE3$$ zULb2`kSe`y=0VaQasLqMqoj!*n0Q}*1t0U>KLBN81dTC*8V^j?)C}Z$5Zpi?X%FZy z(!+sxJx7A00ez>voa0E*OpHvQzpiEj`NBzzPO`!w!Uz>(EoZReXQFNTStP79(wIxq=$A}J+#~Eq227| zmCRm(X`p-SH(b!l zW>uFu>2MFTfXvs#*Ue69ZE+-)$4Uk)>y9hBX7HK#DLZ)PY#=63R+Ww4O{J=WLGYBPI|kLyeabHM&u?KZx@9qa^& zzV?&cM}hEz_}uV>_PY%i;a4X_*FpA#MPiDnr; zeFW)9Krax@GCuoQ(s5usATOd>#($qcil0L?%lPqANX3`W1Lz{6S=y&plab*iPFHwI zRx_pJpLNIU>$s{Z9#5Xs`k2G)CtjYJnb5q*9=W{rq*o=+AP?eT&Rj4LNSyf)EUN{i zpBHNmJi^47^9u4K9{PVN?u^VmroM{U^B7K28wX^?w|Kavz^r`QcPx4%&u_s4?mQkX z@tJr$TD)M1NsA}kJ}!Mbb=bvsc%xf<7>5O-chb?iWcnteKKG&W$DI+i|pvLQ%_M@c#%DDCbXT0^yzlm?7C3Sq8 zci3C6)6riqxWe{~vEO%cYb~GGqIGt+iJr2KRyc!2{qy@DO+oyZ~MT zuYlJ;47?6@gEtu!dxGAeFX#uhfURH$xENdtE(ceEYr*y420(ty^0Y9^(?X=Mg&Cd} z^_SKbq+`0|DTA0acA(GfaB(a4^VhfSP7C5|xNMZ|- z#1?lC_z-;5+Cn6;g-Buxk;E1vi7m{0v@rA0!puhtGaoI?e6%q0(Zb9}3o{=rL>gO& zG`0|FY$4Lv;?Z_Q8e51owh(D-A=21Fq_M?25l|lXWpCdLi4oP+^j6#V;U+n6G3x9) zw)kZuKY9|jh2eK=Ubp72e?VDDnL`Mbd%`0P(S|7VrP{_-!en|2F3)@QR{{dDJV^z7gH z{!_4*Hv9=u*>}tIQlZU`7&lmCb4>HTIh3N^*A|T62A$!Vt*X)`Mv$`_1@5| zu%@}_B4hE(JH9@#^!Pg**p0-j%$snJll~Y!90~$!9Xk;oj$yIOySnC0II#kV$Ll!% zcCPV7i6i-p;=Z0yeuVF^J&7Or9o~jBBd~do5S}MiZDxgK=J!rw%Hsbp%fl!sZ$ZY) zC`tMd_m7f(O!^P-DOw!AR?prJASOJJ>srzcq|86)Smbk2mJXf zvc8DtD`V^aR%Wp(f)%^}y46|Y;oc36_TKFS{|`LdL5%a?tlBbO?bD&v*NYfiVB-e% zZ4v%$30B@*Fb~WJOTbaU#Li@`=9gPZaR6JWW0p_Rgkt1h17H!pyffULlH1-u4g z;B`P06EC;J$_(vc^+W=CgFc`y5N}J?#SA6Q1g!b)uu`L#&xm=49@iG0XU0Rxsth8x zSh5nIimxs<@hP!vB|a5jWqd35#BYd8`FPUtmBuC>C2Ner702omp8X88A}xC5M!1WH zS)WsmHM`SnMV;k3rt2l_i>y;d`e&>9EpVDSU$0ghcD?0As`d-isB-SJ=I%GA+ zZ@7O8ybaz5d%y?aL-1Gd5lCFwk%lFm4iZ;*^yfZU;W3zNJOVuW{jFX$>xT~InT6mm zum~Iu7K0-I{HIrjz=L{q$Wl^SA+ih{3zmc90A7k-Epj61Nniz_?e@7Fi>w%t)gle> zbAje^;Z$1XD_dRFjrD4jLie8ZnDo-uvBIjGTFDMv5;dqI#f#FB1J>FqJRY?PZ07oW zzPkb);Dy{?Pu;ue8HCmRW(|Pn6dn`5k1EsO`Bg-*a+JKx zyJ14<6d;k_(||;K&jee!K8qE~vI3bkNO~1AE9=y`e8)Rmiubj`2=HY*Bde0HRa;Bv0TXT6g2DsVN|*N}>o8`?2w>$hcyMzoJ4<smz;A8@ zH-VdhtU~($U7qi?w}j4#M;2l)B%T?#hRH)h|E#5t$- z<6gX<;(Lg!=XYlkA^ht5OKP{Tm4flTMC6U}mGq64V^WdhdN|)mRU=Z>_U-Yrc*eXz z9&IB{7t*)#HaTxU>UI8?aUHx>ZY0aRS#BgNqP~ShT*tHWmbsBG*(d+Ac|92%bWuoJ;L>Lv!%H8;=5=GxewN8~4((y<~hxd1x zbN;{io@|%I(N>QxGO8Gv(<2J!xwc=Cv9FaFSfpRY3JkQ-7h7?$l9GxZt^%D|24WQu zd+ls@Grh)O1bTTSkhKM}u3$XK1{1&}Fa_j+0#F9#0g2g4ycQmFlH0W1Sx{p1=G@$1 zl@Kv#BKGlj8d<6TPw#D)L0tkq7p*InKD`7_hkM-VH*w^>yTicY;0SOeI2s%S@R;;l zHYbptL|I-5?F6&aT1WpYJ`TlKw9mn+nG5ED`CtK9Om0xaYK=Nj#6OGjPTd#X(O}=} zraH4fZX@s8!A|h??Q$URP$%wkAim$eb~$Kk7p2fsT|gRO27npRV3z~&1NXhl!M?}j z`0kX6J0Zxp+|jlU>?yNCzcYJ^H~(3Y6YORnKA!AWDywk*Uus10!(`_G@xx^20P(|Q z=K%4;Waj|!!(`_GpBY!#IY8d;kljwj50jk(#1E651H=!Lode{357{|D{4m)8)#tr3 z*#*`2R+CncB3*ii%(bLw6mK2r$)we!w5#kYfb_?AM~(X_BK7~iT5^9HGVq=Lm0Gfh z@#E{=ZHzr-lz5D?_q5pLn}PUQyc;cVT8T|gtWodr43~eoy^s@a`RuPj(`%3Lf28GQ zCye-P;@7=*m+@L;b>=sFc>OE(@G>4*+kL$18C6aJTkx0yuME$Tn1k8Z%fvg(-d^lE zPn@F(%O!(YN87!=+InV9#2o_9tckcoBlgF1JhLY2nKcpj=xiS^>zRdbV0V~hLsMqLIW2#D>n$G40E^z8r|9YocE5BVN9Zc=@d3wY&UKo~SNQ6{+Za^u5mIDsqxo z+4VrIN_o%I#1QckIL#q$v-{ZWGN)-GX8Vh_e10S>zQRU)((TYTUIK4mGX}+N_b>ha zq4S>B>i=%DwM1SWc=4O{%k(z#%zV$6+dCszzfAP8({;=7i1z2{0~6U6ePFmwVsY^Z zcVcw=LTH(2bA*_jNKAx?vx#&Y*=w&85@T|KPLQ{Jg`>?r8~d2eMbm$?PleJ^f)qUy zu+?gWi%CV-p{3A%iP|yH8FB4s<_F{#mw>ifQZ%Hmz6GuWqU$2$sARUl>4wG#-{aSM z=n^8Um-0-o8^pDGKLhiAzbhI_W;o)%(Hu(zA^h?Z3w~q9z zp1aa{n%&!kHw{mi-P^9@UdCHF%g4-7$=q1Hz1z~EbWUIL7Ar>jE|?b!+E&g95?&8@ zF0crMJB>wFruGBy<}8J?|tbv5+8)(!{D(vU+DKftGS2k zzP2|JrxUs34JM@HCTwo@HP)xI$bJlu(oT<4!XNY9Q{4ZO^iA%64cMDj{SLo3l?YEa zKvctJ_QpMfYvw}T?EpS;caSnC$^Hwzdkf#+$-WA^_{{9PAg4hz+I6n7?}G30wu^q} z`Ej0k0zlh+5zBaGt;e%2qfz}Q*FOdS1%3u-J@p#j{hXBDRCxoUQL#g)dIPlIP5IY+ z_8TC*{9Eug_#Jo${2u%P{1N<#a=lAFKG%OCWsfYi2QBm=bpFa`{|){I{tnvDvjyWj zaWws|^Ex=;WO|Pn8Qf%cVHQq8ih1)QaVKWkuSRxamOX1^CuZ5VMs{M3!DX@&v+QBh z=w8cp1l$UU@4DXw!g=2ZP2etYH_w_~nq|Km*$E^HH%8&asLT77ngfOVo&rz9?a#Ds zbe|=Cf%}(v{*~6_UE0{CeKlv&uDr{%uic!@9$mDbOMAKRf%lf9k@3IbOBvkkLT@@Mz0%b;*QTm1iU_cmccXq;C$Kr8BVwRdNu0Px`y)oAxMM7 zLM0A*IFR_K#6BhNDKXDufy6o)6LgHToK#|)64xaDx6f05VR|v&KyRjlD z1}Dj!nVDY@4Toj_xmxZCo_P|y2HxT~Z-e*22jH(@FSTUVlk9cC{K>6QVhxgB3&h$V zS*zm=rY!nXt+yxxTr4Y%41Lj0fo|HxFZq?$MWTlS+E4S@vp~uq`bKn(=oz6cdZiZ- zO7Zu(+v}43>5VUr2FE>JTJT;g z#sL`vME^JGzKQGqCUk!jr-hkwujnfz!FTe)8U>@CsZ~&;7^7aiHovB(a3D2;i^CfE zjCN8ZpV2O;QGAD?#GQpqjpQwkM)z@^eS+VZ8u`>HsEto;d_A(ss3s$tsg2KQ<};f4 zjAo`b1GH?%oMDXFoM#Bk_$>P;NlAszqpF46{uR8wK9F?A&98P=QZ&a-EWP`{gIvP} zXpknxH($MsmG}zxzW}>Ie7&J?n~YE4-o2rwIf*u02h5lfqpyPTB<5n5BmJ^dl-d8x zj3?$aFWCppj3>d)r$(=s@xq+&)yy+SW0*CDVy(zn@iH@F=&UCF=%+6B1ImyuIa;?v-E{B8p{1Be|GBdPm0*fcXn%Ia8N9-HM z*|c zH0AuvY|dcF4)y(0Jo7RVZbtSPBfHW4)X|RYa;~PF(;#PS$~g^9jOH;$a~a8-7{!|y z!Ho`b=%F+uHeKtVh#j3}WNzYI2025s30)NN7?qt1&_`|G*bID(&gRYcH>Uh^w&)jo zTT`@+j7K}M@x)VT3T4&!GBO$n7a83dQLpj6$f=P}>_+b8B-nrOS!eUdGPYrFAg_UL z6?u*8SNtu#7WjNpe6EC@lsezhP4sSD=ZZHWqex)OMYSy_^7;xeBTBSWOT*~lXsCZh zF8gTNjE^cb|Hs=1GYvfV;TV`YuKP!e+>SLA4$Q0E+)&M?Z zjCDq`KJ@cfKHf#Cp-yeI1)*nCPk|CVMrqrgAM`NyJg3J?Gfsx1emFi3pd__mBd8aj zJkWW}h8%A=7Y^PfoC^X^D)6HI%{{0DJ@}2MWJb_`si)-3($aRj)1qw>Mia%JwVmiZ zI#25~_OZog6g$LtKif%(WnzPLrq>d6n(R<%q}51j z%u1^9ke=bYxE?bj*6YyP4cL=+A380jCAd2h+Y_|aX=W!&u`|$TVlCTvFHtb<-*vRo zqB;r@*Z57k*1;K=)s&EVW9`k0#dR(a&t0sni@`1+*44d0tg0uprf$OPj^cGk(A37V z5>5RY-z8dBVpR!0a7J=ME#ekaPz%}D*m$USqi@iHR+H)&93G5}TRwg0t7qwtz*{|o z>+OITuKR6pCzM2kw(SqG=Y1>(iBkFQAHbi$e}lh)xOXC&Qle45J-=AIkr?m)w~aFX zE3E42omkb_aB%2b*k8Y+_QIt>t;KTwygm#1E9k3$1HWkh41()y-+XCnb}6&8ZTI&2 zcUVa(qw`Lnbp?FX1jJJ&mZUvo(GNrrI$K4GRcj)s_(1Sj+p}`0BCGf}p zyES0nto{1x&u_d1?Sy}T<`Nkc+t|n;k#J%IQFb58z^h{pi1c~BkK4%`JIpkgS%!`3 zpPgk0W*E%uf}EMwsQ%0tMa10BFf`gYL1Tv*hEI5g`5)dkHRnDCaf5xG_h@Dt;%7dZ z=uouXY{M5j_p!6thC8vmI?gzJv2!71_Cd~u45CVA210D1Mr{k383@sR8^6R1ggH;L z?F>ZJ&Oq$*Y)KuNYC8kbXlEeWo;hjs?M6ET(fRq4Cf>0TUHr{DJM=saSV-3d9Pdj_f-cpJ|g=Toe33L^EO5 z&G<6J-9j6}#METwD~PEXpQbb46aPrRNB=mfXdv-zg4nkBH^#2$I3xEN-$~ntK8}r% z+1Qwq%U%667pu1@EpzU=W zi~GcyXkU_Ay-Xkdl+<{~!3>SxCO%My_a(lj#0G-eeVY+LYPbt9+lFT>JA<)zCg`lD zrgjp`ls=N$WfKF)CI*o0{(-#y1pXWRjr+fYPeA9j&epXa7}h+S)kW}R!a9+S$cT70 zjr3WtK1Al7WQNSF2|0swJCOLJS@$8HbNsxGcy!jR^N?60<99+VQJ<;daALTfeY^>3 z5_jG=Wi#9OWhp-mWr;BCs|2HUB*^H7n5G`+1rtfYMxrg~5v?C+d2~WtAGD7cU{le1 zGM6d3Ac`(9@}CeXNRa<1K1__>kVruk`8TtEaX(Wul_^b31#yj_Bxo8mR8X3jo^cgl z@_AsiP=^`R(4XuLMWJl8PRtoZ-v_g9;cO^#jIvroxYlPzZGZFWB8$S6veQQ5JbHXD zI~_Mht4cIGpcG@Zk<1_HxmQa~B1uBc%->x^dMl6!QsR6ZJ%a8sR9PRRDgU0d?VOuW z1Up6qJARsrlwwRUGKX<>baaQ31S8>ka_v|mvnxs45{WhqN@UtX;_4ksWMb+)C>8NG z9ZyfS-msiS=fhoM`H6Qcvq!A;SI=uL6U?@l`QHzm)3r7UT1H~~q7Owgynz z2a(dmy5CBR?gEBGP5py@euZa^tb~#p_It4Er4M5RvI774thsDU-SoikpbYg+ImuE8 zb2Yj7I=2B~pYjx36`Wog*quHc^iS_N4+ZA$1b6BDUo~X+893e{CPeZ9{1(u?;hVy8P2Q4?+{jNv1M(8IAZm z)>pK^8S8aFz`vxj3PwgzcATfYa@uIHq9s0Fv>l@oN6QGkZ~fTLsD(WERZ{F7S_y&1 zllozMT5V@6f_B=h4Ihct>b1{YWZV!A{k$B)-P5IgouO8fh|MME$ciR0qv5+;2jjMA zkNu5+jO*>SLpbWmcpujU5yvGqHeG#06k(*bnWVSH-;a-hzZ2~RO<7YbqwiUyX9HO) zYosvf^g_|SJh&H8&^IYU>p{}H!nj4LG zEUU)a+a;za0?WXxNBz7W`3psT~)usy*lyyxj(GkO^PD_TzU&oKOF-v3 zHy9PZxXyhe9LN4QuV6PThRiDVcwG6L73}+3!5+Lnkr+vnnV-Z}?8e6q-mQodEs%FB z%!+nd4J8pBiRPG?^8db7?Pm4s*SE6WV=YsJcYO7ZP>!4?)x=xA*{u0q!pS{L*jK-j zlUcK!1G%0~Iv0y*9+(dnppll49tDo!yJNv}-cn-yGy5AgIp+Y@FgmnT7))p?G4 z<_nyc02Us*j7HgIG|DccQFa-Pvdd`H@u9N^um&L9Ri-Z^Nk1@#b(!Np5i42b^yd<; zrvd8BIj`BA^P0^WO>#1Olinv|Bj3qhSz7_IAN#JD?9gW4#N+v^xR!Uih!Csm!42Rh zekX6be3$eN#x*k^%=<`O-wj<^uk{GuJ<9##{ProXsShKqyulL1^37)ClQ|=qE8>k4 z$}6W)e@ZGRQtu^|Q>i&2A)G^AfgG#@GM9V`*77#48^L+t0&oeqh0pKgH$?l8vnYNl zv-8~F&;0|WKLQW)%%h~wlggVRuj@#)M5&t?&3R{u&-ajuRsIq98~1+)pE%P!tS1jk zopB|Kg)K4PMn-vJzRnV?Y*{BNvERloJ%3%q?@GWla3DAc%mA~%98gBy^S}bG7lK7# zF@Rt7PB=?Rmx1NrcyJ=1y}Vk=MIU?h@MSO73rxokspK4s=?UjpOlRlF>2Q1{9A62? zS31YRUB{E20L2YXC1-k9dJWuv(Hxc}x-`X_<4I^8@m@m-9Q0aUSB# z^boZRsWdHj^W4bE%)ZFFM%)j6*_yPbOHP5w?n5`E`XWO0wP8EO2` z+2VZ6-)YW2oKKw7ozM6?(`i-8*{VF{IcKR9mE!DBT~rt6Y?a3OAm^was;9#&vFhub zr~0XW&V_228s=Q2MyL_a#cCw-e2E&T#yeN2iE5&AmC9AQ&ebYki}>_f6_xHN&}C%~o@qTh#)!z`0E=RZE@Q)pB-X-Kkcq)y@x8CA+aUscN;}xkuHi zGn{6%Rh{EJsm|qn*5}lP>Qd)Lbvf^w{#0GXP9Hy0*Q@KDU#J_@ZO-dzC$j#Q+C?1w z_v$X>{LiXcH9LP%52^>9_tZn`3Fmz!bI&d68TAwAWA!|d^iR~Q{CVmZ{3WS3)NfR> zdRx7#(v`2?QyFRxe*@HqsznV{AG@9!=BBtQD%(wS(^QU|i}2Dd>KyQjEks1kRpd$Bs$y~e#sEpl&hZ&k;*x4A!5$GUgB zPpCC+)Ma-H_i6WOwb^~veO7I8pL1VSr@1e?uc)o=f4M(X+ufhLud5yI?*FeMb4f`k z48Z9B{ilK8777s&5fKqVL_|aiaRVVDk_aMlapW4baVv;M?IG>`eo*t^s-ae+HV|B| zlQa0{XYg_Cr-s(Gu10ode|2d8?7xnzhtV+*&b&^H0It0TC5J5fK~_ z1Vuy|(MF}AKpRnUpl!to(6+sOZ`-z{yKS%CinQ(22$k92#39~wDvLfsn=K8vzyGGp?sV7OH;@L}2Ie)u{vB}pm zX4rMrHOoWgH&%>fY@QWmF0?M4ySV+maFnr`0p#oF&Td}{It=K~gZkFFi&nM%YRhZm z7+abLV+W;g%+HFGK2B6|AG!vpIC6Y}_S+-J;Ny!_hV z{H`FIF$wM4b&J}rntkv2T=c)di2jttv#(vM^pe)2{QW2&S~7ca%P*(iGnq-jBF2CJygb2HWwLYtp4;vM#xJ%4$8mSfP@EQn^2j_)WD z=hu?%kiXw}@qN=Y;~YFtm?R#HI)=ruo{X8Azuy?!W11#fif7VEUQ18po7ryWW7jb~ zYO1V|O+&A#yqw9%m30sBdyr$)@6e+=o}!)QcUUX`66Gw4A{%v*q&vf;FCr{79nI!Y z+kJ*i7|QUV^P-X(^RQbCi}{~Jj6Y0yx_bQ)oI*^}on*(w6G%d$J)3Qj`?K}>JXWHc z$F5g)uvYypwwRx0>!o>YJodqOJ|253hFK|X!Lv-ZMY_N|cs2+7VeC!Vsf-`{I_%4^ zPs6@|c2Pc)RpPoevCH#VrgD}o)_n--zGEkJ@3GbTRXCTk6Y^PhLcbpOJJ|{82>Q$G ztkdn$o-5xV?|tm&*lHc}^=ENDih9{>9(Ip@8#}6lrW#zJuL*7U$37NqEM|K_vmfUY zT@}lf>pL&#cJYn6N;Xp$We4P^L30#)9a|>tVLf%3EK_%c9gtjXx8&+PCVwZc4;b>; z0eY_6CCVS5I&vS>-^r$d)->epmEUJf{~h{gEG&P@%s}3F>3!lO{}gB9b8CY4xITux z8vFIwdr}$s&ukTFD^d2bX6Z3jEq@&6KX^~ibgc8dyjYZPMSdUbsbVb0*#Z4v&=2|W zy)2C9mC{L8h58fqAG1pA`Pfsz`)a{=;{6r7@@{90WI=N1zGG|^LKa7u6XytIRhWHHewd<486jPu`dF2ebbLIy5Y9X}t?bwD>Vp`*YE@{b9eKvzj$2}j`B zlkszF{H#5175P0;=Npov==;iZZD(g!9^nl<7P#wnHl(uE1{yywNH~a}o8srI373S8 ze{=R=ENO(@?q@yW81nnyo(b;)bHKZha~$`CJ;HzYvosQP&SP&SWKTLzdKVvCdl#*{ zxCC5Dx)nSL=QOefI4|bc3%ntZeT4h(uzPeLc795@)4kF8iQ@14L_UmjRp%%Ai8$AH zej@Ga{EO%hwvOZg8J>`=bE7thF+ZGg={Ino)Ozw=8S?1(N5 zK2ko(+RTDD?-lp3lk)w{MQuVh%XED@KhuB4_9}{K!z=nCEFzzt(HQl+nMaJ7>S?TmOB!#SU+{%?YD-zqbh;U=4tn_p?Nmn(|0(zt=cA}k zb+!IHI<%SKm3{}x*RjV8=h+F`VJ|((Hk76E$Jsz*Pn?fpykr~hW-D|X!Lt(Zqlx7b z&h@V_oqPcH^HV&-j&U8(&19YMD5@GqJ#I!icL)-hH27-gvpXb^IR+=$OqCxM46 z&!iusEMwyl)rg&ZA#Y`V+R4Y`9F#u6HFo(XRtbM}J#^!GSz_CiHns(EO)JF*6gNnt zAxrG?H}E;;*ly`N;qxgTs8$%;hI6F?e}J*CG<*Vn$6y1YtGcgPt72ypu$N#TgMFFq zF~k$MgCFGot*jn(TXoGSzmKhygG?3o-C_vc6Nn$4hR>vZ7dtKNALAQzjJIK54gZ&k z-HLr+{JIcl@|S6#hf!3QI7^5=F?Pl$;n_S~XX1JX9-PD;Pbfc;cIth08xP&v z&0M5^A~uNo6QwHlp7aE3hb*=jCbOQj6OKXiGW}QZiG^%0V;Amb>|!0xwK#*6i+u!M zNUur$&@aOWY&Ce!^qIi?hs20nfX{v>FFJtUk7-A3%y zb$$=mgIQSF2;V?@1>Eb7u^r+J4B~u3hjx{fY_Ps3^e}!V`$Tqzu&%F1ncnDg0oqyy zobLopkc<8;oH6D^TLuMkfqkXA3BQs!C;SV^R@jicL3)Em`Rv3wK$(L9f@7987no_>z*mepStKaXk-l?nD`HuV8`IYPJRn zycUbAm!%+R>EUw)132YSdjT)kd9p2B$5o5diPk*aY0gHM$yp+C4=CY5Bug-zk|o`X zl;!q0Me-%ntrf{zKv!Oiw*bj!@ntz_^CW8<^~Jr3&4SiwL!E-4HL-d9UaQw^_E^Q1 z;jsn_XbS`j(!I3x%JI2qOX?NhEJ@g?jl`x}vV2)Ck%}x?PVP(hCiUVxgT_E9%j4~B z_1e6?tn{FtyS(W^Z!kINO!vA&Nm)TPm>$fs_zHY3i`D1#`3n3#b8lB5;0?F~0qzRA z-2tD=>k4pt(32DldUJwyZxL9L9!%u{7apj|pwjJ0DhjGzPcZ0LgT4%((-ZXgyulv9 zpxNgRdR>;}pf5-=2>Js-XVB>_@Fe#F{{n#mv(M#+9B9k(5xriLt(UkT^yCGCK`Reh zEKUpOy@KhSn4aZNfqwY?#NMFCg8~q{mZ(1G1=@*otJmoZBnQA0&OM%Vj9beA2YUKL zS)3;a0zS~>;XQ)xbZ@|ijeER7-ZS7ywh;#lxG%{4Zi@>~gF#mhNHgd)TLPd9Vsg1X z$w|R1Y{6hJuiNK=l9_#GA5<+A2%t(J=y72zq!iqTks$@pipz-#K~2CuXOWLK)b*$V zm&eD|9&U@@i!OZrKsHEq`&~WMxN2z%*8P}Juf&-YOKbUuN1=MjkiOWUHrT+}OGyM3 zZeZ~i#h_!dge4tWuj7&=(>0EXq+RQENV2TM(vOUCi90 ztq~N~Q~Oj435{`4lgd%jqqNq&b{~IEB}LNe5qX#AC+g#@ZOEpUwAB46)zy+Vk~nol zVZ4iY%R0SYC()K@MH@yUm(CisA|KhC+%WaV`n*%aUTi1xA6g7=f&y1wE4JPP9OyA!%Pq7>`8KXZ1TjPq20}Dx(4u3!SfVt9 z5N|Dh7Bv&Obk>wh6av~vdV&EUP{*lvr~px~pk-1N8VBi^HXbFeNhnN-xFN1+gw!PR zH4H)#sDNZJ#M>Y_Q6p$8(Ue|qG!pX+R1(FBPhA)k$P^d_2B{|v(NvC9oe~}!3^HL* zQxC-`tR_bh>dZjBQD>sRxG6v#!N0gd8FU6<5JnXkG#GFN`f0Edy1+?OIGhEWNYBY= z(2%rjz0QOiK?^z+^dOHCZiOi5N(ff3GZ4wdB$053c145K0$plb{E~(z@~KW&CR&fz zCv3)hKzo8}^gt#7RK|NuG}-;E_1^6$l&X7)pSq6M5oRflL8Dn8$DjeW42*>U;`C8z zP2oWkNdUw`rHmLVXvCcn{Rj+d{Xy_3E*VK;f@MPL7_HU_SYSZQvO$a=W$>6x4=Efa zl8KgJhbU>!HQ6IW=$ODDb$}#PgStjZY#I^T(?m<4GO-cO0!efv3{rPp4`@i(;wL?H zUO0iSc1Y-CAiFjr4NmJ)LKg-S8uKf#NZGrM56uB19zgBUBTOVgsof7^yOK zkIg`xU=zb6zQ?zCi^M88;W*m#1`HOXF_=WFs3|0%wRHJ0PQaxTG%3;czdy$*7c8Lz z+a2I%_MAAYMb#XAF4gojbTH-Oz+Muaf+UV|5>dugE zkfTTp6loYF=d3lN2w@uZCQ|5bo5r~AZ3)%XiV)h2#)Q8B2dH-iF`eFMFrsCm2O&S< z217!xG%5q=B*0Q4Zip*_4)sa}=z%sA;KF3WrCl&OeT6vo{cbQ5s?{3Ge)q(WHg`yf-&`P5W0a&*fG%@RYBJ# zz!tIr22Cc4Kv4xm$~qG~TpWW$3fh965&mc=PEfX@x1t!BMXEuGhAR@$Ab>@8M1Ugb zp>YUIpb}cbQ(;Uc$j#Sz@Wwm(SuNUvV|moAH^Wq5TaN7ksySC zNit#>q*6lP(VRjsl7)H`gW?#3Hj1S2on-p|4TD{Viu&zJ-5JmggBnfo2T)9{7&Js< z;s0w4LQ}y28V9CEVmMtGq^7UHAT;KGi9u2+fk9kQ!fiJUV#p*KvzZLInZ`_9$1Zq} zy95SF%}6d_?vG*6Z0?3ZleHTLjd~NbT*Dw~dlv?UjUZtm>CJjGf?Nf@kTJ8l3xmcV zV9<;<;A9jNAZjL>5*Wmd*@#?C7tCf1l%xnXxg3KA#Z34`r$XHSBL*QzA<`=`h}vK! zZ6E@Kh^qt!jU-KyX9CcPvX{=p;_m7H2!j^8fgxsqfi@Z8)1X6IfG8x6JDN1WGQeGd z9VkJ(G7%p!d=vbY7NU`I5dR2+W~xd?NBBv)5RH%`nxGRpGU)RJaxR7Q9-ZR zpw)qmWHeENX&!7owPg~14^j{cOm`NG5lFETr!bij7)3eJUL2$3 zl|UfD6Z`|M=nb>9yAh+AhyUq*unyoeMF#y~^CjuPb5kd4i5p^lI%WDI&V5dsBJ0x(Py zE_Bdju$VDcaEw?1r2zfZ0BAJGLMEa;LO2*qa?wVic{Wi}j4Iv{3PT~`6{szgG(+pq zrUk`8CH4Cgn<(DxK&qvw&JT~&D>->>(^|ww#_#!Ga@+fIviWR1A=vOi!V`Fd_nNP-W2w6*21&gMsy^h5BOI2I7rlkZhzT zRt zf}kxL2D=&(h)l4N&K5*Z8oU&u$BcX80k~j*3W_r!?GgqtVw8cJAmOZK5T_|VC5GV) ztfCPOqm)JRBo@mSYF=Pas2eB+?BY!c3_?OyY8kpoRdA#`*gd)v7=>0+HX$0Lqu%t; zdTe-TwRXp#1Cb4u&p?3LU{-95Hc$hD^CgK<(NnjA7A#rFJB#(_=KrbfZ z0)vDcn0T^9Wb|oTAcmqCEfkYM0bs|_AiS?09>**~9cYpmF*$gX2~Qy+SS2BQjS-hH zNF5+SDUdE18M?wIY2uZ^DQLVXof{K>qv9KEHg$7$wJ0R7@C=;bXdy}10d@r@Tc7( zC^K6q%Yu>+nqI~yuwWRTP*+eWBlHzb;TDq@lg$PfVzf~vL`R+xiig7RAW*wFMiqd9 zT%^Dt8B}1R+3^s#JU{FRZYO~1_ z@dM&C69!S+Boqz`W3*uyR-4iL5*76UJqF0DZ+XUT;W|oLAkcZs~48rWez?gwSCi;1+Ts|bjwuP_)t$XI8l2XT4uZE@$%GI|SR$m8NoPcaX0p(#1Vm}J=#3_5 z7G#Wa=)wY4fL|zyGhvWggCoYR@<=!pem?F8EO;d zae_<59h?!UBSQ)Vfq$?t)EitJZ5W5$PS7OJ2D4&y(#IGE2~AmH1?+I~LK@H^&>(b! z21<5SgP`7EH`uYhg(wLawA-=Z3T-COrdMn>j5UrykYoc)$gu*0CL5@L4G?2;IxNUT zSlHZA3S?-{l9vcZbWw z2s*I+7R&~~TTI{t1H?hYAZ($Dl)!@E8D@eS!_Z82@CFkm;d($X0a#!VfP$d{htXMg z3}OwIFbLvdZH;DuL5P>EA(9QP0q;l}1Th#*_To9@N0LVmI-18&5{?0k60D`5MBB*R zP)RK%a6_y?&>7!AEJo4|gBs_^x(HU;>{?h)?4qP0QY)k#?GRR6k~&Bhx`y_MCY=eZ znDFE}lNG9F#f*sXfKi&vq>p5)sS}GrU;%uIXkd>ph_Psh1+c8hA`GAuVm`YA1|NYE zwS|YM4=D&AfJ?L84k(#aVhBWM5p+?kN+YB@AQ;qI(J?Sa7=-bJ3SkyT8^+;qBrpgX ztS$&KfkCSgIxjG20v6G@&i zCL9@XXg1k342luER0}Za!15@lHklltiuyn(1+`3I0rNCKONAo@=fnnO6q-rSb{&x$>+j*QFyVme%r* z9J_j@yg23EF{paX8V2FyfkE&V7^LxQ391Sv*%4BJgHRmkzg;5`CJ7ic0fR(6u?|`T z$m;A=6Br~F!U&7l>{3E>EpM?y$INr)c85FsfTB*Y>x zNIfJHbWIy}f=yze=uF!*nP{v}Ado(fA|wORVna+wGPIg3_!FDmfj|d6%CuIh4P%Rr}(}!|8 zI~h+XxE%%`NH7{z6_XC(2ML27`WOQrs=!s5Y(~;~`qmoyM+X>&mMF*;!h*bvs!;_7 z5!e8Os!AWFScxIFI0nr^;eZnp8Z&`%;Lie}0YW&F+}ut)v#G$X5Vi_5Qo_W?h<0dF z0(zl?Cac8>bVE}#3<7H83DFg-5Nt|9LO{5PLNIg++o@A?zB_?IfCSyytv`uD2kL?=Rx2j3 zMhBPxRw5d5K!XGZg@J~E1qK~7o1^d@vFha*G}{S-V7<2ZBrs^R*(e@GvJ3VT24O@g z!7>Wji|5@ji0&w9;DiL}3L9NvgY${kATe5D3B*Q*vda%z5SJ1+x-f{&uvu^r@fmcU z7W>59Qt(C83?uk=tHJhj^3?NJ9a9S~)Q z!U2w)r?_LSZIRNgI{x4(G(g6BJn+3K+^1@ zjsOuWwInLi20CwmLAV|>({ zmP}5Q6CWL8wE!4&I(1-x&EWv~ia`agtQrO}8j}-rk}q^1=ySpn*sTO8v(e+Sfjdr^ zVGPM^cB*zEVp=SvxKINs>7dQxf|C@8p|A%tM+D^(`gF#|x zK+G58PejbxWndB>&q_1vu9O%$(TpXE_-4U}X#@uPbQw#BaL&lahCd-9cosx)}1O`EZ0|r#6CVf;!om+GkJ5SyH5j~(BGzJ(1!N^4>A`F@o z!;?bKNim?eHtd^ zagm=+V9;f9;oBOJGcf3K>1FT(9E8a=I6=4#|HzL7##&r}2{~33XF{C7AjtN)ZDyz4 zg%FemVRkuD27QnxqPZa+g40 zHfn_e)P#VkBif)U26D)RHZaPmBH(a2+$1SrpC;Wuz7dt(6Dbz;^P?N}3X`dAq&DEb zU~D8ga#oATdIfPRTcM; zB6JhzL$U&c&=3dK{UJsS1ravtfOn`yXJE1mgJ2%qBG5^`2F*ZcgbL9-&kC04oh|?l zdP^f!sS)@L9MLqIA`Gfl{4)qz#wv&X5(Y6sC_en84PHrL5N0QVL9@{bgD=M6c4I{w zpF4>;sl!j-$%tdnVRmDVM1ny7AU%#jxG|V(AuPzt>^8f*Fz9v@232qnCfDe45rIPC zFlvh%Gc7n7i_>AZxt+iuVH=yzV~2x7E`WyQ1{x{R;td!}Sb&8B0)aIT@JrEw*f2XJ zz|nJHPzBP!I^0q(ieQ#1xGh?t02P}MFrs@QMjjMrRk?Hikr-0?<31h!qg5g9TQsJJRTE4)D#1 z*#?noQ^6fXVk&OQTL+32T*ZH!f_D0(Awq z1PsE1QFjhFZ@1f~T5Vox8RpOdn+9wm57P(8z-o0uWDp{(J_1ut3SkicrAC&_faNjKmYFbU zHDLOUkCP!%1ijrcNT!~`C!^6$GN)d|k+hVO3px)Ifh1Z>96&>yMe#sDV33N6l)xYv zN^NC@jue-YMe4#JWjm~P?SzqeFqy-qfegM$e7=#$r8D#eJ!=@WLaAJ|mPRxsFsRs6 zSYKd}47J4pWY{2Cj0(broCqlK^VCL z7d2vs6fh;ErW|&U$BvZ>FLeZUb)YpfC`1CNF%{G>i1{K=Zx$GILFJ&}ZfHG?!{YT~ zCNGx2VKrSr@`J!2g(gl5blyf55&aWILN^E}WSlh!8Z7vyPJG|XiZ78e=Jo1zHmlR6 zVbBfVrp7S{QarHc2qtM#XY)W2RII)bAA9&zU=q0i8j{z8?vN;Y1k>OF2{Cq?17^(U zf@ubsR1KaB4cS2%Ids?*ayUYeu#o~mE{vMENUe~{CN^*m_2EImGAA%dx(qHzEdKaN4SjmA%kgoRu; z=GlnpVcy(e6V|5?{y`hyW-K;1QpH2w3t9_12t!5gL;#s=xC<~fVC?`H1gPO~jhL&b zaX;u5>?aIjGC|3z3Jj9@r{ogLb0Suy9?1MrA_PKp1qlL$WNfq=bR+?Y4NtX?W$9=G zO~iJw@B-tZXgtD{T-!WeF@28*EHGWd4^qpCO<<5T1F<4HcSAE^sX>Ke(+Rp1n-kX8 zX@H7=9EXZe2vA3**$i}BRe?!Fc47bs@oexq)PRVl;MK5Fi7a>^XaO+j@xtEYkL(Kq zPt}IF4NYO_syZ=Z)Nu;hTsD`JFo;zf#20{y9WECGus~Wg8HE2) zDT_#_4-XVC`~>8Pj-XC9n%{Y_et=t>%cc?rF>4Fpjuu{3EmlQgihFPe45|n+fI&M= zJQW~X%h6G-r4=#AMNLhG}Zaxk<kP#&if9~D}?m}i5Pz@ZmqfI%n?EoLBg0|u>%kC1@{2eR0R z&!83>2J!U+4;0UcwF6)fpe78G`=>b}lE5x~h-Ff>w?#lvN%oMpNFEp}kcUJaAZbfC zV2oz@Gz0>J7_wG_j$JGP`>_BT-yHa|4nZ5_VuPoqA-U|Tc5>OhK5c5P2?|FMnFFppZc0fP5UVbFz8CxFQj z$pihq!cvvjxWHtXFfJf$*aeab&l{*^i^ zWC?jgDWUXGR;Vac5*iR16siub3GEI2JhVSepXN^UrKP83r4^*jOqbG?bVs@?y+?XV zdR}^6dQ*B!=9}N^Vx65AJ3B#Hi0uYNyZJ#-bY2R8qSrvte}W?V=u@NU7EpAT{D}N6 zC}KLhZmh0Jcbo3s6qZtvvNmOR%9o&sh1?;3C?qH<4wc6#dIS_bc^O61;}ki&QPd2I zI4HW%+1dH$&R=y#*-Pv&o839Qvrp%?*!tKlv1>Z#bzapur?ZjG?X14|&c)LgPhC72 zyE(Q7?+?Qp%VL-t#7uu__)Fl=*ZpNRV}G{&sjB0PjVW^fNuq1kbq6IL^o)ee%&eAD#Tee28?6G(nRl zN%Vi6notsN2xeQm)xi5L|4q8<-{f7&TBKb{^Y~8w5Z}cghRlA(_wYyfUj8V5jQ?Dk zFD>AIMNB>jnYh}Na8a%sI<`POT^$F6~(=F?3Q)KrB+kMOSbet zfB`R{Gchx>Fe|e$J97XNPUd26=3!pEAK1?VEXaDWB$mv2vJ{pI{Y+!&EX*=kCd*>k zc<*m6>&5a|KI_d2@E+kJyx*yqm9W07l=Wl%Ss5#51K2<|hz({Htdd385LU&8vT9bt zYS}PW$A+_dHiC_0qu6LRhK*(8*myR9O=OeUWHyC0u&H=A@pLwWHL{s(7HeX&F``@9 z2DXvi&bF}o*)H}7+k-dRJ;okoKWC4#C)pEhKl=qc$PTb5JH(!1zhqCdBkU-9h8<(i zvlrNll8s%>npq2*FFBwcKVwVTLMg*llcw)SIhv@*b*t9S4o9Z4qJ@(W~yusyP2(L+wnFjFTS)cOJ>O;DUyLbE0wV0 ze1PPKBt4Q>NYl<%Nk+*kIoU1j4z`Zn$u_aOVU;$syV!kf8%DU5?PL$J2iZUQ2tJ-I zZ)K9*g_C-8B6L-?cYaQGR%S*xJuMYe1xybx3&NMQ@b7W-uQd5J;o7E9 zG^;79%L>=k^``sqY&@9V?LkvCgh#cPmx+d`-fU!DRx*N;tyh$cXeA?ECAk_J#0K@w z57mT2(UaBT&`~~ZTm!D}tPW2NML!qUqr|l?OWfFSla_`Wp_;(F>QIz7g=(U;*UZ~g z(^TC%pC7WAhlYo?n0x25LuLyuEx3y2gqI%TITc)7NI5kF4oS>tqi&;eX3gy8=-6=$ zHPuOJX;XXW50BczXbD+tsAw{(42>E@lcD)hkj`!o9m;=s(;Y`)q?+=q&Ee+RGa91u zY}DN(*KFFfA?nPF=7y`Ix!3(A06w-v^TX9O(L8E(#Q3g$MqKKWNA;O%IJD_&hT()i z{|w{k_GEVaiIS;)%_y@LlG?PXHXN$m)U;{#(ayDV!XY)h>5$dBX=x2O%*HlEIi5dv zds4Laj;T?#X&xUCA8hUT5mEQJ=?zgSvoQ~d9mc>(ko>YX30%hN}-O>IhQ2GUwX4M}Oy$W#b; zYPg|gDk&N`lzRr1&(VpqX%@sw1xYEYxi~YUwRv4UB<4nkiTebvp);3f z4^L!=HW|YsCTt=}gyRh|P(D1$NQEP1P7E7ZCp?F1XNN;75H0Y$=};s>Se{3)-4q_) zyeT}PVUQ>d3$i-tI_lfSM(`06t9s|dm{lDL^V`N9ityVeOlx=+?*k3pHnHI_UOqRp zscPz>4CFOD8)7UXo=WtT9#WAI-B3&8abpzalb($*wpQfo!~=1E)ltsGGp!Jwady>F zNqeRy%1L;p)1F1dv#CgsQeYkw5{A7d)J*cZVd}h1O;bt7nGYPnA100A3UDV}afnNb zHEIsGR7EY}DtcZ?&nva(3OzT3tD<-%WbgdzHmNn?uLHdq#-^ISlRH!I{`TQ-r8WQL zO<(e(o&O!l`@2=G{ix)_Nq_A8!=$1Q`G;Jd^auHTYSFKF+sj|PEL}JfNG*DXH$AiV z8R=-}%aO8Y9PZjr4)N53g$FAS%3}`BI@oqljvU0({o?|usXJ%wl+HZJ<-8p{bqBv^ z$L<|c`;K)xB>mCOzeR#OOqSY%+h5u)$$8s&>NfuHwu9TG8@6$gyM7yT3-7JGcg($V z%fk{DkXR1NhnW|vym2-LO+`_q)b35niBCTUvceh4cb(JmL z(Q>dw((i6Q(=5p}$T7`|xpwxfyws*y!%}CBO;7!HI{$1spE&)N>C*7&eBgBcuW9^? zX?)={K4KalIE^dr64xX>Sf?wIC#A~VAy>)=@h>z}Ql}J7k*Uq6CcC_~M?23vHQ8Xn z`Q@i3iu;!%izh0U+VNxaQY*)f89QsNe7=rJ1xsDI0G|_V$_W%U9&Z6Q9-Il~{Wor^mC}S^ILF zFUzBQS#aVyRYN1n&>+L!ZoI_BZjo|lI|o`de75XE1tM+9HZ{YS|{=+&yqsNzyF;DEWa{s3{@qeeW=$4}FSo8Ea*2n1OC%FSGZdHCl@C0qFT!7K6q3CQnX~f?a0v22!f(EGWiob*KOs*P_s7@~{yTmjuD4-{;eh@~>{zTVwvM$)zreFz z@vV*hjOX${Nz3G1d6ayEykGv4&Y`Q;P1oJ0dm3Mzs?={)TuO`bwxQB6*XT6fZ2Y}x zuxXX)dDFM%1(v>+-S~WBx%DaQXSQ?(7eb&qoIa=+{T*5mgK^i1_E_1xz*dgpr&`0T!gzEl1^{yzsifmwlrf!BlO!Ii<6 zd!+YR*W-<(@}#?xPA6w4|F&mK&r>N$DJxPQNclRo4%d(#`!e-^F} zKb>LBD9sq0Y0V60-kAAZmN{!p*50hM*?HM5*-vKwDW_M?bvcjZyq@!I?&93_xjS>8 z&V4KQFTG5?uI{zI*F(LY?)7%Bk9%Fr^8jqsdHeES%KKg3*?fI|&-{M*5B5&(-M9CM z-dFX$q4$>F9~N9&aCgC@1%tET|50QpN-gSNG`gsz=*B+wJ{f%m z_8He_UY|96?k_eK-(37a@xkI(i~m^sRms$nWhEO+9xgdj@^;Ce`?9|NzJ+~j`_AmU zqVHXOAMN`>-}n3eci(fR^Gny3ZY%vo=_{qbFa1Y9eZQ=JgZoYBx1itJe%t#U==W;B z5Br_#uk=spKd}ED{Xgj+EAy7+mklkOR<^9{ma_ZH4wk)M_K$LJd4BoO^2z1%%MX{o zS^i1+`2qF;SpzBtj2p0g!100hftdpb4jeOZ&cIaz?-_V_kbBUgLF)!RFep0c#Go^S zz8gG$@V6C?ip+|#ijft~6*p9Dsd&8N<%<8P_*=!rN>634%E6W6D(6*RSNU#aU}QpM ze&nXe_Q-+AuOlBuz8+#9k~O4!$jBjA4Y_W}<{>{H^74@14f(uESCv#%TvbcQvuv(Y4pt{%V+hSn;q&h8-LBOm!xs!cGW^BiuMIy{Ke)c8epLMf^*^hBy#AZ|*ofQ_eMYPranp#6 zBLgEtBkvlej>;WXHL79Ml2Nye+Bxdb=ZcUs}J+G&l`9-DSxI-hQu?t}}xV@7bs&Kch~x*MlAzSMZ4@pR+w8b50M zr16W!Z)eV(**0_K%>6U}Icwmo&9gpf8r*by)7jZAv;Q>vZ*yAa{BBO?RV`O7zUoiS zP0f3opKt!UCDQU}%iml6*_zy%(VE}7u(iGQTUfe#QeR2Dq_NUu_ zv)sFU>GE$^+;olinpaj1S^4d?H(q<|wV$qXts1gw>8b~>^IkXSy3N;pa6P}i_w{ew z(Bplf_P%lHjgQ>;#*Js!xYtZx^YEGrYp1W>bW`?Cn}2${`Ga+% z*G*eD=N8K?x2?}uKXCo{^{wl#TmSR*U)?(F*5$YE-r(JE!-fxTtGMl|+itt<^hW!} zf{nEsXKq}v@s3TooBncp%k96vW5gZD?u^{|-dzjt_TPQ7H!MlR<-T*?X~yUKTz_(zjplf!MX>x@0`5z!JU76$o5dhuAaM| ze|Yx8pYE>Sz3*okKRdj~xo7sC(~p!q^6uVS_wL+#_|dFKH$U3>*wv5y=g+Hue%H^> z>?_!}Vc$ECr#!y#@e5D<;>jsbE_`y$lc)Cg+@HDsw*CM5#k>QK1E&x6JGk}WKci!! zM-BxK%{}ys!-a=mdTQiTe|_rg)B2~ApWgKJzka#sm%l#ZJF@b~i_iFSznJ-A z{};!;*!topFYS2gFE4%ea_h@q9>4upJ%6?5m7G_e|8>r)EeIUZ3`Q`|EeU{@Cj;zy4pZUwk9wjs9YX7NMPW}GWm!}PZ?*!i| zdZ+fCY41Gr&NuIlc=x&A6#nMA-@N`_?tAyX_tJZx{FXjAm*{uzbY?_BGFIO6BJ^q} zlWwWJ7OyCxC>Ni4)zNpkkzH9_Si%eQ8cUodg(ZE8+-c6V{@9Pp!!JBDPg-?xgZ{|* z`gyv)qRlOxf99J-n|?OnS;jlhMcigjof=#lyeGIjsFUqG@ESKAb%5^x*6FzELAQh+ z3co&u9!d(;j^f5XMR`0dm&ko9q>|zk$?LI8;q(HDk6l&r(K%0gK~j&xbi7f&ut!os zx`*%51n@GX zk`l0}SezP*i$N^WT-d1o#a~|Rbot96BDySzUzZfpDAK$bg4&mpn1Ja7D#@jMgWfGZdN&cl(|hw|#!(T%Z*d_V0QdEG`H zjg6&!W9%regQ8sDxl#Tv{Q6FBeA-gUo{p6CEzIS)g@{s=rG zB*Ou&Nu8JnGj3o*Y_|SO&IEaoRHMjfsSB2PJh_7gxeNLm2j{e>Wu~P@?9RH>)ReJl z+>w@=CK=QEy4#KT@(sRgfJ#r9ZFNQl9V#hw5|0XJHWF|0#0{9|0&Aeaq{ki5v;RQ$ zvf>VBIdQPDq!D_D4a|bJ8NA_AC|q`Fid^C>kV~P6{Yy*m0~LNlR#vt%MK<(BuCrf1 z?n#mSPP`-Lzls~zPux`8+B7kgHl?YhaO%3rz4}bQY0ReP$A?yx-BI7LVR}K-lUG~P zI6dZa=2Z2WI)T4fd-cTr*1vvea`kZTSJQep`QenRNlWU7woNECJss8eO5GgHRbtap zt0pY0OY7e|%N4ubK1X^aqr4Em=&($kitkym*3QqA68!d#37?2%C^^Z6@h4Ph^0s9_bNwHH6rz`q6EQvb=Q~uLAJd9cD*quAa4&x^> z>f6T*Upg`?Jbc;c5z9tp^ZoIh*TTrDUpgY5GcvoAU3h<&oUfA}eU#VpxvhBPhu4{h^&2v*DpbY$RrRatsUJ9K7=93E7|U1lC1ZYmdZ>=qP3l>vribu}^pGKa zT;s<0L|w_0Vwn0`Bd%sPb~y1|09Nf#JDdWIq+3vz z3g}Y-44UFDhFWpE?8VbeQZY@_5+={UE9CwqcG+hNz{k|Iz8M22mn8=at9ngt z-Y{U!#JW&yb>Ff5lfzX_vDG=F+J>bL>YZFXb5p~Fb<>NACoUeuo09U1nsQb7h?Q6tn6Pq0WO3t|jMyDL2UU+QtZJJxDL3}P{@%m-B$dv+4?u>^<-~fK z^@=3Ftba#;MlToY+wk?RZpIcLN0O-({Az@;CnGBitY%wb4cPeDF)0u2xLJ>gO|gGz zI#-FO_J83A4J(CW{sl;N6VFN%_y=$`Tp*9ns9!dE{~en%hb^diV)U~545`oRe}4R4 zTS}7ZG3&~ z`fc>Z3C=2G-|XyW1-}z1+O*W%dq} z`r@6&IEvG~zII(kB{@m(uD^t=Q%Lo*+C zNoOosc6iM-2iwa_+78{gGP-=gMR!Wo!cn6Z)ug7@EE+XxVO5Is;i1@n|Ejh1S3Gd& z5Dy%0Z8;wM@59^9+&7|rYsdC&XSUYYZ#_dYI1EDRcl1?eYra~GEKnIo>5ke^;T zxpdY8HLW=_7F;u=>A^(ZLay-9mBcXR;{_9z4?A>p$SrSfT6}!cl(!mZ+&U$_ z)wpDJ?V?APlvVc0bGP}2 z2nU5cvcl;I60_YDR`=^CrCs&pn!4&+UtL>r)%5ZB#Bk14y~f-yxgfePsj{-%JFUNT z_~K{Tq51Mn{TJX$tF7LnizFvK7^Z5_JlLg=!gO$z3H@xZ* z>rF@r7cX&`bLy77qJK{>{gQtA!!c4F$#a$jE0(+;=5L4jbEF$;Fcg%6=9GC@Hk788 z@tm@pQV7l4>9HpgeIw zOZoUnNx;{)YGS{Z1*D0@Qynxh7vGmFjii)&+gPQF0Bng>4TVBdsPBrTBtx(EOoO_@ z&?CVd(!&zr$Fv|yNBWj9X8i$jy6>7b#Pu&>-E_KyA{OM6B5pX)ny0sU%0@N`HLPrZ zw6*2H+WJ^#LJg~z2sM;z=fC^nqt`+W75z?|b>`3hV`WA~fu@AdkP`lr56hX@T?rRf z(FjE}p=%YsxgwIR=B~}XCwF(QF2%gf^TU85f){+&vG9XIRf{Sr5$_G!1XPS^Rj zy=;5OCNBixJ*9%ige zD^l-Zl}2AFBiiDM%!CJBhPgcgT37kt!jcjmz%_-6nYN@p&Hs9SzFui}e#$5LBk z4H$c7=bz@)=`C^~xPuGp4j?OnGYG^v%5nmNeZyW$65A6AOC}t*pv- z#ooO#QkO8}uUBq@SDC`*v9?HMgTE;|)z8;tbANViZMI(?-6sSYEQl=N10$pP=zQyR zm%-JX>~N*JUUI?ZBy)o+*_9mWH$jfn49CLT@yg?3B0sZnW}|u>i%G{tICC6+cG+>v z@(ZyjhYa<&h~G3@cZH4f0o)^gY6mVMV%8}XvuSd%YFHOi&cIgY{e?ihX7hxdBCcf-0F(loG`eVSH zhusp%Q1rDDuk~=rBM&!X0f!qgwYSTNZ47*^;U2>~cr81{Y5~PuXHX3WpTn2xEA-v% zd)W7p53jAq;xS?coixiHGTZCydc34S*5Pa7mBp3ig|6~Eps}oECe07Z@*0<6=>;%> z2r2%=p@f16TGZtwKwN>0wG}j(y8GfsdyYxLC!`*+xmy({{zb=t7YHbu`Kz&k`eWy- z@%8zAuD*kYq^4F4E^z`-upuWfE-ZZ`Mo!0f&F4faEGg6U3jbL7T9N*PK%CKQ`cmgw zr{tWAPeJeQBdL9OAY+=pxyTZ3S{2}y05=8#EThTqN^e4Y@!$d$rK6my-(arZsD48c z1vG3~2U(T01j@Yer~-?)@rX3+bfzU@x)c2FwXdwJ%C28rQ?qJX-yzpW+hR%2eKqmw z+SDD7eZd8@x5~kV2d*DF@S5l~Q+JQf z9zALHz`f@l8ad_h^LrNkdd%p`t@`Y7_y2z5ogZu)9ro{W`0a*8uW{ewk8#gyOY(c| z3>85CNKO|ZCo3d{`L}I4n~R?w=ALOvbHLqXkUdRUvKI4iq7FMj89zrE#%CNf@ut<@ zaM)QALNiTAV&CqI-OIN>@ZEt~uU6f7bj2Hcpukq?(`RF!K0i}`WX3OJUmdyk{Y^u^ z-^eqFZ|Gfq5xrYjRV2$}L1HO(5MaEEeG!4HdIp?{Vnn`d#281QE% zxfW6c^{*8F(li?+VcACP@{1Qu(zh31k^C1wl?LmN?2QfDbMd=wJ(}3kh!fp8WZo(B zwemgiqvG2}kuroa_-O%$rO<)G#N;qA=>qpZ&T@%OyTOlBstXJ#@pnaoTk$z-1- zla(aQ8@7xjWPz|42nh&b5d>U7>(EHjy$JnwVPdCqg5{XwlP0oWJ~16IN&q1&VzrF!(L zFObx!HdhihE5eNqS%T=Xv~(Obe$cR;TktXPgGQ&}$9A0@Lk_5oTsSgDLx1I(O}(01 zTAEqhmnE(#x0SQt(#)Z<(g8up_YK(P`~f`?41W|~0Bj03)njAA_DMtnZV8)w1*k^T zV(2i`+ryHD{ic5N)*IWu^4EtK4IF2tZ*KbWl4SmZCH)oGKfPl{{k6~BRCdYqdSB{I zNgjzia-7C>&oR&Ak1_Xi>&i;LX3zClh^TJ-j|UeisKL*M)B7mD$@j5EjTl&;u-bgu z%ubnE$jmb2K4n#=G+?FeMO7+E(fCoE+k(?)nJ5c~n3f2NFYIsjxcuhHk)e|(#e*ls zM@JUH{&}CcmYy{qY;zTV)?&5LWG*#}+szM{ziB>imV3>t)ZAolH%mb?6Hy|jPZ3{% zCVpb{BNZ9S@WMbuGEgraBjNCDHU5&RrnLXr>c2c&JwS5G79ynDdOHL&m)`CXSB<>) z*khvOvB!pr<@<_%oJ9s##fDnl$1E&H=16VT%_53_B;f%1Kt&>X z5}m!U{DOk1Yd$lCebKrDExHhZBmR%u8}S`&1=I7bsK;d>f9;J_%l?xmuVc@@KJt-x z^2(7D*pPxpplI$+HH%N(VE@0If9^0gs{wRaL@-fRpgjNjjLH zeDJV#Ds?f;%`5CzopoLkFg?f&wI&~}hE+batG5{(NoFxg_Drn6aeR}R!AY;Wv>M(_IKTMptNU?a={A9- z$sR9_mtsLmL5uzUVHRJYXv!<@Tu08^*d}=llKV{`Hmc<^_A*(FwBz4Zn zNVO`$+)EPs8!z0W96!HAe&mz6(zcqLTG}o-FKY8tESRT9=uwL;MUd-VI4j;`UUtCC z1TbDPifxq)ea2PUZqcU8PKqYUOxWYCnG{s{F*h`G=5(JFB6$QinX)BqkF8NdxwsFC zPZzUO#cXpiixm$Pi&;yJLq(ARtLz<6G)|=LEG=RBcKE-nv&xp9!+(C@U*G>qN5?}S z{ObdMJlu2s^_t87?aC|v?egmC^+&F}^5G3N;xE6E`ooJGaASEMeU!PLzx?tSQh)sB zzPIo1>AC;yeYgDQy*)km{wHBfH&`5NY611kQOjIQi;&7j4%apQGk&IW0?}FZeHp8K z*1<}hN==va-a+(^;vAdq4(%e*sGy(E0Y(XKfrCuJ#-#{3UjKzN_uX@nt-t99UuYib z+||E-X~mJp56i}-kL;Q^0uyoL#>1&Kp|&kOU)o1&nOe!$GJs6G1~sn;YZ*TsXQ$$9 zGhD6lfw-8vG;653e84M51{AB)AjG&K^rH2IIW6s7{Xfm#%9g5uFZGx1>$`5vx8n9< z$N#m&yZ`HZUo2dHp!rLeytqRY|GBk3jJ38R%kV~Zk-_SPP8cyuyD+$Ic9Ad8L}N+J>5uxu4GrmA|@ z*0V3Yo%-s#NBX|dQ$VJ+!{V}$Bg*lgyuSFx{^?mGTf}7#MP{#=om`~`a6;F@TKWoZ z;W#9cD49p?eZrdBQ?;YD;$SUH)UuL3gMX;TUZO+?@aefa*sCD->~x_e=< zdi7UVY$RKfx@RT|A`8}jv3JQW z1J&h`2Lq*B1{)X5YzpUh41NJ~f`>+SVAu4*a<$rOV6Pcim*I>-v>8H%N`rJ%_r6a2 zBFW_XK2b%~hX|nvwF(!DYs76xk0jZZY&!@88IaR*4z5jvykLv^DVhK?)-FzL2d>Sq zxaFzTaw(M>P#j0NY;ywg@h_DV;Cr|&-F=L+yiMMtUJ+D}Gxof4^Umk@%zEluM=#wuzX(zA7dozd{`UFvzVy=d(&HDB zM^D$Sytzj@f!ULWwI8$36gH?fG#Eqg_CdCpCz8vE<3Fvsp-X`nnI&e~VL4@yEGnXV z6w;)IQ5!%qQ0TeQp2X`1DoRKu;ofoxFi6lP8ZQMmCY`F3U!hnN&G3M|kAouP3@5j) zu3mcK#gyl%l=lS|4V2ie6+z7bc45WRZ_J(hjTPD+=~BS5L^ylgmI3X-2Aljx-@_ZL z9$0>)I`EbW^b^4ypqD@neH_EPoPsR)2K2M^!_W@pf~{N<1&ZEXP~g@}xyTo0 zo8e_Wjk$3}1e=L~Tua%evK?h&sI0O~w3e}qU@pzjnd=T=wr(3{>NX3A=O`#huK-?g z5gC#Nwg4Sc%-v2)fLBec)WitVE8+HUA>|*EFuzhK{-cF)=1TDN*E_L75@JRQqdL^1 z)sxnl{)trl!n@Xh*NGBCHmB+3mr{2;owE2)djwS)yq3Q{o%+HHXHfyc0;6@7$BfA5 zM;bP-TV7b$ciEaM=}KI=kH$B|>TBZlvCVZCpvhg>TXEUSrG*76H*Bg(Q^X+F+9d2! z0|wOkGz#^Q8!{ST2Ip;P*=AuU;=Cp9#mXYHCS)rVL?D~t4l}AH>97*tMQ96Gw{3Ef z$f7XJBaR6lrKMZ0P-9)H$@w{cP!C!gsjnqS!EA;BV7g-1E zd?vM2+&;2Lyda(&d0mW+bdan?^jr_@GlZ*D@B46*s)o#D#y9osK0Q)1q5ko&eNdzE_?sVi-_(<^m=$z+FKqi9DX_q~&v4a9M*A*}IN zyyGe<@C4U|8`IBvUrx<vG_HX*l`wUg z4pAd2S!P4%3^@RAeuk#cAw&e6^S9NpYM7CJiv{B%xaQ0VOQ{RJ;!7j*q}?Oa#JBH| zcRYN@`CassBZyRJ#8dRpTVav=AKhQb6MKxEW-?Pg6hG2^$PluS_8k8i0ultcunWqC z*qFMU-F^0K>S^64cYnfVYk2a+-vgE;gr5*0I5I_m((u7BWv}9(#}JPJ!8qPP(yJ5u z^@7rK9mufL5SFX)_;yL@x<*B zgc*e6XV0>GQtKaA&fNVmtcy%277Jvr@+@q>j^k)5hL3atd6TgR^k8Bsh|2%b5IgnN z)X~(xiUnlL6wi)?p^;ojJuP*PlHlWjXI)|Jq{zbr`0vtUN}U%Tmk>RI^a#fG$!|#x zT^O|l+^SK~W$d&fWgq6KSikSbEcPl^3sED{TEupEB*(Rp`STLCw{4{rl`i?MoCQmI z{I0y7o{j*?U(0c0J}57T?W0=gRqZxb+!k3_W3Aa#BkC%XnZ6UFuc^6ad(vkEo%(#4 zi{f5)cc5gx%@(lbcSE*8{Q`JH&%r*B-BRr#XFfse;g_Xbi(}_TRPtAe@Gt{}qR}J00qB0e0S=&*1pzr!i zLM!eoZ!O7+_H6Gxax6nXduCsKc4gkaqK4v2Z&^8F+fg|0ny$NQ>b$$U&ePC5&G(ht@3^aHcU|4~ti--I@A=Bx`=;l44;oRS z=9Qnm@mzuTYk^!^OY-50d@U=58Z}TT_}g+9R@W5XZ+X?Ml)+m;t=EBX4X8vfEbtYj|y1vAy6 zNYZOtT>MTk+f>Z*>{!hrd$%7YV?=8n)8*x51-p&5tg*G_maDYFL2@GbqbC*_egaom zi)Q%ced^N-W6M(J#KUc9A9(hI5MQSAG~|kmhLjp03Fy5bV0=AZdNrfq_U(7SpNiW zn&raRRj;{PSA+JS#Dl5-)PKR*413rY4tF@$J1<^-IeEOP<#^4 zVxFX&Jj<04}I;W8o`WWMh2HGc@M) zg-@dvCWZ+mfubUD+&I%CLmm$?B@O}ALAvllPGM}|)_!-H#UA$Cvx^&o$NG2ni)|Qudj{HSR5;Y`BSQ|X+`qnliBrst;ZrAiQ;7&E?c!`-Kxvh z%X7E*BO7OT>{?#SB%?P}lK7DU2)~SCVi4&(ejH~V%T_{kqY|fBV%oN&W z*6YwOup-q{yL)2qa>b1t)v!P!xIXQ&BRd9Lb^Q4AE#>ZLz@8{8Z;|J+;^sPYPH8Tx zUm!yJ=~Nbff>Q_!6{;7d79wJfwJkGCk}`YqJPU$BvsK@X0|%;s%TN<@a4_&F=cf#T z&dCp+QJL`g>LUJ%i1T<}a-(wshZG9A--RwM(bl;9xAWQawl9w92PTlxR$lsmM_De1 z>V}^2=z%l~(k-0_51j{_qS&mqm`&814Q<9=D@vu4Hi6=zNpy9Di4ARWjV=k~&V%cr ze$BNVVhY0C|j2*7`cOeG(Xj+ z%NnUm{aM40tpa`$VpuIUC4?Z@Hr6Xc{vbZW^*?PZX!S9U(~@p4&U~4$T1`ZZZBLrm zJ*J0E;yx2wW7=jCO(wU{R<^L>g9>)0f`ux&D@1Dr%ka9|+`Z)ypHH@S7X@t|E4rZ& zwSn9y_9|@xB+C!oEo2MA7q>)DBELz5=;5J4?(~bxuDrf#-6cbn-gpLv|xtWLZzA` zv}G?u_}HLtr%&RC#cP$jQK%RjHRZ4n)>x@Y$i~NU8$T*Q>QhH0jRAkQb|aVL*-l6Y zm1@A36c&fo@N40B!jd)2bXiH`qEMjQYV&j}6CwgB|C+@wt)Zu5IutG;Xgo?TpLxS~ zHm!MlN88MQ`7VDQ5%wKCxR?Hk(S2{;(a~|ooBM8l+*=juw!3YppzSa1R!C}ruthtn30sKsBE0BYjgDJz z)9a#n;w3N^z2;-q#4SzC;&Q=VJ}zc8rzNmmlZAvV60^8qkSf*H-4$sm_m7DT(%Tiw zZyiXB2@tqQPQV;Q%)zG3p){lvwB>U_$C7j}s>=80Swp67zpYHbY``GM2{>8Mf$V#c zIO7=?#}K_1uZO&own$qfv34?|LlXi|N3$oxf9G-H0huHVO%-SE9mC&W-V(X%;~%m& zozwiGJQ9Y|d?W)ia0{)f={wR7B#~}^EeFc4H^EPqU76jTy)#>~o7*hC9@KnvImi={ zcs4zgYO;&K1qN0z>Cz{jPIM~n3nYEnIZeLA+V`;Sy`LmP~d1l3@oZEEbexe zDS0-7MWfj21nyu`F8+=^nW$bC8ljWIJoh_reH_!rDd&48+}=| z%aX~fx=ZU<-MVPSSCfg>eQiT4Jq^p}B)4>zu=4I}dx|1?50i<`UEGu(tgfmK2Ak)u zm^o+T+`^K)I|HRNr$=fkVu9S|_CeD9!lQo@4=8gWqji7V%Q?X>MRn@(r*Il53g)hcv@0n#0l7QkL4NsO;O=E zY)6UA8-EALw;zBu@FMRm}mRQc+{)Dd!pI`%bCb$*j(pv&)GN_b{!&sK?q2 z%m6dCCJm4Uq~Te*6F|BRrKQhulO7yHV6>Wv3Y1IME4D4Q@9CFJxw&367R=7gHNEt7 zYM(rJ=5K_@eM;GA3jgfNvDR0Wk03Z74_| z1PwNt2e<#JXeE`jX7@%}6gD{3g{ymMHp>p-HEPJtHbf|L4F$xK%M8-{J^ci01iL1Z6^><=Pq zgfWa=u54Gt#R{9I%vHoy>}n=1p%}5*h_7W>D0KPIWw3u_uy-?99X!{1)$L8{Da-D1 z{dT>$SkI>E=fcYYw??H|yxn}vELxFa@|KakY-A^m%mBk&ld0V#7MYlWo&};w59crm zHzZ;}Tj+;zw0{foX%JdS+5>_F$Y`2PAyf2aBm+H?1&Lgq zgPPADOS;jcVb2t!+|&l|0@1r zn~*Jui;J!=ykceu3mCIW){X?k?36(~Hu5(y_XcU!zAs;RoiL;9De}=r1ywEZDat=W z(Z58T*1y}})s0v`e9H#bG(g&QvF}6gN6Lpf%|Z#I0FP^m_5U^=|4a3M#lR^kqs8Nb zCP=bfEmT0B1^_1RBAXFqLa@JOm$w$p+dWXX`-U5K*A48RSJYabz3r;2w%ICMB4&0E z3%6Z?IKDND9$2)7&Fj3PEzIs_=15CrYIxoDtjw(I5y#As@c* z5=}8>sKG9H%g7s~uSIm_IhyC#{KKt-(-KUz9?QLmF|8Io8r*`6WZc;E-8dc+K=yGTD zUxmg?;j0u;;mjt}>PT7@t0JKlb zxi7xhwC>BwE9H^f1Ev0^d*r zkDKld~>a9A*pi>f@JFEw+B3wAHk?nr&2rKPrbp)Q*V4nd-+3Z&uQ|~LHT}YU+NR4!wZ6nky13l{q;hlS|Au$CF1@! z8+ICCqJI>*05-j<->E;1zF&HZaMEeF08ucv^Fqm>Kn&7E)As@02p9gA@?Q8K(t)oV z{kyar7U$W>X}V5rR~BXT%n28E%xRueTx=T+v%}$IVKKby^fGp88Jjal@XX1`;4V3? zHB*+!2k=e_OA9-cMV>_+#j?4+yTU~#XVP}a_=@L3!*~&{W>}jk*$AEsBtPIi)`{m2 zLMXv0;u@@c{Lg?r7TZz~BZ=ODvt;U+=NUmv>xpRd?~hoW$y6B&#^=^0jW5?~N6D zq~iDjwcJ{GWpB&MSp`L*{W;O5Mt?@=v6u2yGjBQy+B~hh ziJ}BmRPB~^f>pZ1bBH29Dk168X+@F_XTH8)@bD)xL&8)|N3dYBNfN2NMbT-~qD2jC zTSJjE;m}`gYfa{P88y>U;2ZNh~JA(>750k2 zB5iM3u7(3G12a8!jSb%Hs@mqr(0!}pb?fe5mH1-Q^qLhHo~c`L%hyk@U3>cLx2&j} z{C?x=qkq`5=MP6$kG;x)vIW<+cV0WcRG(=#>_#I7{fz4$U9F)?HrP92)>tss726Rz8dLJ$F?l?L z2xq7$|Bcn^W6|FTy3@|z_2;G2mY1%U^$eY8q>l9J!@|c)6>rwX6zrnlD@>-6_2UkGEMERPCZ{ z{-d!QT@pkYP0rEnk8Yqa9LMN0Zari@YL#?a^J!VU`@+XkVC45~*F6F{Nu)FUMe1^aD`))NWMH4Cq0;^j)EkbthuzP+ zrD4zW9?|1w^IaB?#r=ZIlI3!t2f5&V!Do0ucFAzZ3BJ?5*L;%xfXsZdPY%w0PAF%m z%VCacdM;?menk-6ez(h)@roaVt-hcy=G);r;5+2Qk>lQ(&G64CKEKajsJ>j|ocnSi zojD4})6U!$T1ZM8Ay56}v&Tby@G0G1jeBjSHsRU5N~!I6hMTG%A(Y%_6`{H)=;=Z{ zH6oEi5PatUI*;P-l1sZ5Tsnt+*y{mH;re*efr=l?kQ^i6*Msgo!P z$=P$8c2%}F7MZVDT+r5Fx3j_2Vd;h&Q_ua=XONA4qRT?(%ERDq|4WpGtULcVbVkcU zlm#R%X^}`V{Z!pxrdpQ!O=IyPR5y6E5}a5RypP+gA*=X~^#iN8$;t$%;UN&X)f#zR z(NfGvzvdZqbW%YNAzXJS%Vxzbg_*Ejiv{@3M$?9^?34-gKu6m&QK($y+h(@Cp z)f-A$B=2vu^EKc*>r*m(K1X5X-LhXf-nE*}@}P!uU|6I}Yp4_Alt751g@i0D9+dn^ zLJ7qLXh#UO4)CUeisX!yIuJX1W-nP%wBQSi=4@|Fe6e=rlFJ8Iu3Xle6^Z$qR>Wrq zT4r^W&0aSrBLA*)eYR(PXY;DIB5!a{Ug3gE=FZ&GrG{d;mg0gzPl3;x*NomRQ=@~B z-?G!1Ie^M05EXogMxy8-SU}^rTlEpP&mD`EAUG&7uP1Vy{I@_yPfwo9-?L;v4oT6E z!w2GkttNnM{XFtDF2v0q8oS%G0&O|Hxjw%H2Z+g)V}N-HegiF6fO~Q1YD(WdBwxbj z$n}D;u>3e%wSLq5D`w^#zteB5ynRh_JxYv-?D%oEcfw$N=YrmflER|M!jjZ!9Ywos zNnMbKVDWGQr?7m#ppeO(adQQ;oKDvc#{swz96IwC z1;5VcxD|zEEJ-wgGTw&t;d3zxUVwan*^+674m77mQpb4F4NiU0`Z$vJ*?qU&<1V*a zt88uEzKTRa-*t_2|EJEa*r1a(NK$E4cEsm29J?yRR}9${BD*-3orF$hLEKNc%eDii zFgi09i+E1hAsvvA*;@(slK4xr;a%YuINGmrdubdeg9jgynn9vG!bPc+%HBIDo551( zUXE%q7w!^eZ*y~l+g@b9WRSS;49H9SAuo|vv*J6xcepy6Wq@}(46kO^JI0XbH_GY2 zZ>*YZgjxTL_-rX%)fX8@Ci^tS{l)V(&PuHBEG_QXIBWXlon@(M?TZ$+w=Z1OE^l0L z-Ll0*^+8>C3-LS8vIiat1Vv1xj-S-ddv1o?#}(VZ=c zr`!ydg9MBROtmw?&g{6&@Y-K%@8|#eYior>Z7m>{0pei|;-3Y9AW~5yy>PV@2gD*Z zTg=K91?VU2n4N&xh0OxffQ>;TP=FK!q@RHI77EvZmI=}$8g5bokebz~BsKuI%?+%( zfiqWRA%bjUo%&Mrq(UE%5}h!1?V%@rpko*;>m2=UOER&OCmn-a~v# z;}vu-)n06T6T5BE*0C(``rdnHtMe%fd`*MDwufhdpZv6Cu3*~Io{otu@Ob3QCDY=A zw=9{pmS=%apIPc;v5Oc2RuW(GFZEZ6g+e~xiVIqHU*zc0{1+27I zz~9dpzg4&muN}h%V|8ih0YGQDWuF1PbZoS+ zUI=5fM>R`gu2P6-U01O-o{*n}y`26H9qSI>AXKR#NqpbO&iYulkEuQu@-dX^fkf<+ zL?M_)uoe`ZCKalgIf?@3I;0`O1>!`ec8ShuwDd7MPOI$vhLhzxYn;7K326jbnas&D z@t>q*2y0w2T)7{pA;sVv&`AR}^MJ9-$gIYrMll0DyOED4TTmT{;_1)D5+r5AkU?TJ z7qA=Rl--(6r0?&)Vej+L!;;7?MC6Y^HfMy9e8vA!f|_p8NJgsQM<>Mt(ksY*b&vc( zY&m}oyK@82)lR3uvKMi9u(LPdZbsHJ)~1kC!u9L|h{JT8b(Q32hd2pf6wlG+^iq_j zmnZm+f+-b3Ap60v12(To^m6g|twKWEQI?Hgn49VNywR+E^e>a4j|^iuKMkEIK*MJJ z=!Y5wVDE`wSY}8YKTZMDv3aXF{@_O7Ju_3^oBV`FF2H>;;BQTjrsWYY!d}JbZF<69!)5)bc?$NzRP4c-VmPgopKSvN>{qAxd=~rCj5Xm< zm}TemS!_0DSrziz2C`9~0>TqY)E^bj3ZrB)qXcCZonnch)HA8) z)`)Mg#JbcE*z`52Q>oKKtR?lr8nXG_FglEk#|wxIp?zMaPAd+UL7|O3LgjAu9U20OP5pH>G$_^?(18zlrm43e|1Lpg(oU1#hH~? zwo%flw0_CRGqEdYQzEMJ_}!PKe)R;;LT%g8dB-YN@(fQzEh*e_;oR=mJEd<2LdZeA zg|T}t^ycIuEfsXmGu=4lHl!)Hg;NV>evl%DbF)p8DgEN{TZI=e9=9vY$GJ#m=YHO3 zQ0{e;p^prQJ_|b0qK3_SPP?E*k1eV6xD$9i&%L!Fz_nQodywH8I22&E0JEDY<2J`WsPhk+(4gF;Pbb`R=NDaXTC5)J z>6pCD4MHxmZ+trE_T;gtIk%F9a&A-4LGB+?&=XAuo_WjFqWq?YX_2B?Gv}1l zbtUSi%`7XKUhJe$`tzOgv9-4?EGX=_8g$FEcywV<3Ou4rC(OJHhK*q{ZYP=W-QmV~ zX5QGof5zyokdR0sOknt)c;n}dW$pi^jU~|Wrq6(@{CW%vHvjwD*d~lEZl3#TxXN2& zV}qaFCZ~&#imsXQ>&NW%NQ*-GJf1|dd}=<_?uSd`53gBqa6{wBpmOJ(RSP@k7DU^- z7FONz!|8b)16R*&+um36{S{r~8B@}pD|VRJ&wcg1EIu`7YGMDv{)>}NuDq&lVN($K zRr8lEnnAim(!Yt#rpqD(^?hLj!@LBK^~*E zQGjA=IM#52a+z}>=H?n^vYlk+gTqF7id6eJ1hpBH#%~?1#CW;|Z1{z%W#i=0qc{}e z!imwWJ@r(2G=Uc~r@$V452Fh>?iw!Z`DlIzm@!pUazmUKtznw-MPU=-JIi$uXv2-d z)#@Ba5z6|7++H~+FFPkMFDDz-Qx-R=O|Lb*(;>rw%=+h4t)fP^kVA^0t1jGtWYRGv>y4? z2oun%%=7dRO~KaU%-0^>(U#cy$hx6}r5V9%`$mPiZxt9>DP0go4Kj0?CHEY zSG3RDI42x#+t`5!^p-FE;=ZmKJD%LO?Zg*ao0{dVr+eZ+j?NcFUG)S|5Ds zm&Y0|pI=?EWcR|38~UnVBE1Q_g?xJAQawbIZ2rgEUWKvxVqT@mGnFE-mc&;SR{WR5e(gUtsQCV86U zF*00S|7qBqW;CqVV}{=2l2}aSeq!|F;ZV&K8CDX8gpa`O9)k?%L2cGS)m2%}@*d63 zwmiB>8j{2!sR4F99!^+=ob4$IIUJ!9Pj+$8aq;(XLfn&j zFA~c&n{#84a4cxC1Y_dc7kxmo?Ny`0a!kGhvTZ*6uglb?Xs`&fZ9&qL?RM!i(C^kP zERLzM*JAI)Bx{W6{7LhoilW?TP%h2u)*G{73UE7YrQI2nL-FFd#EX-JTRH`kWLqvj zXwffYo@*W)12d#1+3J)UO|Y$#W0YZW!^&B^yAyLL$s)0(3h$@S9ub^wc3Ysm9CSV_ znz}NWq<1{$qITol-AOI&B9OD;l3ka)epB!6xVYEuIP?0U%SN`_ZEp~r^Ehu#yGu0M z{a2zH=I1=@f#I+}(>saMFCM*hP&*Y-3}5UIf8JQuo}rB;&_d)h;Bs2juvjk=Es89k znAeHX^TYm_278SA3OwSK{{-drhM=!BsKHp$xHxW$ zvuG&j^20Y#9T5EfvTm2v9qvY*OHC;m&+4sCXPUqpGTAFPDe1(nFPNHY!d6iZ?^tq4 zI=z?YogB|#!O1Bc((%dZC6f|QGK5s!UG}NjCfF@LYram}tk-{=-%%nX=D|#ndTrk0 ztAr~<{-y3&a3*dCWb=eL*CkN?pJcw#VV8S~?TyP%$|j8G5+a-TTa7o>0(>N1GetJz zu=VOV>`rc{qubR7;NvE?w1rWF{N6a^&YxLrdt?vYmFVOh{< zc1BrclnK$OK(`qz(O8q^sTtAOVS21%|=Rc$0km3B+KZ8tuUN>R0}OVvxV5# zLxo(T>8Hi#mN)SE`zD}6j~h-yC#`Q=*_iol0{Vdo=&b!i4LU9nW-DR~iZprYBIxy4 zBaS=jKL}~)F+ks$U-oI-m3J|kaMz=IeH?2<*q3V9&kGfOKK32LBWd`>fPZ=H)7T%L zgnfrjgI++;OW7)s=7x>y>CxK6gFc;8qSCK*Z#OM>lk!;;$4H|2&%-3ZB z|27&gHi&Nlf75Ys`Sj_50B2Cx&$Jy4Q5IjuPqmDC?h(TnZFv%;c!!v&&L@MIS=@0*JeQ; z7i|_DqaRONAKCL6>%-5Bwmu!dnOGk~eCqlTm-;I|D8*9ok5$vQ{ zYcLa@H_suHUr)!{U*wRb0Z4Vynt|x#{nsE92iG8X3a_Lg!-&ZS>OKRqLVKz~?!?{W z8kSZ8@QKm)hu3`;Y~oKE>@M_7(QIDz1iP%}(^zxj6oM08LGRGSEHw_It}>KYavc6*Vcki&RIPbU+ka!CSPUH6EJ8Ob^u>ULYfC; z6g~=N^4f9zK>sK(XitwXMMIjPnzh-?HY12;GaOA~A@k<>OxfD@^w;+H6Ia5Q@*u4J zPDs)45NFAmeR>lwmUYz2P%6tKS^EUrs%*=E$8AJlv0id|@Q2w<4zy5)bdqj`2JbL& zA#P+tUmL3MNEQWROHMGKaR!7sn_xq=6rF=|j0aD?^b*zFd`b3?49U;^55Dd>{{~gx zl*{i)?LT`K)-{|9p3@%&*Q{}xgtqX)h%GW0*%^_L%Vlh{ntJnG<}Sx6%NbODv)DXx zH^nH1P;J3xgM}LzHpsn(7!SV5i$!R7aY2gWUM8n9BmA9^#h*{7|3CQPakf3RXQBwe z!E_OT59BwA0iGDE1F#JD?If2KlMLpipv7UF;`?V9~p(1D_+TUC9W}J z^jEPlq>X3d&SGZNftYlvS}^)wIA7IZ&l}B4!zRAUrt;O%KVozV=c^j*d8yaZuyq6* zO+6;Vh7|z5C_052?9OrT5^+{>DrY6DgV?}Np$5A%1xo?P+W^?2Wr|$@eWYek9o2Ez zJ;H++jdLP+$6RzcC$myB*lvFMIylehDL@>tY7{pW08zXrPDfmFKAycwPiI=gv`gqt zuL5yuVKS#C8!ce1LR8Sj`Ttr5Cb#y36c8Rr`Tz1Vs0~pl(9HD0 zJQ1`lRFH2t_e?H3TgwjBvYoYTpq8n%EL6(`oD&tWH8=oerx*vS1e^9Rf`t%wNd0gU zZ3#J9X3GS%P`wCoG4WurK0SJDkFu~w7mXHP0x$a--=hkQ)`^W*rEjQj51XAD&%sO{ zPc=!X_JFnT)JEYVB0}ZiV-gbfy$_lq3{E$j?24Q{8cIi z!G7P9S}V^@{jPbauq^)=+m&*U940Av;$DPwMl$y3YOEaisski*Vs!JcE>n;v)=u~) zXsky680OiP9-qhdbG|CE&2VOHM(arM)u9P<8Rx6?B&?8j*VB`*j@T-`Lcbh;21X5~ zn%D-ujvPMfg#7~)!Nz# zhsWXS#D*q8$VRk_jM^7TnW_ygmt{%9ZMXkTA3ET<(6eh}!!;aM)ca<3UN zjnyWdf}2c|&8Tdv7&9_p#$z@sSeRKS>HAEAag{}p&6zU(F#UkhL01kHqUPa8l!fv4 zYPw_)i%ofx6v`O4-LO}F{&^b$7jX69vwDxhJ<9s%ODBKbnK~o3j2Kp2A|8<(BbObx z;h9w9!|bEx8-Us9-!Z=c=4TStsZFZ6+bkM%3i^FYvdL&NWk3sLPboiAM6E=Tgy20O z*=7(jdNWN%g~G>WhMZfFn#S9YOTkoa?mxfiIinxhjngg}3)fyW?=jpzuUroeN@3-zhbQaEMFo+y5@E2dN&DmT z{OO9@BM5D#Le5%sWJ!6ve$|0V6}Tr?O1`GGwc&;uDKt@&TZ?X84!M4snkPw~Ow{*4 zhTvey&JxMzZu9gO`)u7ITej8X8Y==cUgwCMh`@R(#?DXInsG_MSbT4y8jzT-fHbMB z3+e++DhecR94m-4UghP&-BcwAyT&6cxU^DDvNNNZVBFy2VUm%=*%#TbdEIN>5!Ai* zLMK_O)}b;6oW5DvebK1FA*?A2mZ1#4VW`wI(3QokSx2+PjI1oLW56!?1}vz_FFU>I zGUtf0;kEe@V!>V9RM8UKOlc8XlL8*WtTi-2nw4iFd<%xcv2a0qVWIBGh_Q5OrwsDW;OqBJ2|6HJ##R5aIgyPYUJ zQqe7G)(D}R6zc+*h}FKhG0jhn}c3T;}y zZu7;SNwMkmH(q)D7e6_(l8WLzcz0S7kq>i@UQ4G!*g6((1cMgn@x9?dMATf8nneyg zUCQ9pwUEw*u=OVzPmh3Es-A#_?(#8PAIWftfd%anY{(wlIIk8*kB>tIy$(V`L8Tpx zB8Ym(9)B6*{29Yz5HXH)(Mgzsr(19maB}iErr#JY3QWQDN?>Xn#}wAI(arp%u^i6V ze?6RsKBSYd<@K-mO4OxSqA7i6sJJsW*G$Wpte^0jJRJHWZ5@80t-}le@2_i~GWH_K zh?M(t8ZwSB%WJNgGWsIOto;EEavdP&Os|_Vb}b}%)a=IEX*gfcu+rLn_{s3JG+eA* zAI71A5XKRBrd1p`QcO()d2#QiwR4yaTJ1@Htrw8x%rNAgfq|Hekk`T9^MfTgnyl#@B zx7qW$vVuXAE4K?>SEm$Dnm{uif1a8Gr>iL0;{pW4DV3BcKOg_n)s(oQ;?otC_U|97 zsl>!o>Y}gH#D{eG)l+?`Oa!e~$)x9<)k=9RO^_pYv(h z{O;Fack(zhJ{rJ;K={ts6CloutnO1Wa`XfX=X%-`7Ided z09U8TlArQNp5Q*K6XSE}5xpAUF&B)5_hIjkV3b>)o5q`bRVTDjmT;I`l({V#XH=Ks zr=AjOU~OPy{JE4?I$oMP$=X0CTKP4{6n-xnOq@M(&`@cwn8f?>qsg&<;LxvO zC1__1fGye$6S055_aZMVYyZXs?TMw42`?+gYLF=ov6=8d@64Z!tub_csP2Y<277#0 zAhk)_JX`p0Y!w>QxVVAKaw9s2Pr{r=*YbIiQj7ceXBsYU%yRHE#-_NXibICpT%3kX z5soHkwV#5_?Oz0$tk18eSI`C6S)Va_64v0!@1$W{0bA#q630W5?_{i5$4wg6RzS8* z9t&=VeG{KSRHIWUP+bOti?Y;0F3H&@^k$j6b!gE}syMftAzp%d?C|J_i8{OX$F&N( zg|T1~6?UUe`Ph`oy5~Fblpo=S{Jlcmb)k_Vf}=PXWNi+&BP+{+BKZ!Rqtc-|WWB>F z47!Vp&5`aLJs!@Bn^JCEn!i&MYW#%-I!1L)nbyK#QrDx;ECcKk50o$5-Wh7i@ihjE znhKp`HG#)5{<}2mLV}Ps=GqjQ>JkTI={=D-hQcnRB#Is=;+fKQRIOzbsi;9y_>>AH$h|;er9C##x~<( z<4Z6nyd|*)DJdLK;4s?%ri z#t~Hp{Xir@P5A;wso4ut;;jx_GdtjT-ysef=z!)Ljhi#4mT?PA|H(MM;m!FKOQuLeZW;qxr3BXigpW>FhVtkwKQUB ztjC{oJe`v(pj2PSgFI8IyE)D-Jacg5jR&7*AH}DIn&wwm^-hmuPVNG@$5lCz|M_&H zx+)Q`%B)T(56&6%o{zA-sq5soy@PY&T@8Uieb zZ0^>!8Sd2IYnq#D;!RRB@-BH)0QS&~9aND!Hz+))Mi%b2wgy{ctx{|2(%tPkwEAi{ z`*N-IZB+|bCRVcPNna7wo1cbY%p$5cUsU8v|)a3ZmF%h+v;*#Tvn9GMUE>~5=~d5$10MNju-N!phW>yrYFrEwPVTbWqZ|z zh$LP#V|)qOKVPr@;xt1&PgvGUth1NK7j}LGDJcJRWqWp0q@}m2dVW(ljQy&_eqEEO zLjT8xs)X*uq}Bd-+5d+c_)12+2OHSX6;E$uO>J{?E&jm*o}$bseka|m@oI#KbDacI zi-^YL!&$y5{xKd|%enO<+IV)2##5z!DCb*x77IC(cstK2;Ls1IN2hZ;r0G!omsB^{ zC)P8V>sNqMyP+^i#+Jf3{mKvMij=kS#j}YsNr^m;s`S`+f}J*Y{&;074nH z5kxa0jWvQoPxZXZ!olm}8*1v-$FK9vn%RWvo=r1nd*!$CR@B$8$n*28>O9_Z;i6~h z6!_Ino1EsIHmhy`Jtz3HUY+tR%F{;4#@aZdC((^2E*vTFi zq&pJnMqdYi-in5X6?w=6_hVjt3Nb?$yas}Bz$y(;Bp+yAO9Y4g0^LOtBhMWk*}RQymu$QwDs7N+Drc7Ex5o2i<-L~GbBn3DcWJd(Z}3+Y;Sq-wt zdj;u^L#8vP_f1kI3ZdXh{Yauli2juN+J`3!YAaVws-7*fjhI7~ZZGcIASw}*XW>3b zz~wN2i^aFQl8VFKN>#!V)-LM+Oyr|hz0MlAbz)jSMbIJ=YtH?2yqDNmnmAG$CLeLB zDt%Hz#961DROLJW%X!0WgYd~M2d!oaZq=aMDSXlFkiKN3+-+LSAEUnrg@5xN4G0M* zW?vuI4cFv(%Pl@NuxeFqtiiWy|9j=7io7KwV{KnaJ6ySYa9lVQzpnfm*&GdO#OjHm z+=zfCQKH`9Rt{KH)WWl6(v0#vjgQ7)^+rq{C1=i=b(Az?1D&1q-J{airIw_cZ9Rp zhi7?qL3i5EL3XRryIr%=SS7VA=R7nMQeUA zU!?!eY8< ztm*&n6%v5u?||hz<%AH09iMy|de%GgKJcs!@|U%7T8gN zA)|g!U^q7_9UUg1Wu~9p;rP#x1nT1%@rYJRySB$>gUGt)U=xSceg4F3+SE$1ToMmg zu$>iba|P?JK)HQpt6)L}%de;~8W9yG!hHdFX^H(&gm==x&sV<18Ytt7>wVD z?9-4Z+{f_#4XkO~bi;5qLuJE0FXT}i*{T&O=%@3Un$JS{(_AEL;CFZ>1h8v<5_A-8 z3#sBIe2@OvxUNA4SSoza{jdt^1R0+f{w9dW1Sax|6~PQABEj@leN5k_-=vrIsy#a? z^~tMXTSEaXC<>b5$6L^qqKPdIIdXO*b~HhL4%Idu{^SD~^}sUmBzY~~DyYA)M75*f ziB2>v9h}k(FA61wF?5C)ux&zpjzee$qeG1jL(;fZ)KOzNos2fj2$g`FBaSM$=d`C% zTSiT=DL`})i|ZlUK-nlPl-HjBKKsE_%k3qBl=%3CV8snL>`|&-o%_hr5u^CQ3Z93a zo;%i}h_4OT{rTEJLr5`s3#enF93Qj3RNm@U{ z0W~LPdEYWhEelcC*rKAvF>hX&X;Kt}k?IcQ8Ci^rE{CuNXN30!y$y?H6BN=!6_eHn z8IBz4;D@4#&@A~jA`k&o6eeAfgjAH8j?4RBOuZefu+m1p^#c3dQ_{f|kF>Wxvh>0r zNJ_(#diVm*$}zmTFIz`ma_k!I>U$W9nv(G8U#3n+TMs{(j0I*w5A6(gI)f!pubJ1_ z6)Ta^tlwJrKz&aUab_R#9sQ?b>DuI;VOZu!Cw_RM|CM~!@`H*Dimjf;2m7F8_W-|tg? zG`#%&=Z9K$ZNFlE<+*c}^RL*xt7Yi<`(6sKZC7t`%HaD-`-?`+jbxrBj!a=}l zA-D%Ly%v%HRXQpVHmhyHHK?=Mmvhj__8QssP#}!X2vVitq(GDddo9Y2Mo&e>+j+bM zau}@9U{ut(mpX?EgE@m4CX*pQkR`znO+gQ7Guvk`4ORvVLxn9Vmzu8#Vs40O#qmm& z!_X1>r{BjZ7XY}z6%e(_-*!U znj0urc^J283|X-~mZhe=r3E2VrAd@cELM;xI9u?3fov*ZdQ*X^z*)Lf7jeVD7FbgS zU-OwNwzG;Qsy0=L2D8^JW|$RBvr-tymJ9QY=7EAtvU^cfhjyp&3iHI7tH}-n-puJC zop7DrTn~>e07##XAEx+{7P|LGw0oUZ7;qLr;2 zIX1AnCxWiiO7Z_=?M>jDy3X|Bd+yb~@3JggvMkH;F5AKzUUadIC2X)|V+@$ZX5V87 zTL=L|NT6hcgoGqyb17xAf=j5AkTj4qOVc!g{FAg_CT)Rf=}f0-U^K zP5PhteV@ULWcljcbKdiwcX{6DZQOoh{lZtDdw9aWL&dwEez$M`SI^I#`}|k?``&$e zSMi~J6CQr<)rIR%Y;UByLxh(8Uod%$?kC3m@js1$Qw+oXG?qcOV%im?6KMm)GWces z860(uj?kDW3C)+zX0N?ndhO4pSaK6$$*abTDTQNR%TO!qwRcFbZIoV15lQn$@k7bH zA#xqCbm$l)OQ$pOA>F{B8A5ZMFzt?$6pC=N(&7^d z&HSDHaS*?xkq$60v97^MXP7nw`qoxCwQCM8T)nqMr}4S=AeN#k%`^m5#tE6(kRyHDUPd( z$yIVMVzPW#9+uk+qPppkj7V{W&!lat>g;Y60+C^&3WvGOASm(Ds1Z%iISL-3RDtZ~ zlUQkN29`p_hG%L}Y6_5K9>DI0+s~Rxny(QW`;o9ravSp-dw;N@;gLOquS9NnVO8&; znxToCo?cM7u%#fQwWA{|-q++U>%F6G@sy5@t%2;u9)-7L{)6)$dcmo%|NO+tgR3es zyd!^9jN5!{ZN+}?%18MX#WW}&U{BYHB?|- z8`DFy+n_QPwmaoIxg?^Yq?WT?!!5c673fIyI{F)pE>&l=a$36_i3Vsuso`>{ z5;gOZ(MenBo~P|J;ClzK;s_z|0Ha>(MZ)(wGE;P~8{GkWqW34C89b>rnL=)JxzU5d zQun=`TgT;X+I??CRyT4YXHIwAo!T*{+s99)HnUUX?0IEZ>lEan*4rwG^K02hmW7EBAcpqSMgO1F)m+wZzFx2d-x zJi9&Wt$uRVn!_v0vLhV@`Ay-p@yqshm34Pa$%(XVkFH!Bj4iC?cRf05Zg^sz#hBtX z4P@q)bggfwn^Bi*)Ee^Z;-$1hliHeQ+n1R=WlEtKM7M8L0rd&Xfkq8;U{Nd*1aDJn z26*erOl7Cacug!9*vGDMt|9@jcOXu2fQ4APK%!WtF)~U&3`@))r#F^dU>YP#5{)zV znhM%c$A5$$+V=9+$vOJM&RbfdJ>y;W%zVeQDfyW;L-DLBGk47{ntkBCmHDBZ-jICr zqxWw3;Kc)X_7%@uDf-b_ygHUwIHRM*n-PmOq}u|SUZc5wB>oszn?`;WRcxjkJ8u}QDtSJr>c?I zMw`*WBw}U(GsIy5Q+pAEWv0;I`*4Kzj?b$MZ7hxYaLi-EeeWWw`H0TQ>}@ zAD_sdv~;3h7sBz`sgO7nwf zAKG{Jp%%Gm;_eT2gAvY(gOAou^BZL`#K93|pfu}hC+9RdGn~E7)y}=nQ_eF^m5M}d zoeo*t=m6v<>BKYpoqF)2&F)7D%*~`b5<|1DEVVwjcw7o?)+LJ#56_!_U862R220}z zCK*V7*rJ!IEqdiIY`&@8zEsT1wA)iH7Lu#MKMwSF<5C+_c@Dh>Gg5`r)Z*Uay~Vt- zm?(-^vA&TjvgZM?UQXK9963pvorJ$ZTNfcgiTooa4D}N)k1 zbhksU(3g2H$if4;4JB@+{C=e-Z|1H!!{y~wICOOebB$OY}?2ibPXgq zr`)pq}miZe0zjM%HVT9AD#;|eKqQeHx0}c)J zraMdyGUy;i2dq6h|L{R=c0H92_~@8%D%@1GM}sZq>~2pF`|rRbwz7RE8|sp+@!RbY0J`t$~2tQ60a%V$%I8=xq%A?!t8@}1P0gzvHnBkTV5WRS=25T zX4$+SY-~tW@4j6q-_vr><}DHmZF#jpP4CIRhm=SUZEj5_DXxqF4#3*PG-z98JSE{ zc|3nj7U{tZ@%xSwnch#b?Kwhyg=v$v&ilLLc*-5~D<c~#Wc)>7SbcXvMdy6@Dz@us`pzw_~bzN_v)?wpmkl~3Edth!?U z&epxZnpv>m`&8B~S1t&PG2%2-KA>Y9#nUMC(>*2+$xp3LMSdr0N;#Lpr|_RIfJb0P?d!Se&@WRalp0$;-*o>w`sQZgKt0afx5;lruPIn-nhLb@kZifx{?W-JODWj0PQ_jtSJdZ9s9Y%_ywoPj(Mk7 zWU!3LxeC%((NEi!iuAF!f>)TMimvkfxHi>P;y@2R2Q$9l^umRp8&9%oMx$VOo|*`f z_fP=@H!~{H3-)RN#7vzArX|g2v$}ZIOFLUKDq9Qh4MYlE;Th}1AKu^nz~YLoy{|7N zZJzQ;`RFIAJ6IEN|HT>BCbWxob;BZ+Pj=TcUlB&MQ{(b6 zvpkV43(S9TQP^2FeZt6qvUnyDQ&Kz%Fc9Vz=Zd*|a|d%zfnOolo69SFQBP-%)@vl$ zafi#{bmN#|eU7O$APEJ&Qgcj_hom<_1sK|Zma#!XB;j_Ng|5~eJ>yi6;vo|xdHTM$ zRvqhmZTIA%^6p#e6_(3u)io<0UlQH6b;qRGj;&i8pZN7X6P1Z<^3Spf-}~hO-aGQy z%?IWc$>n>fHbyLXKXzI*qMNbGCCHXVKTRbsrIKe-$$?Y?LsA}y6;H2~)!J(Lw`#wt zjwM zC6bO~v7MyyVE4#aKAAU_ynjlE2OE?8vHPChQlmGNaUvt+HKv!h6c#lWIF2o7FKj7K zr_aAipD*pbw|m9iUXAx|TgLu|6p8CZB#vTv!QesCJz3I~lTkjlo-E3@AJ;|Rn)@ln;uF;*hFAC2kQ%x})oN|5 zwx(WQjJvpwuSIyB#Wj(=BNW^F4;h&uJvK;>g2l$~6uV_ItF9X*+Gl-NkPDa=GzR;E z{Xs#I`c(=UNEuAw*P*sM#nNr%?8SD`9=D&e%kB0-D_LUQXyxZxNd%pI0S6&gb5Clj z(q->)2v%Aq$TEDeq^KQAp&|HyN}!-r`~*W9J)qZ6(5h6X#9AAmWRSKDVF?_XH31b57EOJtha{ zfJUHb(tzg4u&qY>aZ4E@93spMrse`ugA{``CgVwiEP|_N;Fc+Re%;7UxwzrEH8TfV zgRRr%RUf+a#N_GETt2w+t+v+4gYw{nTaWe~y#2kqVt(gAqtl>7QJUkK!^HN^O$B+6 zXB1%$SY-|BbQH8s2ah4c*JV1z|7}d2*4~q~EbD@TZhFXG`J>`2Br6Z6@4Y_`h?eCA+S*VoMJEXZ0G#sxc@ExCw_tR$NhW#1AduO;aB+WA*5z1P6M_; z)82M_d0CG!a5TWH0)c#0k6&>0TCDlKP~S9)l`Qo;PmdfB!BSf{9AEhZ9y-_PTdo^?lAYIVcte2%ET}cZ?I*_PIihIU61a5Jb zfEs&~N}Y6*BQKvg!N*Q~>)lZD5&6)_BmC0q2T!#KvQSiu*io%CMb)jG2Cm6IXFp8C zuWV$%HfZD5AwXy24BbYK6)?rkr_6G*dC*9f7&jXExkf?}d^`tqiQU{|(f43FEP_!< zZ;N@aSh(vH2h$u>anLvzQw=oCK1N^gen}ym7^5PD?Nkkn{Du5=R53`}Kz5L6gX2kU zup5Y3stqVxMyA$$O&j3V)UQ0ETn63o6Z&etobxAN9mK2k1(_%cNY)!-Ufxagv+Om^ zu}^r1|0U1!-ERw@3jEUo*$;Mb6M9%j1u`B#3UW2F+vr_Q`t(m>ZQ+^{6|&npv?Wjh zq=|AFbXKEX^^zttbNz4}Q`Td89wXn)l%=%3vNsalKT6Cw!Qc66qMvM+4*_^$!uauV z4f`U=-Bs4;7O|)YcA&~^r`*xT^q%zo^wa4wh1T4ySeWMSF=~%$d89zinjWP9Hfd?w zjnQXpJ@A;u%#!j3#eMyDl7*S1?H6n#hxfBh(>fq+n(fI=Lpvjk-5kj^x{A<|9y1OJ z1=ZlV3qztGbOb}38J7CpqBg~y5zfgXo)VXA;Ekf+&t41&5H=?_JZz=71AiX(UwXh`{AkW7H0VVtSI z2NoT?(-PPLxe#a?XdF5VKp)T@S0|@xg{mC6Qmz>sUO2cW)HP*7ak`9O^k!m5;*sE%gm7Spge-635vI5JpS-1Yln z>tgi=^-i@=p^mDjQzKsy)&C7872V6YP26rysN`a(!4fz@c-ru?fq&FMb{fcZ!xFeATw(W7A2v85SkjoQ3qj^902s*gp}d~QKm|uA6XKdiV8lE4W|MO3Veo_f+xWK zjKKcK zoY_@~vPOclIJu82_Q8lM7OZKrv`ea=swS(g+pIjbS9+|1)jD3D(fcg=`7(wYmCxr2 z74(+LT)j5ab;mY_Sw(LMgNEjjDnbwrN>YyVO1ot3Q)`#?E@h?E*Ajg+2pg2JxWY%_ zSzB7B-!-?i;d>wKzUkDo{N4o%ijEDQK5=qz_I>k81C2f7Z+fO>cJ};rJEE%&uc?yt zPP%1Al}@3pnz=F7JFrg7EPU3Pm7;%e*RJgk2V;wB%cqX_G?Z`gmglCF&%2Y(!h6ul zCdh}ATOqn_T0^&f5wNKQ^i>(IVi)gF^WDycDNfYH{M(DRlo-CB6a5-%OrdtDvmrxz zi!BAu+cNN++UBz5+61Ld3n7AYFc;)KkubhU2?>eS3i|@?96%1(T?!?d{7{`-UQu4* zC;s=2AnL@+WJ>-QpFU4n9#kVGzXD_YxzxIbhK%OPvg4PV1y|L56DCjjrin^B8$Hvs z$C8?s>SbiRDPhLTSN?Q7GlkQQ)wR%Uz-Dn8`1(GTS`Bm%ZL`WN@rBb3>PSdO(EI&i z4e0{vgX#sFN*B|BVF&O%t&*3iK$HVcEgIg1MaGU$GwnK$4=S`cSi_Yxo(?D$-P4c* zB0Ko`$O)X7Wv7v#fb8LTq!L+AXCL;DY#+ws<>voL1?si0#cJ9nqI);`uA5xvJje&W z<@v-TaGtnl8%UJFZAkG=KBLd;>-PyN6!;509>LaY)?4YYnDt17k7-#be!8Jx*1)Qf zpibXm&dBziNZk1kOqVnNz)DGKog1-ava1L{tkZRfElEq!GY{aYo0w$@twm25Sen3E zNv~&}ZWOSn>Er9LPM9}#!eZWhT%QOqt=nz&^`dXaAa@B0kLo28V3Bl9VHoxMd7Iiw zb-K=K&HUHYzoqiO1fd%hWD`Jj7Bms!(B($~5@Ra0m_kIsv7||*lvGAcPtnjffUa!o zN?j@_hmuEdhU?J8OLipDnLTy&<9*@oKw##$vX1)7w2?1=0m!RHjqc2XRtvfzAhf=@ zJm=8nn9=x(&E+iXipV0vztW_nI@M~gFI_35(ECkdw=h3z+5OWKc`RB9HUs*0P%K)t z=o7jDFze>1S#VTO#+U>gvkBzvK*D)+%_jKdJPsuUr|I6Kb{;-uZww9&E2t@Oc;vHD zTL3eC81GEa4?7nV)2&qakPjPh@*yWNIf=fzSF>6(pczED9i4UqJr1m<9=Y76MaNAl zkhH@V?TE)x#w^JPp0H$!7;i0AKH&YgpIH0T`P4guG1mRc>JxldK~YK1T{HRU$VY3} z<>c`1U^LVMhMeHOd&T-L*dg6cIoT=S4|tQXM81($y92ld6N&W$%m4||YW+6-Dg7D! zIla;dh@z~UP-}??cS8@s_~@*RhGs^Cb#OB!LrF4%F*(Zce?NGF_tO88kwgt8x__|_ z%HLr;MsAJR(xoH1Zl{{;RPR?GRtq$g#;etGeK$u}h+Aalz}bc3{J43wc^hooGv;$< zrO`~3)Pyq`V8iKdSh4E{2LpoH4>(xZ0LQK#T|s4daPaCd$1I{WR&;H{N@7o9SGc(j zF${xkuYxEPs-z*uARdwQp7f*Xa)nAY)|6BAsBbjoBpow4V`CkrG7RN9-$?c;Gv*#j zJkJ{+dgOF}#R!bK9~92MYtE=KXE}7evmnrQmY>F04d8c42me{Vbrw^Xiq!7(MP8%# zDKD>38)0#JTs=m>JbCDHw^A_nrjB)TBnNs_6<#gw!2oXb}3I{m~+6bJhTZx!hbU-?4$B=C!=$cQ6G@1CXEiyWs}AAk!|jNEsmxUaas z_+s&uVtKJ>w#7`kZvDbgUXKIdW1|T{Ym?p}=q(vNaw*0nc_R{Fu@rVD3j#l8heu6(lXu?zbjKL1EukvMYV1nJUFd*t)`AG&a$?VHObOP*M{>WRh0 z#f$L$$t5NHZy1t%;Y&mqklf=3zWAr^6>lg0^cA_n9S9I6~Xi{A|Js)U6Khxz)%vCqktiUlnNBj1qq zufEp2wk4D({j%m9dg`$XVwRr;z!7)6 z9@6V$eJ!e?0}2XbYR~jqpp^S-2_nqMPsO6^TRdiH61`@_2?&U|4c@nCSqo@Jdod&0$ylTsJHwr?g( z5THS1F2w5XTn6eV(34AW`?{yc<0rGp zrtIC>e0H`w5JxH)CDJV9#T+OJxOEMV5JDuCN;^P^Nq0mFo(e2H;=>$BKT-Ih@Yl^N zD(6LW0l{9As3LDqy>ChN-rKjKR8$6JTefG_%EW(tQ8zo{70Q;bw$-|% z&1vF_k#}du5>H$5Ci1!|V&YfEEDEM&h!+j+5#b6kjalG0*awtkyOP9}gpUfH==>-% z^0)(On@aXI^_Hoy`2JUaVMGXYgnqeS@X|AKL(=NW)MM5qjYm&=TENwc3L=|ztF6X|X zMj^bGq%V(=n0}ASi>to;928>E1}PZZs3*^}2q8ua@sd>>8EHMzHDN(RCgGhACyt#` zW{qzjm)JqJBzEx5p0oc+xPB!3vzGkoqc^8w7a+FJ_^TE0#_3$agO|UKdo!b+-U|m> z(_{qEftI|YeNW3D){=)&Z=p3P!2qekjh=cDfKB=x@n&rd;S2>j-z%-OV+ViMN{X$k zt$VG4(F!6^surncFd7UNXcVGXY3ybhL2B;X9rHDkhXZ#G#}WfLQ0Ic`19tOx4#x1P zKTb%P-*bozyq%aqKKwAza46Aunw(C|c$+Wd?IVAppKyl?M?Pkscn){kh&%6KSj8T3 zyu1mW@2l`nH!kX%&hUz7s)fF4l2J`^bzS4#mGRS6WOvo0RlKo^sH&>Wp?J1K6{oG5 z5at~{w&0`vA?bLs5PH%PXPcbj5l4M(mVg`G3!|<%)dbl9;gU7A3uD2xE2G<6A~{n! zy34xuE*qZ~Zpts{h-8rrV($f~i*TAb8wRIQ+5OwlBt#thjE z{Q$FJFX@$fy21zuGL8x}UZv)mG@Uw?pfxIZ4YmtgI_8%m<%5Hb)wi0J%+0n!KuI?? z!5^R3jwJpaK%<4j!Xw`d@wb7I)ScM5|EsO~>3Qz&*Q*8d0TyDZHF_(htbv*(IH z#5Hl#GEZj`F%wlc#!MVkrY3Wzk2h8uTa2@eg4*aZ<{AZ~*J2#!YIJqF1cl4t%0|mO zH8HbQM3@U}NuvsErjjTg$%}_pVP|iUh8U>(Nxjdo-1L2g*=A8DzTTDio1Ff1@Ha%O zcUX-w1=9C=V)#thZm+5?w~WO3L48SeUFvW@<}{kwP*Z9$msC&i@jtmv5@(4ZScx(r z1oKL(+57HO^6Cux#R|sz;UJ@b#Oc9OTE+lbqNdr<6%Bx6E z=6Fg9lPu(YLqj8H!5oeA<=tqsrIE^ z&J-LD2h0Y5!opnkjx)rX3^h5cCiKnt9yJst`33FbdXmGdIUHKO^40P)a={CXJZNuC z!k};p%ritDS0qm|nx3G6LD8B**>EAt6+6K}kfcta?o$C@yB0J|}X#mDt$ zV>CeG0*T-Us@cV5Vr1*YmLR8XN_Xn?)=97E-qZ09>;6f{>vR@>Og=q7BcB-a$y50k z^Z9N0q%WU{^a*c1uSktqy7E%EY&5-dnu6(ZjozVUSbgda@`DV5e#Q(&ym8qcUz;vd7hXt_q*RupT2HBd(PAZ(|nL_w53hI;;paSM=8nNdSe zbArR1`TUY-fbfBJtV$l;$)uO;*wFB?A@cRm06nB-&2%w_X=MlaOoRm9GX*&8G?gx@ zody_gZ|b&Gfq**Jr4r&6i`K4|#Gb`Hk^)HciDnzMr7&5LLmEN?D#A?SFBirqPstk^ zDu_>;JHGYSj(lu^#Yc>31!?3{x(__X8Rk&u+D39%+L?+bcF&8&1}-|Jen-teqb9;S z^&RR5X~2Of5N{yZ7MK8FyvR0eR=!V9z;sOu6L|#%Rw2j`m)j8okq&wZUB^~?bg=>6 zz<+F;0Ckm7fWTLYlT?IwZ$461X*JO z#UCJPG><|tCekpO-F0=K=CIlGgv1`cI5!NEK$S_81KqO?gSZ9pNrl-f# zd(-!(pG%iT(h28?YB-%q#}Dc*(d|T$i*Zda;#_i=Nb!^OE*!eJ-sp(aBUef)QwkA; zf6@93yPLX7m_H;P9n7zQab4zP2rp`8*YSLe*gpA%WKbs_0WBl%o6sv#i@IV?V>Z9* z@yDjzHX{TbF#L5%eU3Ttv^f{?V&)sjsl}^96ek@F;9^RYwyn&Ntp=-=91(MkA*!E- z00}wiJ?%Z~z2cP(P}jcSix9U3y4quwhHumwEpY=g7+6L)2{xc&kaUNEKfn#Z_f6hF z7_&^1F3fU5&YLX!B6$b%hlDSNhK6mQQ*VIY$LRQ}mc;>chz-A(-U#*TM*SNdw3sO7 z+A#ZW4lNo`Mzq?!*FESy<3=}Z0|uL_mjkXmq^{fj`4bO(a#sVJWv~Z>pB6EbZ0=^U#U0aN%eAqvi4XYU9Ai!> zhrgI}C5MmZ5ca^Ni|RW;vE?vn;}=cj8Ph8!zQ9DZCbx-KP+!5Qw|kOUR+?^SDg(05 z*5jJo&~D{em!vm6Hj3gwPiJaaQJXpwfk*L{=a$buxV}l5xHvRKteV({fd%vbX;b4! z?za2(Y~8l!zO540xPJTVw^4f_QMK+zx74-V|MB-e`k11OPt*IP=feHi5oRD;r;0Y- zY*wZiqlRf7qo)ty5dq;7>f^Wwu{0@ZF`Ke0oj1i(QaBejFza6dO98jT^dNX~SeXPB zF&gSXLADg+0JNB%(td#=*r38Q6@Pq(_zOEH;Mze4s0y zyfWIlsXY%Ge2{b&Hx)U^;vRa6G2f2$e1mU?6YC%LC54)?z&f$uyf2}64=?D-3#Xym zU2k|BaP*lTN7U`?EcLnCJgKQ^ep8&wHRWdH3c1EKZY+Pf)Vu|!H&%*PVP5UsGM0LM zOqtNPv~j^|@|UhLnkNa(Z|v!E1FLysvYhCK4ll#6Q)=_1uOV?A6L2(QHa2`BA>J%- zHYO@`!dR3<(k_GD(Fa?$nPyHbUwTaV#qFNzN)HS7XfvDz_G_p5sAdSyTLz5Dcrb*M- zJkYcS#)42mq@bsuzu;uS#R8?xmY*dl*?=Z9iF z?$^dpP{s1JC~q`c?TC)~FZ#(gKZ*E>35AZ9sI@cGZH~)N5`1uJZ~?EnB-DIJb~B=) zz>aG?g*^h*#Vnp{H%IsVnA^e8a(d|M(U&M0lG}X~=0*OWU(=IYa$pj*()lg9F=I!M z9ZfwL>}ZDIS_<&VceiA^z8jPA#%@eEY-n>8OcJ*spK2QNRGAbRxPJv{8;yM8()7ZJyD?*o`HAK*3x1NrL&6)w5m_^dK+7PvH!a-1y;g_#Gf4t-$@eHHOF_aOaJd|YkPFqSKsYq)Z=G((gs`QfLEgafdLQ zeDw6wkOusf@_+nS%KtBa#a|gtlnAX?KE?=@T%MSMurho_`H72)D-b&VM6!gCP@YF> zWrq-yW3_%TQ|UjUb@+(TK|d2Eci(e2-8D|(4HAb`>$rgE>@g69QP~5+tCPypO1V<^ z2+=*R0HT6YIYQZDFIr*e(lP*Lz+ea#jdSfbrl&eo!W)kATW{N3S$oHh+seM}s<@Pq z^pHMslAI=TqIev)K(C5%GW;CP ziLc2f?n{ie>=n*{6|!kkVxyPtXP1VjipbVWK=~>0E>E*}LEHoHM41Y%zRz+ad!M_E z^nJc`j*fl{9lZ;4(!u5=Urb|j0`|;4dB6N5653~h?2~hkXs_M^%uQ)#5X7U5pA}!K z9I5HX-L7#(L2w5SmECs79W|A=ZrN1fz)6q!=09TBc5(B?7%1)bQdYYjcb{9Z8f`tc zK3l)-r0ulrtPKad>k)(Q5st)(L>P98oI#<$^=stPJ#M8-1oA-|nW8rev<4j#1KEu( zmv8h3a(L{*jl4Ye(RIr>c18a$QXQXi(4LycF1MNsC$1O-}-_KV6 zEV~7zRq?o<3PC9yw=`@T$r&B@=tB8Mf4E*Uc+fI_hn$QR8J)3l+ERXWZx9 zm)yc3_i^`IZUIxzXSj<&ebEcQb(>pZ9laBJ9|}7EdkyCdmka{E9e&J>oF->!vX;r3 zs4<~dfZY$ojoptVa5%uEJ3@$q9%G}oa_ye3lfvuoX{=0+6;H_LW}H7uVSi}B1=O(@ ziG_2B5y=oEGU;i6S5PWW$y6%g_u8+tJd#WswPd-LbZW^&Ey+fr>6BW7()e;DmS3l* z2nb6P zKd$(!BJm!nz&Fw&{Kh*h6NbIVJ>>g|9uM8SbktigYCAV5uHl?yz&Yr= z<4!@PKV{Gw!3Qm~kgqJ{52FlM3oT@tg_K*GEWG8E$%dR4Y(UxTa*YOwb@Xlo_Avtt zkOT5TfL`P_t5$c?Vm9dCG;%-&s!l2dUil`Hl%w}F=H?KA0KK==Jovi1T!TjtN|tq^ zY4U)5^j=4A7*FseWOCwo#b=d?<79FuM88(z-tk^=5Ad%yj({i6MfU1_qD9!(#Jdyi_)YA$LNnltzV8m!j= zn8l$k&1izohl+oD4#i}>jYXjeaj6iP1$q#d+@BTcDlO>}0|BwCq_iuN#eWf97)eWu zEQ~fSjCeeeg;?i(SAHk|9DD^j)Vvr5S~rQ}>G`J|M*T1pO;lDkXE&81{fe3tMa0250F8N~>ej|mu{~5*CEE@4=`jzgNXYt}IU#PwUMn??~E{F=f2seqF!|fJli^n^E-0V4C`eXm`oPj!0TqD*D z)(FKpVh&$dlao_ZC)g$)Z|;fowDt7#^!FSE>h8Ga$J}v~EyGr96Kv6;nJ+aAwYegS zx|G0B#Y?`SLYFXPd`UUvQodgEnRp zLLTyDP-m2mo^^uy_TL~s_1(X{9F0Hzcsxqp%>puH((1|C{z+?ETh>eolIN4ZdB>06 zG_P(+{$_IU3OD@elR^RiaJ2og$J+6yV_(pG^W>n6|KSfwGl~7+hby1o5Q%Jfe&xz% z*Vompe|Dt#hlj`{_KWA}FPN|zQ1TTTFjxtc`F@KCbhFOP= z)xoVL!@|29825f81IXr-=mi5XuZpOiQXN%ESQ~}nPfww8Ljh1dY!@yRlBggk`yb}} z9g54fqD`<>NjgZ``Y*p+pLn0oB~P{{4kZq?lEm2nM8&Y@2~&!pVyNz-jG<-N@kPUtqI!A276kV5Bnm>$;d~zK?TJg zaOxk2O3?3su>O;Y0fZbVCn@aQ9}xyDQu6{fC6GfnkSWUuC8ebA)l^iDhsS z?Z^k%edMPkEAi_W2M75}BR{1KrDV_U#ATuYEySUb;X`!PjTp6G{vNnGcZnvm-rkoV z^c!)8`cV+=rju5uHpJZSQd23(4R}PYA?C3K)@PfuO}Xpy^m%>R^#nsx-LCMxfW`OrZEr@!w9kY*`Skm0egg=+_WGYzl3Kynh2!vGAV#gy}-Z7J@kK?OzPd-T&847>R+hJ6K-$~^Djqk7o`^7jh; zd(-pX)pP4l?S68%wQi=EZ#sNHo7*_A!Hy?>GkteYDFkglDpH5AhHh3lxJgVY=}WVi zj5np&Q_}D+>k3Xe8ti2qrV21Ka(M+MHWmR7%lF@ubz8YHWxd^E&tIEq$G@zywE;y| z3b$VEqVtek%F%VC!C;9sH(y#pX-R1eOlmJRie{EtONAM~2Md5>kw=lHNhpcD+L-0{ zD4p?0*$gr3@y92u_~@f?iF?M~_KQbC$G+Kla`X6+pD=dILr1E%Go~P&EwgEPjGXM4 z@{^BuC%PuL3cF`Ly?x5ayYiu`RRf778PPTE_w9y+M1YoSX7wyPk6V;Ex(RyulI>6n^iZ7P$IYa+q|giI(P8&^dIDuAXoAQm>I!e+PGXy-&mGcw8$ z7Q_z79#=N5oJtCVS+ep~)x-^R8!TinF#-JcD0O-u^Oc8Mc2!s3Icx3Et{L`25Aytj z1C|-PUcPzWKwCV#Q63z(V9%`GMuRR@ZOwJ;KKgP->cKScq+M@p+U@kDJBn1hxBPr> zYktWCUeFQCxO=aBE&p8p2BgRdd|iy&i9QK@Ra44wgTOI`*1WoDZ_@y{;$&w*pk(5k z3}_(H#LG%Dj~iv=qU?%{mo$<|@rq%jAO#SpBsjmV>Ih71-Wnlnu-En4jtO*T|Lo8^j{vYeY-HWMMwi!>p_BnpPf+X!@;e)$HTp#-^X$03Hm z66j?LMp#uL^-hv7oJz`2VjXvtN~15Ms>mZOlw~(9YZ|}2y|`#z$+(`vG;wK5`Se;} z+3ee*=B$bZi!*Ya>hjib%0>qou}t03T^#8A-hzKMr|C8sJVx?m^~$Lwd2M|Y7aZQX zG&}KeaeK8-=6lUuIx#P?+}ApP6Xfb$;16~~CsC=YfE{;2yxBnP-CR{w!TC%akb@j~ ziX+9Ghj(MpjHIpx^6Ov=$`lW9{wHXnT8X0l74`U+?6}%^3|1b*Vze z@GDbqpBW0xynX7_?K6ssW^A9jX6@QFH?LYX;@!6o^B3SRz-yz7&l%hg#5vqsNFSQs zGM`eMQJhln5EXHS;8hTr0)6Vvn0cZwn-wUb^|`M=BvZ(w zApJ}<3y7UY;FlM?YITMV&^o2?Gg%6%L(hpiJhYiXuVuGLg^Sd~!^Gm459cGW9HMRN z!Ied4R@&W?(}CYhxe|KZgZPOEe!yqwsbED39OL|~@C#&V|69D~U0yr^>?1odjqGl4*=2GeS|8+Z_LxgT)@JJZrKhJ@TJuBIAwCpJ$!*mcQ(C#JDQng`iMj%% zrr%PeG~?PCS0|(O957ToQlA$@BCOykVTo%qzv=dOc1|pqym-U5$eK6rYaf2wAx@c5 z)Vyx)l+0Mx)SLGF!dg9LPFZ;Rq?#1}+$Vl<(}IDmvuo1Z_Irahx(dPQ#4 zqA3OZ-NbIo^E<4*JZIvMxT~o+<3Gk4XLFko@I`BB9z9f0O)U!ZM_xqq+$$6Kpo@HE zCcih6GiEYqCIe=Ku!%V|lNe{hUNuXLP=@9OjMG2NuJ|6VxITGB8pa&GVvU%CD^7Be zOJQ;*Ox_BU<6$xoCJ%;5Z`F=40oGq6CCxF!dg0GZW|x4*bAG4!^_Wq^4h%}^*8OATyyWeI~LWpO|<4|Uw=>M@LG@PoMz3; z{cjDgEts?tjl2hNj%Wupm zq>TKR`NM1E6EDBgH%iJsLU}&l1-dWDv|5E|=DL-O)SS9lElTJ{AbwAYMwHspQdAY~ zBq4+OI|_4TSYNCIOFQ|@vQ;Ct6SCffO)>o6GUdUq=i=(kz!K0}H7zhtTGg!8V0c5| zpQCkqFTp|vdA*WV_o|IheFDm18OqZLE|W0?_IO8jI-_?4f#OSn8qBBhE{VaOI%d`} z4ED|Z>X8AkUcSbU9~l%LOW4*54+!};9~w~)Kf%13#r!T5MyA6SD;2%G91W@N<`ASO zT^woQNF_(mb3l!;b1#q=@y^gq$q&eLN^fDu`v0CjZ*F&bxG_7czSKjOPoFnu zHXa4D8%jV($(hibQh}JQpQ{l4rofp1Z<7&)jL7uQyX{16Cw7x3!^3-AM=WVdq(zxz zVTBPOW;uCCGc<`kd1rsulahLsJ2G1wmfEaveb7`o^S0)!7N@PwPkDkv(>Ez>YV|&~ zIXI!S@ba(b?(E9ds`jZ&0kN}K9>l{OdQOtfFy#XnVUz=}#f0=prb(oTvJ~bEVXh;srn=I#@WJ%biiS|2B9z0PNLlbu@`>+! z#k_~=6}S$rl7pU3bI*2mMTcSf>fcd zRIO6!WiKeL7K@pC!Qd4_0^ctXmQklQESHqTh*Tj^iKEg_abqx^m`TMfs^m^*bINSg zN_b0KcD;oU5;n2#m}3(ErE#pntw!WO#p$T#=7>o2sO2&xEMdj-oc4;Ah}t-M zybNkjY2`+32uv@}nkX-gic_fYk5|5c7r(%xwH=G0)JpLpDcA{H0pVrT>CkeIWQ34} z)q*UNsF|FoBX3S7y2RBxvjv-KM}n?S<_&iP}BfWd0yj zMwXbulcTKvlb2Dlq#q3taP%2Nuy&GtrOJ|jtr+vyZS1czMduBF>?0y$_qh7USo+iG zC-;HEiQH2}%;mrc%^!81cJjrjg9q>gqQPm3QR$-5^y2}gphAw~KIB-Kc7Rr3pkN8; zFKO><9TPuLl+3wz;gWl1+DxwW})w*Xm1D^Xsqdz_rlzPzM*~P6fSEh~fcC8M5Hoh5EFqDOTAr zg}0zQeSV_LHMw)D&*qvky~~Hi1_u8#eh2I5=R|V>b|rMvlg5<16dexh%*pT2rKVV9 z$K>9^inRF(1-leF_;uk@)Nicf`w@ZGQnVZxEYIt_Z4?~s6)9iDd58Lf`?tac^V#HC z1hWn@i|HJLTfIIB;&?gQ-inVKQxXpyKtkgCPyN#mpL*(t$wb7;mCvlJ`GW3s9pB9F zk-r9=V@D1zPtBj#Dh0vWo63i}XItH69H`8`|qBzBWc_ijmi1?ni9BSrm~pgDD_k8c?H;HP;D zO0_aGcq9 z!SieL1(h^Y%ppKmNjh89J4hCEQMb{CQ*SKM4UGu~X`?4)c{!=CUC~x}`1_Gf1*tW) z)hW|@dS>ba!GNK`2bKN0#a1O-n;k)2rjamvV-j1e zEEv5==+OrIK!XgFYyA;Ul4xHF$sX7!A6ecW+h~k;P|tXdx@Bs&zB`m z;)?&VdExNauv|+Z?Q0Lm&tx(J5Ua*}lyTJXHZ4$r^Q3^^w ztB_HaHVjJ?z<5oz{b6E&WtR$vAPzKu1ZR+b6Oucthz}y1WtI9vpq>rWPCCZTZOU^5 z$9XdAiqrC@EQ{Q|-<4PCbr<=e6MN=2$C_Il!3v*oLj8l45lcp4YDz(db%Oj|cSUDq zpsqB>Y%Q#qm{&EYK5NI?yor_hW?Oz)U7&JmMcT;H>ZYb@PjN8AsK}f`{;i_iotKra z*QNOj(#k6!RX)tzW@K9^D{!@#Sz`f zkI=k*&(EDPd4?-DoSGG@hTrSpIuqNKZ^*yI$*x82%ZVey3(GeM-#-M;hDIzS@Nc5r zR5Z@*<8I-$b9=epi!;X+WTaK5OmDw+b>F%r3m4wLb;auTQ|)Kkh4#J`EBe}nIlJ5L z>A8o$=bpx#EVXk^yrs8=Z)urOTf*t`>YM7aOLy+s)3<5K>eaXQ-rCn0i>>b4*2mB5 zBYjlV0!m%1udlbewe_xByuG2`NN-=SthbjGq@`GNRb@V<5im<^6KFgNwxD02Ug!e` zPXkL2`+*iCQ=Nmp-|Qa+1<}{g-zI;Mc({Ifv=l5r2a+3g_NEG{I4g~6cUGMNO<6{5ihw&Yl4!XDB`_@qTx^v9B7wIHV} zQjSTM5-3Wv(`LwS+L*v@AJskxRVjpo@ceM+aF_5W-{b{TN@ne7&+nezk=fC>wK7r{ z?3mc>jy5$$qm4~bg>ATNc)IY+H=%;M@soGVoVcPnXma~)$1;n?he{eJlx>PvC;nVF zX;PgyX%fZw1F_FfqxfmQ0@k7uD4$muo*;>zM4STA31}S+qH)L2XGO=gaqGqC6n%rK zj;mHh8yZrpqivjtm`v>h?IhAp!qL$VAer&py0*4f#DG!!LHVfTxpGBrYi?_$JRT#J zarZI0Y)BGS5ncAMED{lTIi7& zF0~*JkJcfhIRR(bE-cqqO_^0ZxvOaTbEJmn#qDqH=zE|mQ=`>*y(#6UKwx2c>BIsn z9@~ps#~(Vx^GE)&zaiM(KXd8#*SA>q2p_F{c3tg^Smm;g@Li7a-lq~@zPGlbXUoK# zIWt>Q3VlXRzd1Fnv@yruHD_L7UURvZ05IgNv+*sr9B6M?-BHx}_}RO6Q@aKqvKYLX zOm2_pK8h44&zdx6KIbEkFk9cv%zYm%5o+}LIIo-4P3ki&ju<7_Ap7{4@pb2Y*NqDe{sjyP1ht2R=T;s}+Ax&C}JN;$P@8Gfri2PNsH)>jkt z@AIFxJUy_xAg4BHQ>*S5^{k*4Q8)GS~|BDlW=10GPZg5OdW9&uDmQQ4QuUwzPMN=jx5_tc zx^?{g9j!h}5^)ufEl0Kwd&u7!FsPHp4kWFCMrs#Fb-P)3x zp*D{43F6fVTPb$YosAC4(yQ_J?A7A|6Th`E?8qPUYHsAyvE8-#S;UQ3>t8~e%xjk^ z=_?t}_}r0Cg~w4dluc0|i1E+jUQ52tRvXr3j=nDOF>(T9`aScr6Cz$084}R%S>VgC zSjW_~54KNCEh}Svo{@vx#t}HGagK-_@nVaNCP~nL8Sjov3DrbvM?U2%;JaC2Ba9bw zY&%dZ45ieAG-v9LV$@it-$Su6#d48>CojpB3c2$hpz+RsLV2sP;3%ygHGf8P)*fET zD*xEBmh%<<+RhRrTQf4MJ4%Z?>-_7)lF~?3Wr>(L5^k?dPp@nXhuiSIqHSDRO-&g- zF|vKKrTk~GY4sRcy{NVq8$^I>&8bu})6}L|YHGe7Ax0Z^szR=l>muehbB|dtr*olS z%%OQu68eBP&dm>hK-uZ(Hk6!MG*qX+1S)=#Jd(kyP1WnX9f{xFa%)YMH{dM|jh`sn zJ*JiVEv;+4lO07VR*NY$Ef8e9l!#U+UKx!yz{Z+H;|(-wA;*fsPstYeJym3N6%nyj zst5>7s>nGn8T1nG(H640g@`T0*g|6%G>B0qtr5#%(JMdwEmv-1S1uO=-+kd)vU-#_ z>4pnqUcu0)2;d~nfUnRZ768ty&X`3={w(#9@>AvHWI0(~PD159<-89KK+6mxl8R;_txIkRozw9)qC~6FF+S-H`vhCZ3EIRRD!tR`T z|FZdD`s3GEgTdT?@F4S^Ts6GZ);ME+!^JnR!LNl(n*5pkDMnfWZ@0ofBM``USxP8u zLqwoLl~%Q@YG2jiDmjWCE|so)r9A0ZwZcs4>+7Q<#l{9@$GAC};#eP&wsj1zULX6| zs#m#k@?Fmj^KO4%cz$^CGaV>{Fubm6l^t_hBZVWvjy-#})2Ckf+Wp`=JE*-*=M;PM zb@S`}Gj3ln*)#E}1yuif=FAzW6u`Z|G0eie5yM-ZVbElX4Y0iqcG$rVq0Zh>ysmgl z@%dsYRm_B9tyl~W#ABed&}UYZExPY<>a<0FMs#&ye)m8xIcQ*P&aFFi?8!bD`u!858ixo zSKrL9zHz7Y?8UCb$D0=2+baUGF08#25$}O1D`^E?^ zk4oAQv;?O1-B>et-;LErR}S~Cot$@c%&5K=?Osu zLLD>v3ht0U%j@n<#=ODa8?F!0Jx!C}yW~;+9bR5bBBuJQ5m^#Il_DC=K4mA+i*9rt z2SJp>;ofQHQOxT3)Lbc!3TU!jenKV+(iN}Tv_8-u0$JW zRF(D4oSIizrP8D6^82wk;&9^@PA!g=qpc_XK;uGIHGPL+C+?;=;Zl$q5WM*6QUl?D z7}#PEs&jubzYdXMR{azDrk@-}V+@5Sy6K*2Oy^7A5v&|nU|H_~mdWoetjh~EXj)y_ zwr$E=C2eIv%oA02Vo zkbcZCy5ssc5u(&MTRdkahF3jFzdnaw|BWO0V_1oCJ+BJqRs=R7hHAWrsnSeD$t3V- zFCD2WRj#r*z|aJnLuY6bCZlsO>e6hyF6|q*mn#^Wu&)~zAd)c^45eKjxpkoEwI;T^ z=|GdXqlq;&;r z>={>|a^_&ypj-{Oo#AeMNERRM9y%ohA@1Roe^^I{E0pIdhDhGw1tFkf;MhRJM;m1p zL(0#BCL%}~lfGO&Zb5l>`_A5tFWi;r*!udt!w08}*L{2Ky{~WWNZj?p#@?On-DRn9 zQ`aZsRX5&uW9w~IFIU~xe&hW&R#ha|D@B}I@}?Kle>`w7efFO=*45P1ZTu$|J$Qhb zUc8BSxtMm}>3bje#r}DP;Ob9LE-sw6{}&J3d-}d<*qiX7dGV!MkZv(1B(MhGIh#a@_^AAELV7Nwn&qFpg8pNAmLMl=34Zgq$}W z&-hr+|A5&e9yeTx&@HmeQS{*Tp%F9o7`K#d$D3_b2rX#DQ7*BK=^fuc7b-Rzjb4+2ke;?-=^|<(Y!r~VE12(VMprNzyiG)43q$^@$;x5}h z?27o!^FSx?zYyTrW^)7w4a;IetOgB2hR}FLLC=uAF_w%mM>Hk)&|$@`!2||cwg<#b z8kVvqXo!UkQ5W+Mc{h7HLLf6_;kla(Q9-q#)R0hWJz=1E#Se6ww#3WaF3?&8ivaf3 zLk%&}!f9mnHU{aFY}_$+M|yj)C?h6p`CS;J zs)aStNI3V+Iy%aiv_VfkgevH;!1aV($&Qys3ylDdoz^f#Fp01x%K-zNF1)fRP$pRx z81diJ?=bIMr*tZt-~H|=i{lq^^8%d-2BrM(j&j+2@WEBAE8ulC5CeZD`Y%?Sl)+$u z5%e7eQhs@Pbu@1ve{oe@NR`MzQz%uSpyd!a_rp>?8h>OP<#Z4W3CD?Mo8BTrTn$~% z0lXIXPg{_VL8cr$?0d2Xu=k8*CE**8vSv)roDJXAd*;kp*!I-NPxdM4!^gny>bU7! zA3ef*=RESKy>k}7$fUhGwd>B0zjY(uTCkN1&%(Z04;Gd(VR520lGmm5U?Rh|u&D&Z z3sz&NslPn8*Xz_GiXoY2d&c?_GCg|I2ds5w)#Q!!7VExs2On!@ut;BEo{%iRs~Q?f zqovu>0ee@CjR$nDAheMC7e2GK$C&<4B3-e~-ulf28Dfj}z*ip35?l0rsj2Y`p0-V| zY}c7rwtVmAhCiXVp!G_-WVJ%5q8#Db#B`H^{fpsO2xuAEyT)G{#REq6b;dRd-x5T- z#cTtT06goaZ$UJSDP{pgtpMmmOzTWrOec^*Mtiy3UAghS>_Y_7H<>Gd*lS=^! zJX}7LXm$l$Xd~!zis)h^I!$IWh>5#5h~wlX)LNS8Sg{^~#@G}EjeeL$X82Zfp2rz*6LeG zLcG}?uw0OvE+xJX;u;P+p{IwA{eT@=uLNU7_VbRS zSWqU?CnCPk$uI5*%pO`$P>>qx2d%NlG16tw7B{@F=GOGcNoGoK#^&+Lf9l$F$4Ag6cgX9c{yDlf zU2d3kEv=&X637a99OmOh?KgF@d$g^?`HI#Y0kKS+F0O#4DOM4E48(xRV|H2H7AKk$ zzn)PiKh)?=uwrs`a-T%el?UpiYl*ws(t%o0u<$@f9Q_fIX;-LN1y`}?nJ7CRWkb<* z(OprgC&~ou#a8H-%LC$NQ3bcA*+5*q5GT=lLdm#5b@4%>@pucWfOVjG3nV#4+i>u3 zx$3gz@+Q~gvc|cy0?ull+&`*$uckl3Cf5JGb$>?xbR8s4$vXo5L#fMph%;7M2|bJf zPjVvR{Bi;NaxRWmUfhi#+VQYEiAP57?^4}WDrdT zfR2pCDU%d*@s1+d=qWEOrbViE!=d;o@?6-+c-06$tNCt*z9aZO)@QvN1{+UI!NGLL z2w}!oD;<3jV^PnhoTmOSq|&?O>FI3?x6EnIx$}pcJjG2t<8xll8Q;@X?AgRVW-~^H z*=w`!UDRe^zr6o`__HmGcFak)vsb!Ot^N^ki2GYpUFi;KfW4UA?}+t}B=|M07A&$98^0B#rYh*p0m`OPL4ucz#7DfvT#OyiIfzlq z$Z)81SE(2-?I{&wB(J0?5bE<478f=Z9w?N-hi(WPdJHK84idF;iANGK?d+&7Nk3B+2pI3wCwuyPo>l8H?Lnlxx&Bc*d|Y5&6Gy@ zfZRB(rpR+AJ905?Vg2Km%&axD#Vb~%pD@*SFB_l!E=x9b#hoL+7cI_sS5x}1csJwc z2I9rMYNQl-*dHgnUkG2O{O9jd9Y(di+qX#%+SCsSy>y5L+Z-Qzc*N zVc~=T98#FhVxwO`M{;qUZwsm_B_D~p0ZQrfRi3M4dn=Duiit{AUCAtl0psEd)fP|L z^OfkrGEKE&L0e5I|My3D-wr=m7e|dNE<-XnXnAsV zS-F2fHO2Z(?y^vN6WZhKPd@_oBJWJD1>^tk{u?wvY|@WQ^|zNno7|^l*c66B#E}~Kp7+HhOMHJfdoBAcLF~hF;q;4ND=o_2zWw%OXk!D=#W^xacZMlmHLGX zaRqx}HnGGpxn8o1#}?Zm;Y2}bcsN>OzDI10yC zPh5C?Z(V#+ZOmp0H_dFU?VNGrwB`5qL~55lxq9A~-s09}58iNP^RD&-%W|5V>O6PU zFKo(fpL|_;xY}VYaQbR$syuyPoE;x+0e1IEk1JA^<15T{pi04LQH@89E)5t!v8-#T znfebDcdeMxxuhcxt-cmd$h7*Zxz3qCv7^l&ELhl5IISgSMwc9;zpN!{@3`@{sWUcS z(JlBaC)wfJoyyDe)CkO~|7w=XwlkJOeq( zP7}@eWi3GF^;$|meDAsr5GsJ;S7TH_JWaC`b$Y9+D&5WVI$~o<;IErktvU+YD(Y^U ze|>aPr`=poTH%h&UOe1-!@5LH!JJ)dn-_OifF6F~Wj6WNRTKTSH5INq>K8TTwoSfH z>EjdREv^qcYNy`NI7%BoIDX2lb7~#A#eQEb#|~O)pZie@EPD{JRCUfNtDZNl+#Tm+ z@}t!Ap#oE=y}8btoq9wXm&5Ks3nNsDZQuxm{d#9>Jbna@oRsa;g|(IspS34ZR}?^x zmH3%BI~`{rk?x2O$Hl_jLCeze+#$d-R8TOUEtE`!g`RLql|7jbD+nR*1*)6WI5cQ) zgH<=$TqPU)^SP+qMl-tEy2)CJR!PeGv8kUuzuDJ2vVG-Kt6B{g_ZZq%J+)@V6RXFY zq{XK86<-%WxGL*I9aTn*onQXZop=7|%boI`$y;9Bu;IlmlWAm>^{Ip>?gk@j6eFt- z`$2;mOT^9~b|RsDYJLu~Jq0<*Px9F_`7h;*YJNDs8vLR8`5v^=&^(#+k3KZ0WM*vH zk&WF;P=tYC1B#u2XETE1^~$6VC4bVf2ky0u{LuWBuk5(jAx^O0cV)f@9H%31KZg%# z%G3MzKTVMY^0P%C8A8H9qReQp+Svs=@;Ihl=+-A9gC*p%!}(0V>7M*l{^opx(TrZY z=z3-nhJ3QwB-stTRVtPjRnl-bnJ4GDHNKuhvS|{yONJ9~9#kw_tc+E0kYEjGs8@(0Y*k^e-K$%`*k`Tzw|5kLSn^jsx17c@9tm{5cVw zx9;I14H3b2`8l*A(;o8xdLI$b&J5x2kY5_iZ<$eD-CR~mvWS(ICa|L>#PbOjPE;p4 z66h7k@)P+9OH;FUruiHIi@F(T?P_lBR=b(n9qz8~?&;p#eZ2c@_b1&ZqX*0Rx|Zr0 zGfJl<#|N8A)fkp?AiI=FTZjsmX9#iXasjuz0)LG&MbKkAo1NUbuVNvfV>fRYMOiTmI<6YI*Vx-nHii z+_FLT2lK3Nd_O%aFEQuVWJ7n*n~2p+Yba7%uemu~-EQgMN4{Qq!wuIL1m-MU5EXB_ zP|~|~pw?=55GQ0sqHG`GLBP0gnuUEs@8E6}Zj^^HXU@MD#TRAIkw~>gPyBGy#9f!} zR$evKLdQF(!&(it&WT4Ro}4J|ng~42#4QuW$e^|~5y)ZI944DQCehf^*q#dJc%{;! zlu5Djnr+^a4n`q)&$P)9qY=K*_KDR=h^#E&3cxm6p83Fb=ZiYBjYDUv#1j27Q1ZVz zeaCBGaLj0K@3L=wWBb&p+uzt~?`m(J;n?)rju{s=Q<=YWa%1gOXWteo`rp#0O{;C3 z?4;6v@q&N@=I(}jIttTE@P zt8PpNMXy>`97{qRFbDMDF8`X92mFk`CJoxWNHPTcE6&KmV35Dvy6W+id0b0dyJ`O8 zYsa^)-m}Qm-qt+cJowm}aTm7@Z?d*F)V12~ShMzaTWeiIt98?`SaRF(uMW6ct14Su z17AI{al`Qk@Tjc3%{BPI_cwg^RJbA%DG&eTJJ0+>Bp!)WhW{aRiW(bD&=Y~y{gQ2BsZ(82jdE@flL|?LR zs88zaO9{)h<&ouEmhW1w7?+=$$z~p(b9#`Y| zISte&DOrP+RyQu?^lWb4Nswi1sLjo2>{cX6r9vu7&D{{8fzt*7lL-wE5BUJ(V5`^H zYp3RGAIv`mf-s7$SI_EoK=2=?ZK!T`8Tfk++{pa#~IP57DuUp%a zmvZw2I7IORWnz(JR?w2FQ3q`DU-^`dt5Sf=o}SvdZ`q&80G7|0HOcRvG;2}~M*+B7X%)+uHA9)9!-*w0XM_83&-2SE6QTobn0!bY4bq`HeiGphLL$RB`|_*$v3mXLDliKRdB- zvSfW;WvzEjJiaoSdS>&Cjx}HF4=2VocsiVA@wjW)Un-0jRy8AK)~3XyB=319uLayVxlSY?ge%tmicV_zmSK&zptR~#oAcyi**G_DRk9} z{NE(yjdJk2%kc5tU^@E$Aw5sgE?C5$Df=PqHWo`j=7POkeW`|hsfJakh8+~^N z`FEbBe+HN+4Zm<`2#VJPLk&ywSYC(>sq58HIMfl6dP2jY&7r-a;~^y!YN)A3c9q>4 zW2<7UFxC(g+Z>)<4Xn`9;F;pN)$=gA@icfm4R9dJI)!qrTr`%KkJH9Q#?_3IG?iYr zQO(StAytieiakwWN33!1P&$HYn05p;;&Ixd z^~vX{8<6lUU7-`w-;(Q>k7cL5HkOqC z_PoEcKRd~v-}t}A05Gz7srxfx%l!$zbAS@{8dY9vTF$Wu8;Y!ph!L_Oa#4vBi4+|w zV#;97(!!{a%0r(YpxQK)L-J6O4r}8kE7i&oC>e`mOc0Wov@=z>~Wke0ak0*bAjtNEc|-=mW5rlmaI zD*vtm&FMo$K67PlT~jM)P?+$U{0r%<@*dqu!nwt?iyFfE1rITZN=7grok+OsT9?NI z0EoxzNE`=)&=xb$dLICfh&wn%H-klmA1P@Evks;pH|7vKLqr7iRN|~{8`rh1`NFog zs`4dwJUClZmg1CMvKrh+RrrA%VfLZ?uK1Rr5mjlCgv;vaKtcz^Bpp(ZltOq5sPdn{ z7(E4mAl_pXum=-_$RXH=Q`)QRfXi+jcjxV(#6uJ`nCo=916AJcFq)@des$!W6D}jc z*hN8dWO3nu0@ABz(BPxSXU0eo-y+oas9m8PB_q#U6&Pz3n9zOn6;#$e$bIy7y#7tX zM&W*8FWy`aFdAbtF>ukcQ zvVTtL)S{kQ)AKL>T8#CKK0+mHSxKQf*| zecvl?f*sWGdPV9KdOhF8N5(!9|CMfIcIh*wMq$9eq#o2-hw53RzNTJun{0q*)D`bVgBl`E z2!$%X8dY*HxL>^VtLKp;!uNBDVvD=W;P$zT-ICeuPYEtV4*q0_;MZnDz))t8j0PVP z^01XaaR)XgSVQ=R@3iUjC@tkJL1kQ5S5KwilvBVj)>CE({ZddK*bD#=P6QraF@od^ zEjD6qlp>LLI!e|cFIHp_a*ou#`z#1Am<*`UPu_WT=g$v3nI&;3mk-JzkT}GrH=~>| z(6V!4_sk2^5D`6>J7Mya@QiNx$mi!r-b0h)> zjUi2~;~K{TIN8=Q0M5rAJI316uU!+q`P_4t!JD{i>hBW(ewEOh3lr^(0jg=58yk)t zkDZNOih(`Q*9p>${sM1OmeeGmA9BK2*rmD{H+76?hyyB3Uy^))EFyJ1n6_}!oV)QP zA!{feh=E`b1UkJ6pLt~)JaFk<#%EH)u2F2J65TQKi4M+`AKUR?7k)mbO`k|eEiQex zP$1l!=m{#hhTI%ez-Yvp3m9zqgQY@?fZ{-5S>fqIhAv!cAv1Vv1NOzSKu+*bF3ZjJ z6c`SZJ!ex)o}n6R!Yab5D;RP}gtn!iGRnjVkq6I~uSpcr@a0Mtm-c&JS;P5b5NhTa zAqn5#ir(xWg$@;uG~8R3%if8m0$kR7srjv+FCp% zeB+vR^$q)<-6vbxh8NF?e0|o@;3$KxqHOElS9r@@u;`+@l->^(zDFzi<|P^$v1yb? z^26cgu4s91ZhK8TE9af^+UgtYs?~;Y!*Ijt2HDuqP+geRe40ZIMR}j+ zk$`ttWc4)W1q86m?n~P5!4m-BVm20m_sM3ELfhpCSn z0Z#F$_Mw^Me3S{6k3O7h^0m(#8n@u_wc`f*)~wtRo;a<0#l)}}oVdEz8C6%VS=+za z6R2p56ohk|wRGIj^l-t1%3#;dx4&}e(u%K+oldGB~<+1LkR{rkH zPsv)uij;nc6=?@My_c|fB6^N<=*cc&pKuP!Ko%p}v1nHxRy)+a>TwktXjrwhmj5O;+*kknODP5|qVeGm0rdQMi^sas-GXJXC!C>)3{X zLV>v%pTC|I2P#1e0H06@lBQRNK;IbALBtLnEIe?5DbhOW^TQqN+@AEY9ce1W zd?PKu>m|O+rHP54M>86YO2MG3^h7D!j8>GQM#TT2kOlPQi%aq%DSt>9qOPtTc1gvT zvmhvwO?JCtP8lR+jO++BfpzttbtmZ9K?}UjFe~o_#q*J^6it1-3vq>=-=%{zYM|5AXTP%WVvPw=6L+WrsI@qbzdIvda zEfgHW#!5xldJ1nn45ez|GHGk2R=NlsQk0mk;*ld5M-1A5Y%mbgu#WH*r#_gRpB?$# z^CQ1|ON@^E_LOLOUbLJV`7QhQtB1v3j0E}Tr{c+xaoNw2BV_TA4#?@d(V%vQ;APIl z>JqJ46U!W}4zbwWWEM*-%@z@cvYh$Cnwj{Q#Y@ti2I-!X*h><7Mq;}qww(O=0y2Cgc~st9OVslD^yK~NDW}=#^bN1Ez5Cg|*U~qzp4Xlg zD@WeqpN*n-*)OzyH{=JJ`vejr{QdDW`bs=8+ebqa#J%7VAgu=DXG1G8%CU4&m{{ zN)sQa>6GaMlVsu}GL@S|iT_qQC4B&m4B@qUULRw-%nDi;9kBr;d*)ii{ReL!&)a%=bptUU{QP8kA-nFCXP2h0J8}du*Z)kXNE=8?@aSWjJy>*4WAp zcS2^iP^U{1_VionXSZ!Uc5LG|HW3rXK0C!0FB*9l(`DGtZhD>_7+FFyhOxykV{YMz z?>Q4zXBWYYpT~Dzfj8HLaG|Bx#azZ6?#JEFxTUbW+TG!ntboP4RRc9&^jK{+P1PdM zPP7yC3SP}C3ZS?g@^10&^PcdY^BRo~bdv`WrrRW1WmV&Vcdm=n)P?3uM@K*lv6GT= zl7*5PB?5Jb*0B;@6EQY7_<^yvf)f1nnj=Tn-1YHm=_Gsibo!5XvFA4FbGC_1dx_c8 zzUi3Al2aHZc|W9D-((2h2ugvDf9++~B_*ohRR6AFK8; z%?I3h%4RkT02gar8Z9#${U9nXi=<>GjIS)*H(4@crVQtY_WRfIOFkw{C?*pJgub+N z?}^%8@Fj*B!vcfL^v*l_BID}|g>LYa(wnktjI6Qqyw2~QgzAKME1S%cyVE0pa**Z@ z$xQm5XhbRuMw*X#`u#S$W>>XFg8gt1v`JNS)Es6;;}?%=^!9)#Q&hb+>@nCVxXn%H znXZ0Z`La_}_d13ckAv~vpK0^#=7nvrgrs^J1ZIZRFy?yV2-}q2rpen`(OcE9k?E7CS_{sVr&4`643n zno!TtYG8Pd(VP?jIh80i1xJPy9tuJm6x5x*;}!{%OBAlK%DD(3LENR$DShx-dWgMo zI^F#}-t3;Xr;*oaYeI*6apboow_hNVv>$R)g_{x`sH9@-R(212n4y5dX;%gW=YKdq zbBZUNOw>?#fnc>$=I4cGOsSx3MTwNdf-!)bn;#Rv2}6juqYO@uA{ze>X#?yAV<+wMB%)AfzslpwJK9kTXQ+`72JZXCy zRj4+n>@0MOZ`17^#_iSM=90L*UCw<@z|1=3e$9SCOnz)+&lq1aimEYetOlJb;BIDw zVUl_jhM#G4g3TuuPde9d!(>G8CV;d-!pq@%2W}Ss&{}re$XS58qeu7gYAe0*upUhz zX(EZx1!>xa`H6Nj!#S%UCvy(>jp6~meCQA!g6DG>Q;fnpaw;5XWduNJN;NT)$pj}t z-xIhLaVxqcF~{2LxHW2+PCLNpZNZI@Kg-BaRH2Te65LPoiyd0o&vkHlB5IO56}0pf z1gp~TfG7prmADJ{azZ_$o>vuQPSHyXPzEXav57rnddVcJrm(5nBpFO5!EQ0A3OB(z z>QC}XCO9TMLfj-jStwNUr#IJrRF{|-PCt6NFlZ0%4W5_reMqZBNG00LR%Qg}abzGG zEy@`*m4SewaG+>$Y2J_u5@Vn=RD3y$_P{cT#fxI8VkuhWa{E&D5CS&Px{QOeo{Njz zEiNkZ1Igw3bBDGDZ1E?Tw{wbW~d0)^TlrOgelq2}Lilje2B+$oQ_Z8~Dfx=*D(uBB{*M z>SSU1pb*g_Vq>H+lG6bcUccHO?(gYO^>6Oq+kdFvXpAFYeEpQ6S&Go6wME*7+Savg zX*0C7p&l!mCu?;zDYr2NZVbX-RHJE1T`S-7s!=k{hl?g(6iy`ThRO~yktrXqF{XT+ zjyW3(g3>cPdgP{={y@1hVniYUlnzS=c25~DnK-+$skdlaIIpMp!2NY!7`OXZPxj7y z>eB<0ZZB%Il-AUHZ+m8S{kV1e7S|N_3^otl-F@A*MXj&-%Ey6pLBu-Se*xJpA)r(~K*a@9W!M+0@>$ z>GenYcihy}yl8u}Yujy0N}`K4-m4?|UX%ADlWj*{mlfOL1#gCo;ZLz{sC*JRk64=P-rHKbsB^>fcXo`s{m31Y`f|(MGs^qdO%CNxUYjhclUirg z&c1nKVz{p=zhP>Lr#UaTH58b{K5M-3x>i@|?p4d~ymMrEd6CmU_tBqhxci?Uy3t$0~ke!9tB>P z2-{9@yujFox{92L?s9ST=_EoC;5xvMxF@$hb6p=;LF^gV3|2>av+TmEw+h3F*07zO zv$GT;LSjU3>M9SYEX@6^L+A=BS}fK9L&A8DP9ui1f39JfVWUCf_LhpsgTYG1$mO#X zv~CoA<1QA~0#*SXtT?PtM4dfJ!G#$W*W(mTFObsd6hA~^gz&w;EPc1M0DC{(-OTfL zcF4{W_M}~`wlizzA=7cwX}DH|Q8by(D(p#x?L?kgF?I?=;yUpR`thKzA#6HLpjtPS zd|xn#Nr_mmd5j!*SrCrls3cE<3~rcq{O%AP#HmR)#!pPPJpGE)n0{sNQCJ;&F8-R_ zBSQG%LvH3>9mnBECI~=oyo0-SqeHG6QI*aE;KgQ-QfD5?>C&zUCq#HS!F%4z&Y}UU znDp*~vmo_&S&bLG95AKG%GM;Oq$(D#MKroC@EQo5LS9`52d(3V@qwd@ie#}4aFzj& zhaH8u07tRw^-P@hLVEr8-_RmKk7AU)!H5RjGf*b%SMscp(^ZQX^aKJu3l>+2wHKbF zQRt(B(Do(*pTPA22REVsGJI^idAFHuG;cSHe8%mlvbUNI2E=_u9kbN(9hL1;nMY+X z{WMgaeX(+X&4I zhQ~1&gh`@&28PL*5MeBOX_C0L2nuU4$ol^wJ&Bd1-+MXzb5=}@hi{4he(~<{`_tcM zH|(zm!Qq&B3cwrkIvjr1X*eLV?c$>d;UY$kLP+u>vL$;oQ$8R1H?y61mMY!1HSLmE3>7%ZPKMIXQwlNR;T zwEZ4s;J5tA)G^DB^potS9k7P4oW7&TXF&@$%SW)HRc1)s+o>|@Hlqqw^m#Knj5fh) zRxBpF$%bDEX8ckyqZrg+aF{F#JBSjWA1l9BK8Lqa16~xwS(x3SSsm;=|~x4^-+KvILviqHjYS_qC%#W2<=gb%NhSh&~2MH^r3M^gvK z37IfC4tya9j{cS5dD)GIJTr1G>Y0>2dU#{{sq};2XRoCPUT58G)(_Kzy79hgWSe+V zJT~$(v3jJNbR`B0K8!W3verb=JUg2sG2&H-0F*V}#>#BWY74@aw@yO~Yl8%JMi-#- ziS<|+-;>$n@-woyQod8ZPnM?2vt^N*m?-ayABz`6=}nQnEVA9=0a08cZV|jaENBW8QazCRIyZLit2^0CfS+82!a>$ z1(_kB#523(Ow#(JZqM{V%8MDmuXzOregiu3%pWt~(awiY2pkdmD{NQHBQzUP3#P}^ zFb|KV_n!Xz^V3jb_29Eh(x0V2JuTLY{`69|XXK;wGTL9+ku;Y-&L_hVX|wQf0(7b} zwjp#QJA={Fh^H7`Xwd0A>!b!=sFyJ9hZ+MMLH=Q#3ts&kr>4(WUQJ){r&{TaH>g9S*UR9G2%D2sqPl>ao?R2t7N) zd??2;Fa!F>o->`tF=w)LO5u!ZDCB1kp{WR+6QChLKvgm;Nt;1+Sd#FxufBWzfa7p0 z;%TEh$0?CLq)q&VlH+v|207nel>?mt92l3Ak=j0Yy({Iu&AaNOaB zm*e4n@QydhMh`%*wgKysKy@G$7!K?V>Crn{JQi?V;WbrFgC<>gTK)RGod;*K1wtgKyd z-@K6*#p+u&kfx8c;@&8p?Sh2SK=viUgIIk5GyrNoJNJ`ZrsWRhZpoGG=1xn0z$7JI zE>QgF@etBwJ${tAmpBkk98!oIsdr|;1WxJ3jNTp{)nv8@I$IG+Bkz&+g{z^;*WWTF zJpe?+c(8OC;9!md*V!u zABta!OQ0<@#f#!aiZkWObyuVS*#)SjUiX}_39qM(8ErE`9gQ9172Ir9Jud4L26dUZWAKr+6OEFqXwLmo>z>cPGf36K-(#@efXy(I!%V!*Kw zTgAc5-C!=B*Ktf?dCz|ZM;Fd5T}ITJvxK}{aB`A7eDztRh~8uwyA{aJBxLwWMpEOd z=f8BFyzQ$l^CJdFZEeueed}WbH$AnseWY7?{L%Wkz1=0HGkfO_-Mr1peiLk+=b3iz z8(YQUn@c*pj<$m8+SSi&n9#ZPdu!Lfa@69^b3N@2xlGdgPdqYZeX@dL1mkhOla5qz z)XcQtKqyquNQ%;~wujrr3V5_dMGd4V1zW()Bo(w3*oGQ*s#0SlCZ``^8=U?3 zJU9I3RZ2Xc(I$B0eNZWM#Q_E!%7w==qS;%GE0Ci;jE&nUHVL1h)|xok(SU^sArSBL zNJyM#v~jiaLxUezpUGVPH8{ikYEY!&Y6oXp7jQM50zln-h?BVpxsi@wP>BvY&0u;W zUO^O$-9!ujEWLS!5= zr5xnz;8=#T>aZJ*sL-)pK+4l{rY0a9bt6ujcw;FjaT-sL{LFA=B$%UazVNI#>~xGA z#_>ToiyLNt<2P5qZl1rbjZP7uZa%^(5(AR0(`pKu#DbU>2G}*0r=X94r%M6)hNX&z zfxg*WbiC*+FgQjb8qMp>?=Oso0=-tmDk#;PUl3OFz0O{TB?zAaRVp-0gn%-6YK)OU zI2auqxoUWIp-@de+weQL+>?z!D7sw-AZzHLKn#?7-L zv&)VgVUL{@S1O5n&OA)8n+zmp<)cHDnmtVcU<>;_Mh6dBnS+^&3Ag;c5k$FvOiZJ~ zs(~HorLEk0sA|F>24Uka( zlDrdn?06oFHoi zE|BU-k*c=uSYO8Z_5WXTRC^oX5y~_X5Mhi?@YR=1juHy}a<1>Pmck3p_+#@DV4BU% z^$7!kD_k(gz>syFbst(?%KQ-azyP=UoGF9BmK(f~m&$edZ9LxjVFzt`FuTXNUv)gF zFxG#>y3!p;@`t52{?zk5cK850d`-W1MtZYY0x84y&3IjjL{ShfuO|ex&AM22I0Jcs z3m!EI10$Hs@p_R~&1569{w*mZzco&}kzw;6dt>#|HC)@H`>yHRUO1Y*8=UfVf^If^ z3SA5fdyb+N58Rh9ZN?QgwJR(jLfM7zuuU_&+-?UwYK4)L=N<4kwP+-IA}SKEFC_fO zgoZyBBSS3`3@oChbRd}7)g^#8*6VUz$Y%^M)5VbJ$H?jditp&~*T?m>251yaW?hT% zv%X^kq<}~loL~U#MnTn41P}F18on7Og~~sqSbD07>N~!R*yj@l_7wBHy6e3I$B=gr zk?2iNRD>DRJMM42xLY}T;RgBJ`u;3!42+*RDZg|21yNrG${Sb(g~Im4fXSGXqeTj0 zv3y}#Vf0Yscm(w@=Ze|sVpda}C{7mdE0)z_*#GJ@t-q+?0&90%=NNQIR!7hgcSsIL zzEh1P8*--P^yf%QjyI<$M>1(S9C_%68$jSr#PsyQ1*ZzZ*s}`)3JEw8Eejk`2-Ly4 zqeB-bGE$6yx9}569yT~VE@S$S+tYtg=%=SYU{<@&?NAI3w+~^&_h|7*TfMFAO|Fro zc-UUsJ|XwwW`wId3nq`N)10;K6Qkk}^hI?ItBo=cACT1siRe~aRJYp1TrlJa*^W14 zhvC@^F8xOOJF?n%&l`i-^ftHI#1=5)6lJ^KWUkd;Ii7uGVI}xT`viZ&E{XXHTB|T` zS+<)_wxbSS{R!p0?5hha|5ebhALqpN)%Bg(t~&blm(s8}VOzigMG92EJHr&@;S9pJ z`QtYb0r>|$wo-j;mo8*1QYS1@gYU|I06M=vjSX=%hOzxxA6q5Hrq+#N_lGBiYZVtf zDdOLno~Q=bmSb65jqij*eLOD56IQjWXiy3)EiXz@pkgxuUIB9$HP6V`naRE8bUlbk z-~_6pc8pl_y3L99s84w9$0Z#_rA}*+28x*uXaEF?)C}N z`^LmA&rBYCWX&Yw#ords{)$q@-DS6B_3P=6zVmGQ;~y_&)hSR!mNm6*#+;xn+mTSVtL)bp^CJrLp8*?T~g_JFCf>CWMm~U%=Cg zl+{(E;DHqy1rp|2j5_XJPx%@#E;rF_VF>J(YmeSNebVjUT1vhxXqWfEw@t#g?S^lA z%QkD;6KuUfUNGaU|Fr$ye|}^Z_h?VRqYb(K4xi?WMVEaLJ`YCdnD`;hFm!AhW;lS} zO7)~-FJ5}63oB0&yOSi=l9Ii6>9ZrH<5cB}XTVp1 zXM=aqJsZ3Wc{b2wkp+oHN^lkHzRl=+;2Fvf={Ksy+j<||-4`=i_ zU6_a8@OR;OU}5E@<9sY4o2+wHeRia6mJSLYea;j-r;oqS&-C$Mnw@!{$@=@ehv(?v zVEsAR0r~sjB#6M@s1yc+p}|Nbq2+Yt1tSpzF73WSWm&=A0=CY+#V&T(d+ez4ut)Mz z`9aFIOnG!WHgV15b~lLO!b*IqhtIH z9yX$mbtpil1Tg#TmSgvHPQLfljO|$gBVi~+29R)S4Zqim=TW5C@f5%>p(PIScs-?_MA>-Zt-yO z-eM7@kJ!XbTtNN!J3^oy@vUa1V(nixTQIAS}7Dl+yXBVewS{L5E^X@EIH#uhru+NXu!lxomkjJ3ibS?6!?^yR zNT=D%R^DyI!MlxII${I9am>|v=M&Or{_4=qCo-BA)in*TU!lMLsHW-fKpM^8L0DO& z>$5kj&$fvE9;43y3yZRz^jWCWbyGN~uNo{hzWBp7RJo61uNn#X@qbi zjf2fZGfRrD6hS3etWZEm0Y|!is`J<8W8kliF}pHji0fk*Ia1K1zxwDH^w+1en!moV z@>^U^BCDVwuvoMH4x`uW?*S%0rr-bd!ctuuM8*Zxd+m4N{dV*bT(8drTA$K84E)JE z@azpA#Vfj0h5qb2glQP6ul%aH;~5e@4|IB9t__(n6wo`E0+oIqvC_w&+t9qS&MYiW zSUm#!4*}ad>UzlqZ8W)IHlPuB5AvQn;f^GnIbFtqG2WbWp16KqEbB7Nj5pm$cZmNaA?oDx{yLqLYS(ufm zi-W28o(QJr2xa>fb$b$W)hMZnw&mgiYGY-HLvXCv;zg=?{!0{SS z6GIB5DG}n@$^41qTR1NXm>NL#uCPBS>=z1a0(8KD@-G=vqS?(7`=i8uEwNUVtca@& zn+)PygwYH$4B}$(R#Ch`WR2of1i3_N3n{4v8~cNe{ldnY00OZlz(#K+n8qsWCaXBt z%G#_ms8-pnxoh0wF85&y`7mHD{^(%8b}({aSE-v+@dlMOs#5{Fuv@eq+4u=n`Jhz= z8)U0+b5x69^(vrd&j=I8J?Amx*2^nc6YKF``zhHn@i>1BOMthXz;E!O@!ugy4fgVb;#8crWIMK9nG6hKlaGW=|`v*TYPTo{QCy0zHw+T`|jMw)=v_b ze?DXUx~EtwIBwyzd+#Ani%v<=01{E56UzYii0orK?lFe59+d$(<~l@coCO1HNrT$J zh8y-ae9|B#8j=kn9vaFAolENrQ~p@2!{6f{_8<43^(%gVj+9q9WQJc$aRcB%5cvdD zoNrNNgk@Sheb`DqhTiJ17`>Cp}lhOD+_LZJf73hx2)sc z|Co5+ySwjvdD+5>uKLi(v90s(AFTZ1mnRRl_@!hzr}zG)Z3|}>cT@%b>7SQ<_&&Fj{_&zT|g*=}Qb4%oUF*MgQBgLd zIYO1^54^K$dahoR-sEIQE<7}0<*dr81z$<=BJ`jCj2_!j(sp9 z45FpDF%pkQjFPW@plQj(%@cP{+&l4;iI)(tnHZT^Gf|>m2x5n?$0z!Hi6X<0QD|Td z4QGw)ppo5fWI6ygSd(gZdtF1p%MLV&ia@34X+Tg$dISMFxyM0_ zW7}u0nHC+(>K<+?%V}D;t!E5>`;6ri^EYl~Z>B3rxYdj4@Dh@+l%IwN-Y#rS#JrtC zWLj-gZ9u3E1ZoAT#MEh>JzgEp&WvZr$FrL8tb`7UGC(F%C9I@mTvH&KYc`+FWsm1R zlPhKmvK5fCR%i;y4tSzOPX&>zvZ4aMQ(sbCSU4my($X9Jjgf`!q3LX(AdE7MrH~}) zNqyehWc!Mtqt&UMLpSbP+;}B-dg;u*fyOzzRRB-O z_$VQ|JI`${p0Q?{PO5G$n?TNhFblEZC!kfe!rh5}b+E)-fPXn`U|rRgDzU0c7(gpA zp`M)pbB(ySo(c8DT_df_*^(o6uWhyxg+vk-w%%hYz!TlNV2n z{1xT-eB?dS7TA5C@?7-;iCo*Xyn;Lf{<($Dva-s~NO?_pqI{@aE+-{%sO~OwX**GU zrutm91frf3iAvHNDyXcAUno$LXASIe!!rhvnzM*jLy%jFf=dO~p)8w{8WqY%8KLM# zDmJI;tVn2`0mDMB{GV48FA2mcKC$(_vE2Gs=to6gM=?-Z@dZo%oIW@zCJl~%kfXvO z3*pj7=uLMNTJca~$-9PMf+_-K%I~s200%x0@`H-7>wZu?X+}qvKU6!A5AyYMA$BBm zGW2#x5<WAw$*YB-ARDZVK5UFP>sIQBPTr3rmqOPF| zD-Uy^2M}%5nfL~;f8ZMtbvQsxvjz&@I)Xy|+1w+YQ)9QAM(M94B5zuo-DnrpjrDEvu)wFgr?8pM_v{E{!*feKpr+c59z3*fvos0_L#6l<2oXqKVy3N7P z{MqH3%TJeoQZAW8Asb6N)f`(-%s}T94&}_qX_vi>OwDW^*GN$Q>27k(bmiC`yGiz=Tf`=a@{0PQO{>g-0PG!mOEE-;W)6tftyXM{S z;PSSSrGNzNImWhMJrS%jo8iPgqT`_9e$2@KVed@tJNFWIc4uEK!=c#%ftF%>Kn>xgy&h3b zlK*Gzz0bKf1E_u0U*G>}{Ibuv_uRequ-4jZt-a6QBb@3P^W4EKHyPf2UazA^I?T4X zGe#~Rxt%k-?i#sgWC{~6N@n^qhc0H>$)A(C=c^>xF?hTX^Z=5J#Xt_ z^t^T}<93ran`HTE$3B@V%lg%7-cyv0Sa*_E<;PuFS;S1Id1tY+4ycg{Pw54TvMfP2 z=Q#6bWas3hXCJ3BX7EOEMuu85@$rdj!$dXWxb(^iIVU;Jn87FY>zy>_q*NqH7MaPc zoHbB?&jygahgNWe&+*N${gcb(GB51n=13+K;Sc+Kw1YJYIp zK?h!aT=_K>h1pBbJMoBy1*7*q=q{ME<0lu)JN&AjowMU-S1%qr{*qzY)7Ia#@`M{U z95iY124(m9t>zK~>us&jENZzds1Vo-@FRZTO? zx;sjecg;@mKC>xxEetrsSwCZeNYAjI!_+Io-XGRF%##HID~5SJhm9Dbr{l?PK8`cE7spuk=%GY{k{lBkLCax$qu<4%Bnm8{8Qef^F5%PZ zca=H{QSWSdZ%J#ilOE8v5CSC2x<89`R9>z`5NfGGI&xF$oY36&xWd6YkTiL~;Q8!K zGk8i`+V}%*IY4C|H>Gk~;gA)(2CB^i70b%H3>=s|dd0Y$zCBj3ajR%${-?acO>dQI zS?cw2K5u&C_49@RBeQn;WM|9Ng!k{*3BY=POv~`nonE&qGp$o6dp90Xf9Lx7r&lc> zcl@EZttmZe&bW!k>^LU+xGam^wX^!gBaeJy`}XMBv+_>5;FtxQkD8RU;_$}uB6+Lv z%%a)DryW^z(CYc)zcq4p#q0|%&6}`m+}HzaZ(K3|^b@CdOGz(XcB=5)@x(yaA#26X z`sVz(!_{apPNq|L7Cxzg6MB~ZXX$TB_mp~#ek+?i z-b{Xkxa=5t&RvuAGoB;z>kiBq&t4fr%$%!@{GPb?I`2mP=AtM9dAimK1Dj~&)-R=SU_N1V#$IF$o5mDvZhotK6P?bL<7GJW7}390PAE-5J=hjrN! zr?S7gbXgfvIW45J@4DzdN$nL788Dw6Lh35%sCwDj8IELz8cGGlat^p zsh5+JOUvmt40=k>Fqp`y<}@A6hZ~%6>d;r?{5EPvfA3KEO)A=b{vuk_9UBzHW+9TI zTeWXk-_vz{b#IT8&U3Oyw(B{=fy|;A4)jh>I-N}PFXl+k4WD;#r#%;^amJUXamE*< zu`H~|nQ7G6+~ps~VVn6`@Z#?~)LBhDFH+tXNlV*9qz zoN=6~2b{5p^&RU&&X7Kx3};A{oC$ft8R24*c%N#nNPf@M46azzjw=?z6;j3Sha4_k zF+5me63^jTG?<<%z-lubwTsHjOjpm0@r29!sKi;ZjXeF9)_1bTL-gHa=4p2Vlyb8s zCnwH}G1uWeruCi4yE5qtqwiE7Cf&M^>}>sr=sS~lWzuyv@5$)9Nz)Tnkig9*@2Nbk z^Hxh*UnOs5cr)~T-Y3oMIn<`)XrZ@~-?q7@s3pHLT3u!ghvyyKzT8R2r;3)-d7~F^ z*1FVH>A`$nhAn%@F=G1~U8+l;s7tei$Gluy{_q#$b?d~bY!0bV1vy*mv*w{0rVin6 zM3=s$HMXIWpi8L;R7!G9O~PN$P8=;Sy42KVOGst^buqfsP)X3G`>2cV4XsNJmD55h z`>qQu=DnqLsiBgfOZQb5;Z?0mp(47p^#iL*g=f*F?ihGh>gA0bFD)l+81$57c^!Qh zF4npf%A!ku73X}ByBYAZRCMU{*|cW7>*7*FNX=cXIh!yva!~2X`T~&};q1QcIC~|} z#Pmr1SNrsdhO<=~v&nr2v8Xj+++V`(LGoU}IC(EXWXuy8gR?~-WrS@flQ-|ZPHjql zhvygC=hy4!-F{R<);jbVXy(tY6>{d@>ykGz=Wo{)xNDM`AJ$gL1hH_kCYxDa`!o_S zCkpbkgb_vJ?=iWL*15MfXO3(0yjd|IHcq~&Yw{w~GOkQh_nV&8=4p|dNxEfB?v+V9 zZCS=4mwl&Zwt3p*EfS;i_D)S+M&5cn$`Z|=oNIFrxnJ^MtK~)Kk5me$h*iW{bYidk zqdCjc2!GR_%H}wgTur4U*OV&!g}gU4DS^u7kct);q0*sbnu?Z7Q9>72~~FmPp3Gi@b+-OW_KFQ_h9Rvn9Y+3$!VAOY`sE) z=ckhOgRMt2A24;lxzGNE&RvGH2U}y!g_GKIHzh}MOv&9!Eji?Vpw9h~<^`SQ&UmTI zjt(=+&Y* zZA-uRx|FfZXa=P>T7~CJ==uj+zt`Np<?jqivv&=l5^dL{8Lx&F#9lE!9$jJ1>o_!ELFrJyo zy)t>2;TpwKTh)8gz_z*bbQi6)OzxFQvc5vfG7^2>BX>yqyi*owjx0AE={&95U9pOb zvRvLgcEZ3e2|T%zXy6vjlQM3=ldz`Q)%2F;tjX!YPNmpDl)6pMvz_TC=dn8HF3l6h z?lz!$7j>E8MQIOHiesCn1=(uP+LTxLP|7QOD6L_hUD`aolYE5- zb-v`e!jyQDF7dqP$p>~UvF1VD7HSCtsL6RzbKb#iN(}!k()?#iZ1{s7&(fpj{0^;* z&f22+&y;#iz#$m2^h#O0snIRsJ;713f6h4PK+93v3`eEgQMqf+R5zg)_4+Q&fsC%2 zUoQ$;Mdde-&bAB4Oy1aN#oC%Mc~>TFq*b&HPP1eT@7ghE&3z_kd2h;aAM5;7M#<`aqlBZH%p5J#MJL&bk52cJ`XRRU5q#1)Udh|%0vDi`Oh?;(>S8iwP z#gmwCa)=iW{)=ArDks3bM4WRpYx<`a4EF{khgW+aT0Q!R!w&BCOs||Nx&8KDyL$8z z?w-|mNv{t*a@i3>`i)+E#KK`i60RNh({)L&w?3A#jb+zEd7CJ&dwNnYCbniw;WV_v zhk8Skl7>!kPI4sXoa8*wrT>s2N!!vdW3!a)>^FT98@lV#adadFQ&R@N$QEg`h=l`! zSUJQ?2x{~=*{mydG^aWi%R%aLNJ;_WvDDFfUte8NU0AfPprT+??i0BU1&cC94jb01 zdD6P#ilo;^9hIAV)Tki`oKseI&H+yjnl!m^WWNK~OmN&!E}-4sv?X3JBPYpAAHm7N zGlr(851m4hF6(kjm!vLFIQ{$dN#EvOhV8$-S3*(cAfYxz4NGbZ*e@t?v0Ug@{lK!MdWUCl{y?x5)gGV1e+8dpeG`dam4jMFK+`xhRY~mO5W#i2@&75D#n=qZU zb6?qAB6Tzen9Dpnv+HyKlN}uzeP_m~$%9gsrWMaDozQ=Lw{GJ`tXkc!_0=iECJgVF za>UtPM~odihE2DNiw)an|y{O$pIqQOcNO!Wb;$7f8F?g^uzW=4KjQI74_t_ml z_7@&8V$7w3diUN($KVkF;pER4l(M~Bw-HlVJN87sjASk|wh!*v`y@6<(z5UpFIl}v`H=-U zZLo-I$ns;&8>2|Be(&nD6EiZ0TaH(?$rBE%nS13GDb-0sa_3AOGqYf1a`MN6CQfEr z;J`H#Qx05JHtyoB6Y>Y8b{&$J)vi<}GlnN`?>3`v|M>|;V;7f>MMFw$(I)7!g-p&d zMl5*>54`#8r*R(tw6mhUIZ-%$>g0)o`n4-sP`1<*c2Uc5X3ZEmXy{OiGIng=DMaYI zcHwqZ))Pa9^zE{}N6+Mw*eAiZ9PMRUyuh@czM}=(mTi1T-WJw=sgq((uo( zT&$ctHdWimNR;6WoYA%CcBe}hm-GG{*0+eXQP8~H0fo~4a)ey)UUSjzi_RKcI%Rmp z>R~em_n0(jRN;G7jeQGe9GbIyZI><^laeRUqs$?wQ&~&f+v#(ESJkU~%0D=-PBu&{ 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 - - - - ArmorUI - - - - - - - diff --git a/tools/armorui/kha.js b/tools/armorui/kha.js deleted file mode 100644 index 6201d35d..00000000 --- a/tools/armorui/kha.js +++ /dev/null @@ -1,24476 +0,0 @@ -// Generated by Haxe 3.4.2 -(function ($hx_exports, $global) { "use strict"; -$hx_exports["kha"] = $hx_exports["kha"] || {}; -$hx_exports["kha"]["input"] = $hx_exports["kha"]["input"] || {}; -;$hx_exports["kha"]["_Color"] = $hx_exports["kha"]["_Color"] || {}; -var $hxClasses = {},$estr = function() { return js_Boot.__string_rec(this,''); }; -function $extend(from, fields) { - function Inherit() {} Inherit.prototype = from; var proto = new Inherit(); - for (var name in fields) proto[name] = fields[name]; - if( fields.toString !== Object.prototype.toString ) proto.toString = fields.toString; - return proto; -} -var EReg = function(r,opt) { - this.r = new RegExp(r,opt.split("u").join("")); -}; -$hxClasses["EReg"] = EReg; -EReg.__name__ = true; -EReg.prototype = { - r: null - ,match: function(s) { - if(this.r.global) { - this.r.lastIndex = 0; - } - this.r.m = this.r.exec(s); - this.r.s = s; - return this.r.m != null; - } - ,matched: function(n) { - if(this.r.m != null && n >= 0 && n < this.r.m.length) { - return this.r.m[n]; - } else { - throw new js__$Boot_HaxeError("EReg::matched"); - } - } - ,__class__: EReg -}; -var Elements = function(canvas) { - this.drag = false; - this.handleradio = zui_Handle.global.nest(4,null); - this.handlewin = zui_Handle.global.nest(0,null); - this.selectedElem = -1; - this.bg = null; - this.initialized = false; - this.canvas = canvas; - var _onDrop = $bind(this,this.onDrop); - - document.ondragover = document.ondrop = (ev) => { - ev.preventDefault() - } - document.body.ondrop = (ev) => { - _onDrop(ev.dataTransfer.files[0].path); - ev.preventDefault() - } - ; - kha_Assets.loadEverything($bind(this,this.loadingFinished)); -}; -$hxClasses["Elements"] = Elements; -Elements.__name__ = true; -Elements.prototype = { - ui: null - ,cui: null - ,initialized: null - ,bg: null - ,canvas: null - ,onDrop: function(file) { - var _gthis = this; - kha_LoaderImpl.loadImageFromDescription({ files : [file]},function(image) { - var s = file.split("/"); - var name = s[s.length - 1]; - var asset = { name : name, file : file, image : image}; - _gthis.canvas.assets.push(asset); - }); - } - ,loadingFinished: function() { - this.initialized = true; - var t = Reflect.copy(zui_Themes.dark); - t.FILL_WINDOW_BG = true; - this.ui = new zui_Zui({ font : kha_Assets.fonts.DroidSans, theme : t}); - this.cui = new zui_Zui({ font : kha_Assets.fonts.DroidSans, autoNotifyInput : false}); - } - ,makeElem: function(type) { - var name = ""; - var height = 100; - if(type == 0) { - name = "Text"; - height = 48; - } else if(type == 2) { - name = "Button"; - } else if(type == 1) { - name = "Image"; - } - var elem = { id : 0, type : type, name : name, event : "", x : 0, y : 0, width : 150, height : height, text : name, asset : "", color : 16777215, anchor : 0, children : []}; - return elem; - } - ,selectedElem: null - ,handlewin: null - ,handleradio: null - ,render: function(framebuffer) { - if(!this.initialized) { - return; - } - if(this.bg == null) { - var w = kha_System.windowWidth(); - var h = kha_System.windowHeight(); - this.bg = kha_Image.createRenderTarget(w,h); - this.bg.get_g2().begin(true,-15461356); - var _g1 = 0; - var _g = (h / 40 | 0) + 1; - while(_g1 < _g) { - var i = _g1++; - this.bg.get_g2().set_color(-13619152); - this.bg.get_g2().drawLine(0,i * 40,w,i * 40); - this.bg.get_g2().set_color(-14671840); - this.bg.get_g2().drawLine(0,i * 40 + 20,w,i * 40 + 20); - } - var _g11 = 0; - var _g2 = (w / 40 | 0) + 1; - while(_g11 < _g2) { - var i1 = _g11++; - this.bg.get_g2().set_color(-13619152); - this.bg.get_g2().drawLine(i1 * 40,0,i1 * 40,h); - this.bg.get_g2().set_color(-14671840); - this.bg.get_g2().drawLine(i1 * 40 + 20,0,i1 * 40 + 20,h); - } - this.bg.get_g2().set_color(-1); - var tmp = kha_System.windowWidth() - this.canvas.width; - this.canvas.x = tmp - 20; - this.canvas.y = 40; - this.bg.get_g2().drawRect(this.canvas.x,this.canvas.y,this.canvas.width,this.canvas.height,1.0); - this.bg.get_g2().end(); - } - var g = framebuffer.get_g2(); - g.begin(); - g.drawImage(this.bg,0,0); - g.set_font(kha_Assets.fonts.DroidSans); - g.set_fontSize(40); - var title = this.canvas.name + ", " + this.canvas.width + "x" + this.canvas.height; - var titlew = g.get_font().width(40,title); - var titleh = g.get_font().height(40); - g.set_color(-1); - g.drawString(title,kha_System.windowWidth() - titlew - 30,kha_System.windowHeight() - titleh - 10); - zui_Canvas.draw(this.cui,this.canvas,g); - if(this.selectedElem >= 0 && this.selectedElem < this.canvas.elements.length) { - var elem = this.canvas.elements[this.selectedElem]; - g.set_color(-1); - g.drawRect(this.canvas.x + elem.x,this.canvas.y + elem.y,elem.width,elem.height,1); - } - g.end(); - this.ui.begin(g); - if(this.ui.window(this.handlewin,0,0,240,640,false)) { - if(this.ui.panel(zui_Handle.global.nest(1,{ selected : true}),"CANVAS")) { - if(this.ui.button("Save")) { - var fs = require('fs'); - fs.writeFileSync(Main.prefs.path, JSON.stringify(this.canvas)); - } - var tmp1 = this.ui; - var tmp2 = zui_Handle.global.nest(2,{ text : this.canvas.name}); - this.canvas.name = tmp1.textInput(tmp2,"Name",2); - } - this.ui.separator(); - if(this.ui.panel(zui_Handle.global.nest(3,{ selected : true}),"TREE")) { - this.ui.row([0.333333333333333315,0.333333333333333315,0.333333333333333315]); - if(this.ui.button("Text")) { - var elem1 = this.makeElem(0); - this.canvas.elements.push(elem1); - this.handleradio.position = this.canvas.elements.length - 1; - } - if(this.ui.button("Image")) { - var elem2 = this.makeElem(1); - this.canvas.elements.push(elem2); - this.handleradio.position = this.canvas.elements.length - 1; - } - if(this.ui.button("Button")) { - var elem3 = this.makeElem(2); - this.canvas.elements.push(elem3); - this.handleradio.position = this.canvas.elements.length - 1; - } - var i2 = 0; - var _g3 = 0; - var _g12 = this.canvas.elements; - while(_g3 < _g12.length) { - var elem4 = _g12[_g3]; - ++_g3; - if(this.ui.radio(this.handleradio,i2++,elem4.name)) { - this.selectedElem = i2 - 1; - } - } - if(this.canvas.elements.length > 0) { - if(this.ui.button("Remove")) { - this.canvas.elements.splice(this.selectedElem,1); - if(this.selectedElem <= this.canvas.elements.length) { - this.selectedElem--; - this.handleradio.position = this.selectedElem; - } - } - } - } - this.ui.separator(); - if(this.ui.panel(zui_Handle.global.nest(5,{ selected : true}),"PROPERTIES")) { - var i3 = this.selectedElem; - if(i3 >= 0) { - var elem5 = this.canvas.elements[i3]; - this.ui.row([0.5,0.5]); - elem5.name = this.ui.textInput(zui_Handle.global.nest(6,null).nest(i3,{ text : elem5.name}),"Name",2); - elem5.text = this.ui.textInput(zui_Handle.global.nest(7,null).nest(i3,{ text : elem5.text}),"Text",2); - this.ui.row([0.5,0.5]); - elem5.event = this.ui.textInput(zui_Handle.global.nest(8,null).nest(i3,{ text : elem5.event}),"Event",2); - elem5.asset = this.ui.textInput(zui_Handle.global.nest(9,null).nest(i3,{ text : elem5.asset}),"Asset",2); - this.ui.row([0.5,0.5]); - var handlex = elem5.x + ""; - var handlex1 = zui_Handle.global.nest(10,null).nest(i3,{ text : handlex}); - var handley = elem5.y + ""; - var handley1 = zui_Handle.global.nest(11,null).nest(i3,{ text : handley}); - handlex1.text = elem5.x + ""; - handley1.text = elem5.y + ""; - var strx = this.ui.textInput(handlex1,"X",2); - var stry = this.ui.textInput(handley1,"Y",2); - elem5.x = parseFloat(strx); - elem5.y = parseFloat(stry); - this.ui.row([0.5,0.5]); - var strw = elem5.width + ""; - var strw1 = this.ui.textInput(zui_Handle.global.nest(12,null).nest(i3,{ text : strw}),"Width",2); - var strh = elem5.height + ""; - var strh1 = this.ui.textInput(zui_Handle.global.nest(13,null).nest(i3,{ text : strh}),"Height",2); - elem5.width = parseFloat(strw1) | 0; - elem5.height = parseFloat(strh1) | 0; - this.ui.row([0.5,0.5]); - var strcol = this.ui.textInput(zui_Handle.global.nest(14,null).nest(i3,{ text : "#ffffff"}),"Color",2); - var stranch = elem5.anchor + ""; - var stranch1 = this.ui.textInput(zui_Handle.global.nest(15,null).nest(i3,{ text : stranch}),"Anchor",2); - elem5.color = kha__$Color_Color_$Impl_$.fromString(strcol); - elem5.anchor = parseFloat(stranch1) | 0; - } - } - this.ui.separator(); - if(this.ui.panel(zui_Handle.global.nest(16,{ selected : true}),"ASSETS")) { - if(this.canvas.assets.length > 0) { - var _g13 = 0; - var _g4 = this.canvas.assets.length; - while(_g13 < _g4) { - var i4 = _g13++; - var asset = this.canvas.assets[i4]; - this.ui.image(asset.image); - asset.name = this.ui.textInput(zui_Handle.global.nest(17,null).nest(i4,{ text : asset.name}),"Name",2); - } - } else { - this.ui.text("Drag & drop assets here"); - } - } - } - this.ui.end(); - } - ,drag: null - ,update: function() { - if(!this.initialized) { - return; - } - if(this.selectedElem >= 0 && this.selectedElem < this.canvas.elements.length) { - var elem = this.canvas.elements[this.selectedElem]; - if(this.ui.inputStarted && this.ui.inputX > this.canvas.x + elem.x && this.ui.inputX < this.canvas.x + elem.x + elem.width && this.ui.inputY > this.canvas.y + elem.y && this.ui.inputY < this.canvas.y + elem.y + elem.height) { - this.drag = true; - } - if(this.ui.inputReleased && this.drag) { - this.drag = false; - } - if(this.drag) { - this.handlewin.redraws = 2; - elem.x += this.ui.inputDX; - elem.y += this.ui.inputDY; - } - } - } - ,__class__: Elements -}; -var HxOverrides = function() { }; -$hxClasses["HxOverrides"] = HxOverrides; -HxOverrides.__name__ = true; -HxOverrides.strDate = function(s) { - var _g = s.length; - switch(_g) { - case 8: - var k = s.split(":"); - var d = new Date(); - d["setTime"](0); - d["setUTCHours"](k[0]); - d["setUTCMinutes"](k[1]); - d["setUTCSeconds"](k[2]); - return d; - case 10: - var k1 = s.split("-"); - return new Date(k1[0],k1[1] - 1,k1[2],0,0,0); - case 19: - var k2 = s.split(" "); - var y = k2[0].split("-"); - var t = k2[1].split(":"); - return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]); - default: - throw new js__$Boot_HaxeError("Invalid date format : " + s); - } -}; -HxOverrides.cca = function(s,index) { - var x = s.charCodeAt(index); - if(x != x) { - return undefined; - } - return x; -}; -HxOverrides.substr = function(s,pos,len) { - if(len == null) { - len = s.length; - } else if(len < 0) { - if(pos == 0) { - len = s.length + len; - } else { - return ""; - } - } - return s.substr(pos,len); -}; -HxOverrides.remove = function(a,obj) { - var i = a.indexOf(obj); - if(i == -1) { - return false; - } - a.splice(i,1); - return true; -}; -HxOverrides.iter = function(a) { - return { cur : 0, arr : a, hasNext : function() { - return this.cur < this.arr.length; - }, next : function() { - return this.arr[this.cur++]; - }}; -}; -var Lambda = function() { }; -$hxClasses["Lambda"] = Lambda; -Lambda.__name__ = true; -Lambda.array = function(it) { - var a = []; - var i = $iterator(it)(); - while(i.hasNext()) { - var i1 = i.next(); - a.push(i1); - } - return a; -}; -var List = function() { - this.length = 0; -}; -$hxClasses["List"] = List; -List.__name__ = true; -List.prototype = { - h: null - ,q: null - ,length: null - ,add: function(item) { - var x = new _$List_ListNode(item,null); - if(this.h == null) { - this.h = x; - } else { - this.q.next = x; - } - this.q = x; - this.length++; - } - ,remove: function(v) { - var prev = null; - var l = this.h; - while(l != null) { - if(l.item == v) { - if(prev == null) { - this.h = l.next; - } else { - prev.next = l.next; - } - if(this.q == l) { - this.q = prev; - } - this.length--; - return true; - } - prev = l; - l = l.next; - } - return false; - } - ,iterator: function() { - return new _$List_ListIterator(this.h); - } - ,__class__: List -}; -var _$List_ListNode = function(item,next) { - this.item = item; - this.next = next; -}; -$hxClasses["_List.ListNode"] = _$List_ListNode; -_$List_ListNode.__name__ = true; -_$List_ListNode.prototype = { - item: null - ,next: null - ,__class__: _$List_ListNode -}; -var _$List_ListIterator = function(head) { - this.head = head; -}; -$hxClasses["_List.ListIterator"] = _$List_ListIterator; -_$List_ListIterator.__name__ = true; -_$List_ListIterator.prototype = { - head: null - ,hasNext: function() { - return this.head != null; - } - ,next: function() { - var val = this.head.item; - this.head = this.head.next; - return val; - } - ,__class__: _$List_ListIterator -}; -var Main = function() { }; -$hxClasses["Main"] = Main; -Main.__name__ = true; -Main.main = function() { - kha_System.init({ title : "ArmorUI", width : 1240, height : 640},Main.initialized); -}; -Main.initialized = function() { - kha_LoaderImpl.loadBlobFromDescription({ files : ["prefs.json"]},function(blob) { - Main.prefs = JSON.parse(blob.toString()); - kha_LoaderImpl.loadBlobFromDescription({ files : [Main.prefs.path]},function(cblob) { - var raw = JSON.parse(cblob.toString()); - var inst = new Elements(raw); - kha_System.notifyOnRender($bind(inst,inst.render)); - kha_Scheduler.addTimeTask($bind(inst,inst.update),0,0.0166666666666666664); - }); - }); -}; -Math.__name__ = true; -var Reflect = function() { }; -$hxClasses["Reflect"] = Reflect; -Reflect.__name__ = true; -Reflect.field = function(o,field) { - try { - return o[field]; - } catch( e ) { - return null; - } -}; -Reflect.fields = function(o) { - var a = []; - if(o != null) { - var hasOwnProperty = Object.prototype.hasOwnProperty; - for( var f in o ) { - if(f != "__id__" && f != "hx__closures__" && hasOwnProperty.call(o,f)) { - a.push(f); - } - } - } - return a; -}; -Reflect.isFunction = function(f) { - if(typeof(f) == "function") { - return !(f.__name__ || f.__ename__); - } else { - return false; - } -}; -Reflect.copy = function(o) { - var o2 = { }; - var _g = 0; - var _g1 = Reflect.fields(o); - while(_g < _g1.length) { - var f = _g1[_g]; - ++_g; - o2[f] = Reflect.field(o,f); - } - return o2; -}; -var Std = function() { }; -$hxClasses["Std"] = Std; -Std.__name__ = true; -Std.string = function(s) { - return js_Boot.__string_rec(s,""); -}; -Std.parseInt = function(x) { - var v = parseInt(x,10); - if(v == 0 && (HxOverrides.cca(x,1) == 120 || HxOverrides.cca(x,1) == 88)) { - v = parseInt(x); - } - if(isNaN(v)) { - return null; - } - return v; -}; -var StringTools = function() { }; -$hxClasses["StringTools"] = StringTools; -StringTools.__name__ = true; -StringTools.endsWith = function(s,end) { - var elen = end.length; - var slen = s.length; - if(slen >= elen) { - return HxOverrides.substr(s,slen - elen,elen) == end; - } else { - return false; - } -}; -var Type = function() { }; -$hxClasses["Type"] = Type; -Type.__name__ = true; -Type.resolveClass = function(name) { - var cl = $hxClasses[name]; - if(cl == null || !cl.__name__) { - return null; - } - return cl; -}; -Type.resolveEnum = function(name) { - var e = $hxClasses[name]; - if(e == null || !e.__ename__) { - return null; - } - return e; -}; -Type.createEmptyInstance = function(cl) { - function empty() {}; empty.prototype = cl.prototype; - return new empty(); -}; -Type.createEnum = function(e,constr,params) { - var f = Reflect.field(e,constr); - if(f == null) { - throw new js__$Boot_HaxeError("No such constructor " + constr); - } - if(Reflect.isFunction(f)) { - if(params == null) { - throw new js__$Boot_HaxeError("Constructor " + constr + " need parameters"); - } - return f.apply(e,params); - } - if(params != null && params.length != 0) { - throw new js__$Boot_HaxeError("Constructor " + constr + " does not need parameters"); - } - return f; -}; -Type.createEnumIndex = function(e,index,params) { - var c = e.__constructs__[index]; - if(c == null) { - throw new js__$Boot_HaxeError(index + " is not a valid enum constructor index"); - } - return Type.createEnum(e,c,params); -}; -Type.getInstanceFields = function(c) { - var a = []; - for(var i in c.prototype) a.push(i); - HxOverrides.remove(a,"__class__"); - HxOverrides.remove(a,"__properties__"); - return a; -}; -var _$UInt_UInt_$Impl_$ = {}; -$hxClasses["_UInt.UInt_Impl_"] = _$UInt_UInt_$Impl_$; -_$UInt_UInt_$Impl_$.__name__ = true; -_$UInt_UInt_$Impl_$.gt = function(a,b) { - var aNeg = a < 0; - var bNeg = b < 0; - if(aNeg != bNeg) { - return aNeg; - } else { - return a > b; - } -}; -_$UInt_UInt_$Impl_$.gte = function(a,b) { - var aNeg = a < 0; - var bNeg = b < 0; - if(aNeg != bNeg) { - return aNeg; - } else { - return a >= b; - } -}; -_$UInt_UInt_$Impl_$.toFloat = function(this1) { - var $int = this1; - if($int < 0) { - return 4294967296.0 + $int; - } else { - return $int + 0.0; - } -}; -var haxe_IMap = function() { }; -$hxClasses["haxe.IMap"] = haxe_IMap; -haxe_IMap.__name__ = true; -haxe_IMap.prototype = { - iterator: null - ,__class__: haxe_IMap -}; -var haxe__$Int64__$_$_$Int64 = function(high,low) { - this.high = high; - this.low = low; -}; -$hxClasses["haxe._Int64.___Int64"] = haxe__$Int64__$_$_$Int64; -haxe__$Int64__$_$_$Int64.__name__ = true; -haxe__$Int64__$_$_$Int64.prototype = { - high: null - ,low: null - ,__class__: haxe__$Int64__$_$_$Int64 -}; -var haxe_Log = function() { }; -$hxClasses["haxe.Log"] = haxe_Log; -haxe_Log.__name__ = true; -haxe_Log.trace = function(v,infos) { - js_Boot.__trace(v,infos); -}; -var haxe__$Unserializer_DefaultResolver = function() { -}; -$hxClasses["haxe._Unserializer.DefaultResolver"] = haxe__$Unserializer_DefaultResolver; -haxe__$Unserializer_DefaultResolver.__name__ = true; -haxe__$Unserializer_DefaultResolver.prototype = { - resolveClass: function(name) { - return Type.resolveClass(name); - } - ,resolveEnum: function(name) { - return Type.resolveEnum(name); - } - ,__class__: haxe__$Unserializer_DefaultResolver -}; -var haxe_Unserializer = function(buf) { - this.buf = buf; - this.length = buf.length; - this.pos = 0; - this.scache = []; - this.cache = []; - var r = haxe_Unserializer.DEFAULT_RESOLVER; - if(r == null) { - r = new haxe__$Unserializer_DefaultResolver(); - haxe_Unserializer.DEFAULT_RESOLVER = r; - } - this.resolver = r; -}; -$hxClasses["haxe.Unserializer"] = haxe_Unserializer; -haxe_Unserializer.__name__ = true; -haxe_Unserializer.initCodes = function() { - var codes = []; - var _g1 = 0; - var _g = haxe_Unserializer.BASE64.length; - while(_g1 < _g) { - var i = _g1++; - codes[haxe_Unserializer.BASE64.charCodeAt(i)] = i; - } - return codes; -}; -haxe_Unserializer.run = function(v) { - return new haxe_Unserializer(v).unserialize(); -}; -haxe_Unserializer.prototype = { - buf: null - ,pos: null - ,length: null - ,cache: null - ,scache: null - ,resolver: null - ,readDigits: function() { - var k = 0; - var s = false; - var fpos = this.pos; - while(true) { - var c = this.buf.charCodeAt(this.pos); - if(c != c) { - break; - } - if(c == 45) { - if(this.pos != fpos) { - break; - } - s = true; - this.pos++; - continue; - } - if(c < 48 || c > 57) { - break; - } - k = k * 10 + (c - 48); - this.pos++; - } - if(s) { - k *= -1; - } - return k; - } - ,readFloat: function() { - var p1 = this.pos; - while(true) { - var c = this.buf.charCodeAt(this.pos); - if(c != c) { - break; - } - if(c >= 43 && c < 58 || c == 101 || c == 69) { - this.pos++; - } else { - break; - } - } - return parseFloat(HxOverrides.substr(this.buf,p1,this.pos - p1)); - } - ,unserializeObject: function(o) { - while(true) { - if(this.pos >= this.length) { - throw new js__$Boot_HaxeError("Invalid object"); - } - if(this.buf.charCodeAt(this.pos) == 103) { - break; - } - var k = this.unserialize(); - if(typeof(k) != "string") { - throw new js__$Boot_HaxeError("Invalid object key"); - } - var v = this.unserialize(); - o[k] = v; - } - this.pos++; - } - ,unserializeEnum: function(edecl,tag) { - if(this.buf.charCodeAt(this.pos++) != 58) { - throw new js__$Boot_HaxeError("Invalid enum format"); - } - var nargs = this.readDigits(); - if(nargs == 0) { - return Type.createEnum(edecl,tag); - } - var args = []; - while(nargs-- > 0) args.push(this.unserialize()); - return Type.createEnum(edecl,tag,args); - } - ,unserialize: function() { - var _g = this.buf.charCodeAt(this.pos++); - switch(_g) { - case 65: - var name = this.unserialize(); - var cl = this.resolver.resolveClass(name); - if(cl == null) { - throw new js__$Boot_HaxeError("Class not found " + name); - } - return cl; - case 66: - var name1 = this.unserialize(); - var e = this.resolver.resolveEnum(name1); - if(e == null) { - throw new js__$Boot_HaxeError("Enum not found " + name1); - } - return e; - case 67: - var name2 = this.unserialize(); - var cl1 = this.resolver.resolveClass(name2); - if(cl1 == null) { - throw new js__$Boot_HaxeError("Class not found " + name2); - } - var o = Type.createEmptyInstance(cl1); - this.cache.push(o); - o.hxUnserialize(this); - if(this.buf.charCodeAt(this.pos++) != 103) { - throw new js__$Boot_HaxeError("Invalid custom data"); - } - return o; - case 77: - var h = new haxe_ds_ObjectMap(); - this.cache.push(h); - var buf = this.buf; - while(this.buf.charCodeAt(this.pos) != 104) { - var s = this.unserialize(); - h.set(s,this.unserialize()); - } - this.pos++; - return h; - case 82: - var n = this.readDigits(); - if(n < 0 || n >= this.scache.length) { - throw new js__$Boot_HaxeError("Invalid string reference"); - } - return this.scache[n]; - case 97: - var buf1 = this.buf; - var a = []; - this.cache.push(a); - while(true) { - var c = this.buf.charCodeAt(this.pos); - if(c == 104) { - this.pos++; - break; - } - if(c == 117) { - this.pos++; - var n1 = this.readDigits(); - a[a.length + n1 - 1] = null; - } else { - a.push(this.unserialize()); - } - } - return a; - case 98: - var h1 = new haxe_ds_StringMap(); - this.cache.push(h1); - var buf2 = this.buf; - while(this.buf.charCodeAt(this.pos) != 104) { - var s1 = this.unserialize(); - var value = this.unserialize(); - if(__map_reserved[s1] != null) { - h1.setReserved(s1,value); - } else { - h1.h[s1] = value; - } - } - this.pos++; - return h1; - case 99: - var name3 = this.unserialize(); - var cl2 = this.resolver.resolveClass(name3); - if(cl2 == null) { - throw new js__$Boot_HaxeError("Class not found " + name3); - } - var o1 = Type.createEmptyInstance(cl2); - this.cache.push(o1); - this.unserializeObject(o1); - return o1; - case 100: - return this.readFloat(); - case 102: - return false; - case 105: - return this.readDigits(); - case 106: - var name4 = this.unserialize(); - var edecl = this.resolver.resolveEnum(name4); - if(edecl == null) { - throw new js__$Boot_HaxeError("Enum not found " + name4); - } - this.pos++; - var index = this.readDigits(); - var tag = edecl.__constructs__.slice()[index]; - if(tag == null) { - throw new js__$Boot_HaxeError("Unknown enum index " + name4 + "@" + index); - } - var e1 = this.unserializeEnum(edecl,tag); - this.cache.push(e1); - return e1; - case 107: - return NaN; - case 108: - var l = new List(); - this.cache.push(l); - var buf3 = this.buf; - while(this.buf.charCodeAt(this.pos) != 104) l.add(this.unserialize()); - this.pos++; - return l; - case 109: - return -Infinity; - case 110: - return null; - case 111: - var o2 = { }; - this.cache.push(o2); - this.unserializeObject(o2); - return o2; - case 112: - return Infinity; - case 113: - var h2 = new haxe_ds_IntMap(); - this.cache.push(h2); - var buf4 = this.buf; - var c1 = this.buf.charCodeAt(this.pos++); - while(c1 == 58) { - var i = this.readDigits(); - var value1 = this.unserialize(); - h2.h[i] = value1; - c1 = this.buf.charCodeAt(this.pos++); - } - if(c1 != 104) { - throw new js__$Boot_HaxeError("Invalid IntMap format"); - } - return h2; - case 114: - var n2 = this.readDigits(); - if(n2 < 0 || n2 >= this.cache.length) { - throw new js__$Boot_HaxeError("Invalid reference"); - } - return this.cache[n2]; - case 115: - var len = this.readDigits(); - var buf5 = this.buf; - if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len) { - throw new js__$Boot_HaxeError("Invalid bytes length"); - } - var codes = haxe_Unserializer.CODES; - if(codes == null) { - codes = haxe_Unserializer.initCodes(); - haxe_Unserializer.CODES = codes; - } - var i1 = this.pos; - var rest = len & 3; - var size = (len >> 2) * 3 + (rest >= 2 ? rest - 1 : 0); - var max = i1 + (len - rest); - var bytes = new haxe_io_Bytes(new ArrayBuffer(size)); - var bpos = 0; - while(i1 < max) { - var c11 = codes[buf5.charCodeAt(i1++)]; - var c2 = codes[buf5.charCodeAt(i1++)]; - bytes.b[bpos++] = (c11 << 2 | c2 >> 4) & 255; - var c3 = codes[buf5.charCodeAt(i1++)]; - bytes.b[bpos++] = (c2 << 4 | c3 >> 2) & 255; - var c4 = codes[buf5.charCodeAt(i1++)]; - bytes.b[bpos++] = (c3 << 6 | c4) & 255; - } - if(rest >= 2) { - var c12 = codes[buf5.charCodeAt(i1++)]; - var c21 = codes[buf5.charCodeAt(i1++)]; - bytes.b[bpos++] = (c12 << 2 | c21 >> 4) & 255; - if(rest == 3) { - var c31 = codes[buf5.charCodeAt(i1++)]; - bytes.b[bpos++] = (c21 << 4 | c31 >> 2) & 255; - } - } - this.pos += len; - this.cache.push(bytes); - return bytes; - case 116: - return true; - case 118: - var d; - if(this.buf.charCodeAt(this.pos) >= 48 && this.buf.charCodeAt(this.pos) <= 57 && this.buf.charCodeAt(this.pos + 1) >= 48 && this.buf.charCodeAt(this.pos + 1) <= 57 && this.buf.charCodeAt(this.pos + 2) >= 48 && this.buf.charCodeAt(this.pos + 2) <= 57 && this.buf.charCodeAt(this.pos + 3) >= 48 && this.buf.charCodeAt(this.pos + 3) <= 57 && this.buf.charCodeAt(this.pos + 4) == 45) { - d = HxOverrides.strDate(HxOverrides.substr(this.buf,this.pos,19)); - this.pos += 19; - } else { - var t = this.readFloat(); - d = new Date(t); - } - this.cache.push(d); - return d; - case 119: - var name5 = this.unserialize(); - var edecl1 = this.resolver.resolveEnum(name5); - if(edecl1 == null) { - throw new js__$Boot_HaxeError("Enum not found " + name5); - } - var e2 = this.unserializeEnum(edecl1,this.unserialize()); - this.cache.push(e2); - return e2; - case 120: - throw js__$Boot_HaxeError.wrap(this.unserialize()); - break; - case 121: - var len1 = this.readDigits(); - if(this.buf.charCodeAt(this.pos++) != 58 || this.length - this.pos < len1) { - throw new js__$Boot_HaxeError("Invalid string length"); - } - var s2 = HxOverrides.substr(this.buf,this.pos,len1); - this.pos += len1; - s2 = decodeURIComponent(s2.split("+").join(" ")); - this.scache.push(s2); - return s2; - case 122: - return 0; - default: - } - this.pos--; - throw new js__$Boot_HaxeError("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos); - } - ,__class__: haxe_Unserializer -}; -var haxe_io_Bytes = function(data) { - this.length = data.byteLength; - this.b = new Uint8Array(data); - this.b.bufferValue = data; - data.hxBytes = this; - data.bytes = this.b; -}; -$hxClasses["haxe.io.Bytes"] = haxe_io_Bytes; -haxe_io_Bytes.__name__ = true; -haxe_io_Bytes.ofString = function(s) { - var a = []; - var i = 0; - while(i < s.length) { - var c = s.charCodeAt(i++); - if(55296 <= c && c <= 56319) { - c = c - 55232 << 10 | s.charCodeAt(i++) & 1023; - } - if(c <= 127) { - a.push(c); - } else if(c <= 2047) { - a.push(192 | c >> 6); - a.push(128 | c & 63); - } else if(c <= 65535) { - a.push(224 | c >> 12); - a.push(128 | c >> 6 & 63); - a.push(128 | c & 63); - } else { - a.push(240 | c >> 18); - a.push(128 | c >> 12 & 63); - a.push(128 | c >> 6 & 63); - a.push(128 | c & 63); - } - } - return new haxe_io_Bytes(new Uint8Array(a).buffer); -}; -haxe_io_Bytes.ofData = function(b) { - var hb = b.hxBytes; - if(hb != null) { - return hb; - } - return new haxe_io_Bytes(b); -}; -haxe_io_Bytes.prototype = { - length: null - ,b: null - ,data: null - ,blit: function(pos,src,srcpos,len) { - if(pos < 0 || srcpos < 0 || len < 0 || pos + len > this.length || srcpos + len > src.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - if(srcpos == 0 && len == src.b.byteLength) { - this.b.set(src.b,pos); - } else { - this.b.set(src.b.subarray(srcpos,srcpos + len),pos); - } - } - ,sub: function(pos,len) { - if(pos < 0 || len < 0 || pos + len > this.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - return new haxe_io_Bytes(this.b.buffer.slice(pos + this.b.byteOffset,pos + this.b.byteOffset + len)); - } - ,getDouble: function(pos) { - if(this.data == null) { - this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength); - } - return this.data.getFloat64(pos,true); - } - ,getFloat: function(pos) { - if(this.data == null) { - this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength); - } - return this.data.getFloat32(pos,true); - } - ,setDouble: function(pos,v) { - if(this.data == null) { - this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength); - } - this.data.setFloat64(pos,v,true); - } - ,setFloat: function(pos,v) { - if(this.data == null) { - this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength); - } - this.data.setFloat32(pos,v,true); - } - ,getUInt16: function(pos) { - if(this.data == null) { - this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength); - } - return this.data.getUint16(pos,true); - } - ,getInt32: function(pos) { - if(this.data == null) { - this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength); - } - return this.data.getInt32(pos,true); - } - ,setInt32: function(pos,v) { - if(this.data == null) { - this.data = new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength); - } - this.data.setInt32(pos,v,true); - } - ,getString: function(pos,len) { - if(pos < 0 || len < 0 || pos + len > this.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - var s = ""; - var b = this.b; - var fcc = String.fromCharCode; - var i = pos; - var max = pos + len; - while(i < max) { - var c = b[i++]; - if(c < 128) { - if(c == 0) { - break; - } - s += fcc(c); - } else if(c < 224) { - s += fcc((c & 63) << 6 | b[i++] & 127); - } else if(c < 240) { - var c2 = b[i++]; - s += fcc((c & 31) << 12 | (c2 & 127) << 6 | b[i++] & 127); - } else { - var c21 = b[i++]; - var c3 = b[i++]; - var u = (c & 15) << 18 | (c21 & 127) << 12 | (c3 & 127) << 6 | b[i++] & 127; - s += fcc((u >> 10) + 55232); - s += fcc(u & 1023 | 56320); - } - } - return s; - } - ,toString: function() { - return this.getString(0,this.length); - } - ,__class__: haxe_io_Bytes -}; -var haxe_crypto_Base64 = function() { }; -$hxClasses["haxe.crypto.Base64"] = haxe_crypto_Base64; -haxe_crypto_Base64.__name__ = true; -haxe_crypto_Base64.encode = function(bytes,complement) { - if(complement == null) { - complement = true; - } - var str = new haxe_crypto_BaseCode(haxe_crypto_Base64.BYTES).encodeBytes(bytes).toString(); - if(complement) { - var _g = bytes.length % 3; - switch(_g) { - case 1: - str += "=="; - break; - case 2: - str += "="; - break; - default: - } - } - return str; -}; -var haxe_crypto_BaseCode = function(base) { - var len = base.length; - var nbits = 1; - while(len > 1 << nbits) ++nbits; - if(nbits > 8 || len != 1 << nbits) { - throw new js__$Boot_HaxeError("BaseCode : base length must be a power of two."); - } - this.base = base; - this.nbits = nbits; -}; -$hxClasses["haxe.crypto.BaseCode"] = haxe_crypto_BaseCode; -haxe_crypto_BaseCode.__name__ = true; -haxe_crypto_BaseCode.prototype = { - base: null - ,nbits: null - ,encodeBytes: function(b) { - var nbits = this.nbits; - var base = this.base; - var size = b.length * 8 / nbits | 0; - var out = new haxe_io_Bytes(new ArrayBuffer(size + (b.length * 8 % nbits == 0 ? 0 : 1))); - var buf = 0; - var curbits = 0; - var mask = (1 << nbits) - 1; - var pin = 0; - var pout = 0; - while(pout < size) { - while(curbits < nbits) { - curbits += 8; - buf <<= 8; - buf |= b.b[pin++]; - } - curbits -= nbits; - out.b[pout++] = base.b[buf >> curbits & mask] & 255; - } - if(curbits > 0) { - out.b[pout++] = base.b[buf << nbits - curbits & mask] & 255; - } - return out; - } - ,__class__: haxe_crypto_BaseCode -}; -var haxe_ds_IntMap = function() { - this.h = { }; -}; -$hxClasses["haxe.ds.IntMap"] = haxe_ds_IntMap; -haxe_ds_IntMap.__name__ = true; -haxe_ds_IntMap.__interfaces__ = [haxe_IMap]; -haxe_ds_IntMap.prototype = { - h: null - ,keys: function() { - var a = []; - for( var key in this.h ) if(this.h.hasOwnProperty(key)) { - a.push(key | 0); - } - return HxOverrides.iter(a); - } - ,iterator: function() { - return { ref : this.h, it : this.keys(), hasNext : function() { - return this.it.hasNext(); - }, next : function() { - var i = this.it.next(); - return this.ref[i]; - }}; - } - ,__class__: haxe_ds_IntMap -}; -var haxe_ds_ObjectMap = function() { - this.h = { __keys__ : { }}; -}; -$hxClasses["haxe.ds.ObjectMap"] = haxe_ds_ObjectMap; -haxe_ds_ObjectMap.__name__ = true; -haxe_ds_ObjectMap.__interfaces__ = [haxe_IMap]; -haxe_ds_ObjectMap.prototype = { - h: null - ,set: function(key,value) { - var id = key.__id__ || (key.__id__ = ++haxe_ds_ObjectMap.count); - this.h[id] = value; - this.h.__keys__[id] = key; - } - ,keys: function() { - var a = []; - for( var key in this.h.__keys__ ) { - if(this.h.hasOwnProperty(key)) { - a.push(this.h.__keys__[key]); - } - } - return HxOverrides.iter(a); - } - ,iterator: function() { - return { ref : this.h, it : this.keys(), hasNext : function() { - return this.it.hasNext(); - }, next : function() { - var i = this.it.next(); - return this.ref[i.__id__]; - }}; - } - ,__class__: haxe_ds_ObjectMap -}; -var haxe_ds__$StringMap_StringMapIterator = function(map,keys) { - this.map = map; - this.keys = keys; - this.index = 0; - this.count = keys.length; -}; -$hxClasses["haxe.ds._StringMap.StringMapIterator"] = haxe_ds__$StringMap_StringMapIterator; -haxe_ds__$StringMap_StringMapIterator.__name__ = true; -haxe_ds__$StringMap_StringMapIterator.prototype = { - map: null - ,keys: null - ,index: null - ,count: null - ,hasNext: function() { - return this.index < this.count; - } - ,next: function() { - var _this = this.map; - var key = this.keys[this.index++]; - if(__map_reserved[key] != null) { - return _this.getReserved(key); - } else { - return _this.h[key]; - } - } - ,__class__: haxe_ds__$StringMap_StringMapIterator -}; -var haxe_ds_StringMap = function() { - this.h = { }; -}; -$hxClasses["haxe.ds.StringMap"] = haxe_ds_StringMap; -haxe_ds_StringMap.__name__ = true; -haxe_ds_StringMap.__interfaces__ = [haxe_IMap]; -haxe_ds_StringMap.prototype = { - h: null - ,rh: null - ,setReserved: function(key,value) { - if(this.rh == null) { - this.rh = { }; - } - this.rh["$" + key] = value; - } - ,getReserved: function(key) { - if(this.rh == null) { - return null; - } else { - return this.rh["$" + key]; - } - } - ,existsReserved: function(key) { - if(this.rh == null) { - return false; - } - return this.rh.hasOwnProperty("$" + key); - } - ,arrayKeys: function() { - var out = []; - for( var key in this.h ) { - if(this.h.hasOwnProperty(key)) { - out.push(key); - } - } - if(this.rh != null) { - for( var key in this.rh ) { - if(key.charCodeAt(0) == 36) { - out.push(key.substr(1)); - } - } - } - return out; - } - ,iterator: function() { - return new haxe_ds__$StringMap_StringMapIterator(this,this.arrayKeys()); - } - ,__class__: haxe_ds_StringMap -}; -var haxe_io_BytesBuffer = function() { - this.b = []; -}; -$hxClasses["haxe.io.BytesBuffer"] = haxe_io_BytesBuffer; -haxe_io_BytesBuffer.__name__ = true; -haxe_io_BytesBuffer.prototype = { - b: null - ,getBytes: function() { - var bytes = new haxe_io_Bytes(new Uint8Array(this.b).buffer); - this.b = null; - return bytes; - } - ,__class__: haxe_io_BytesBuffer -}; -var haxe_io_Input = function() { }; -$hxClasses["haxe.io.Input"] = haxe_io_Input; -haxe_io_Input.__name__ = true; -haxe_io_Input.prototype = { - bigEndian: null - ,readByte: function() { - throw new js__$Boot_HaxeError("Not implemented"); - } - ,readBytes: function(s,pos,len) { - var k = len; - var b = s.b; - if(pos < 0 || len < 0 || pos + len > s.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - try { - while(k > 0) { - b[pos] = this.readByte(); - ++pos; - --k; - } - } catch( eof ) { - if (eof instanceof js__$Boot_HaxeError) eof = eof.val; - if( js_Boot.__instanceof(eof,haxe_io_Eof) ) { - } else throw(eof); - } - return len - k; - } - ,readFullBytes: function(s,pos,len) { - while(len > 0) { - var k = this.readBytes(s,pos,len); - if(k == 0) { - throw new js__$Boot_HaxeError(haxe_io_Error.Blocked); - } - pos += k; - len -= k; - } - } - ,read: function(nbytes) { - var s = new haxe_io_Bytes(new ArrayBuffer(nbytes)); - var p = 0; - while(nbytes > 0) { - var k = this.readBytes(s,p,nbytes); - if(k == 0) { - throw new js__$Boot_HaxeError(haxe_io_Error.Blocked); - } - p += k; - nbytes -= k; - } - return s; - } - ,readInt32: function() { - var ch1 = this.readByte(); - var ch2 = this.readByte(); - var ch3 = this.readByte(); - var ch4 = this.readByte(); - if(this.bigEndian) { - return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; - } else { - return ch1 | ch2 << 8 | ch3 << 16 | ch4 << 24; - } - } - ,readString: function(len) { - var b = new haxe_io_Bytes(new ArrayBuffer(len)); - this.readFullBytes(b,0,len); - return b.toString(); - } - ,__class__: haxe_io_Input -}; -var haxe_io_BytesInput = function(b,pos,len) { - if(pos == null) { - pos = 0; - } - if(len == null) { - len = b.length - pos; - } - if(pos < 0 || len < 0 || pos + len > b.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - this.b = b.b; - this.pos = pos; - this.len = len; - this.totlen = len; -}; -$hxClasses["haxe.io.BytesInput"] = haxe_io_BytesInput; -haxe_io_BytesInput.__name__ = true; -haxe_io_BytesInput.__super__ = haxe_io_Input; -haxe_io_BytesInput.prototype = $extend(haxe_io_Input.prototype,{ - b: null - ,pos: null - ,len: null - ,totlen: null - ,set_position: function(p) { - if(p < 0) { - p = 0; - } else if(p > this.totlen) { - p = this.totlen; - } - this.len = this.totlen - p; - return this.pos = p; - } - ,readByte: function() { - if(this.len == 0) { - throw new js__$Boot_HaxeError(new haxe_io_Eof()); - } - this.len--; - return this.b[this.pos++]; - } - ,readBytes: function(buf,pos,len) { - if(pos < 0 || len < 0 || pos + len > buf.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - if(this.len == 0 && len > 0) { - throw new js__$Boot_HaxeError(new haxe_io_Eof()); - } - if(this.len < len) { - len = this.len; - } - var b1 = this.b; - var b2 = buf.b; - var _g1 = 0; - var _g = len; - while(_g1 < _g) { - var i = _g1++; - b2[pos + i] = b1[this.pos + i]; - } - this.pos += len; - this.len -= len; - return len; - } - ,__class__: haxe_io_BytesInput -}); -var haxe_io_Output = function() { }; -$hxClasses["haxe.io.Output"] = haxe_io_Output; -haxe_io_Output.__name__ = true; -haxe_io_Output.prototype = { - bigEndian: null - ,writeByte: function(c) { - throw new js__$Boot_HaxeError("Not implemented"); - } - ,writeBytes: function(s,pos,len) { - if(pos < 0 || len < 0 || pos + len > s.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - var b = s.b; - var k = len; - while(k > 0) { - this.writeByte(b[pos]); - ++pos; - --k; - } - return len; - } - ,write: function(s) { - var l = s.length; - var p = 0; - while(l > 0) { - var k = this.writeBytes(s,p,l); - if(k == 0) { - throw new js__$Boot_HaxeError(haxe_io_Error.Blocked); - } - p += k; - l -= k; - } - } - ,writeFloat: function(x) { - this.writeInt32(haxe_io_FPHelper.floatToI32(x)); - } - ,writeInt32: function(x) { - if(this.bigEndian) { - this.writeByte(x >>> 24); - this.writeByte(x >> 16 & 255); - this.writeByte(x >> 8 & 255); - this.writeByte(x & 255); - } else { - this.writeByte(x & 255); - this.writeByte(x >> 8 & 255); - this.writeByte(x >> 16 & 255); - this.writeByte(x >>> 24); - } - } - ,__class__: haxe_io_Output -}; -var haxe_io_BytesOutput = function() { - this.b = new haxe_io_BytesBuffer(); -}; -$hxClasses["haxe.io.BytesOutput"] = haxe_io_BytesOutput; -haxe_io_BytesOutput.__name__ = true; -haxe_io_BytesOutput.__super__ = haxe_io_Output; -haxe_io_BytesOutput.prototype = $extend(haxe_io_Output.prototype,{ - b: null - ,writeByte: function(c) { - this.b.b.push(c); - } - ,writeBytes: function(buf,pos,len) { - var _this = this.b; - if(pos < 0 || len < 0 || pos + len > buf.length) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - var b1 = _this.b; - var b2 = buf.b; - var _g1 = pos; - var _g = pos + len; - while(_g1 < _g) { - var i = _g1++; - _this.b.push(b2[i]); - } - return len; - } - ,getBytes: function() { - return this.b.getBytes(); - } - ,__class__: haxe_io_BytesOutput -}); -var haxe_io_Eof = function() { -}; -$hxClasses["haxe.io.Eof"] = haxe_io_Eof; -haxe_io_Eof.__name__ = true; -haxe_io_Eof.prototype = { - toString: function() { - return "Eof"; - } - ,__class__: haxe_io_Eof -}; -var haxe_io_Error = $hxClasses["haxe.io.Error"] = { __ename__ : true, __constructs__ : ["Blocked","Overflow","OutsideBounds","Custom"] }; -haxe_io_Error.Blocked = ["Blocked",0]; -haxe_io_Error.Blocked.toString = $estr; -haxe_io_Error.Blocked.__enum__ = haxe_io_Error; -haxe_io_Error.Overflow = ["Overflow",1]; -haxe_io_Error.Overflow.toString = $estr; -haxe_io_Error.Overflow.__enum__ = haxe_io_Error; -haxe_io_Error.OutsideBounds = ["OutsideBounds",2]; -haxe_io_Error.OutsideBounds.toString = $estr; -haxe_io_Error.OutsideBounds.__enum__ = haxe_io_Error; -haxe_io_Error.Custom = function(e) { var $x = ["Custom",3,e]; $x.__enum__ = haxe_io_Error; $x.toString = $estr; return $x; }; -var haxe_io_FPHelper = function() { }; -$hxClasses["haxe.io.FPHelper"] = haxe_io_FPHelper; -haxe_io_FPHelper.__name__ = true; -haxe_io_FPHelper.i32ToFloat = function(i) { - var sign = 1 - (i >>> 31 << 1); - var exp = i >>> 23 & 255; - var sig = i & 8388607; - if(sig == 0 && exp == 0) { - return 0.0; - } - return sign * (1 + Math.pow(2,-23) * sig) * Math.pow(2,exp - 127); -}; -haxe_io_FPHelper.floatToI32 = function(f) { - if(f == 0) { - return 0; - } - var af = f < 0 ? -f : f; - var exp = Math.floor(Math.log(af) / 0.6931471805599453); - if(exp < -127) { - exp = -127; - } else if(exp > 128) { - exp = 128; - } - var sig = Math.round((af / Math.pow(2,exp) - 1) * 8388608); - if(sig == 8388608 && exp < 128) { - sig = 0; - ++exp; - } - return (f < 0 ? -2147483648 : 0) | exp + 127 << 23 | sig; -}; -haxe_io_FPHelper.i64ToDouble = function(low,high) { - var sign = 1 - (high >>> 31 << 1); - var exp = (high >> 20 & 2047) - 1023; - var sig = (high & 1048575) * 4294967296. + (low >>> 31) * 2147483648. + (low & 2147483647); - if(sig == 0 && exp == -1023) { - return 0.0; - } - return sign * (1.0 + Math.pow(2,-52) * sig) * Math.pow(2,exp); -}; -haxe_io_FPHelper.doubleToI64 = function(v) { - var i64 = haxe_io_FPHelper.i64tmp; - if(v == 0) { - i64.low = 0; - i64.high = 0; - } else if(!isFinite(v)) { - if(v > 0) { - i64.low = 0; - i64.high = 2146435072; - } else { - i64.low = 0; - i64.high = -1048576; - } - } else { - var av = v < 0 ? -v : v; - var exp = Math.floor(Math.log(av) / 0.6931471805599453); - var sig = Math.round((av / Math.pow(2,exp) - 1) * 4503599627370496.); - var sig_l = sig | 0; - var sig_h = sig / 4294967296.0 | 0; - i64.low = sig_l; - i64.high = (v < 0 ? -2147483648 : 0) | exp + 1023 << 20 | sig_h; - } - return i64; -}; -var haxe_io__$UInt8Array_UInt8Array_$Impl_$ = {}; -$hxClasses["haxe.io._UInt8Array.UInt8Array_Impl_"] = haxe_io__$UInt8Array_UInt8Array_$Impl_$; -haxe_io__$UInt8Array_UInt8Array_$Impl_$.__name__ = true; -haxe_io__$UInt8Array_UInt8Array_$Impl_$.fromBytes = function(bytes,bytePos,length) { - if(bytePos == null) { - bytePos = 0; - } - if(length == null) { - length = bytes.length - bytePos; - } - return new Uint8Array(bytes.b.bufferValue,bytePos,length); -}; -var js__$Boot_HaxeError = function(val) { - Error.call(this); - this.val = val; - this.message = String(val); - if(Error.captureStackTrace) { - Error.captureStackTrace(this,js__$Boot_HaxeError); - } -}; -$hxClasses["js._Boot.HaxeError"] = js__$Boot_HaxeError; -js__$Boot_HaxeError.__name__ = true; -js__$Boot_HaxeError.wrap = function(val) { - if((val instanceof Error)) { - return val; - } else { - return new js__$Boot_HaxeError(val); - } -}; -js__$Boot_HaxeError.__super__ = Error; -js__$Boot_HaxeError.prototype = $extend(Error.prototype,{ - val: null - ,__class__: js__$Boot_HaxeError -}); -var js_Boot = function() { }; -$hxClasses["js.Boot"] = js_Boot; -js_Boot.__name__ = true; -js_Boot.__unhtml = function(s) { - return s.split("&").join("&").split("<").join("<").split(">").join(">"); -}; -js_Boot.__trace = function(v,i) { - var msg = i != null ? i.fileName + ":" + i.lineNumber + ": " : ""; - msg += js_Boot.__string_rec(v,""); - if(i != null && i.customParams != null) { - var _g = 0; - var _g1 = i.customParams; - while(_g < _g1.length) { - var v1 = _g1[_g]; - ++_g; - msg += "," + js_Boot.__string_rec(v1,""); - } - } - var d; - var tmp; - if(typeof(document) != "undefined") { - d = document.getElementById("haxe:trace"); - tmp = d != null; - } else { - tmp = false; - } - if(tmp) { - d.innerHTML += js_Boot.__unhtml(msg) + "
"; - } else if(typeof console != "undefined" && console.log != null) { - console.log(msg); - } -}; -js_Boot.getClass = function(o) { - if((o instanceof Array) && o.__enum__ == null) { - return Array; - } else { - var cl = o.__class__; - if(cl != null) { - return cl; - } - var name = js_Boot.__nativeClassName(o); - if(name != null) { - return js_Boot.__resolveNativeClass(name); - } - return null; - } -}; -js_Boot.__string_rec = function(o,s) { - if(o == null) { - return "null"; - } - if(s.length >= 5) { - return "<...>"; - } - var t = typeof(o); - if(t == "function" && (o.__name__ || o.__ename__)) { - t = "object"; - } - switch(t) { - case "function": - return ""; - case "object": - if(o instanceof Array) { - if(o.__enum__) { - if(o.length == 2) { - return o[0]; - } - var str = o[0] + "("; - s += "\t"; - var _g1 = 2; - var _g = o.length; - while(_g1 < _g) { - var i = _g1++; - if(i != 2) { - str += "," + js_Boot.__string_rec(o[i],s); - } else { - str += js_Boot.__string_rec(o[i],s); - } - } - return str + ")"; - } - var l = o.length; - var i1; - var str1 = "["; - s += "\t"; - var _g11 = 0; - var _g2 = l; - while(_g11 < _g2) { - var i2 = _g11++; - str1 += (i2 > 0 ? "," : "") + js_Boot.__string_rec(o[i2],s); - } - str1 += "]"; - return str1; - } - var tostr; - try { - tostr = o.toString; - } catch( e ) { - return "???"; - } - if(tostr != null && tostr != Object.toString && typeof(tostr) == "function") { - var s2 = o.toString(); - if(s2 != "[object Object]") { - return s2; - } - } - var k = null; - var str2 = "{\n"; - s += "\t"; - var hasp = o.hasOwnProperty != null; - for( var k in o ) { - if(hasp && !o.hasOwnProperty(k)) { - continue; - } - if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") { - continue; - } - if(str2.length != 2) { - str2 += ", \n"; - } - str2 += s + k + " : " + js_Boot.__string_rec(o[k],s); - } - s = s.substring(1); - str2 += "\n" + s + "}"; - return str2; - case "string": - return o; - default: - return String(o); - } -}; -js_Boot.__interfLoop = function(cc,cl) { - if(cc == null) { - return false; - } - if(cc == cl) { - return true; - } - var intf = cc.__interfaces__; - if(intf != null) { - var _g1 = 0; - var _g = intf.length; - while(_g1 < _g) { - var i = _g1++; - var i1 = intf[i]; - if(i1 == cl || js_Boot.__interfLoop(i1,cl)) { - return true; - } - } - } - return js_Boot.__interfLoop(cc.__super__,cl); -}; -js_Boot.__instanceof = function(o,cl) { - if(cl == null) { - return false; - } - switch(cl) { - case Array: - if((o instanceof Array)) { - return o.__enum__ == null; - } else { - return false; - } - break; - case Bool: - return typeof(o) == "boolean"; - case Dynamic: - return true; - case Float: - return typeof(o) == "number"; - case Int: - if(typeof(o) == "number") { - return (o|0) === o; - } else { - return false; - } - break; - case String: - return typeof(o) == "string"; - default: - if(o != null) { - if(typeof(cl) == "function") { - if(o instanceof cl) { - return true; - } - if(js_Boot.__interfLoop(js_Boot.getClass(o),cl)) { - return true; - } - } else if(typeof(cl) == "object" && js_Boot.__isNativeObj(cl)) { - if(o instanceof cl) { - return true; - } - } - } else { - return false; - } - if(cl == Class ? o.__name__ != null : false) { - return true; - } - if(cl == Enum ? o.__ename__ != null : false) { - return true; - } - return o.__enum__ == cl; - } -}; -js_Boot.__cast = function(o,t) { - if(js_Boot.__instanceof(o,t)) { - return o; - } else { - throw new js__$Boot_HaxeError("Cannot cast " + Std.string(o) + " to " + Std.string(t)); - } -}; -js_Boot.__nativeClassName = function(o) { - var name = js_Boot.__toStr.call(o).slice(8,-1); - if(name == "Object" || name == "Function" || name == "Math" || name == "JSON") { - return null; - } - return name; -}; -js_Boot.__isNativeObj = function(o) { - return js_Boot.__nativeClassName(o) != null; -}; -js_Boot.__resolveNativeClass = function(name) { - return $global[name]; -}; -var js_html_compat_ArrayBuffer = function(a) { - if((a instanceof Array) && a.__enum__ == null) { - this.a = a; - this.byteLength = a.length; - } else { - var len = a; - this.a = []; - var _g1 = 0; - var _g = len; - while(_g1 < _g) { - var i = _g1++; - this.a[i] = 0; - } - this.byteLength = len; - } -}; -$hxClasses["js.html.compat.ArrayBuffer"] = js_html_compat_ArrayBuffer; -js_html_compat_ArrayBuffer.__name__ = true; -js_html_compat_ArrayBuffer.sliceImpl = function(begin,end) { - var u = new Uint8Array(this,begin,end == null ? null : end - begin); - var result = new ArrayBuffer(u.byteLength); - var resultArray = new Uint8Array(result); - resultArray.set(u); - return result; -}; -js_html_compat_ArrayBuffer.prototype = { - byteLength: null - ,a: null - ,slice: function(begin,end) { - return new js_html_compat_ArrayBuffer(this.a.slice(begin,end)); - } - ,__class__: js_html_compat_ArrayBuffer -}; -var js_html_compat_DataView = function(buffer,byteOffset,byteLength) { - this.buf = buffer; - this.offset = byteOffset == null ? 0 : byteOffset; - this.length = byteLength == null ? buffer.byteLength - this.offset : byteLength; - if(this.offset < 0 || this.length < 0 || this.offset + this.length > buffer.byteLength) { - throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds); - } - this.byteLength = this.length; - this.byteOffset = this.offset; - this.buffer = this.buf; -}; -$hxClasses["js.html.compat.DataView"] = js_html_compat_DataView; -js_html_compat_DataView.__name__ = true; -js_html_compat_DataView.prototype = { - buf: null - ,offset: null - ,length: null - ,byteLength: null - ,byteOffset: null - ,buffer: null - ,getInt8: function(byteOffset) { - var v = this.buf.a[this.offset + byteOffset]; - if(v >= 128) { - return v - 256; - } else { - return v; - } - } - ,getUint8: function(byteOffset) { - return this.buf.a[this.offset + byteOffset]; - } - ,getInt16: function(byteOffset,littleEndian) { - var v = this.getUint16(byteOffset,littleEndian); - if(v >= 32768) { - return v - 65536; - } else { - return v; - } - } - ,getUint16: function(byteOffset,littleEndian) { - if(littleEndian) { - return this.buf.a[this.offset + byteOffset] | this.buf.a[this.offset + byteOffset + 1] << 8; - } else { - return this.buf.a[this.offset + byteOffset] << 8 | this.buf.a[this.offset + byteOffset + 1]; - } - } - ,getInt32: function(byteOffset,littleEndian) { - var p = this.offset + byteOffset; - var a = this.buf.a[p++]; - var b = this.buf.a[p++]; - var c = this.buf.a[p++]; - var d = this.buf.a[p++]; - if(littleEndian) { - return a | b << 8 | c << 16 | d << 24; - } else { - return d | c << 8 | b << 16 | a << 24; - } - } - ,getUint32: function(byteOffset,littleEndian) { - var v = this.getInt32(byteOffset,littleEndian); - if(v < 0) { - return v + 4294967296.; - } else { - return v; - } - } - ,getFloat32: function(byteOffset,littleEndian) { - return haxe_io_FPHelper.i32ToFloat(this.getInt32(byteOffset,littleEndian)); - } - ,getFloat64: function(byteOffset,littleEndian) { - var a = this.getInt32(byteOffset,littleEndian); - var b = this.getInt32(byteOffset + 4,littleEndian); - return haxe_io_FPHelper.i64ToDouble(littleEndian ? a : b,littleEndian ? b : a); - } - ,setInt8: function(byteOffset,value) { - this.buf.a[byteOffset + this.offset] = value < 0 ? value + 128 & 255 : value & 255; - } - ,setUint8: function(byteOffset,value) { - this.buf.a[byteOffset + this.offset] = value & 255; - } - ,setInt16: function(byteOffset,value,littleEndian) { - this.setUint16(byteOffset,value < 0 ? value + 65536 : value,littleEndian); - } - ,setUint16: function(byteOffset,value,littleEndian) { - var p = byteOffset + this.offset; - if(littleEndian) { - this.buf.a[p] = value & 255; - this.buf.a[p++] = value >> 8 & 255; - } else { - this.buf.a[p++] = value >> 8 & 255; - this.buf.a[p] = value & 255; - } - } - ,setInt32: function(byteOffset,value,littleEndian) { - this.setUint32(byteOffset,value,littleEndian); - } - ,setUint32: function(byteOffset,value,littleEndian) { - var p = byteOffset + this.offset; - if(littleEndian) { - this.buf.a[p++] = value & 255; - this.buf.a[p++] = value >> 8 & 255; - this.buf.a[p++] = value >> 16 & 255; - this.buf.a[p++] = value >>> 24; - } else { - this.buf.a[p++] = value >>> 24; - this.buf.a[p++] = value >> 16 & 255; - this.buf.a[p++] = value >> 8 & 255; - this.buf.a[p++] = value & 255; - } - } - ,setFloat32: function(byteOffset,value,littleEndian) { - this.setUint32(byteOffset,haxe_io_FPHelper.floatToI32(value),littleEndian); - } - ,setFloat64: function(byteOffset,value,littleEndian) { - var i64 = haxe_io_FPHelper.doubleToI64(value); - if(littleEndian) { - this.setUint32(byteOffset,i64.low); - this.setUint32(byteOffset,i64.high); - } else { - this.setUint32(byteOffset,i64.high); - this.setUint32(byteOffset,i64.low); - } - } - ,__class__: js_html_compat_DataView -}; -var js_html_compat_Float32Array = function() { }; -$hxClasses["js.html.compat.Float32Array"] = js_html_compat_Float32Array; -js_html_compat_Float32Array.__name__ = true; -js_html_compat_Float32Array._new = function(arg1,offset,length) { - var arr; - if(typeof(arg1) == "number") { - arr = []; - var _g1 = 0; - var _g = arg1; - while(_g1 < _g) { - var i = _g1++; - arr[i] = 0; - } - arr.byteLength = arr.length << 2; - arr.byteOffset = 0; - var _g2 = []; - var _g21 = 0; - var _g11 = arr.length << 2; - while(_g21 < _g11) { - var i1 = _g21++; - _g2.push(0); - } - arr.buffer = new js_html_compat_ArrayBuffer(_g2); - } else if(js_Boot.__instanceof(arg1,js_html_compat_ArrayBuffer)) { - var buffer = arg1; - if(offset == null) { - offset = 0; - } - if(length == null) { - length = buffer.byteLength - offset >> 2; - } - arr = []; - var _g12 = 0; - var _g3 = length; - while(_g12 < _g3) { - var i2 = _g12++; - var val = buffer.a[offset++] | buffer.a[offset++] << 8 | buffer.a[offset++] << 16 | buffer.a[offset++] << 24; - arr.push(haxe_io_FPHelper.i32ToFloat(val)); - } - arr.byteLength = arr.length << 2; - arr.byteOffset = offset; - arr.buffer = buffer; - } else if((arg1 instanceof Array) && arg1.__enum__ == null) { - arr = arg1.slice(); - var buffer1 = []; - var _g4 = 0; - while(_g4 < arr.length) { - var f = arr[_g4]; - ++_g4; - var i3 = haxe_io_FPHelper.floatToI32(f); - buffer1.push(i3 & 255); - buffer1.push(i3 >> 8 & 255); - buffer1.push(i3 >> 16 & 255); - buffer1.push(i3 >>> 24); - } - arr.byteLength = arr.length << 2; - arr.byteOffset = 0; - arr.buffer = new js_html_compat_ArrayBuffer(buffer1); - } else { - throw new js__$Boot_HaxeError("TODO " + Std.string(arg1)); - } - arr.subarray = js_html_compat_Float32Array._subarray; - arr.set = js_html_compat_Float32Array._set; - return arr; -}; -js_html_compat_Float32Array._set = function(arg,offset) { - if(js_Boot.__instanceof(arg.buffer,js_html_compat_ArrayBuffer)) { - var a = arg; - if(arg.byteLength + offset > this.byteLength) { - throw new js__$Boot_HaxeError("set() outside of range"); - } - var _g1 = 0; - var _g = arg.byteLength; - while(_g1 < _g) { - var i = _g1++; - this[i + offset] = a[i]; - } - } else if((arg instanceof Array) && arg.__enum__ == null) { - var a1 = arg; - if(a1.length + offset > this.byteLength) { - throw new js__$Boot_HaxeError("set() outside of range"); - } - var _g11 = 0; - var _g2 = a1.length; - while(_g11 < _g2) { - var i1 = _g11++; - this[i1 + offset] = a1[i1]; - } - } else { - throw new js__$Boot_HaxeError("TODO"); - } -}; -js_html_compat_Float32Array._subarray = function(start,end) { - var a = js_html_compat_Float32Array._new(this.slice(start,end)); - a.byteOffset = start * 4; - return a; -}; -var js_html_compat_Uint8Array = function() { }; -$hxClasses["js.html.compat.Uint8Array"] = js_html_compat_Uint8Array; -js_html_compat_Uint8Array.__name__ = true; -js_html_compat_Uint8Array._new = function(arg1,offset,length) { - var arr; - if(typeof(arg1) == "number") { - arr = []; - var _g1 = 0; - var _g = arg1; - while(_g1 < _g) { - var i = _g1++; - arr[i] = 0; - } - arr.byteLength = arr.length; - arr.byteOffset = 0; - arr.buffer = new js_html_compat_ArrayBuffer(arr); - } else if(js_Boot.__instanceof(arg1,js_html_compat_ArrayBuffer)) { - var buffer = arg1; - if(offset == null) { - offset = 0; - } - if(length == null) { - length = buffer.byteLength - offset; - } - if(offset == 0) { - arr = buffer.a; - } else { - arr = buffer.a.slice(offset,offset + length); - } - arr.byteLength = arr.length; - arr.byteOffset = offset; - arr.buffer = buffer; - } else if((arg1 instanceof Array) && arg1.__enum__ == null) { - arr = arg1.slice(); - arr.byteLength = arr.length; - arr.byteOffset = 0; - arr.buffer = new js_html_compat_ArrayBuffer(arr); - } else { - throw new js__$Boot_HaxeError("TODO " + Std.string(arg1)); - } - arr.subarray = js_html_compat_Uint8Array._subarray; - arr.set = js_html_compat_Uint8Array._set; - return arr; -}; -js_html_compat_Uint8Array._set = function(arg,offset) { - if(js_Boot.__instanceof(arg.buffer,js_html_compat_ArrayBuffer)) { - var a = arg; - if(arg.byteLength + offset > this.byteLength) { - throw new js__$Boot_HaxeError("set() outside of range"); - } - var _g1 = 0; - var _g = arg.byteLength; - while(_g1 < _g) { - var i = _g1++; - this[i + offset] = a[i]; - } - } else if((arg instanceof Array) && arg.__enum__ == null) { - var a1 = arg; - if(a1.length + offset > this.byteLength) { - throw new js__$Boot_HaxeError("set() outside of range"); - } - var _g11 = 0; - var _g2 = a1.length; - while(_g11 < _g2) { - var i1 = _g11++; - this[i1 + offset] = a1[i1]; - } - } else { - throw new js__$Boot_HaxeError("TODO"); - } -}; -js_html_compat_Uint8Array._subarray = function(start,end) { - var a = js_html_compat_Uint8Array._new(this.slice(start,end)); - a.byteOffset = start; - return a; -}; -var kha__$Assets_ImageList = function() { - this.names = []; -}; -$hxClasses["kha._Assets.ImageList"] = kha__$Assets_ImageList; -kha__$Assets_ImageList.__name__ = true; -kha__$Assets_ImageList.prototype = { - names: null - ,__class__: kha__$Assets_ImageList -}; -var kha__$Assets_SoundList = function() { - this.names = []; -}; -$hxClasses["kha._Assets.SoundList"] = kha__$Assets_SoundList; -kha__$Assets_SoundList.__name__ = true; -kha__$Assets_SoundList.prototype = { - names: null - ,__class__: kha__$Assets_SoundList -}; -var kha__$Assets_BlobList = function() { - this.names = []; -}; -$hxClasses["kha._Assets.BlobList"] = kha__$Assets_BlobList; -kha__$Assets_BlobList.__name__ = true; -kha__$Assets_BlobList.prototype = { - names: null - ,__class__: kha__$Assets_BlobList -}; -var kha__$Assets_FontList = function() { - this.names = ["DroidSans"]; - this.DroidSansDescription = { files : ["DroidSans.ttf"], type : "font", name : "DroidSans"}; - this.DroidSansName = "DroidSans"; - this.DroidSans = null; -}; -$hxClasses["kha._Assets.FontList"] = kha__$Assets_FontList; -kha__$Assets_FontList.__name__ = true; -kha__$Assets_FontList.prototype = { - DroidSans: null - ,DroidSansName: null - ,DroidSansDescription: null - ,DroidSansLoad: function(done) { - kha_Assets.loadFont("DroidSans",function(font) { - done(); - }); - } - ,DroidSansUnload: function() { - this.DroidSans.unload(); - this.DroidSans = null; - } - ,names: null - ,__class__: kha__$Assets_FontList -}; -var kha__$Assets_VideoList = function() { - this.names = []; -}; -$hxClasses["kha._Assets.VideoList"] = kha__$Assets_VideoList; -kha__$Assets_VideoList.__name__ = true; -kha__$Assets_VideoList.prototype = { - names: null - ,__class__: kha__$Assets_VideoList -}; -var kha_Assets = function() { }; -$hxClasses["kha.Assets"] = kha_Assets; -kha_Assets.__name__ = true; -kha_Assets.loadEverything = function(callback) { - var fileCount = 0; - var _g = 0; - var _g1 = Type.getInstanceFields(kha__$Assets_BlobList); - while(_g < _g1.length) { - var blob = _g1[_g]; - ++_g; - if(StringTools.endsWith(blob,"Load")) { - fileCount += 1; - } - } - var _g2 = 0; - var _g11 = Type.getInstanceFields(kha__$Assets_ImageList); - while(_g2 < _g11.length) { - var image = _g11[_g2]; - ++_g2; - if(StringTools.endsWith(image,"Load")) { - fileCount += 1; - } - } - var _g3 = 0; - var _g12 = Type.getInstanceFields(kha__$Assets_SoundList); - while(_g3 < _g12.length) { - var sound = _g12[_g3]; - ++_g3; - if(StringTools.endsWith(sound,"Load")) { - fileCount += 1; - } - } - var _g4 = 0; - var _g13 = Type.getInstanceFields(kha__$Assets_FontList); - while(_g4 < _g13.length) { - var font = _g13[_g4]; - ++_g4; - if(StringTools.endsWith(font,"Load")) { - fileCount += 1; - } - } - var _g5 = 0; - var _g14 = Type.getInstanceFields(kha__$Assets_VideoList); - while(_g5 < _g14.length) { - var video = _g14[_g5]; - ++_g5; - if(StringTools.endsWith(video,"Load")) { - fileCount += 1; - } - } - if(fileCount == 0) { - callback(); - return; - } - var filesLeft = fileCount; - var _g6 = 0; - var _g15 = Type.getInstanceFields(kha__$Assets_BlobList); - while(_g6 < _g15.length) { - var blob1 = _g15[_g6]; - ++_g6; - if(StringTools.endsWith(blob1,"Load")) { - (Reflect.field(kha_Assets.blobs,blob1))(function() { - filesLeft -= 1; - kha_Assets.progress = 1 - filesLeft / fileCount; - if(filesLeft == 0) { - callback(); - } - }); - } - } - var _g7 = 0; - var _g16 = Type.getInstanceFields(kha__$Assets_ImageList); - while(_g7 < _g16.length) { - var image1 = _g16[_g7]; - ++_g7; - if(StringTools.endsWith(image1,"Load")) { - (Reflect.field(kha_Assets.images,image1))(function() { - filesLeft -= 1; - kha_Assets.progress = 1 - filesLeft / fileCount; - if(filesLeft == 0) { - callback(); - } - }); - } - } - var _g8 = 0; - var _g17 = Type.getInstanceFields(kha__$Assets_SoundList); - while(_g8 < _g17.length) { - var sound1 = [_g17[_g8]]; - ++_g8; - if(StringTools.endsWith(sound1[0],"Load")) { - (Reflect.field(kha_Assets.sounds,sound1[0]))((function(sound2) { - return function() { - var sound3 = Reflect.field(kha_Assets.sounds,sound2[0].substring(0,sound2[0].length - 4)); - sound3.uncompress((function() { - return function() { - filesLeft -= 1; - kha_Assets.progress = 1 - filesLeft / fileCount; - if(filesLeft == 0) { - callback(); - } - }; - })()); - }; - })(sound1)); - } - } - var _g9 = 0; - var _g18 = Type.getInstanceFields(kha__$Assets_FontList); - while(_g9 < _g18.length) { - var font1 = _g18[_g9]; - ++_g9; - if(StringTools.endsWith(font1,"Load")) { - (Reflect.field(kha_Assets.fonts,font1))(function() { - filesLeft -= 1; - kha_Assets.progress = 1 - filesLeft / fileCount; - if(filesLeft == 0) { - callback(); - } - }); - } - } - var _g10 = 0; - var _g19 = Type.getInstanceFields(kha__$Assets_VideoList); - while(_g10 < _g19.length) { - var video1 = _g19[_g10]; - ++_g10; - if(StringTools.endsWith(video1,"Load")) { - (Reflect.field(kha_Assets.videos,video1))(function() { - filesLeft -= 1; - kha_Assets.progress = 1 - filesLeft / fileCount; - if(filesLeft == 0) { - callback(); - } - }); - } - } -}; -kha_Assets.loadImage = function(name,done) { - var description = Reflect.field(kha_Assets.images,name + "Description"); - kha_LoaderImpl.loadImageFromDescription(description,function(image) { - kha_Assets.images[name] = image; - done(image); - }); -}; -kha_Assets.loadImageFromPath = function(path,readable,done) { - var description = { files : [path], readable : readable}; - kha_LoaderImpl.loadImageFromDescription(description,done); -}; -kha_Assets.get_imageFormats = function() { - return kha_LoaderImpl.getImageFormats(); -}; -kha_Assets.loadBlob = function(name,done) { - var description = Reflect.field(kha_Assets.blobs,name + "Description"); - kha_LoaderImpl.loadBlobFromDescription(description,function(blob) { - kha_Assets.blobs[name] = blob; - done(blob); - }); -}; -kha_Assets.loadBlobFromPath = function(path,done) { - var description = { files : [path]}; - kha_LoaderImpl.loadBlobFromDescription(description,done); -}; -kha_Assets.loadSound = function(name,done) { - var description = Reflect.field(kha_Assets.sounds,name + "Description"); - kha_LoaderImpl.loadSoundFromDescription(description,function(sound) { - kha_Assets.sounds[name] = sound; - done(sound); - }); - return; -}; -kha_Assets.loadSoundFromPath = function(path,done) { - var description = { files : [path]}; - kha_LoaderImpl.loadSoundFromDescription(description,done); - return; -}; -kha_Assets.get_soundFormats = function() { - return kha_LoaderImpl.getSoundFormats(); -}; -kha_Assets.loadFont = function(name,done) { - var description = Reflect.field(kha_Assets.fonts,name + "Description"); - kha_LoaderImpl.loadFontFromDescription(description,function(font) { - kha_Assets.fonts[name] = font; - done(font); - }); - return; -}; -kha_Assets.loadFontFromPath = function(path,done) { - var description = { files : [path]}; - kha_LoaderImpl.loadFontFromDescription(description,done); - return; -}; -kha_Assets.get_fontFormats = function() { - return ["ttf"]; -}; -kha_Assets.loadVideo = function(name,done) { - var description = Reflect.field(kha_Assets.videos,name + "Description"); - kha_LoaderImpl.loadVideoFromDescription(description,function(video) { - kha_Assets.videos[name] = video; - done(video); - }); - return; -}; -kha_Assets.loadVideoFromPath = function(path,done) { - var description = { files : [path]}; - kha_LoaderImpl.loadVideoFromDescription(description,done); - return; -}; -kha_Assets.get_videoFormats = function() { - return kha_LoaderImpl.getVideoFormats(); -}; -var kha_Canvas = function() { }; -$hxClasses["kha.Canvas"] = kha_Canvas; -kha_Canvas.__name__ = true; -kha_Canvas.prototype = { - get_width: null - ,get_height: null - ,get_g1: null - ,get_g2: null - ,get_g4: null - ,width: null - ,height: null - ,g1: null - ,g2: null - ,g4: null - ,__class__: kha_Canvas -}; -var kha_Resource = function() { }; -$hxClasses["kha.Resource"] = kha_Resource; -kha_Resource.__name__ = true; -kha_Resource.prototype = { - unload: null - ,__class__: kha_Resource -}; -var kha_Image = function() { }; -$hxClasses["kha.Image"] = kha_Image; -kha_Image.__name__ = true; -kha_Image.__interfaces__ = [kha_Resource,kha_Canvas]; -kha_Image.create = function(width,height,format,usage) { - if(format == null) { - format = kha_graphics4_TextureFormat.RGBA32; - } - if(usage == null) { - usage = kha_graphics4_Usage.StaticUsage; - } - if(kha_SystemImpl.gl == null) { - return new kha_CanvasImage(width,height,format,false); - } else { - return new kha_WebGLImage(width,height,format,false,0); - } -}; -kha_Image.create3D = function(width,height,depth,format,usage) { - return null; -}; -kha_Image.createRenderTarget = function(width,height,format,depthStencil,antiAliasingSamples,contextId) { - if(contextId == null) { - contextId = 0; - } - if(antiAliasingSamples == null) { - antiAliasingSamples = 1; - } - if(depthStencil == null) { - depthStencil = 0; - } - if(format == null) { - format = kha_graphics4_TextureFormat.RGBA32; - } - if(kha_SystemImpl.gl == null) { - return new kha_CanvasImage(width,height,format,true); - } else { - return new kha_WebGLImage(width,height,format,true,depthStencil); - } -}; -kha_Image.fromImage = function(image,readable) { - if(kha_SystemImpl.gl == null) { - var img = new kha_CanvasImage(image.width,image.height,kha_graphics4_TextureFormat.RGBA32,false); - img.image = image; - img.createTexture(); - return img; - } else { - var img1 = new kha_WebGLImage(image.width,image.height,kha_graphics4_TextureFormat.RGBA32,false,0); - img1.image = image; - img1.createTexture(); - return img1; - } -}; -kha_Image.fromBytes = function(bytes,width,height,format,usage) { - if(format == null) { - format = kha_graphics4_TextureFormat.RGBA32; - } - if(usage == null) { - usage = kha_graphics4_Usage.StaticUsage; - } - if(kha_SystemImpl.gl != null) { - var img = new kha_WebGLImage(width,height,format,false,0); - img.image = img.bytesToArray(bytes); - img.createTexture(); - return img; - } - return null; -}; -kha_Image.fromEncodedBytes = function(bytes,fileExtention,doneCallback,errorCallback,readable) { - if(readable == null) { - readable = false; - } - var dataUrl = "data:image;base64," + haxe_crypto_Base64.encode(bytes); - var imageElement = js_Boot.__cast(window.document.createElement("img") , HTMLImageElement); - imageElement.onload = function() { - var tmp = kha_Image.fromImage(imageElement,readable); - doneCallback(tmp); - }; - imageElement.onerror = function() { - errorCallback("Image was not created"); - }; - imageElement.src = dataUrl; -}; -kha_Image.fromVideo = function(video) { - if(kha_SystemImpl.gl == null) { - var img = new kha_CanvasImage(video.element.videoWidth,video.element.videoHeight,kha_graphics4_TextureFormat.RGBA32,false); - img.video = video.element; - img.createTexture(); - return img; - } else { - var img1 = new kha_WebGLImage(video.element.videoWidth,video.element.videoHeight,kha_graphics4_TextureFormat.RGBA32,false,0); - img1.video = video.element; - img1.createTexture(); - return img1; - } -}; -kha_Image.get_maxSize = function() { - if(kha_SystemImpl.gl == null) { - return 8192; - } else { - return kha_SystemImpl.gl.getParameter(3379); - } -}; -kha_Image.get_nonPow2Supported = function() { - return kha_SystemImpl.gl != null; -}; -kha_Image.prototype = { - isOpaque: function(x,y) { - return false; - } - ,at: function(x,y) { - return -16777216; - } - ,unload: function() { - } - ,lock: function(level) { - if(level == null) { - level = 0; - } - return null; - } - ,unlock: function() { - } - ,getPixels: function() { - return null; - } - ,generateMipmaps: function(levels) { - } - ,setMipmaps: function(mipmaps) { - } - ,setDepthStencilFrom: function(image) { - } - ,clear: function(x,y,z,width,height,depth,color) { - } - ,width: null - ,get_width: function() { - return 0; - } - ,height: null - ,get_height: function() { - return 0; - } - ,depth: null - ,get_depth: function() { - return 1; - } - ,realWidth: null - ,get_realWidth: function() { - return 0; - } - ,realHeight: null - ,get_realHeight: function() { - return 0; - } - ,g1: null - ,get_g1: function() { - return null; - } - ,g2: null - ,get_g2: function() { - return null; - } - ,g4: null - ,get_g4: function() { - return null; - } - ,__class__: kha_Image -}; -var kha_CanvasImage = function(width,height,format,renderTarget) { - this.g2canvas = null; - this.myWidth = width; - this.myHeight = height; - this.format = format; - this.renderTarget = renderTarget; - this.image = null; - this.video = null; - if(renderTarget) { - this.createTexture(); - } -}; -$hxClasses["kha.CanvasImage"] = kha_CanvasImage; -kha_CanvasImage.__name__ = true; -kha_CanvasImage.init = function() { - var canvas = window.document.createElement("canvas"); - if(canvas != null) { - kha_CanvasImage.context = canvas.getContext("2d"); - canvas.width = 2048; - canvas.height = 2048; - kha_CanvasImage.context.globalCompositeOperation = "copy"; - } -}; -kha_CanvasImage.upperPowerOfTwo = function(v) { - --v; - v |= v >>> 1; - v |= v >>> 2; - v |= v >>> 4; - v |= v >>> 8; - v |= v >>> 16; - return ++v; -}; -kha_CanvasImage.__super__ = kha_Image; -kha_CanvasImage.prototype = $extend(kha_Image.prototype,{ - image: null - ,video: null - ,data: null - ,myWidth: null - ,myHeight: null - ,format: null - ,renderTarget: null - ,frameBuffer: null - ,graphics1: null - ,g2canvas: null - ,get_g1: function() { - if(this.graphics1 == null) { - this.graphics1 = new kha_graphics2_Graphics1(this); - } - return this.graphics1; - } - ,get_g2: function() { - if(this.g2canvas == null) { - var canvas = window.document.createElement("canvas"); - this.image = canvas; - var context = canvas.getContext("2d"); - canvas.width = this.get_width(); - canvas.height = this.get_height(); - this.g2canvas = new kha_js_CanvasGraphics(context); - } - return this.g2canvas; - } - ,get_g4: function() { - return null; - } - ,get_width: function() { - return this.myWidth; - } - ,get_height: function() { - return this.myHeight; - } - ,get_realWidth: function() { - return this.myWidth; - } - ,get_realHeight: function() { - return this.myHeight; - } - ,isOpaque: function(x,y) { - if(this.data == null) { - if(kha_CanvasImage.context == null) { - return true; - } else { - this.createImageData(); - } - } - return this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 3] != 0; - } - ,at: function(x,y) { - if(this.data == null) { - if(kha_CanvasImage.context == null) { - return -16777216; - } else { - this.createImageData(); - } - } - return kha__$Color_Color_$Impl_$._new(this.data.data[y * (this.image.width | 0) * 4 + x * 4]); - } - ,createImageData: function() { - kha_CanvasImage.context.strokeStyle = "rgba(0,0,0,0)"; - kha_CanvasImage.context.fillStyle = "rgba(0,0,0,0)"; - kha_CanvasImage.context.fillRect(0,0,this.image.width,this.image.height); - kha_CanvasImage.context.drawImage(this.image,0,0,this.image.width,this.image.height,0,0,this.image.width,this.image.height); - this.data = kha_CanvasImage.context.getImageData(0,0,this.image.width,this.image.height); - } - ,texture: null - ,createTexture: function() { - if(kha_SystemImpl.gl == null) { - return; - } - this.texture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(3553,this.texture); - kha_SystemImpl.gl.texParameteri(3553,10240,9729); - kha_SystemImpl.gl.texParameteri(3553,10241,9729); - kha_SystemImpl.gl.texParameteri(3553,10242,33071); - kha_SystemImpl.gl.texParameteri(3553,10243,33071); - if(this.renderTarget) { - this.frameBuffer = kha_SystemImpl.gl.createFramebuffer(); - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null); - kha_SystemImpl.gl.framebufferTexture2D(36160,36064,3553,this.texture,0); - kha_SystemImpl.gl.bindFramebuffer(36160,null); - } else if(this.video != null) { - kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video); - } else { - kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.image); - } - kha_SystemImpl.gl.bindTexture(3553,null); - } - ,set: function(stage) { - kha_SystemImpl.gl.activeTexture(33984 + stage); - kha_SystemImpl.gl.bindTexture(3553,this.texture); - if(this.video != null) { - kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video); - } - } - ,bytes: null - ,lock: function(level) { - if(level == null) { - level = 0; - } - this.bytes = new haxe_io_Bytes(new ArrayBuffer(this.format == kha_graphics4_TextureFormat.RGBA32 ? 4 * this.get_width() * this.get_height() : this.get_width() * this.get_height())); - return this.bytes; - } - ,unlock: function() { - if(kha_SystemImpl.gl != null) { - this.texture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(3553,this.texture); - kha_SystemImpl.gl.texParameteri(3553,10240,9729); - kha_SystemImpl.gl.texParameteri(3553,10241,9729); - kha_SystemImpl.gl.texParameteri(3553,10242,33071); - kha_SystemImpl.gl.texParameteri(3553,10243,33071); - kha_SystemImpl.gl.texImage2D(3553,0,6409,this.get_width(),this.get_height(),0,6409,5121,new Uint8Array(this.bytes.b.bufferValue)); - if(kha_SystemImpl.gl.getError() == 1282) { - var rgbaBytes = new haxe_io_Bytes(new ArrayBuffer(this.get_width() * this.get_height() * 4)); - var _g1 = 0; - var _g = this.get_height(); - while(_g1 < _g) { - var y = _g1++; - var _g3 = 0; - var _g2 = this.get_width(); - while(_g3 < _g2) { - var x = _g3++; - var _this = this.bytes; - var pos = y * this.get_width() + x; - var value = _this.b[pos]; - var pos1 = y * this.get_width() * 4 + x * 4; - rgbaBytes.b[pos1] = value & 255; - var pos2 = y * this.get_width() * 4 + x * 4 + 1; - rgbaBytes.b[pos2] = value & 255; - var pos3 = y * this.get_width() * 4 + x * 4 + 2; - rgbaBytes.b[pos3] = value & 255; - var pos4 = y * this.get_width() * 4 + x * 4 + 3; - rgbaBytes.b[pos4] = 255; - } - } - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,new Uint8Array(rgbaBytes.b.bufferValue)); - } - kha_SystemImpl.gl.bindTexture(3553,null); - this.bytes = null; - } - } - ,unload: function() { - this.image = null; - this.video = null; - this.data = null; - } - ,__class__: kha_CanvasImage -}); -var kha__$Color_Color_$Impl_$ = $hx_exports["kha"]["_Color"]["Color_Impl_"] = {}; -$hxClasses["kha._Color.Color_Impl_"] = kha__$Color_Color_$Impl_$; -kha__$Color_Color_$Impl_$.__name__ = true; -kha__$Color_Color_$Impl_$.fromValue = function(value) { - return kha__$Color_Color_$Impl_$._new(value); -}; -kha__$Color_Color_$Impl_$.fromBytes = function(r,g,b,a) { - if(a == null) { - a = 255; - } - return kha__$Color_Color_$Impl_$._new(a << 24 | r << 16 | g << 8 | b); -}; -kha__$Color_Color_$Impl_$.fromFloats = function(r,g,b,a) { - if(a == null) { - a = 1; - } - return kha__$Color_Color_$Impl_$._new((a * 255 | 0) << 24 | (r * 255 | 0) << 16 | (g * 255 | 0) << 8 | (b * 255 | 0)); -}; -kha__$Color_Color_$Impl_$.fromString = function(value) { - if((value.length == 7 || value.length == 9) && value.charCodeAt(0) == 35) { - var colorValue = Std.parseInt("0x" + HxOverrides.substr(value,1,null)); - if(value.length == 7) { - colorValue += -16777216; - } - return kha__$Color_Color_$Impl_$._new(colorValue); - } else { - throw new js__$Boot_HaxeError("Invalid Color string: '" + value + "'"); - } -}; -kha__$Color_Color_$Impl_$._new = function(value) { - var this1 = value; - return this1; -}; -kha__$Color_Color_$Impl_$.get_value = function(this1) { - return this1; -}; -kha__$Color_Color_$Impl_$.set_value = function(this1,value) { - this1 = value; - return this1; -}; -kha__$Color_Color_$Impl_$.get_Rb = function(this1) { - return (this1 & 16711680) >>> 16; -}; -kha__$Color_Color_$Impl_$.get_Gb = function(this1) { - return (this1 & 65280) >>> 8; -}; -kha__$Color_Color_$Impl_$.get_Bb = function(this1) { - return this1 & 255; -}; -kha__$Color_Color_$Impl_$.get_Ab = function(this1) { - return this1 >>> 24; -}; -kha__$Color_Color_$Impl_$.set_Rb = function(this1,i) { - this1 = this1 >>> 24 << 24 | i << 16 | (this1 & 65280) >>> 8 << 8 | this1 & 255; - return i; -}; -kha__$Color_Color_$Impl_$.set_Gb = function(this1,i) { - this1 = this1 >>> 24 << 24 | (this1 & 16711680) >>> 16 << 16 | i << 8 | this1 & 255; - return i; -}; -kha__$Color_Color_$Impl_$.set_Bb = function(this1,i) { - this1 = this1 >>> 24 << 24 | (this1 & 16711680) >>> 16 << 16 | (this1 & 65280) >>> 8 << 8 | i; - return i; -}; -kha__$Color_Color_$Impl_$.set_Ab = function(this1,i) { - this1 = i << 24 | (this1 & 16711680) >>> 16 << 16 | (this1 & 65280) >>> 8 << 8 | this1 & 255; - return i; -}; -kha__$Color_Color_$Impl_$.get_R = function(this1) { - return ((this1 & 16711680) >>> 16) * 0.00392156862745098; -}; -kha__$Color_Color_$Impl_$.get_G = function(this1) { - return ((this1 & 65280) >>> 8) * 0.00392156862745098; -}; -kha__$Color_Color_$Impl_$.get_B = function(this1) { - return (this1 & 255) * 0.00392156862745098; -}; -kha__$Color_Color_$Impl_$.get_A = function(this1) { - return (this1 >>> 24) * 0.00392156862745098; -}; -kha__$Color_Color_$Impl_$.set_R = function(this1,f) { - this1 = ((this1 >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (f * 255 | 0) << 16 | (((this1 & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | ((this1 & 255) * 0.00392156862745098 * 255 | 0); - return f; -}; -kha__$Color_Color_$Impl_$.set_G = function(this1,f) { - this1 = ((this1 >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (((this1 & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (f * 255 | 0) << 8 | ((this1 & 255) * 0.00392156862745098 * 255 | 0); - return f; -}; -kha__$Color_Color_$Impl_$.set_B = function(this1,f) { - this1 = ((this1 >>> 24) * 0.00392156862745098 * 255 | 0) << 24 | (((this1 & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (((this1 & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | (f * 255 | 0); - return f; -}; -kha__$Color_Color_$Impl_$.set_A = function(this1,f) { - this1 = (f * 255 | 0) << 24 | (((this1 & 16711680) >>> 16) * 0.00392156862745098 * 255 | 0) << 16 | (((this1 & 65280) >>> 8) * 0.00392156862745098 * 255 | 0) << 8 | ((this1 & 255) * 0.00392156862745098 * 255 | 0); - return f; -}; -var kha_CompilerDefines = function() { }; -$hxClasses["kha.CompilerDefines"] = kha_CompilerDefines; -kha_CompilerDefines.__name__ = true; -var kha_EnvironmentVariables = function() { -}; -$hxClasses["kha.EnvironmentVariables"] = kha_EnvironmentVariables; -kha_EnvironmentVariables.__name__ = true; -kha_EnvironmentVariables.prototype = { - getVariable: function(name) { - return ""; - } - ,__class__: kha_EnvironmentVariables -}; -var kha_Font = function() { }; -$hxClasses["kha.Font"] = kha_Font; -kha_Font.__name__ = true; -kha_Font.__interfaces__ = [kha_Resource]; -kha_Font.prototype = { - height: null - ,width: null - ,baseline: null - ,__class__: kha_Font -}; -var kha_FontStyle = function(bold,italic,underlined) { - this.bold = bold; - this.italic = italic; - this.underlined = underlined; -}; -$hxClasses["kha.FontStyle"] = kha_FontStyle; -kha_FontStyle.__name__ = true; -kha_FontStyle.prototype = { - bold: null - ,italic: null - ,underlined: null - ,getBold: function() { - return this.bold; - } - ,getItalic: function() { - return this.italic; - } - ,getUnderlined: function() { - return this.underlined; - } - ,__class__: kha_FontStyle -}; -var kha_Framebuffer = function(windowId,g1,g2,g4) { - this.windowId = windowId; - this.graphics1 = g1; - this.graphics2 = g2; - this.graphics4 = g4; -}; -$hxClasses["kha.Framebuffer"] = kha_Framebuffer; -kha_Framebuffer.__name__ = true; -kha_Framebuffer.__interfaces__ = [kha_Canvas]; -kha_Framebuffer.prototype = { - windowId: null - ,graphics1: null - ,graphics2: null - ,graphics4: null - ,init: function(g1,g2,g4) { - this.graphics1 = g1; - this.graphics2 = g2; - this.graphics4 = g4; - } - ,g1: null - ,get_g1: function() { - return this.graphics1; - } - ,g2: null - ,get_g2: function() { - return this.graphics2; - } - ,g4: null - ,get_g4: function() { - return this.graphics4; - } - ,width: null - ,get_width: function() { - return kha_System.windowWidth(this.windowId); - } - ,height: null - ,get_height: function() { - return kha_System.windowHeight(this.windowId); - } - ,__class__: kha_Framebuffer -}; -var kha_Key = $hxClasses["kha.Key"] = { __ename__ : true, __constructs__ : ["BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","CHAR","ESC","DEL","UP","DOWN","LEFT","RIGHT","BACK"] }; -kha_Key.BACKSPACE = ["BACKSPACE",0]; -kha_Key.BACKSPACE.toString = $estr; -kha_Key.BACKSPACE.__enum__ = kha_Key; -kha_Key.TAB = ["TAB",1]; -kha_Key.TAB.toString = $estr; -kha_Key.TAB.__enum__ = kha_Key; -kha_Key.ENTER = ["ENTER",2]; -kha_Key.ENTER.toString = $estr; -kha_Key.ENTER.__enum__ = kha_Key; -kha_Key.SHIFT = ["SHIFT",3]; -kha_Key.SHIFT.toString = $estr; -kha_Key.SHIFT.__enum__ = kha_Key; -kha_Key.CTRL = ["CTRL",4]; -kha_Key.CTRL.toString = $estr; -kha_Key.CTRL.__enum__ = kha_Key; -kha_Key.ALT = ["ALT",5]; -kha_Key.ALT.toString = $estr; -kha_Key.ALT.__enum__ = kha_Key; -kha_Key.CHAR = ["CHAR",6]; -kha_Key.CHAR.toString = $estr; -kha_Key.CHAR.__enum__ = kha_Key; -kha_Key.ESC = ["ESC",7]; -kha_Key.ESC.toString = $estr; -kha_Key.ESC.__enum__ = kha_Key; -kha_Key.DEL = ["DEL",8]; -kha_Key.DEL.toString = $estr; -kha_Key.DEL.__enum__ = kha_Key; -kha_Key.UP = ["UP",9]; -kha_Key.UP.toString = $estr; -kha_Key.UP.__enum__ = kha_Key; -kha_Key.DOWN = ["DOWN",10]; -kha_Key.DOWN.toString = $estr; -kha_Key.DOWN.__enum__ = kha_Key; -kha_Key.LEFT = ["LEFT",11]; -kha_Key.LEFT.toString = $estr; -kha_Key.LEFT.__enum__ = kha_Key; -kha_Key.RIGHT = ["RIGHT",12]; -kha_Key.RIGHT.toString = $estr; -kha_Key.RIGHT.__enum__ = kha_Key; -kha_Key.BACK = ["BACK",13]; -kha_Key.BACK.toString = $estr; -kha_Key.BACK.__enum__ = kha_Key; -var kha_AlignedQuad = function() { -}; -$hxClasses["kha.AlignedQuad"] = kha_AlignedQuad; -kha_AlignedQuad.__name__ = true; -kha_AlignedQuad.prototype = { - x0: null - ,y0: null - ,s0: null - ,t0: null - ,x1: null - ,y1: null - ,s1: null - ,t1: null - ,xadvance: null - ,__class__: kha_AlignedQuad -}; -var kha_KravurImage = function(size,ascent,descent,lineGap,width,height,chars,pixels) { - this.mySize = size; - this.width = width; - this.height = height; - this.chars = chars; - this.baseline = ascent; - var _g = 0; - while(_g < chars.length) { - var $char = chars[_g]; - ++_g; - $char.yoff += this.baseline; - } - this.texture = kha_Image.create(width,height,kha_graphics4_TextureFormat.L8); - var bytes = this.texture.lock(); - var pos = 0; - var _g1 = 0; - var _g2 = height; - while(_g1 < _g2) { - var y = _g1++; - var _g3 = 0; - var _g21 = width; - while(_g3 < _g21) { - var x = _g3++; - var v = pixels.readU8(pos); - bytes.b[pos] = v & 255; - ++pos; - } - } - this.texture.unlock(); -}; -$hxClasses["kha.KravurImage"] = kha_KravurImage; -kha_KravurImage.__name__ = true; -kha_KravurImage.prototype = { - mySize: null - ,chars: null - ,texture: null - ,width: null - ,height: null - ,baseline: null - ,getTexture: function() { - return this.texture; - } - ,getBakedQuad: function(char_index,xpos,ypos) { - if(char_index >= this.chars.length) { - return null; - } - var ipw = 1.0 / this.width; - var iph = 1.0 / this.height; - var b = this.chars[char_index]; - if(b == null) { - return null; - } - var round_x = Math.round(xpos + b.xoff); - var round_y = Math.round(ypos + b.yoff); - var q = new kha_AlignedQuad(); - q.x0 = round_x; - q.y0 = round_y; - q.x1 = round_x + b.x1 - b.x0; - q.y1 = round_y + b.y1 - b.y0; - q.s0 = b.x0 * ipw; - q.t0 = b.y0 * iph; - q.s1 = b.x1 * ipw; - q.t1 = b.y1 * iph; - q.xadvance = b.xadvance; - return q; - } - ,getCharWidth: function(charIndex) { - if(charIndex < 32) { - return 0; - } - if(charIndex - 32 >= this.chars.length) { - return 0; - } - return this.chars[charIndex - 32].xadvance; - } - ,getHeight: function() { - return this.mySize; - } - ,stringWidth: function(string) { - var str = new String(string); - var width = 0; - var _g1 = 0; - var _g = str.length; - while(_g1 < _g) { - var c = _g1++; - width += this.getCharWidth(HxOverrides.cca(str,c)); - } - return width; - } - ,getBaselinePosition: function() { - return this.baseline; - } - ,__class__: kha_KravurImage -}; -var kha_Kravur = function(blob) { - this.images = new haxe_ds_IntMap(); - this.blob = blob; -}; -$hxClasses["kha.Kravur"] = kha_Kravur; -kha_Kravur.__name__ = true; -kha_Kravur.__interfaces__ = [kha_Font]; -kha_Kravur.prototype = { - blob: null - ,images: null - ,_get: function(fontSize,glyphs) { - if(!this.images.h.hasOwnProperty(fontSize)) { - if(glyphs == null) { - glyphs = []; - var _g = 32; - while(_g < 256) { - var i = _g++; - glyphs.push(i); - } - } - var width = 64; - var height = 32; - var length = glyphs.length; - var this1 = new Array(length); - var baked = this1; - var _g1 = 0; - var _g2 = baked.length; - while(_g1 < _g2) { - var i1 = _g1++; - baked[i1] = new kha_graphics2_truetype_Stbtt_$bakedchar(); - } - var pixels = null; - var status = -1; - while(status < 0) { - if(height < width) { - height *= 2; - } else { - width *= 2; - } - pixels = kha_internal_BytesBlob.alloc(width * height); - status = kha_graphics2_truetype_StbTruetype.stbtt_BakeFontBitmap(this.blob,0,fontSize,pixels,width,height,glyphs,baked); - } - var info = new kha_graphics2_truetype_Stbtt_$fontinfo(); - kha_graphics2_truetype_StbTruetype.stbtt_InitFont(info,this.blob,0); - var metrics = kha_graphics2_truetype_StbTruetype.stbtt_GetFontVMetrics(info); - var scale = kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight(info,fontSize); - var ascent = Math.round(metrics.ascent * scale); - var descent = Math.round(metrics.descent * scale); - var lineGap = Math.round(metrics.lineGap * scale); - var image = new kha_KravurImage(fontSize | 0,ascent,descent,lineGap,width,height,baked,pixels); - this.images.h[fontSize] = image; - return image; - } - return this.images.h[fontSize]; - } - ,height: function(fontSize) { - return this._get(fontSize).getHeight(); - } - ,width: function(fontSize,str) { - return this._get(fontSize).stringWidth(str); - } - ,baseline: function(fontSize) { - return this._get(fontSize).getBaselinePosition(); - } - ,unload: function() { - this.blob = null; - this.images = null; - } - ,__class__: kha_Kravur -}; -var kha_LoaderImpl = function() { }; -$hxClasses["kha.LoaderImpl"] = kha_LoaderImpl; -kha_LoaderImpl.__name__ = true; -kha_LoaderImpl.getImageFormats = function() { - return ["png","jpg","hdr"]; -}; -kha_LoaderImpl.loadImageFromDescription = function(desc,done) { - var readable = Object.prototype.hasOwnProperty.call(desc,"readable") && desc.readable; - if(StringTools.endsWith(desc.files[0],".hdr")) { - kha_LoaderImpl.loadBlobFromDescription(desc,function(blob) { - var hdrImage = kha_internal_HdrFormat.parse(blob.toBytes()); - var tmp = kha_Image.fromBytes(haxe_io_Bytes.ofData(hdrImage.data.buffer),hdrImage.width,hdrImage.height,kha_graphics4_TextureFormat.RGBA128,readable ? kha_graphics4_Usage.DynamicUsage : kha_graphics4_Usage.StaticUsage); - done(tmp); - }); - } else { - var img = window.document.createElement("img"); - img.onload = function(event) { - var tmp1 = kha_Image.fromImage(img,readable); - done(tmp1); - }; - img.src = desc.files[0]; - img.crossOrigin = ""; - } -}; -kha_LoaderImpl.getSoundFormats = function() { - var element = window.document.createElement("audio"); - var formats = []; - if(element.canPlayType("audio/mp4") != "") { - formats.push("mp4"); - } - if(kha_SystemImpl._hasWebAudio || element.canPlayType("audio/ogg") != "") { - formats.push("ogg"); - } - return formats; -}; -kha_LoaderImpl.loadSoundFromDescription = function(desc,done) { - if(kha_SystemImpl._hasWebAudio) { - var element = window.document.createElement("audio"); - if(element.canPlayType("audio/mp4") != "") { - var _g1 = 0; - var _g = desc.files.length; - while(_g1 < _g) { - var i = _g1++; - var file = desc.files[i]; - if(StringTools.endsWith(file,".mp4")) { - new kha_js_WebAudioSound(file,done); - return; - } - } - } - var _g11 = 0; - var _g2 = desc.files.length; - while(_g11 < _g2) { - var i1 = _g11++; - var file1 = desc.files[i1]; - if(StringTools.endsWith(file1,".ogg")) { - new kha_js_WebAudioSound(file1,done); - return; - } - } - } else if(kha_SystemImpl.mobile) { - var element1 = window.document.createElement("audio"); - if(element1.canPlayType("audio/mp4") != "") { - var _g12 = 0; - var _g3 = desc.files.length; - while(_g12 < _g3) { - var i2 = _g12++; - var file2 = desc.files[i2]; - if(StringTools.endsWith(file2,".mp4")) { - new kha_js_MobileWebAudioSound(file2,done); - return; - } - } - } - var _g13 = 0; - var _g4 = desc.files.length; - while(_g13 < _g4) { - var i3 = _g13++; - var file3 = desc.files[i3]; - if(StringTools.endsWith(file3,".ogg")) { - new kha_js_MobileWebAudioSound(file3,done); - return; - } - } - } else { - new kha_js_Sound(desc.files,done); - } -}; -kha_LoaderImpl.getVideoFormats = function() { - return ["mp4","webm"]; -}; -kha_LoaderImpl.loadVideoFromDescription = function(desc,done) { - var video = new kha_js_Video(desc.files,done); -}; -kha_LoaderImpl.loadBlobFromDescription = function(desc,done) { - var request = new XMLHttpRequest(); - request.open("GET",desc.files[0],true); - request.responseType = "arraybuffer"; - request.onreadystatechange = function() { - if(request.readyState != 4) { - return; - } - if(request.status >= 200 && request.status < 400 || request.status == 0 && request.statusText == "") { - var bytes = null; - var arrayBuffer = request.response; - if(arrayBuffer != null) { - var byteArray = new Uint8Array(arrayBuffer); - bytes = haxe_io_Bytes.ofData(byteArray); - } else if(request.responseBody != null) { - var data = VBArray(request.responseBody).toArray(); - bytes = new haxe_io_Bytes(new ArrayBuffer(data.length)); - var _g1 = 0; - var _g = data.length; - while(_g1 < _g) { - var i = _g1++; - bytes.b[i] = data[i] & 255; - } - } else { - haxe_Log.trace("Error loading " + desc.files[0],{ fileName : "LoaderImpl.hx", lineNumber : 144, className : "kha.LoaderImpl", methodName : "loadBlobFromDescription"}); - window.console.log("loadBlob failed"); - } - done(new kha_internal_BytesBlob(bytes)); - } else { - haxe_Log.trace("Error loading " + desc.files[0],{ fileName : "LoaderImpl.hx", lineNumber : 150, className : "kha.LoaderImpl", methodName : "loadBlobFromDescription"}); - window.console.log("loadBlob failed"); - } - }; - request.send(null); -}; -kha_LoaderImpl.loadFontFromDescription = function(desc,done) { - kha_LoaderImpl.loadBlobFromDescription(desc,function(blob) { - if(kha_SystemImpl.gl == null) { - done(new kha_js_Font(new kha_Kravur(blob))); - } else { - done(new kha_Kravur(blob)); - } - }); -}; -var kha_Rotation = function(center,angle) { - this.center = center; - this.angle = angle; -}; -$hxClasses["kha.Rotation"] = kha_Rotation; -kha_Rotation.__name__ = true; -kha_Rotation.prototype = { - center: null - ,angle: null - ,__class__: kha_Rotation -}; -var kha_TimeTask = function() { -}; -$hxClasses["kha.TimeTask"] = kha_TimeTask; -kha_TimeTask.__name__ = true; -kha_TimeTask.prototype = { - task: null - ,start: null - ,period: null - ,duration: null - ,next: null - ,id: null - ,groupId: null - ,active: null - ,paused: null - ,__class__: kha_TimeTask -}; -var kha_FrameTask = function(task,priority,id) { - this.task = task; - this.priority = priority; - this.id = id; - this.active = true; - this.paused = false; -}; -$hxClasses["kha.FrameTask"] = kha_FrameTask; -kha_FrameTask.__name__ = true; -kha_FrameTask.prototype = { - task: null - ,priority: null - ,id: null - ,active: null - ,paused: null - ,__class__: kha_FrameTask -}; -var kha_Scheduler = function() { }; -$hxClasses["kha.Scheduler"] = kha_Scheduler; -kha_Scheduler.__name__ = true; -kha_Scheduler.init = function() { - kha_Scheduler.deltas = []; - var _g1 = 0; - var _g = kha_Scheduler.DIF_COUNT; - while(_g1 < _g) { - var i = _g1++; - kha_Scheduler.deltas[i] = 0; - } - kha_Scheduler.stopped = true; - kha_Scheduler.frame_tasks_sorted = true; - kha_Scheduler.current = kha_Scheduler.realTime(); - kha_Scheduler.lastTime = kha_Scheduler.realTime(); - kha_Scheduler.currentFrameTaskId = 0; - kha_Scheduler.currentTimeTaskId = 0; - kha_Scheduler.currentGroupId = 0; - kha_Scheduler.timeTasks = []; - kha_Scheduler.pausedTimeTasks = []; - kha_Scheduler.outdatedTimeTasks = []; - kha_Scheduler.timeTasksScratchpad = []; - kha_Scheduler.frameTasks = []; - kha_Scheduler.toDeleteFrame = []; -}; -kha_Scheduler.start = function(restartTimers) { - if(restartTimers == null) { - restartTimers = false; - } - kha_Scheduler.vsync = kha_System.get_vsync(); - var hz = kha_System.get_refreshRate(); - if(hz >= 57 && hz <= 63) { - hz = 60; - } - kha_Scheduler.onedifhz = 1.0 / hz; - kha_Scheduler.stopped = false; - kha_Scheduler.resetTime(); - kha_Scheduler.lastTime = kha_Scheduler.realTime() - kha_Scheduler.startTime; - var _g1 = 0; - var _g = kha_Scheduler.DIF_COUNT; - while(_g1 < _g) { - var i = _g1++; - kha_Scheduler.deltas[i] = 0; - } - if(restartTimers) { - var _g2 = 0; - var _g11 = kha_Scheduler.timeTasks; - while(_g2 < _g11.length) { - var timeTask = _g11[_g2]; - ++_g2; - timeTask.paused = false; - } - var _g3 = 0; - var _g12 = kha_Scheduler.frameTasks; - while(_g3 < _g12.length) { - var frameTask = _g12[_g3]; - ++_g3; - frameTask.paused = false; - } - } -}; -kha_Scheduler.stop = function() { - kha_Scheduler.stopped = true; -}; -kha_Scheduler.isStopped = function() { - return kha_Scheduler.stopped; -}; -kha_Scheduler.warpTimeTasks = function(time,tasks) { - var _g = 0; - while(_g < tasks.length) { - var timeTask = tasks[_g]; - ++_g; - if(timeTask.start >= time) { - timeTask.next = timeTask.start; - } else if(timeTask.period > 0) { - var sinceStart = time - timeTask.start; - var times = Math.ceil(sinceStart / timeTask.period); - timeTask.next = timeTask.start + times * timeTask.period; - } - } -}; -kha_Scheduler.back = function(time) { - if(time >= kha_Scheduler.lastTime) { - return; - } - kha_Scheduler.current = time; - kha_Scheduler.lastTime = time; - kha_Scheduler.warpTimeTasks(time,kha_Scheduler.outdatedTimeTasks); - kha_Scheduler.warpTimeTasks(time,kha_Scheduler.timeTasks); - var _g = 0; - var _g1 = kha_Scheduler.outdatedTimeTasks; - while(_g < _g1.length) { - var task = _g1[_g]; - ++_g; - if(task.next >= time) { - kha_Scheduler.timeTasksScratchpad.push(task); - } - } - var _g2 = 0; - var _g11 = kha_Scheduler.timeTasksScratchpad; - while(_g2 < _g11.length) { - var task1 = _g11[_g2]; - ++_g2; - HxOverrides.remove(kha_Scheduler.outdatedTimeTasks,task1); - } - var _g3 = 0; - var _g12 = kha_Scheduler.timeTasksScratchpad; - while(_g3 < _g12.length) { - var task2 = _g12[_g3]; - ++_g3; - kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,task2); - } - while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]); - var _g4 = 0; - var _g13 = kha_Scheduler.outdatedTimeTasks; - while(_g4 < _g13.length) { - var task3 = _g13[_g4]; - ++_g4; - if(task3.next < time - 1.0) { - kha_Scheduler.timeTasksScratchpad.push(task3); - } - } - var _g5 = 0; - var _g14 = kha_Scheduler.timeTasksScratchpad; - while(_g5 < _g14.length) { - var task4 = _g14[_g5]; - ++_g5; - HxOverrides.remove(kha_Scheduler.outdatedTimeTasks,task4); - } - while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]); -}; -kha_Scheduler.executeFrame = function() { - var now = kha_Scheduler.realTime() - kha_Scheduler.startTime; - var delta = now - kha_Scheduler.lastTime; - var frameEnd = kha_Scheduler.current; - if(delta < 0) { - return; - } - if(delta > kha_Scheduler.maxframetime) { - kha_Scheduler.startTime += delta - kha_Scheduler.maxframetime; - delta = kha_Scheduler.maxframetime; - frameEnd += delta; - } else if(kha_Scheduler.vsync) { - var realdif = kha_Scheduler.onedifhz; - while(realdif < delta - kha_Scheduler.onedifhz) realdif += kha_Scheduler.onedifhz; - delta = realdif; - var _g1 = 0; - var _g = kha_Scheduler.DIF_COUNT - 2; - while(_g1 < _g) { - var i = _g1++; - delta += kha_Scheduler.deltas[i]; - kha_Scheduler.deltas[i] = kha_Scheduler.deltas[i + 1]; - } - delta += kha_Scheduler.deltas[kha_Scheduler.DIF_COUNT - 2]; - delta /= kha_Scheduler.DIF_COUNT; - kha_Scheduler.deltas[kha_Scheduler.DIF_COUNT - 2] = realdif; - frameEnd += delta; - } else { - var _g11 = 0; - var _g2 = kha_Scheduler.DIF_COUNT - 1; - while(_g11 < _g2) { - var i1 = _g11++; - kha_Scheduler.deltas[i1] = kha_Scheduler.deltas[i1 + 1]; - } - kha_Scheduler.deltas[kha_Scheduler.DIF_COUNT - 1] = delta; - var next = 0; - var _g12 = 0; - var _g3 = kha_Scheduler.DIF_COUNT; - while(_g12 < _g3) { - var i2 = _g12++; - next += kha_Scheduler.deltas[i2]; - } - next /= kha_Scheduler.DIF_COUNT; - frameEnd += next; - } - kha_Scheduler.lastTime = frameEnd; - if(!kha_Scheduler.stopped) { - kha_Scheduler.current = frameEnd; - } - var _g4 = 0; - var _g13 = kha_Scheduler.pausedTimeTasks; - while(_g4 < _g13.length) { - var pausedTask = _g13[_g4]; - ++_g4; - pausedTask.next += delta; - } - if(kha_Scheduler.stopped) { - var _g5 = 0; - var _g14 = kha_Scheduler.timeTasks; - while(_g5 < _g14.length) { - var timeTask = _g14[_g5]; - ++_g5; - timeTask.next += delta; - } - } - while(kha_Scheduler.timeTasks.length > 0) { - kha_Scheduler.activeTimeTask = kha_Scheduler.timeTasks[0]; - if(kha_Scheduler.activeTimeTask.next <= frameEnd) { - kha_Scheduler.activeTimeTask.next += kha_Scheduler.activeTimeTask.period; - HxOverrides.remove(kha_Scheduler.timeTasks,kha_Scheduler.activeTimeTask); - if(kha_Scheduler.activeTimeTask.active && kha_Scheduler.activeTimeTask.task()) { - if(kha_Scheduler.activeTimeTask.period > 0 && (kha_Scheduler.activeTimeTask.duration == 0 || kha_Scheduler.activeTimeTask.duration >= kha_Scheduler.activeTimeTask.start + kha_Scheduler.activeTimeTask.next)) { - kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,kha_Scheduler.activeTimeTask); - } else { - kha_Scheduler.archiveTimeTask(kha_Scheduler.activeTimeTask,frameEnd); - } - } else { - kha_Scheduler.activeTimeTask.active = false; - kha_Scheduler.archiveTimeTask(kha_Scheduler.activeTimeTask,frameEnd); - } - } else { - break; - } - } - kha_Scheduler.activeTimeTask = null; - kha_Scheduler.sortFrameTasks(); - var _g6 = 0; - var _g15 = kha_Scheduler.frameTasks; - while(_g6 < _g15.length) { - var frameTask = _g15[_g6]; - ++_g6; - if(!kha_Scheduler.stopped && !frameTask.paused && frameTask.active) { - if(!frameTask.task()) { - frameTask.active = false; - } - } - } - var _g7 = 0; - var _g16 = kha_Scheduler.frameTasks; - while(_g7 < _g16.length) { - var frameTask1 = _g16[_g7]; - ++_g7; - if(!frameTask1.active) { - kha_Scheduler.toDeleteFrame.push(frameTask1); - } - } - while(kha_Scheduler.toDeleteFrame.length > 0) HxOverrides.remove(kha_Scheduler.frameTasks,kha_Scheduler.toDeleteFrame.pop()); -}; -kha_Scheduler.archiveTimeTask = function(timeTask,frameEnd) { -}; -kha_Scheduler.time = function() { - return kha_Scheduler.current; -}; -kha_Scheduler.realTime = function() { - return kha_System.get_time(); -}; -kha_Scheduler.resetTime = function() { - var now = kha_System.get_time(); - var dif = now - kha_Scheduler.startTime; - kha_Scheduler.startTime = now; - var _g = 0; - var _g1 = kha_Scheduler.timeTasks; - while(_g < _g1.length) { - var timeTask = _g1[_g]; - ++_g; - timeTask.start -= dif; - timeTask.next -= dif; - } - var _g11 = 0; - var _g2 = kha_Scheduler.DIF_COUNT; - while(_g11 < _g2) { - var i = _g11++; - kha_Scheduler.deltas[i] = 0; - } - kha_Scheduler.current = 0; - kha_Scheduler.lastTime = 0; -}; -kha_Scheduler.addBreakableFrameTask = function(task,priority) { - kha_Scheduler.frameTasks.push(new kha_FrameTask(task,priority,++kha_Scheduler.currentFrameTaskId)); - kha_Scheduler.frame_tasks_sorted = false; - return kha_Scheduler.currentFrameTaskId; -}; -kha_Scheduler.addFrameTask = function(task,priority) { - return kha_Scheduler.addBreakableFrameTask(function() { - task(); - return true; - },priority); -}; -kha_Scheduler.pauseFrameTask = function(id,paused) { - var _g = 0; - var _g1 = kha_Scheduler.frameTasks; - while(_g < _g1.length) { - var frameTask = _g1[_g]; - ++_g; - if(frameTask.id == id) { - frameTask.paused = paused; - break; - } - } -}; -kha_Scheduler.removeFrameTask = function(id) { - var _g = 0; - var _g1 = kha_Scheduler.frameTasks; - while(_g < _g1.length) { - var frameTask = _g1[_g]; - ++_g; - if(frameTask.id == id) { - frameTask.active = false; - break; - } - } -}; -kha_Scheduler.generateGroupId = function() { - return ++kha_Scheduler.currentGroupId; -}; -kha_Scheduler.addBreakableTimeTaskToGroup = function(groupId,task,start,period,duration) { - if(duration == null) { - duration = 0; - } - if(period == null) { - period = 0; - } - var t = new kha_TimeTask(); - t.active = true; - t.task = task; - t.id = ++kha_Scheduler.currentTimeTaskId; - t.groupId = groupId; - t.start = kha_Scheduler.current + start; - t.period = 0; - if(period != 0) { - t.period = period; - } - t.duration = 0; - if(duration != 0) { - t.duration = t.start + duration; - } - t.next = t.start; - kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,t); - return t.id; -}; -kha_Scheduler.addTimeTaskToGroup = function(groupId,task,start,period,duration) { - if(duration == null) { - duration = 0; - } - if(period == null) { - period = 0; - } - return kha_Scheduler.addBreakableTimeTaskToGroup(groupId,function() { - task(); - return true; - },start,period,duration); -}; -kha_Scheduler.addBreakableTimeTask = function(task,start,period,duration) { - if(duration == null) { - duration = 0; - } - if(period == null) { - period = 0; - } - return kha_Scheduler.addBreakableTimeTaskToGroup(0,task,start,period,duration); -}; -kha_Scheduler.addTimeTask = function(task,start,period,duration) { - if(duration == null) { - duration = 0; - } - if(period == null) { - period = 0; - } - return kha_Scheduler.addTimeTaskToGroup(0,task,start,period,duration); -}; -kha_Scheduler.getTimeTask = function(id) { - if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.id == id) { - return kha_Scheduler.activeTimeTask; - } - var _g = 0; - var _g1 = kha_Scheduler.timeTasks; - while(_g < _g1.length) { - var timeTask = _g1[_g]; - ++_g; - if(timeTask.id == id) { - return timeTask; - } - } - var _g2 = 0; - var _g11 = kha_Scheduler.pausedTimeTasks; - while(_g2 < _g11.length) { - var timeTask1 = _g11[_g2]; - ++_g2; - if(timeTask1.id == id) { - return timeTask1; - } - } - return null; -}; -kha_Scheduler.pauseTimeTask = function(id,paused) { - var timeTask = kha_Scheduler.getTimeTask(id); - if(timeTask != null) { - kha_Scheduler.pauseRunningTimeTask(timeTask,paused); - } - if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.id == id) { - kha_Scheduler.activeTimeTask.paused = paused; - } -}; -kha_Scheduler.pauseRunningTimeTask = function(timeTask,paused) { - timeTask.paused = paused; - if(paused) { - HxOverrides.remove(kha_Scheduler.timeTasks,timeTask); - kha_Scheduler.pausedTimeTasks.push(timeTask); - } else { - kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,timeTask); - HxOverrides.remove(kha_Scheduler.pausedTimeTasks,timeTask); - } -}; -kha_Scheduler.pauseTimeTasks = function(groupId,paused) { - var _g = 0; - var _g1 = kha_Scheduler.timeTasks; - while(_g < _g1.length) { - var timeTask = _g1[_g]; - ++_g; - if(timeTask.groupId == groupId) { - kha_Scheduler.pauseRunningTimeTask(timeTask,paused); - } - } - if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.groupId == groupId) { - kha_Scheduler.activeTimeTask.paused = paused; - } -}; -kha_Scheduler.removeTimeTask = function(id) { - var timeTask = kha_Scheduler.getTimeTask(id); - if(timeTask != null) { - timeTask.active = false; - HxOverrides.remove(kha_Scheduler.timeTasks,timeTask); - } -}; -kha_Scheduler.removeTimeTasks = function(groupId) { - var _g = 0; - var _g1 = kha_Scheduler.timeTasks; - while(_g < _g1.length) { - var timeTask = _g1[_g]; - ++_g; - if(timeTask.groupId == groupId) { - timeTask.active = false; - kha_Scheduler.timeTasksScratchpad.push(timeTask); - } - } - var _g2 = 0; - var _g11 = kha_Scheduler.timeTasksScratchpad; - while(_g2 < _g11.length) { - var timeTask1 = _g11[_g2]; - ++_g2; - HxOverrides.remove(kha_Scheduler.timeTasks,timeTask1); - } - while(kha_Scheduler.timeTasksScratchpad.length > 0) HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]); - if(kha_Scheduler.activeTimeTask != null && kha_Scheduler.activeTimeTask.groupId == groupId) { - kha_Scheduler.activeTimeTask.active = false; - } -}; -kha_Scheduler.numTasksInSchedule = function() { - return kha_Scheduler.timeTasks.length + kha_Scheduler.frameTasks.length; -}; -kha_Scheduler.insertSorted = function(list,task) { - var _g1 = 0; - var _g = list.length; - while(_g1 < _g) { - var i = _g1++; - if(list[i].next > task.next) { - list.splice(i,0,task); - return; - } - } - list.push(task); -}; -kha_Scheduler.sortFrameTasks = function() { - if(kha_Scheduler.frame_tasks_sorted) { - return; - } - kha_Scheduler.frameTasks.sort(function(a,b) { - if(a.priority > b.priority) { - return 1; - } else if(a.priority < b.priority) { - return -1; - } else { - return 0; - } - }); - kha_Scheduler.frame_tasks_sorted = true; -}; -var kha_ScreenRotation = $hxClasses["kha.ScreenRotation"] = { __ename__ : true, __constructs__ : ["RotationNone","Rotation90","Rotation180","Rotation270"] }; -kha_ScreenRotation.RotationNone = ["RotationNone",0]; -kha_ScreenRotation.RotationNone.toString = $estr; -kha_ScreenRotation.RotationNone.__enum__ = kha_ScreenRotation; -kha_ScreenRotation.Rotation90 = ["Rotation90",1]; -kha_ScreenRotation.Rotation90.toString = $estr; -kha_ScreenRotation.Rotation90.__enum__ = kha_ScreenRotation; -kha_ScreenRotation.Rotation180 = ["Rotation180",2]; -kha_ScreenRotation.Rotation180.toString = $estr; -kha_ScreenRotation.Rotation180.__enum__ = kha_ScreenRotation; -kha_ScreenRotation.Rotation270 = ["Rotation270",3]; -kha_ScreenRotation.Rotation270.toString = $estr; -kha_ScreenRotation.Rotation270.__enum__ = kha_ScreenRotation; -var kha_Shaders = function() { }; -$hxClasses["kha.Shaders"] = kha_Shaders; -kha_Shaders.__name__ = true; -kha_Shaders.init = function() { - var blobs = []; - var _g = 0; - while(_g < 3) { - var i = _g++; - var data = Reflect.field(kha_Shaders,"painter_colored_fragData" + i); - var bytes = haxe_Unserializer.run(data); - blobs.push(kha_internal_BytesBlob.fromBytes(bytes)); - } - kha_Shaders.painter_colored_frag = new kha_graphics4_FragmentShader(blobs,["painter-colored.frag.essl","painter-colored-relaxed.frag.essl","painter-colored-webgl2.frag.essl"]); - var blobs1 = []; - var _g1 = 0; - while(_g1 < 3) { - var i1 = _g1++; - var data1 = Reflect.field(kha_Shaders,"painter_colored_vertData" + i1); - var bytes1 = haxe_Unserializer.run(data1); - blobs1.push(kha_internal_BytesBlob.fromBytes(bytes1)); - } - kha_Shaders.painter_colored_vert = new kha_graphics4_VertexShader(blobs1,["painter-colored.vert.essl","painter-colored-relaxed.vert.essl","painter-colored-webgl2.vert.essl"]); - var blobs2 = []; - var _g2 = 0; - while(_g2 < 3) { - var i2 = _g2++; - var data2 = Reflect.field(kha_Shaders,"painter_image_fragData" + i2); - var bytes2 = haxe_Unserializer.run(data2); - blobs2.push(kha_internal_BytesBlob.fromBytes(bytes2)); - } - kha_Shaders.painter_image_frag = new kha_graphics4_FragmentShader(blobs2,["painter-image.frag.essl","painter-image-relaxed.frag.essl","painter-image-webgl2.frag.essl"]); - var blobs3 = []; - var _g3 = 0; - while(_g3 < 3) { - var i3 = _g3++; - var data3 = Reflect.field(kha_Shaders,"painter_image_vertData" + i3); - var bytes3 = haxe_Unserializer.run(data3); - blobs3.push(kha_internal_BytesBlob.fromBytes(bytes3)); - } - kha_Shaders.painter_image_vert = new kha_graphics4_VertexShader(blobs3,["painter-image.vert.essl","painter-image-relaxed.vert.essl","painter-image-webgl2.vert.essl"]); - var blobs4 = []; - var _g4 = 0; - while(_g4 < 3) { - var i4 = _g4++; - var data4 = Reflect.field(kha_Shaders,"painter_text_fragData" + i4); - var bytes4 = haxe_Unserializer.run(data4); - blobs4.push(kha_internal_BytesBlob.fromBytes(bytes4)); - } - kha_Shaders.painter_text_frag = new kha_graphics4_FragmentShader(blobs4,["painter-text.frag.essl","painter-text-relaxed.frag.essl","painter-text-webgl2.frag.essl"]); - var blobs5 = []; - var _g5 = 0; - while(_g5 < 3) { - var i5 = _g5++; - var data5 = Reflect.field(kha_Shaders,"painter_text_vertData" + i5); - var bytes5 = haxe_Unserializer.run(data5); - blobs5.push(kha_internal_BytesBlob.fromBytes(bytes5)); - } - kha_Shaders.painter_text_vert = new kha_graphics4_VertexShader(blobs5,["painter-text.vert.essl","painter-text-relaxed.vert.essl","painter-text-webgl2.vert.essl"]); - var blobs6 = []; - var _g6 = 0; - while(_g6 < 3) { - var i6 = _g6++; - var data6 = Reflect.field(kha_Shaders,"painter_video_fragData" + i6); - var bytes6 = haxe_Unserializer.run(data6); - blobs6.push(kha_internal_BytesBlob.fromBytes(bytes6)); - } - kha_Shaders.painter_video_frag = new kha_graphics4_FragmentShader(blobs6,["painter-video.frag.essl","painter-video-relaxed.frag.essl","painter-video-webgl2.frag.essl"]); - var blobs7 = []; - var _g7 = 0; - while(_g7 < 3) { - var i7 = _g7++; - var data7 = Reflect.field(kha_Shaders,"painter_video_vertData" + i7); - var bytes7 = haxe_Unserializer.run(data7); - blobs7.push(kha_internal_BytesBlob.fromBytes(bytes7)); - } - kha_Shaders.painter_video_vert = new kha_graphics4_VertexShader(blobs7,["painter-video.vert.essl","painter-video-relaxed.vert.essl","painter-video-webgl2.vert.essl"]); -}; -var kha_Sound = function() { -}; -$hxClasses["kha.Sound"] = kha_Sound; -kha_Sound.__name__ = true; -kha_Sound.__interfaces__ = [kha_Resource]; -kha_Sound.prototype = { - compressedData: null - ,uncompressedData: null - ,uncompress: function(done) { - var output = new haxe_io_BytesOutput(); - var header = kha_audio2_ogg_vorbis_Reader.readAll(this.compressedData,output,true); - var soundBytes = output.getBytes(); - var count = soundBytes.length / 4 | 0; - if(header.channel == 1) { - var this1 = new Array(count * 2); - this.uncompressedData = this1; - var _g1 = 0; - var _g = count; - while(_g1 < _g) { - var i = _g1++; - this.uncompressedData[i * 2] = soundBytes.getFloat(i * 4); - this.uncompressedData[i * 2 + 1] = soundBytes.getFloat(i * 4); - } - } else { - var this2 = new Array(count); - this.uncompressedData = this2; - var _g11 = 0; - var _g2 = count; - while(_g11 < _g2) { - var i1 = _g11++; - this.uncompressedData[i1] = soundBytes.getFloat(i1 * 4); - } - } - this.compressedData = null; - done(); - } - ,unload: function() { - this.compressedData = null; - this.uncompressedData = null; - } - ,__class__: kha_Sound -}; -var kha_System = function() { }; -$hxClasses["kha.System"] = kha_System; -kha_System.__name__ = true; -kha_System.init = function(options,callback) { - if(options.title == null) { - options.title = "Kha"; - } - if(options.width == null) { - options.width = 800; - } - if(options.height == null) { - options.height = 600; - } - if(options.samplesPerPixel == null) { - options.samplesPerPixel = 1; - } - if(options.vSync == null) { - options.vSync = true; - } - if(options.windowMode == null) { - options.windowMode = kha_WindowMode.Window; - } - kha_System.theTitle = options.title; - kha_SystemImpl.init(options,callback); -}; -kha_System.initEx = function(title,options,windowCallback,callback) { - kha_System.theTitle = title; - kha_SystemImpl.initEx(title,options,windowCallback,callback); -}; -kha_System.get_title = function() { - return kha_System.theTitle; -}; -kha_System.notifyOnRender = function(listener,id) { - if(id == null) { - id = 0; - } - while(id >= kha_System.renderListeners.length) kha_System.renderListeners.push([]); - kha_System.renderListeners[id].push(listener); -}; -kha_System.removeRenderListener = function(listener,id) { - if(id == null) { - id = 0; - } - HxOverrides.remove(kha_System.renderListeners[id],listener); -}; -kha_System.notifyOnApplicationState = function(foregroundListener,resumeListener,pauseListener,backgroundListener,shutdownListener) { - if(foregroundListener != null) { - kha_System.foregroundListeners.push(foregroundListener); - } - if(resumeListener != null) { - kha_System.resumeListeners.push(resumeListener); - } - if(pauseListener != null) { - kha_System.pauseListeners.push(pauseListener); - } - if(backgroundListener != null) { - kha_System.backgroundListeners.push(backgroundListener); - } - if(shutdownListener != null) { - kha_System.shutdownListeners.push(shutdownListener); - } -}; -kha_System.render = function(id,framebuffer) { - if(kha_System.renderListeners.length == 0) { - return; - } - var _g = 0; - var _g1 = kha_System.renderListeners[id]; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(framebuffer); - } -}; -kha_System.foreground = function() { - var _g = 0; - var _g1 = kha_System.foregroundListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(); - } -}; -kha_System.resume = function() { - var _g = 0; - var _g1 = kha_System.resumeListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(); - } -}; -kha_System.pause = function() { - var _g = 0; - var _g1 = kha_System.pauseListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(); - } -}; -kha_System.background = function() { - var _g = 0; - var _g1 = kha_System.backgroundListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(); - } -}; -kha_System.shutdown = function() { - var _g = 0; - var _g1 = kha_System.shutdownListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(); - } -}; -kha_System.get_time = function() { - return kha_SystemImpl.getTime(); -}; -kha_System.windowWidth = function(windowId) { - if(windowId == null) { - windowId = 0; - } - return kha_SystemImpl.windowWidth(windowId); -}; -kha_System.windowHeight = function(windowId) { - if(windowId == null) { - windowId = 0; - } - return kha_SystemImpl.windowHeight(windowId); -}; -kha_System.screenDpi = function() { - return kha_SystemImpl.screenDpi(); -}; -kha_System.get_screenRotation = function() { - return kha_SystemImpl.getScreenRotation(); -}; -kha_System.get_vsync = function() { - return kha_SystemImpl.getVsync(); -}; -kha_System.get_refreshRate = function() { - return kha_SystemImpl.getRefreshRate(); -}; -kha_System.get_systemId = function() { - return kha_SystemImpl.getSystemId(); -}; -kha_System.requestShutdown = function() { - kha_SystemImpl.requestShutdown(); -}; -kha_System.changeResolution = function(width,height) { - kha_SystemImpl.changeResolution(width,height); -}; -kha_System.loadUrl = function(url) { - kha_SystemImpl.loadUrl(url); -}; -var kha_GamepadStates = function() { - this.axes = []; - this.buttons = []; -}; -$hxClasses["kha.GamepadStates"] = kha_GamepadStates; -kha_GamepadStates.__name__ = true; -kha_GamepadStates.prototype = { - axes: null - ,buttons: null - ,__class__: kha_GamepadStates -}; -var kha_SystemImpl = function() { }; -$hxClasses["kha.SystemImpl"] = kha_SystemImpl; -kha_SystemImpl.__name__ = true; -kha_SystemImpl.initPerformanceTimer = function() { - if(window.performance != null && ($_=window.performance,$bind($_,$_.now)) != null) { - kha_SystemImpl.performance = window.performance; - } else { - kha_SystemImpl.performance = window.Date; - } -}; -kha_SystemImpl.errorHandler = function(message,source,lineno,colno,error) { - window.console.error(error.stack); - return true; -}; -kha_SystemImpl.init = function(options,callback) { - kha_SystemImpl.options = options; - kha_SystemImpl.mobile = kha_SystemImpl.isMobile(); - kha_SystemImpl.chrome = kha_SystemImpl.isChrome(); - kha_SystemImpl.init2(); - callback(); -}; -kha_SystemImpl.initEx = function(title,options,windowCallback,callback) { - haxe_Log.trace("initEx is not supported on the html5 target, running init() with first window options",{ fileName : "SystemImpl.hx", lineNumber : 86, className : "kha.SystemImpl", methodName : "initEx"}); - kha_SystemImpl.init({ title : title, width : options[0].width, height : options[0].height},callback); - if(windowCallback != null) { - windowCallback(0); - } -}; -kha_SystemImpl.isMobile = function() { - var agent = window.navigator.userAgent; - if(agent.indexOf("Android") >= 0 || agent.indexOf("webOS") >= 0 || agent.indexOf("iPhone") >= 0 || agent.indexOf("iPad") >= 0 || agent.indexOf("iPod") >= 0 || agent.indexOf("BlackBerry") >= 0 || agent.indexOf("Windows Phone") >= 0) { - return true; - } else { - return false; - } -}; -kha_SystemImpl.isChrome = function() { - var agent = window.navigator.userAgent; - if(agent.indexOf("Chrome") >= 0) { - return true; - } else { - return false; - } -}; -kha_SystemImpl.windowWidth = function(windowId) { - if(windowId == null) { - windowId = 0; - } - if(kha_SystemImpl.khanvas.width == 0 && kha_SystemImpl.options.width != null) { - return kha_SystemImpl.options.width; - } else { - return kha_SystemImpl.khanvas.width; - } -}; -kha_SystemImpl.windowHeight = function(windowId) { - if(windowId == null) { - windowId = 0; - } - if(kha_SystemImpl.khanvas.height == 0 && kha_SystemImpl.options.height != null) { - return kha_SystemImpl.options.height; - } else { - return kha_SystemImpl.khanvas.height; - } -}; -kha_SystemImpl.screenDpi = function() { - var dpiElement = window.document.createElement("div"); - dpiElement.style.position = "absolute"; - dpiElement.style.width = "1in"; - dpiElement.style.height = "1in"; - dpiElement.style.left = "-100%"; - dpiElement.style.top = "-100%"; - window.document.body.appendChild(dpiElement); - var dpi = dpiElement.offsetHeight; - dpiElement.remove(); - return dpi; -}; -kha_SystemImpl.setCanvas = function(canvas) { - kha_SystemImpl.khanvas = canvas; -}; -kha_SystemImpl.getScreenRotation = function() { - return kha_ScreenRotation.RotationNone; -}; -kha_SystemImpl.getTime = function() { - return kha_SystemImpl.performance.now() / 1000; -}; -kha_SystemImpl.getVsync = function() { - return true; -}; -kha_SystemImpl.getRefreshRate = function() { - return 60; -}; -kha_SystemImpl.getSystemId = function() { - return "HTML5"; -}; -kha_SystemImpl.requestShutdown = function() { - window.close(); -}; -kha_SystemImpl.init2 = function(backbufferFormat) { - haxe_Log.trace = js_Boot.__trace; - kha_SystemImpl.keyboard = new kha_input_Keyboard(); - kha_SystemImpl.mouse = new kha_input_MouseImpl(); - kha_SystemImpl.surface = new kha_input_Surface(); - kha_SystemImpl.gamepads = []; - kha_SystemImpl.gamepadStates = []; - var _g = 0; - while(_g < 4) { - var i = _g++; - kha_SystemImpl.gamepads[i] = new kha_input_Gamepad(i); - kha_SystemImpl.gamepadStates[i] = new kha_GamepadStates(); - } - kha_SystemImpl.pressedKeys = []; - var _g1 = 0; - while(_g1 < 256) { - var i1 = _g1++; - kha_SystemImpl.pressedKeys.push(false); - } - var _g2 = 0; - while(_g2 < 256) { - var i2 = _g2++; - kha_SystemImpl.pressedKeys.push(null); - } - kha_CanvasImage.init(); - kha_SystemImpl.initPerformanceTimer(); - kha_Scheduler.init(); - kha_SystemImpl.loadFinished(); - kha_EnvironmentVariables.instance = new kha_js_EnvironmentVariables(); -}; -kha_SystemImpl.getMouse = function(num) { - if(num != 0) { - return null; - } - return kha_SystemImpl.mouse; -}; -kha_SystemImpl.getKeyboard = function(num) { - if(num != 0) { - return null; - } - return kha_SystemImpl.keyboard; -}; -kha_SystemImpl.checkGamepad = function(pad) { - var _g1 = 0; - var _g = pad.axes.length; - while(_g1 < _g) { - var i = _g1++; - if(pad.axes[i] != null) { - if(kha_SystemImpl.gamepadStates[pad.index].axes[i] != pad.axes[i]) { - var axis = pad.axes[i]; - if(i % 2 == 1) { - axis = -axis; - } - kha_SystemImpl.gamepadStates[pad.index].axes[i] = axis; - kha_SystemImpl.gamepads[pad.index].sendAxisEvent(i,axis); - } - } - } - var _g11 = 0; - var _g2 = pad.buttons.length; - while(_g11 < _g2) { - var i1 = _g11++; - if(pad.buttons[i1] != null) { - if(kha_SystemImpl.gamepadStates[pad.index].buttons[i1] != pad.buttons[i1].value) { - kha_SystemImpl.gamepadStates[pad.index].buttons[i1] = pad.buttons[i1].value; - kha_SystemImpl.gamepads[pad.index].sendButtonEvent(i1,pad.buttons[i1].value); - } - } - } - if(pad.axes.length <= 4 && pad.buttons.length > 7) { - kha_SystemImpl.gamepadStates[pad.index].axes[4] = pad.buttons[6].value; - kha_SystemImpl.gamepads[pad.index].sendAxisEvent(4,pad.buttons[6].value); - kha_SystemImpl.gamepadStates[pad.index].axes[5] = pad.buttons[7].value; - kha_SystemImpl.gamepads[pad.index].sendAxisEvent(5,pad.buttons[7].value); - } -}; -kha_SystemImpl.loadFinished = function() { - var canvas = kha_SystemImpl.khanvas; - if(canvas == null) { - canvas = window.document.getElementById(kha_CompilerDefines.canvas_id); - } - canvas.style.cursor = "default"; - var gl = false; - try { - kha_SystemImpl.gl = canvas.getContext("webgl2",{ alpha : false, antialias : kha_SystemImpl.options.samplesPerPixel > 1, stencil : true, preserveDrawingBuffer : true}); - kha_SystemImpl.gl.pixelStorei(37441,1); - kha_SystemImpl.halfFloat = { HALF_FLOAT_OES : 5131}; - kha_SystemImpl.depthTexture = { UNSIGNED_INT_24_8_WEBGL : 34042}; - kha_SystemImpl.drawBuffers = { COLOR_ATTACHMENT0_WEBGL : 36064}; - kha_SystemImpl.elementIndexUint = true; - kha_SystemImpl.gl.getExtension("EXT_color_buffer_float"); - kha_SystemImpl.gl.getExtension("OES_texture_float_linear"); - kha_SystemImpl.gl.getExtension("OES_texture_half_float_linear"); - kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("EXT_texture_filter_anisotropic"); - if(kha_SystemImpl.anisotropicFilter == null) { - kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic"); - } - gl = true; - kha_SystemImpl.gl2 = true; - kha_Shaders.init(); - } catch( e ) { - haxe_Log.trace("Could not initialize WebGL 2, falling back to WebGL.",{ fileName : "SystemImpl.hx", lineNumber : 302, className : "kha.SystemImpl", methodName : "loadFinished"}); - } - if(!kha_SystemImpl.gl2) { - try { - kha_SystemImpl.gl = canvas.getContext("experimental-webgl",{ alpha : false, antialias : kha_SystemImpl.options.samplesPerPixel > 1, stencil : true, preserveDrawingBuffer : true}); - if(kha_SystemImpl.gl != null) { - kha_SystemImpl.gl.pixelStorei(37441,1); - kha_SystemImpl.gl.getExtension("OES_texture_float"); - kha_SystemImpl.gl.getExtension("OES_texture_float_linear"); - kha_SystemImpl.halfFloat = kha_SystemImpl.gl.getExtension("OES_texture_half_float"); - kha_SystemImpl.gl.getExtension("OES_texture_half_float_linear"); - kha_SystemImpl.depthTexture = kha_SystemImpl.gl.getExtension("WEBGL_depth_texture"); - kha_SystemImpl.gl.getExtension("EXT_shader_texture_lod"); - kha_SystemImpl.gl.getExtension("OES_standard_derivatives"); - kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("EXT_texture_filter_anisotropic"); - if(kha_SystemImpl.anisotropicFilter == null) { - kha_SystemImpl.anisotropicFilter = kha_SystemImpl.gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic"); - } - kha_SystemImpl.drawBuffers = kha_SystemImpl.gl.getExtension("WEBGL_draw_buffers"); - kha_SystemImpl.elementIndexUint = kha_SystemImpl.gl.getExtension("OES_element_index_uint"); - gl = true; - kha_Shaders.init(); - } - } catch( e1 ) { - haxe_Log.trace("Could not initialize WebGL, falling back to Canvas.",{ fileName : "SystemImpl.hx", lineNumber : 326, className : "kha.SystemImpl", methodName : "loadFinished"}); - } - } - kha_SystemImpl.setCanvas(canvas); - if(gl) { - var g4 = gl ? new kha_js_graphics4_Graphics() : null; - kha_SystemImpl.frame = new kha_Framebuffer(0,null,null,g4); - kha_SystemImpl.frame.init(new kha_graphics2_Graphics1(kha_SystemImpl.frame),new kha_js_graphics4_Graphics2(kha_SystemImpl.frame),g4); - } else { - var g2 = new kha_js_CanvasGraphics(canvas.getContext("2d")); - kha_SystemImpl.frame = new kha_Framebuffer(0,null,g2,null); - kha_SystemImpl.frame.init(new kha_graphics2_Graphics1(kha_SystemImpl.frame),g2,null); - } - if(!kha_SystemImpl.mobile && kha_audio2_Audio._init()) { - kha_SystemImpl._hasWebAudio = true; - kha_audio2_Audio1._init(); - } else if(kha_SystemImpl.mobile) { - kha_SystemImpl._hasWebAudio = false; - kha_js_MobileWebAudio._init(); - kha_audio2_Audio1 = kha_js_MobileWebAudio; - } else { - kha_SystemImpl._hasWebAudio = false; - kha_js_AudioElementAudio._compile(); - kha_audio2_Audio1 = kha_js_AudioElementAudio; - } - kha_vr_VrInterface.instance = new kha_js_vr_VrInterface(); - kha_Scheduler.start(); - var $window = window; - var requestAnimationFrame = $window.requestAnimationFrame; - if(requestAnimationFrame == null) { - requestAnimationFrame = $window.mozRequestAnimationFrame; - } - if(requestAnimationFrame == null) { - requestAnimationFrame = $window.webkitRequestAnimationFrame; - } - if(requestAnimationFrame == null) { - requestAnimationFrame = $window.msRequestAnimationFrame; - } - var animate = null; - animate = function(timestamp) { - var window1 = window; - if(requestAnimationFrame == null) { - window1.setTimeout(animate,16.6666666666666679); - } else { - requestAnimationFrame(animate); - } - var sysGamepads = kha_SystemImpl.getGamepads(); - if(sysGamepads != null) { - var _g1 = 0; - var _g = sysGamepads.length; - while(_g1 < _g) { - var i = _g1++; - var pad = sysGamepads[i]; - if(pad != null) { - kha_SystemImpl.checkGamepad(pad); - } - } - } - kha_Scheduler.executeFrame(); - if(canvas.getContext) { - var displayWidth = canvas.clientWidth; - var displayHeight = canvas.clientHeight; - if(canvas.width != displayWidth || canvas.height != displayHeight) { - canvas.width = displayWidth; - canvas.height = displayHeight; - } - kha_System.render(0,kha_SystemImpl.frame); - if(kha_SystemImpl.gl != null) { - kha_SystemImpl.gl.clearColor(1,1,1,1); - kha_SystemImpl.gl.colorMask(false,false,false,true); - kha_SystemImpl.gl.clear(16384); - kha_SystemImpl.gl.colorMask(true,true,true,true); - } - } - }; - var animate1 = animate; - if(requestAnimationFrame == null) { - $window.setTimeout(animate1,16.6666666666666679); - } else { - requestAnimationFrame(animate1); - } - if(canvas.getAttribute("tabindex") == null) { - canvas.setAttribute("tabindex","0"); - } - canvas.focus(); - canvas.oncontextmenu = function(event) { - event.stopPropagation(); - event.preventDefault(); - }; - canvas.onmousedown = kha_SystemImpl.mouseDown; - canvas.onmousemove = kha_SystemImpl.mouseMove; - if(kha_SystemImpl.keyboard != null) { - canvas.onkeydown = kha_SystemImpl.keyDown; - canvas.onkeyup = kha_SystemImpl.keyUp; - } - canvas.onblur = kha_SystemImpl.onBlur; - canvas.onfocus = kha_SystemImpl.onFocus; - canvas.onmousewheel = canvas.onwheel = kha_SystemImpl.mouseWheel; - canvas.onmouseleave = kha_SystemImpl.mouseLeave; - canvas.addEventListener("wheel mousewheel",kha_SystemImpl.mouseWheel,false); - canvas.addEventListener("touchstart",kha_SystemImpl.touchDown,false); - canvas.addEventListener("touchend",kha_SystemImpl.touchUp,false); - canvas.addEventListener("touchmove",kha_SystemImpl.touchMove,false); - window.addEventListener("unload",kha_SystemImpl.unload); -}; -kha_SystemImpl.lockMouse = function() { - if(($_=kha_SystemImpl.khanvas,$bind($_,$_.requestPointerLock))) { - kha_SystemImpl.khanvas.requestPointerLock(); - } else if(kha_SystemImpl.khanvas.mozRequestPointerLock) { - kha_SystemImpl.khanvas.mozRequestPointerLock(); - } else if(kha_SystemImpl.khanvas.webkitRequestPointerLock) { - kha_SystemImpl.khanvas.webkitRequestPointerLock(); - } -}; -kha_SystemImpl.unlockMouse = function() { - if(document.exitPointerLock) { - document.exitPointerLock(); - } else if(document.mozExitPointerLock) { - document.mozExitPointerLock(); - } else if(document.webkitExitPointerLock) { - document.webkitExitPointerLock(); - } -}; -kha_SystemImpl.canLockMouse = function() { - return 'pointerLockElement' in document || - 'mozPointerLockElement' in document || - 'webkitPointerLockElement' in document; -}; -kha_SystemImpl.isMouseLocked = function() { - return document.pointerLockElement === kha_Sys.khanvas || - document.mozPointerLockElement === kha_Sys.khanvas || - document.webkitPointerLockElement === kha_Sys.khanvas; -}; -kha_SystemImpl.notifyOfMouseLockChange = function(func,error) { - window.document.addEventListener("pointerlockchange",func,false); - window.document.addEventListener("mozpointerlockchange",func,false); - window.document.addEventListener("webkitpointerlockchange",func,false); - window.document.addEventListener("pointerlockerror",error,false); - window.document.addEventListener("mozpointerlockerror",error,false); - window.document.addEventListener("webkitpointerlockerror",error,false); -}; -kha_SystemImpl.removeFromMouseLockChange = function(func,error) { - window.document.removeEventListener("pointerlockchange",func,false); - window.document.removeEventListener("mozpointerlockchange",func,false); - window.document.removeEventListener("webkitpointerlockchange",func,false); - window.document.removeEventListener("pointerlockerror",error,false); - window.document.removeEventListener("mozpointerlockerror",error,false); - window.document.removeEventListener("webkitpointerlockerror",error,false); -}; -kha_SystemImpl.unload = function(_) { -}; -kha_SystemImpl.setMouseXY = function(event) { - var rect = kha_SystemImpl.khanvas.getBoundingClientRect(); - var borderWidth = kha_SystemImpl.khanvas.clientLeft; - var borderHeight = kha_SystemImpl.khanvas.clientTop; - kha_SystemImpl.mouseX = (event.clientX - rect.left - borderWidth) * kha_SystemImpl.khanvas.width / (rect.width - 2 * borderWidth) | 0; - kha_SystemImpl.mouseY = (event.clientY - rect.top - borderHeight) * kha_SystemImpl.khanvas.height / (rect.height - 2 * borderHeight) | 0; -}; -kha_SystemImpl.unlockSoundOnIOS = function() { - if(!kha_SystemImpl.mobile || kha_SystemImpl.iosSoundEnabled) { - return; - } - var buffer = kha_js_MobileWebAudio._context.createBuffer(1,1,22050); - var source = kha_js_MobileWebAudio._context.createBufferSource(); - source.buffer = buffer; - source.connect(kha_js_MobileWebAudio._context.destination); - if(source.noteOn) { - source.noteOn(0); - } - kha_SystemImpl.iosSoundEnabled = true; -}; -kha_SystemImpl.mouseLeave = function() { - kha_SystemImpl.mouse.sendLeaveEvent(0); -}; -kha_SystemImpl.mouseWheel = function(event) { - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.unlockSoundOnIOS(); - event.preventDefault(); - if(event.deltaMode == 0) { - if(event.deltaY < 0) { - kha_SystemImpl.mouse.sendWheelEvent(0,-1); - } else if(event.deltaY > 0) { - kha_SystemImpl.mouse.sendWheelEvent(0,1); - } - kha_SystemImpl.insideInputEvent = false; - return false; - } - if(event.deltaMode == 1) { - kha_SystemImpl.minimumScroll = Math.min(kha_SystemImpl.minimumScroll,Math.abs(event.deltaY)) | 0; - kha_SystemImpl.mouse.sendWheelEvent(0,event.deltaY / kha_SystemImpl.minimumScroll | 0); - kha_SystemImpl.insideInputEvent = false; - return false; - } - kha_SystemImpl.insideInputEvent = false; - return false; -}; -kha_SystemImpl.mouseDown = function(event) { - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.unlockSoundOnIOS(); - kha_SystemImpl.setMouseXY(event); - if(event.which == 1) { - if(event.ctrlKey) { - kha_SystemImpl.leftMouseCtrlDown = true; - kha_SystemImpl.mouse.sendDownEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - } else { - kha_SystemImpl.leftMouseCtrlDown = false; - kha_SystemImpl.mouse.sendDownEvent(0,0,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - } - if(($_=kha_SystemImpl.khanvas,$bind($_,$_.setCapture)) != null) { - kha_SystemImpl.khanvas.setCapture(); - } - kha_SystemImpl.khanvas.ownerDocument.addEventListener("mouseup",kha_SystemImpl.mouseLeftUp); - } else if(event.which == 2) { - kha_SystemImpl.mouse.sendDownEvent(0,2,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - kha_SystemImpl.khanvas.ownerDocument.addEventListener("mouseup",kha_SystemImpl.mouseMiddleUp); - } else if(event.which == 3) { - kha_SystemImpl.mouse.sendDownEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - kha_SystemImpl.khanvas.ownerDocument.addEventListener("mouseup",kha_SystemImpl.mouseRightUp); - } - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.mouseLeftUp = function(event) { - kha_SystemImpl.unlockSoundOnIOS(); - if(event.which != 1) { - return; - } - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.khanvas.ownerDocument.removeEventListener("mouseup",kha_SystemImpl.mouseLeftUp); - if(($_=kha_SystemImpl.khanvas,$bind($_,$_.releaseCapture)) != null) { - kha_SystemImpl.khanvas.ownerDocument.releaseCapture(); - } - if(kha_SystemImpl.leftMouseCtrlDown) { - kha_SystemImpl.mouse.sendUpEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - } else { - kha_SystemImpl.mouse.sendUpEvent(0,0,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - } - kha_SystemImpl.leftMouseCtrlDown = false; - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.mouseMiddleUp = function(event) { - kha_SystemImpl.unlockSoundOnIOS(); - if(event.which != 2) { - return; - } - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.khanvas.ownerDocument.removeEventListener("mouseup",kha_SystemImpl.mouseMiddleUp); - kha_SystemImpl.mouse.sendUpEvent(0,2,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.mouseRightUp = function(event) { - kha_SystemImpl.unlockSoundOnIOS(); - if(event.which != 3) { - return; - } - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.khanvas.ownerDocument.removeEventListener("mouseup",kha_SystemImpl.mouseRightUp); - kha_SystemImpl.mouse.sendUpEvent(0,1,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY); - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.mouseMove = function(event) { - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.unlockSoundOnIOS(); - var lastMouseX = kha_SystemImpl.mouseX; - var lastMouseY = kha_SystemImpl.mouseY; - kha_SystemImpl.setMouseXY(event); - var movementX = event.movementX; - var movementY = event.movementY; - if(event.movementX == null) { - if(event.mozMovementX != null) { - movementX = event.mozMovementX; - } else if(event.webkitMovementX != null) { - movementX = event.webkitMovementX; - } else { - movementX = kha_SystemImpl.mouseX - lastMouseX; - } - if(event.mozMovementY != null) { - movementY = event.mozMovementY; - } else if(event.webkitMovementY != null) { - movementY = event.webkitMovementY; - } else { - movementY = kha_SystemImpl.mouseY - lastMouseY; - } - } - kha_SystemImpl.mouse.sendMoveEvent(0,kha_SystemImpl.mouseX,kha_SystemImpl.mouseY,movementX,movementY); - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.setTouchXY = function(touch) { - var rect = kha_SystemImpl.khanvas.getBoundingClientRect(); - var borderWidth = kha_SystemImpl.khanvas.clientLeft; - var borderHeight = kha_SystemImpl.khanvas.clientTop; - kha_SystemImpl.touchX = (touch.clientX - rect.left - borderWidth) * kha_SystemImpl.khanvas.width / (rect.width - 2 * borderWidth) | 0; - kha_SystemImpl.touchY = (touch.clientY - rect.top - borderHeight) * kha_SystemImpl.khanvas.height / (rect.height - 2 * borderHeight) | 0; -}; -kha_SystemImpl.touchDown = function(event) { - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.unlockSoundOnIOS(); - event.stopPropagation(); - event.preventDefault(); - var _g = 0; - var _g1 = event.changedTouches; - while(_g < _g1.length) { - var touch = _g1[_g]; - ++_g; - kha_SystemImpl.setTouchXY(touch); - kha_SystemImpl.mouse.sendDownEvent(0,0,kha_SystemImpl.touchX,kha_SystemImpl.touchY); - kha_SystemImpl.surface.sendTouchStartEvent(touch.identifier,kha_SystemImpl.touchX,kha_SystemImpl.touchY); - } - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.touchUp = function(event) { - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.unlockSoundOnIOS(); - var _g = 0; - var _g1 = event.changedTouches; - while(_g < _g1.length) { - var touch = _g1[_g]; - ++_g; - kha_SystemImpl.setTouchXY(touch); - kha_SystemImpl.mouse.sendUpEvent(0,0,kha_SystemImpl.touchX,kha_SystemImpl.touchY); - kha_SystemImpl.surface.sendTouchEndEvent(touch.identifier,kha_SystemImpl.touchX,kha_SystemImpl.touchY); - } - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.touchMove = function(event) { - kha_SystemImpl.insideInputEvent = true; - kha_SystemImpl.unlockSoundOnIOS(); - var index = 0; - var _g = 0; - var _g1 = event.changedTouches; - while(_g < _g1.length) { - var touch = _g1[_g]; - ++_g; - kha_SystemImpl.setTouchXY(touch); - if(index == 0) { - var movementX = kha_SystemImpl.touchX - kha_SystemImpl.lastFirstTouchX; - var movementY = kha_SystemImpl.touchY - kha_SystemImpl.lastFirstTouchY; - kha_SystemImpl.lastFirstTouchX = kha_SystemImpl.touchX; - kha_SystemImpl.lastFirstTouchY = kha_SystemImpl.touchY; - kha_SystemImpl.mouse.sendMoveEvent(0,kha_SystemImpl.touchX,kha_SystemImpl.touchY,movementX,movementY); - } - kha_SystemImpl.surface.sendMoveEvent(touch.identifier,kha_SystemImpl.touchX,kha_SystemImpl.touchY); - ++index; - } - kha_SystemImpl.insideInputEvent = false; -}; -kha_SystemImpl.onBlur = function() { - kha_System.background(); -}; -kha_SystemImpl.onFocus = function() { - kha_System.foreground(); -}; -kha_SystemImpl.keycodeToChar = function(key,keycode,shift) { - if(key != null) { - if(key.length == 1) { - return key; - } - switch(key) { - case "Add": - return "+"; - case "Divide": - return "/"; - case "Multiply": - return "*"; - case "Subtract": - return "-"; - } - } - switch(keycode) { - case 48: - if(shift) { - return "="; - } else { - return "0"; - } - break; - case 49: - if(shift) { - return "!"; - } else { - return "1"; - } - break; - case 50: - if(shift) { - return "\""; - } else { - return "2"; - } - break; - case 51: - if(shift) { - return "§"; - } else { - return "3"; - } - break; - case 52: - if(shift) { - return "$"; - } else { - return "4"; - } - break; - case 53: - if(shift) { - return "%"; - } else { - return "5"; - } - break; - case 54: - if(shift) { - return "&"; - } else { - return "6"; - } - break; - case 55: - if(shift) { - return "/"; - } else { - return "7"; - } - break; - case 56: - if(shift) { - return "("; - } else { - return "8"; - } - break; - case 57: - if(shift) { - return ")"; - } else { - return "9"; - } - break; - case 106: - return "*"; - case 107: - return "+"; - case 109: - return "-"; - case 111: - return "/"; - case 187: - if(shift) { - return "*"; - } else { - return "+"; - } - break; - case 188: - if(shift) { - return ";"; - } else { - return ","; - } - break; - case 189: - if(shift) { - return "_"; - } else { - return "-"; - } - break; - case 190: - if(shift) { - return ":"; - } else { - return "."; - } - break; - case 191: - if(shift) { - return "'"; - } else { - return "#"; - } - break; - case 212: - if(shift) { - return "`"; - } else { - return "´"; - } - break; - case 219: - if(shift) { - return "?"; - } else { - return "ß"; - } - break; - case 226: - if(shift) { - return ">"; - } else { - return "<"; - } - break; - } - if(keycode >= 96 && keycode <= 105) { - return String.fromCharCode(-48 + keycode); - } - if(keycode >= 65 && keycode <= 90) { - if(shift) { - return String.fromCharCode(keycode); - } else { - return String.fromCharCode(keycode - 65 + 97); - } - } - return String.fromCharCode(keycode); -}; -kha_SystemImpl.keyDown = function(event) { - event.stopPropagation(); - if(kha_SystemImpl.pressedKeys[event.keyCode]) { - event.preventDefault(); - return; - } - kha_SystemImpl.pressedKeys[event.keyCode] = true; - var _g = event.keyCode; - switch(_g) { - case 8: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.BACKSPACE,""); - event.preventDefault(); - break; - case 9: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.TAB,""); - event.preventDefault(); - break; - case 13: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.ENTER,""); - event.preventDefault(); - break; - case 16: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.SHIFT,""); - event.preventDefault(); - break; - case 17: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.CTRL,""); - event.preventDefault(); - break; - case 18: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.ALT,""); - event.preventDefault(); - break; - case 27: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.ESC,""); - event.preventDefault(); - break; - case 32: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.CHAR," "); - event.preventDefault(); - break; - case 37: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.LEFT,""); - event.preventDefault(); - break; - case 38: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.UP,""); - event.preventDefault(); - break; - case 39: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.RIGHT,""); - event.preventDefault(); - break; - case 40: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.DOWN,""); - event.preventDefault(); - break; - case 46: - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.DEL,""); - event.preventDefault(); - break; - default: - if(!event.altKey) { - var $char = kha_SystemImpl.keycodeToChar(event.key,event.keyCode,event.shiftKey); - kha_SystemImpl.keyboard.sendDownEvent(kha_Key.CHAR,$char); - } - } -}; -kha_SystemImpl.keyUp = function(event) { - event.preventDefault(); - event.stopPropagation(); - kha_SystemImpl.pressedKeys[event.keyCode] = false; - var _g = event.keyCode; - switch(_g) { - case 8: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.BACKSPACE,""); - break; - case 9: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.TAB,""); - break; - case 13: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.ENTER,""); - break; - case 16: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.SHIFT,""); - break; - case 17: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.CTRL,""); - break; - case 18: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.ALT,""); - break; - case 27: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.ESC,""); - break; - case 32: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.CHAR," "); - break; - case 37: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.LEFT,""); - break; - case 38: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.UP,""); - break; - case 39: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.RIGHT,""); - break; - case 40: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.DOWN,""); - break; - case 46: - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.DEL,""); - break; - default: - if(!event.altKey) { - var $char = kha_SystemImpl.keycodeToChar(event.key,event.keyCode,event.shiftKey); - kha_SystemImpl.keyboard.sendUpEvent(kha_Key.CHAR,$char); - } - } -}; -kha_SystemImpl.canSwitchFullscreen = function() { - return 'fullscreenElement ' in document || - 'mozFullScreenElement' in document || - 'webkitFullscreenElement' in document || - 'msFullscreenElement' in document - ; -}; -kha_SystemImpl.isFullscreen = function() { - return document.fullscreenElement === this.khanvas || - document.mozFullScreenElement === this.khanvas || - document.webkitFullscreenElement === this.khanvas || - document.msFullscreenElement === this.khanvas ; -}; -kha_SystemImpl.requestFullscreen = function() { - if(($_=kha_SystemImpl.khanvas,$bind($_,$_.requestFullscreen))) { - kha_SystemImpl.khanvas.requestFullscreen(); - } else if(kha_SystemImpl.khanvas.msRequestFullscreen) { - kha_SystemImpl.khanvas.msRequestFullscreen(); - } else if(kha_SystemImpl.khanvas.mozRequestFullScreen) { - kha_SystemImpl.khanvas.mozRequestFullScreen(); - } else if(kha_SystemImpl.khanvas.webkitRequestFullscreen) { - kha_SystemImpl.khanvas.webkitRequestFullscreen(); - } -}; -kha_SystemImpl.exitFullscreen = function() { - if(document.exitFullscreen) { - document.exitFullscreen(); - } else if(document.msExitFullscreen) { - document.msExitFullscreen(); - } else if(document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if(document.webkitExitFullscreen) { - document.webkitExitFullscreen(); - } -}; -kha_SystemImpl.notifyOfFullscreenChange = function(func,error) { - window.document.addEventListener("fullscreenchange",func,false); - window.document.addEventListener("mozfullscreenchange",func,false); - window.document.addEventListener("webkitfullscreenchange",func,false); - window.document.addEventListener("MSFullscreenChange",func,false); - window.document.addEventListener("fullscreenerror",error,false); - window.document.addEventListener("mozfullscreenerror",error,false); - window.document.addEventListener("webkitfullscreenerror",error,false); - window.document.addEventListener("MSFullscreenError",error,false); -}; -kha_SystemImpl.removeFromFullscreenChange = function(func,error) { - window.document.removeEventListener("fullscreenchange",func,false); - window.document.removeEventListener("mozfullscreenchange",func,false); - window.document.removeEventListener("webkitfullscreenchange",func,false); - window.document.removeEventListener("MSFullscreenChange",func,false); - window.document.removeEventListener("fullscreenerror",error,false); - window.document.removeEventListener("mozfullscreenerror",error,false); - window.document.removeEventListener("webkitfullscreenerror",error,false); - window.document.removeEventListener("MSFullscreenError",error,false); -}; -kha_SystemImpl.changeResolution = function(width,height) { -}; -kha_SystemImpl.setKeepScreenOn = function(on) { -}; -kha_SystemImpl.loadUrl = function(url) { - window.open(url,"_blank"); -}; -kha_SystemImpl.getGamepadId = function(index) { - var sysGamepads = kha_SystemImpl.getGamepads(); - if(sysGamepads != null && sysGamepads[index]) { - return sysGamepads[index].id; - } - return "unkown"; -}; -kha_SystemImpl.getGamepads = function() { - if(kha_SystemImpl.chrome && kha_vr_VrInterface.instance.IsVrEnabled()) { - return null; - } - if(navigator.getGamepads) { - return window.navigator.getGamepads(); - } else { - return null; - } -}; -var kha_Video = function() { -}; -$hxClasses["kha.Video"] = kha_Video; -kha_Video.__name__ = true; -kha_Video.__interfaces__ = [kha_Resource]; -kha_Video.prototype = { - width: function() { - return 100; - } - ,height: function() { - return 100; - } - ,play: function(loop) { - if(loop == null) { - loop = false; - } - } - ,pause: function() { - } - ,stop: function() { - } - ,getLength: function() { - return 0; - } - ,getCurrentPos: function() { - return 0; - } - ,get_position: function() { - return 0; - } - ,set_position: function(value) { - return 0; - } - ,getVolume: function() { - return 1; - } - ,setVolume: function(volume) { - } - ,isFinished: function() { - return this.getCurrentPos() >= this.getLength(); - } - ,unload: function() { - } - ,__class__: kha_Video -}; -var kha_WebGLImage = function(width,height,format,renderTarget,depthStencilFormat) { - this.pixels = null; - this.depthTexture = null; - this.texture = null; - this.renderBuffer = null; - this.frameBuffer = null; - this.myWidth = width; - this.myHeight = height; - this.format = format; - this.renderTarget = renderTarget; - this.image = null; - this.video = null; - this.depthStencilFormat = depthStencilFormat; - kha_WebGLImage.init(); - if(renderTarget) { - this.createTexture(); - } -}; -$hxClasses["kha.WebGLImage"] = kha_WebGLImage; -kha_WebGLImage.__name__ = true; -kha_WebGLImage.init = function() { - if(kha_WebGLImage.context == null) { - var canvas = window.document.createElement("canvas"); - if(canvas != null) { - kha_WebGLImage.context = canvas.getContext("2d"); - canvas.width = 2048; - canvas.height = 2048; - kha_WebGLImage.context.globalCompositeOperation = "copy"; - } - } -}; -kha_WebGLImage.upperPowerOfTwo = function(v) { - --v; - v |= v >>> 1; - v |= v >>> 2; - v |= v >>> 4; - v |= v >>> 8; - v |= v >>> 16; - return ++v; -}; -kha_WebGLImage.formatByteSize = function(format) { - switch(format[1]) { - case 0: - return 4; - case 1: - return 1; - case 2: - return 16; - case 3: - return 2; - case 4: - return 8; - case 5: - return 4; - case 6: - return 2; - } -}; -kha_WebGLImage.__super__ = kha_Image; -kha_WebGLImage.prototype = $extend(kha_Image.prototype,{ - image: null - ,video: null - ,data: null - ,myWidth: null - ,myHeight: null - ,format: null - ,renderTarget: null - ,frameBuffer: null - ,renderBuffer: null - ,texture: null - ,depthTexture: null - ,graphics1: null - ,graphics2: null - ,graphics4: null - ,depthStencilFormat: null - ,get_g1: function() { - if(this.graphics1 == null) { - this.graphics1 = new kha_graphics2_Graphics1(this); - } - return this.graphics1; - } - ,get_g2: function() { - if(this.graphics2 == null) { - this.graphics2 = new kha_js_graphics4_Graphics2(this); - } - return this.graphics2; - } - ,get_g4: function() { - if(this.graphics4 == null) { - this.graphics4 = new kha_js_graphics4_Graphics(this); - } - return this.graphics4; - } - ,get_width: function() { - return this.myWidth; - } - ,get_height: function() { - return this.myHeight; - } - ,get_realWidth: function() { - return this.myWidth; - } - ,get_realHeight: function() { - return this.myHeight; - } - ,isOpaque: function(x,y) { - if(this.data == null) { - if(kha_WebGLImage.context == null) { - return true; - } else { - this.createImageData(); - } - } - return this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 3] != 0; - } - ,at: function(x,y) { - if(this.data == null) { - if(kha_WebGLImage.context == null) { - return -16777216; - } else { - this.createImageData(); - } - } - var r = this.data.data[y * (this.image.width | 0) * 4 + x * 4]; - var g = this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 1]; - var b = this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 2]; - var a = this.data.data[y * (this.image.width | 0) * 4 + x * 4 + 3]; - return kha__$Color_Color_$Impl_$._new(a << 24 | r << 16 | g << 8 | b); - } - ,createImageData: function() { - if(js_Boot.__instanceof(this.image,Uint8Array)) { - this.data = new ImageData(new Uint8ClampedArray(this.image.buffer),this.get_width(),this.get_height()); - } else { - kha_WebGLImage.context.strokeStyle = "rgba(0,0,0,0)"; - kha_WebGLImage.context.fillStyle = "rgba(0,0,0,0)"; - kha_WebGLImage.context.fillRect(0,0,this.image.width,this.image.height); - kha_WebGLImage.context.drawImage(this.image,0,0,this.image.width,this.image.height,0,0,this.image.width,this.image.height); - this.data = kha_WebGLImage.context.getImageData(0,0,this.image.width,this.image.height); - } - } - ,createTexture: function() { - if(kha_SystemImpl.gl == null) { - return; - } - this.texture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(3553,this.texture); - kha_SystemImpl.gl.texParameteri(3553,10240,9729); - kha_SystemImpl.gl.texParameteri(3553,10241,9729); - kha_SystemImpl.gl.texParameteri(3553,10242,33071); - kha_SystemImpl.gl.texParameteri(3553,10243,33071); - if(this.renderTarget) { - this.frameBuffer = kha_SystemImpl.gl.createFramebuffer(); - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - var _g = this.format; - switch(_g[1]) { - case 0: - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null); - break; - case 2: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.get_realWidth(),this.get_realHeight(),0,6408,5126,null); - break; - case 3: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.get_realWidth(),this.get_realHeight(),0,6402,5123,null); - break; - case 4: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.get_realWidth(),this.get_realHeight(),0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null); - break; - case 5: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.get_realWidth(),this.get_realHeight(),0,6406,5126,null); - break; - case 6: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.get_realWidth(),this.get_realHeight(),0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null); - break; - default: - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null); - } - if(this.format == kha_graphics4_TextureFormat.DEPTH16) { - kha_SystemImpl.gl.texParameteri(3553,10240,9728); - kha_SystemImpl.gl.texParameteri(3553,10241,9728); - kha_SystemImpl.gl.framebufferTexture2D(36160,36096,3553,this.texture,0); - if(navigator.appVersion.indexOf("Win") == -1) { - var colortex = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(3553,colortex); - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_realWidth(),this.get_realHeight(),0,6408,5121,null); - kha_SystemImpl.gl.framebufferTexture2D(36160,36064,3553,colortex,0); - kha_SystemImpl.gl.bindTexture(3553,this.texture); - } - } else { - kha_SystemImpl.gl.framebufferTexture2D(36160,36064,3553,this.texture,0); - } - this.initDepthStencilBuffer(this.depthStencilFormat); - if(kha_SystemImpl.gl.checkFramebufferStatus(36160) != 36053) { - haxe_Log.trace("WebGL error: Framebuffer incomplete",{ fileName : "WebGLImage.hx", lineNumber : 205, className : "kha.WebGLImage", methodName : "createTexture"}); - } - kha_SystemImpl.gl.bindRenderbuffer(36161,null); - kha_SystemImpl.gl.bindFramebuffer(36160,null); - } else if(this.video != null) { - kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video); - } else { - var _g1 = this.format; - switch(_g1[1]) { - case 0: - if(js_Boot.__instanceof(this.image,Uint8Array)) { - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.myWidth,this.myHeight,0,6408,5121,this.image); - } else { - kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.image); - } - break; - case 2: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.myWidth,this.myHeight,0,6408,5126,this.image); - break; - case 4: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.myWidth,this.myHeight,0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.image); - break; - case 5: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.myWidth,this.myHeight,0,6406,5126,this.image); - break; - case 6: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.myWidth,this.myHeight,0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.image); - break; - default: - kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.image); - } - } - kha_SystemImpl.gl.bindTexture(3553,null); - } - ,initDepthStencilBuffer: function(depthStencilFormat) { - switch(depthStencilFormat) { - case 0: - break; - case 1:case 5: - if(kha_SystemImpl.depthTexture == null) { - this.renderBuffer = kha_SystemImpl.gl.createRenderbuffer(); - kha_SystemImpl.gl.bindRenderbuffer(36161,this.renderBuffer); - kha_SystemImpl.gl.renderbufferStorage(36161,33189,this.get_realWidth(),this.get_realHeight()); - kha_SystemImpl.gl.framebufferRenderbuffer(36160,36096,36161,this.renderBuffer); - } else { - this.depthTexture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(3553,this.depthTexture); - if(depthStencilFormat == 1) { - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33190 : 6402,this.get_realWidth(),this.get_realHeight(),0,6402,5125,null); - } else { - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.get_realWidth(),this.get_realHeight(),0,6402,5123,null); - } - kha_SystemImpl.gl.texParameteri(3553,10240,9728); - kha_SystemImpl.gl.texParameteri(3553,10241,9728); - kha_SystemImpl.gl.texParameteri(3553,10242,33071); - kha_SystemImpl.gl.texParameteri(3553,10243,33071); - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - kha_SystemImpl.gl.framebufferTexture2D(36160,36096,3553,this.depthTexture,0); - } - break; - case 2:case 3:case 4: - if(kha_SystemImpl.depthTexture == null) { - this.renderBuffer = kha_SystemImpl.gl.createRenderbuffer(); - kha_SystemImpl.gl.bindRenderbuffer(36161,this.renderBuffer); - kha_SystemImpl.gl.renderbufferStorage(36161,34041,this.get_realWidth(),this.get_realHeight()); - kha_SystemImpl.gl.framebufferRenderbuffer(36160,33306,36161,this.renderBuffer); - } else { - this.depthTexture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(3553,this.depthTexture); - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 35056 : 34041,this.get_realWidth(),this.get_realHeight(),0,34041,kha_SystemImpl.depthTexture.UNSIGNED_INT_24_8_WEBGL,null); - kha_SystemImpl.gl.texParameteri(3553,10240,9728); - kha_SystemImpl.gl.texParameteri(3553,10241,9728); - kha_SystemImpl.gl.texParameteri(3553,10242,33071); - kha_SystemImpl.gl.texParameteri(3553,10243,33071); - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - kha_SystemImpl.gl.framebufferTexture2D(36160,33306,3553,this.depthTexture,0); - } - break; - } - } - ,set: function(stage) { - kha_SystemImpl.gl.activeTexture(33984 + stage); - kha_SystemImpl.gl.bindTexture(3553,this.texture); - if(this.video != null) { - kha_SystemImpl.gl.texImage2D(3553,0,6408,6408,5121,this.video); - } - } - ,setDepth: function(stage) { - kha_SystemImpl.gl.activeTexture(33984 + stage); - kha_SystemImpl.gl.bindTexture(3553,this.depthTexture); - } - ,setDepthStencilFrom: function(image) { - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - kha_SystemImpl.gl.framebufferTexture2D(36160,36096,3553,(js_Boot.__cast(image , kha_WebGLImage)).depthTexture,0); - } - ,bytesToArray: function(bytes) { - var _g = this.format; - switch(_g[1]) { - case 0:case 1: - return new Uint8Array(bytes.b.bufferValue); - case 2:case 4:case 5:case 6: - return new Float32Array(bytes.b.bufferValue); - default: - return new Uint8Array(bytes.b.bufferValue); - } - } - ,bytes: null - ,lock: function(level) { - if(level == null) { - level = 0; - } - this.bytes = new haxe_io_Bytes(new ArrayBuffer(kha_WebGLImage.formatByteSize(this.format) * this.get_width() * this.get_height())); - return this.bytes; - } - ,unlock: function() { - if(kha_SystemImpl.gl != null) { - this.texture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(3553,this.texture); - kha_SystemImpl.gl.texParameteri(3553,10240,9729); - kha_SystemImpl.gl.texParameteri(3553,10241,9729); - kha_SystemImpl.gl.texParameteri(3553,10242,33071); - kha_SystemImpl.gl.texParameteri(3553,10243,33071); - var _g = this.format; - switch(_g[1]) { - case 0: - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,this.bytesToArray(this.bytes)); - break; - case 1: - kha_SystemImpl.gl.texImage2D(3553,0,6409,this.get_width(),this.get_height(),0,6409,5121,this.bytesToArray(this.bytes)); - if(kha_SystemImpl.gl.getError() == 1282) { - var rgbaBytes = new haxe_io_Bytes(new ArrayBuffer(this.get_width() * this.get_height() * 4)); - var _g1 = 0; - var _g2 = this.get_height(); - while(_g1 < _g2) { - var y = _g1++; - var _g3 = 0; - var _g21 = this.get_width(); - while(_g3 < _g21) { - var x = _g3++; - var _this = this.bytes; - var pos = y * this.get_width() + x; - var value = _this.b[pos]; - var pos1 = y * this.get_width() * 4 + x * 4; - rgbaBytes.b[pos1] = value & 255; - var pos2 = y * this.get_width() * 4 + x * 4 + 1; - rgbaBytes.b[pos2] = value & 255; - var pos3 = y * this.get_width() * 4 + x * 4 + 2; - rgbaBytes.b[pos3] = value & 255; - var pos4 = y * this.get_width() * 4 + x * 4 + 3; - rgbaBytes.b[pos4] = 255; - } - } - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,this.bytesToArray(rgbaBytes)); - } - break; - case 2: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.get_width(),this.get_height(),0,6408,5126,this.bytesToArray(this.bytes)); - break; - case 4: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.get_width(),this.get_height(),0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.bytesToArray(this.bytes)); - break; - case 5: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.get_width(),this.get_height(),0,6406,5126,this.bytesToArray(this.bytes)); - break; - case 6: - kha_SystemImpl.gl.texImage2D(3553,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.get_width(),this.get_height(),0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,this.bytesToArray(this.bytes)); - break; - default: - kha_SystemImpl.gl.texImage2D(3553,0,6408,this.get_width(),this.get_height(),0,6408,5121,this.bytesToArray(this.bytes)); - } - kha_SystemImpl.gl.bindTexture(3553,null); - this.bytes = null; - } - } - ,pixels: null - ,getPixels: function() { - if(this.frameBuffer == null) { - return null; - } - if(this.pixels == null) { - this.pixels = new Uint8Array(this.format == kha_graphics4_TextureFormat.RGBA32 ? 4 * this.get_width() * this.get_height() : this.get_width() * this.get_height()); - } - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - kha_SystemImpl.gl.readPixels(0,0,this.myWidth,this.myHeight,6408,5121,this.pixels); - return haxe_io_Bytes.ofData(this.pixels.buffer); - } - ,unload: function() { - if(this.texture != null) { - kha_SystemImpl.gl.deleteTexture(this.texture); - } - if(this.depthTexture != null) { - kha_SystemImpl.gl.deleteTexture(this.depthTexture); - } - if(this.frameBuffer != null) { - kha_SystemImpl.gl.deleteFramebuffer(this.frameBuffer); - } - if(this.renderBuffer != null) { - kha_SystemImpl.gl.deleteRenderbuffer(this.renderBuffer); - } - } - ,generateMipmaps: function(levels) { - kha_SystemImpl.gl.bindTexture(3553,this.texture); - kha_SystemImpl.gl.generateMipmap(3553); - } - ,setMipmaps: function(mipmaps) { - kha_SystemImpl.gl.bindTexture(3553,this.texture); - if(this.format == kha_graphics4_TextureFormat.RGBA128) { - var _g1 = 0; - var _g = mipmaps.length; - while(_g1 < _g) { - var i = _g1++; - kha_SystemImpl.gl.texImage2D(3553,i + 1,kha_SystemImpl.gl2 ? 34836 : 6408,mipmaps[i].get_width(),mipmaps[i].get_height(),0,6408,5126,(js_Boot.__cast(mipmaps[i] , kha_WebGLImage)).image); - } - } else if(this.format == kha_graphics4_TextureFormat.RGBA64) { - var _g11 = 0; - var _g2 = mipmaps.length; - while(_g11 < _g2) { - var i1 = _g11++; - kha_SystemImpl.gl.texImage2D(3553,i1 + 1,kha_SystemImpl.gl2 ? 34842 : 6408,mipmaps[i1].get_width(),mipmaps[i1].get_height(),0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,(js_Boot.__cast(mipmaps[i1] , kha_WebGLImage)).image); - } - } else { - var _g12 = 0; - var _g3 = mipmaps.length; - while(_g12 < _g3) { - var i2 = _g12++; - kha_SystemImpl.gl.texImage2D(3553,i2 + 1,6408,6408,5121,(js_Boot.__cast(mipmaps[i2] , kha_WebGLImage)).image); - } - } - } - ,__class__: kha_WebGLImage -}); -var kha_WindowMode = $hxClasses["kha.WindowMode"] = { __ename__ : true, __constructs__ : ["Window","BorderlessWindow","Fullscreen"] }; -kha_WindowMode.Window = ["Window",0]; -kha_WindowMode.Window.toString = $estr; -kha_WindowMode.Window.__enum__ = kha_WindowMode; -kha_WindowMode.BorderlessWindow = ["BorderlessWindow",1]; -kha_WindowMode.BorderlessWindow.toString = $estr; -kha_WindowMode.BorderlessWindow.__enum__ = kha_WindowMode; -kha_WindowMode.Fullscreen = ["Fullscreen",2]; -kha_WindowMode.Fullscreen.toString = $estr; -kha_WindowMode.Fullscreen.__enum__ = kha_WindowMode; -var kha_Position = $hxClasses["kha.Position"] = { __ename__ : true, __constructs__ : ["Center","Fixed"] }; -kha_Position.Center = ["Center",0]; -kha_Position.Center.toString = $estr; -kha_Position.Center.__enum__ = kha_Position; -kha_Position.Fixed = function(v) { var $x = ["Fixed",1,v]; $x.__enum__ = kha_Position; $x.toString = $estr; return $x; }; -var kha_TargetDisplay = $hxClasses["kha.TargetDisplay"] = { __ename__ : true, __constructs__ : ["Primary","ById"] }; -kha_TargetDisplay.Primary = ["Primary",0]; -kha_TargetDisplay.Primary.toString = $estr; -kha_TargetDisplay.Primary.__enum__ = kha_TargetDisplay; -kha_TargetDisplay.ById = function(id) { var $x = ["ById",1,id]; $x.__enum__ = kha_TargetDisplay; $x.toString = $estr; return $x; }; -var kha_RendererOptions = function(textureFormat,depthStencilFormat,samplesPerPixel) { - this.textureFormat = textureFormat; - this.depthStencilFormat = depthStencilFormat; - this.samplesPerPixel = samplesPerPixel; -}; -$hxClasses["kha.RendererOptions"] = kha_RendererOptions; -kha_RendererOptions.__name__ = true; -kha_RendererOptions.prototype = { - textureFormat: null - ,depthStencilFormat: null - ,samplesPerPixel: null - ,__class__: kha_RendererOptions -}; -var kha_WindowedModeOptions = function(minimizable,maximizable,resizable) { - this.minimizable = minimizable; - this.maximizable = maximizable; - this.resizable = resizable; -}; -$hxClasses["kha.WindowedModeOptions"] = kha_WindowedModeOptions; -kha_WindowedModeOptions.__name__ = true; -kha_WindowedModeOptions.prototype = { - minimizable: null - ,maximizable: null - ,resizable: null - ,__class__: kha_WindowedModeOptions -}; -var kha_WindowOptions = function(width,height,mode,title,x,y,targetDisplay,rendererOptions,windowedModeOptions) { - this.width = width; - this.height = height; - this.mode = mode; - this.title = title; - this.x = x; - this.y = y; - this.targetDisplay = targetDisplay; - this.rendererOptions = rendererOptions; - this.windowedModeOptions = windowedModeOptions; -}; -$hxClasses["kha.WindowOptions"] = kha_WindowOptions; -kha_WindowOptions.__name__ = true; -kha_WindowOptions.prototype = { - width: null - ,height: null - ,mode: null - ,title: null - ,x: null - ,y: null - ,targetDisplay: null - ,rendererOptions: null - ,windowedModeOptions: null - ,__class__: kha_WindowOptions -}; -var kha_arrays__$Float32Array_Float32Array_$Impl_$ = {}; -$hxClasses["kha.arrays._Float32Array.Float32Array_Impl_"] = kha_arrays__$Float32Array_Float32Array_$Impl_$; -kha_arrays__$Float32Array_Float32Array_$Impl_$.__name__ = true; -kha_arrays__$Float32Array_Float32Array_$Impl_$._new = function(elements) { - var this1 = new Float32Array(elements); - return this1; -}; -kha_arrays__$Float32Array_Float32Array_$Impl_$.get_length = function(this1) { - return this1.length; -}; -kha_arrays__$Float32Array_Float32Array_$Impl_$.set = function(this1,index,value) { - return this1[index] = value; -}; -kha_arrays__$Float32Array_Float32Array_$Impl_$.get = function(this1,index) { - return this1[index]; -}; -kha_arrays__$Float32Array_Float32Array_$Impl_$.data = function(this1) { - return this1; -}; -kha_arrays__$Float32Array_Float32Array_$Impl_$.arrayRead = function(this1,index) { - return this1[index]; -}; -kha_arrays__$Float32Array_Float32Array_$Impl_$.arrayWrite = function(this1,index,value) { - return this1[index] = value; -}; -kha_arrays__$Float32Array_Float32Array_$Impl_$.subarray = function(this1,start,end) { - return this1.subarray(start,end); -}; -var kha_arrays__$Uint32Array_Uint32Array_$Impl_$ = {}; -$hxClasses["kha.arrays._Uint32Array.Uint32Array_Impl_"] = kha_arrays__$Uint32Array_Uint32Array_$Impl_$; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.__name__ = true; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$._new = function(elements) { - var this1 = new Uint32Array(elements); - return this1; -}; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.get_length = function(this1) { - return this1.length; -}; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.set = function(this1,index,value) { - return this1[index] = value; -}; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.get = function(this1,index) { - return this1[index]; -}; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.data = function(this1) { - return this1; -}; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.arrayRead = function(this1,index) { - return this1[index]; -}; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.arrayWrite = function(this1,index,value) { - return this1[index] = value; -}; -kha_arrays__$Uint32Array_Uint32Array_$Impl_$.subarray = function(this1,start,end) { - return this1.subarray(start,end); -}; -var kha_audio1_AudioChannel = function() { }; -$hxClasses["kha.audio1.AudioChannel"] = kha_audio1_AudioChannel; -kha_audio1_AudioChannel.__name__ = true; -kha_audio1_AudioChannel.prototype = { - play: null - ,pause: null - ,stop: null - ,length: null - ,get_length: null - ,position: null - ,get_position: null - ,get_volume: null - ,set_volume: null - ,finished: null - ,get_finished: null - ,__class__: kha_audio1_AudioChannel -}; -var kha_audio2_Audio = function() { }; -$hxClasses["kha.audio2.Audio"] = kha_audio2_Audio; -kha_audio2_Audio.__name__ = true; -kha_audio2_Audio.initContext = function() { - try { - kha_audio2_Audio._context = new AudioContext(); - return; - } catch( e ) { - } - try { - this._context = new webkitAudioContext(); - return; - } catch( e1 ) { - } -}; -kha_audio2_Audio._init = function() { - kha_audio2_Audio.initContext(); - if(kha_audio2_Audio._context == null) { - return false; - } - var bufferSize = 2048; - kha_audio2_Audio.buffer = new kha_audio2_Buffer(bufferSize * 4,2,kha_audio2_Audio._context.sampleRate | 0); - kha_audio2_Audio.processingNode = kha_audio2_Audio._context.createScriptProcessor(bufferSize,0,2); - kha_audio2_Audio.processingNode.onaudioprocess = function(e) { - var output1 = e.outputBuffer.getChannelData(0); - var output2 = e.outputBuffer.getChannelData(1); - if(kha_audio2_Audio.audioCallback != null) { - kha_audio2_Audio.audioCallback(e.outputBuffer.length * 2,kha_audio2_Audio.buffer); - var _g1 = 0; - var _g = e.outputBuffer.length; - while(_g1 < _g) { - var i = _g1++; - output1[i] = kha_audio2_Audio.buffer.data[kha_audio2_Audio.buffer.readLocation]; - kha_audio2_Audio.buffer.readLocation += 1; - output2[i] = kha_audio2_Audio.buffer.data[kha_audio2_Audio.buffer.readLocation]; - kha_audio2_Audio.buffer.readLocation += 1; - if(kha_audio2_Audio.buffer.readLocation >= kha_audio2_Audio.buffer.size) { - kha_audio2_Audio.buffer.readLocation = 0; - } - } - } else { - var _g11 = 0; - var _g2 = e.outputBuffer.length; - while(_g11 < _g2) { - var i1 = _g11++; - output1[i1] = 0; - output2[i1] = 0; - } - } - }; - kha_audio2_Audio.processingNode.connect(kha_audio2_Audio._context.destination); - return true; -}; -kha_audio2_Audio.stream = function(sound,loop) { - if(loop == null) { - loop = false; - } - var element = window.document.createElement("audio"); - var blob = new Blob([sound.compressedData.b.bufferValue],{ type : "audio/mp4"}); - element.src = URL.createObjectURL(blob); - element.loop = loop; - var channel = new kha_js_AEAudioChannel(element); - channel.play(); - return channel; -}; -var kha_audio2_Audio1 = function() { }; -$hxClasses["kha.audio2.Audio1"] = kha_audio2_Audio1; -kha_audio2_Audio1.__name__ = true; -kha_audio2_Audio1._init = function() { - var this1 = new Array(16); - kha_audio2_Audio1.soundChannels = this1; - var this2 = new Array(16); - kha_audio2_Audio1.streamChannels = this2; - var this3 = new Array(16); - kha_audio2_Audio1.internalSoundChannels = this3; - var this4 = new Array(16); - kha_audio2_Audio1.internalStreamChannels = this4; - var this5 = new Array(512); - kha_audio2_Audio1.sampleCache1 = this5; - var this6 = new Array(512); - kha_audio2_Audio1.sampleCache2 = this6; - kha_audio2_Audio.audioCallback = kha_audio2_Audio1._mix; -}; -kha_audio2_Audio1.max = function(a,b) { - if(a > b) { - return a; - } else { - return b; - } -}; -kha_audio2_Audio1.min = function(a,b) { - if(a < b) { - return a; - } else { - return b; - } -}; -kha_audio2_Audio1._mix = function(samples,buffer) { - if(kha_audio2_Audio1.sampleCache1.length < samples) { - var this1 = new Array(samples); - kha_audio2_Audio1.sampleCache1 = this1; - var this2 = new Array(samples); - kha_audio2_Audio1.sampleCache2 = this2; - } - var _g1 = 0; - var _g = samples; - while(_g1 < _g) { - var i = _g1++; - kha_audio2_Audio1.sampleCache2[i] = 0; - } - var _g2 = 0; - while(_g2 < 16) { - var i1 = _g2++; - kha_audio2_Audio1.internalSoundChannels[i1] = kha_audio2_Audio1.soundChannels[i1]; - } - var _g3 = 0; - while(_g3 < 16) { - var i2 = _g3++; - kha_audio2_Audio1.internalStreamChannels[i2] = kha_audio2_Audio1.streamChannels[i2]; - } - var _g4 = 0; - var _g11 = kha_audio2_Audio1.internalSoundChannels; - while(_g4 < _g11.length) { - var channel = _g11[_g4]; - ++_g4; - if(channel == null || channel.get_finished()) { - continue; - } - channel.nextSamples(kha_audio2_Audio1.sampleCache1,samples,buffer.samplesPerSecond); - var _g31 = 0; - var _g21 = samples; - while(_g31 < _g21) { - var i3 = _g31++; - var _g41 = i3; - var _g5 = kha_audio2_Audio1.sampleCache2; - var val = kha_audio2_Audio1.sampleCache1[i3] * channel.get_volume(); - _g5[_g41] = _g5[_g41] + val; - } - } - var _g6 = 0; - var _g12 = kha_audio2_Audio1.internalStreamChannels; - while(_g6 < _g12.length) { - var channel1 = _g12[_g6]; - ++_g6; - if(channel1 == null || channel1.get_finished()) { - continue; - } - channel1.nextSamples(kha_audio2_Audio1.sampleCache1,samples,buffer.samplesPerSecond); - var _g32 = 0; - var _g22 = samples; - while(_g32 < _g22) { - var i4 = _g32++; - var _g42 = i4; - var _g51 = kha_audio2_Audio1.sampleCache2; - var val1 = kha_audio2_Audio1.sampleCache1[i4] * channel1.get_volume(); - _g51[_g42] = _g51[_g42] + val1; - } - } - var _g13 = 0; - var _g7 = samples; - while(_g13 < _g7) { - var i5 = _g13++; - var a = kha_audio2_Audio1.sampleCache2[i5]; - var a1 = a < 1.0 ? a : 1.0; - buffer.data[buffer.writeLocation] = a1 > -1.0 ? a1 : -1.0; - buffer.writeLocation += 1; - if(buffer.writeLocation >= buffer.size) { - buffer.writeLocation = 0; - } - } -}; -kha_audio2_Audio1.play = function(sound,loop) { - if(loop == null) { - loop = false; - } - var channel = null; - var _g = 0; - while(_g < 16) { - var i = _g++; - if(kha_audio2_Audio1.soundChannels[i] == null || kha_audio2_Audio1.soundChannels[i].get_finished()) { - channel = new kha_audio2_AudioChannel(loop); - channel.data = sound.uncompressedData; - kha_audio2_Audio1.soundChannels[i] = channel; - break; - } - } - return channel; -}; -kha_audio2_Audio1._playAgain = function(channel) { - var _g = 0; - while(_g < 16) { - var i = _g++; - if(kha_audio2_Audio1.soundChannels[i] == null || kha_audio2_Audio1.soundChannels[i].get_finished() || kha_audio2_Audio1.soundChannels[i] == channel) { - kha_audio2_Audio1.soundChannels[i] = channel; - break; - } - } -}; -kha_audio2_Audio1.stream = function(sound,loop) { - if(loop == null) { - loop = false; - } - var hardwareChannel = kha_audio2_Audio.stream(sound,loop); - if(hardwareChannel != null) { - return hardwareChannel; - } - var channel = null; - var _g = 0; - while(_g < 16) { - var i = _g++; - if(kha_audio2_Audio1.streamChannels[i] == null || kha_audio2_Audio1.streamChannels[i].get_finished()) { - channel = new kha_audio2_StreamChannel(sound.compressedData,loop); - kha_audio2_Audio1.streamChannels[i] = channel; - break; - } - } - return channel; -}; -var kha_audio2_AudioChannel = function(looping) { - this.paused = false; - this.looping = looping; - this.myVolume = 1; - this.myPosition = 0; -}; -$hxClasses["kha.audio2.AudioChannel"] = kha_audio2_AudioChannel; -kha_audio2_AudioChannel.__name__ = true; -kha_audio2_AudioChannel.__interfaces__ = [kha_audio1_AudioChannel]; -kha_audio2_AudioChannel.prototype = { - data: null - ,myVolume: null - ,myPosition: null - ,paused: null - ,looping: null - ,nextSamples: function(samples,length,sampleRate) { - if(this.paused) { - var _g1 = 0; - var _g = length; - while(_g1 < _g) { - var i = _g1++; - samples[i] = 0; - } - return; - } - var _g11 = 0; - var _g2 = length; - while(_g11 < _g2) { - var i1 = _g11++; - if(this.myPosition >= this.data.length && this.looping) { - this.myPosition = 0; - } - samples[i1] = this.myPosition < this.data.length ? this.data[this.myPosition] : 0; - ++this.myPosition; - } - } - ,play: function() { - this.paused = false; - if(this.get_finished()) { - this.myPosition = 0; - kha_audio2_Audio1._playAgain(this); - } - } - ,pause: function() { - this.paused = true; - } - ,stop: function() { - this.myPosition = this.data.length; - } - ,length: null - ,get_length: function() { - return this.data.length / 44100 / 2; - } - ,position: null - ,get_position: function() { - return this.myPosition / 44100 / 2; - } - ,get_volume: function() { - return this.myVolume; - } - ,set_volume: function(value) { - return this.myVolume = value; - } - ,finished: null - ,get_finished: function() { - return this.myPosition >= this.data.length; - } - ,__class__: kha_audio2_AudioChannel -}; -var kha_audio2_Buffer = function(size,channels,samplesPerSecond) { - this.size = size; - var this1 = new Array(size); - this.data = this1; - this.channels = channels; - this.samplesPerSecond = samplesPerSecond; - this.readLocation = 0; - this.writeLocation = 0; -}; -$hxClasses["kha.audio2.Buffer"] = kha_audio2_Buffer; -kha_audio2_Buffer.__name__ = true; -kha_audio2_Buffer.prototype = { - channels: null - ,samplesPerSecond: null - ,data: null - ,size: null - ,readLocation: null - ,writeLocation: null - ,__class__: kha_audio2_Buffer -}; -var kha_audio2_StreamChannel = function(data,loop) { - this.paused = false; - this.atend = false; - this.myVolume = 1; - this.loop = loop; - this.reader = kha_audio2_ogg_vorbis_Reader.openFromBytes(data); -}; -$hxClasses["kha.audio2.StreamChannel"] = kha_audio2_StreamChannel; -kha_audio2_StreamChannel.__name__ = true; -kha_audio2_StreamChannel.__interfaces__ = [kha_audio1_AudioChannel]; -kha_audio2_StreamChannel.prototype = { - reader: null - ,atend: null - ,loop: null - ,myVolume: null - ,paused: null - ,nextSamples: function(samples,length,sampleRate) { - if(this.paused) { - var _g1 = 0; - var _g = length; - while(_g1 < _g) { - var i = _g1++; - samples[i] = 0; - } - return; - } - var count = this.reader.read(samples,length / 2 | 0,2,sampleRate,true) * 2; - if(count < length) { - if(this.loop) { - this.reader.set_currentMillisecond(0); - } else { - this.atend = true; - } - var _g11 = count; - var _g2 = length; - while(_g11 < _g2) { - var i1 = _g11++; - samples[i1] = 0; - } - } - } - ,play: function() { - this.paused = false; - } - ,pause: function() { - this.paused = true; - } - ,stop: function() { - this.atend = true; - } - ,length: null - ,get_length: function() { - return this.reader.get_totalMillisecond() / 1000.0; - } - ,position: null - ,get_position: function() { - return this.reader.get_currentMillisecond() / 1000.0; - } - ,get_volume: function() { - return this.myVolume; - } - ,set_volume: function(value) { - return this.myVolume = value; - } - ,finished: null - ,get_finished: function() { - return this.atend; - } - ,__class__: kha_audio2_StreamChannel -}; -var kha_audio2_ogg_tools_Crc32 = function() { }; -$hxClasses["kha.audio2.ogg.tools.Crc32"] = kha_audio2_ogg_tools_Crc32; -kha_audio2_ogg_tools_Crc32.__name__ = true; -kha_audio2_ogg_tools_Crc32.init = function() { - if(kha_audio2_ogg_tools_Crc32.table != null) { - return; - } - var this1 = new Array(256); - kha_audio2_ogg_tools_Crc32.table = this1; - var _g = 0; - while(_g < 256) { - var i = _g++; - var s = i << 24; - var _g1 = 0; - while(_g1 < 8) { - var j = _g1++; - s = s << 1 ^ (_$UInt_UInt_$Impl_$.gte(s,1 << 31) ? 79764919 : 0); - } - kha_audio2_ogg_tools_Crc32.table[i] = s; - } -}; -kha_audio2_ogg_tools_Crc32.update = function(crc,$byte) { - return crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[$byte ^ crc >>> 24]; -}; -var kha_audio2_ogg_tools_MathTools = function() { }; -$hxClasses["kha.audio2.ogg.tools.MathTools"] = kha_audio2_ogg_tools_MathTools; -kha_audio2_ogg_tools_MathTools.__name__ = true; -kha_audio2_ogg_tools_MathTools.ilog = function(n) { - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - if(n < 16384) { - if(n < 16) { - return log2_4[n]; - } else if(n < 512) { - return 5 + log2_4[n >> 5]; - } else { - return 10 + log2_4[n >> 10]; - } - } else if(n < 16777216) { - if(n < 524288) { - return 15 + log2_4[n >> 15]; - } else { - return 20 + log2_4[n >> 20]; - } - } else if(n < 536870912) { - return 25 + log2_4[n >> 25]; - } else if(n < -2147483648) { - return 30 + log2_4[n >> 30]; - } else { - return 0; - } -}; -var kha_audio2_ogg_tools_Mdct = function() { }; -$hxClasses["kha.audio2.ogg.tools.Mdct"] = kha_audio2_ogg_tools_Mdct; -kha_audio2_ogg_tools_Mdct.__name__ = true; -kha_audio2_ogg_tools_Mdct.inverseTransform = function(buffer,n,a,b,c,bitReverse) { - var n2 = n >> 1; - var n4 = n >> 2; - var n8 = n >> 3; - var this1 = new Array(n2); - var buf2 = this1; - var dOffset = n2 - 2; - var aaOffset = 0; - var eOffset = 0; - var eStopOffset = n2; - while(eOffset != eStopOffset) { - buf2[dOffset + 1] = buffer[eOffset] * a[aaOffset] - buffer[eOffset + 2] * a[aaOffset + 1]; - buf2[dOffset] = buffer[eOffset] * a[aaOffset + 1] + buffer[eOffset + 2] * a[aaOffset]; - dOffset -= 2; - aaOffset += 2; - eOffset += 4; - } - eOffset = n2 - 3; - while(dOffset >= 0) { - buf2[dOffset + 1] = -buffer[eOffset + 2] * a[aaOffset] - -buffer[eOffset] * a[aaOffset + 1]; - buf2[dOffset] = -buffer[eOffset + 2] * a[aaOffset + 1] + -buffer[eOffset] * a[aaOffset]; - dOffset -= 2; - aaOffset += 2; - eOffset -= 4; - } - var u = buffer; - var v = buf2; - var aaOffset1 = n2 - 8; - var eOffset0 = n4; - var eOffset1 = 0; - var dOffset0 = n4; - var dOffset1 = 0; - while(aaOffset1 >= 0) { - var v41_21 = v[eOffset0 + 1] - v[eOffset1 + 1]; - var v40_20 = v[eOffset0] - v[eOffset1]; - u[dOffset0 + 1] = v[eOffset0 + 1] + v[eOffset1 + 1]; - u[dOffset0] = v[eOffset0] + v[eOffset1]; - u[dOffset1 + 1] = v41_21 * a[aaOffset1 + 4] - v40_20 * a[aaOffset1 + 5]; - u[dOffset1] = v40_20 * a[aaOffset1 + 4] + v41_21 * a[aaOffset1 + 5]; - v41_21 = v[eOffset0 + 3] - v[eOffset1 + 3]; - v40_20 = v[eOffset0 + 2] - v[eOffset1 + 2]; - u[dOffset0 + 3] = v[eOffset0 + 3] + v[eOffset1 + 3]; - u[dOffset0 + 2] = v[eOffset0 + 2] + v[eOffset1 + 2]; - u[dOffset1 + 3] = v41_21 * a[aaOffset1] - v40_20 * a[aaOffset1 + 1]; - u[dOffset1 + 2] = v40_20 * a[aaOffset1] + v41_21 * a[aaOffset1 + 1]; - aaOffset1 -= 8; - dOffset0 += 4; - dOffset1 += 4; - eOffset0 += 4; - eOffset1 += 4; - } - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var ld = (n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0) - 1; - var i_off = n2 - 1 - n4 * 0; - var eeOffset0 = i_off; - var eeOffset2 = i_off + -(n >> 3); - var aOffset = 0; - var i = (n >> 4 >> 2) + 1; - while(--i > 0) { - var k00_20 = u[eeOffset0] - u[eeOffset2]; - var k01_21 = u[eeOffset0 + -1] - u[eeOffset2 + -1]; - var _g = eeOffset0; - var _g1 = u; - _g1[_g] = _g1[_g] + u[eeOffset2]; - var _g2 = eeOffset0 + -1; - var _g11 = u; - _g11[_g2] = _g11[_g2] + u[eeOffset2 + -1]; - u[eeOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = u[eeOffset0 + -2] - u[eeOffset2 + -2]; - k01_21 = u[eeOffset0 + -3] - u[eeOffset2 + -3]; - var _g3 = eeOffset0 + -2; - var _g12 = u; - _g12[_g3] = _g12[_g3] + u[eeOffset2 + -2]; - var _g4 = eeOffset0 + -3; - var _g13 = u; - _g13[_g4] = _g13[_g4] + u[eeOffset2 + -3]; - u[eeOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = u[eeOffset0 + -4] - u[eeOffset2 + -4]; - k01_21 = u[eeOffset0 + -5] - u[eeOffset2 + -5]; - var _g5 = eeOffset0 + -4; - var _g14 = u; - _g14[_g5] = _g14[_g5] + u[eeOffset2 + -4]; - var _g6 = eeOffset0 + -5; - var _g15 = u; - _g15[_g6] = _g15[_g6] + u[eeOffset2 + -5]; - u[eeOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = u[eeOffset0 + -6] - u[eeOffset2 + -6]; - k01_21 = u[eeOffset0 + -7] - u[eeOffset2 + -7]; - var _g7 = eeOffset0 + -6; - var _g16 = u; - _g16[_g7] = _g16[_g7] + u[eeOffset2 + -6]; - var _g8 = eeOffset0 + -7; - var _g17 = u; - _g17[_g8] = _g17[_g8] + u[eeOffset2 + -7]; - u[eeOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - eeOffset0 -= 8; - eeOffset2 -= 8; - } - var i_off1 = n2 - 1 - n4; - var eeOffset01 = i_off1; - var eeOffset21 = i_off1 + -(n >> 3); - var aOffset1 = 0; - var i1 = (n >> 4 >> 2) + 1; - while(--i1 > 0) { - var k00_201 = u[eeOffset01] - u[eeOffset21]; - var k01_211 = u[eeOffset01 + -1] - u[eeOffset21 + -1]; - var _g9 = eeOffset01; - var _g18 = u; - _g18[_g9] = _g18[_g9] + u[eeOffset21]; - var _g10 = eeOffset01 + -1; - var _g19 = u; - _g19[_g10] = _g19[_g10] + u[eeOffset21 + -1]; - u[eeOffset21] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -1] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - k00_201 = u[eeOffset01 + -2] - u[eeOffset21 + -2]; - k01_211 = u[eeOffset01 + -3] - u[eeOffset21 + -3]; - var _g20 = eeOffset01 + -2; - var _g110 = u; - _g110[_g20] = _g110[_g20] + u[eeOffset21 + -2]; - var _g21 = eeOffset01 + -3; - var _g111 = u; - _g111[_g21] = _g111[_g21] + u[eeOffset21 + -3]; - u[eeOffset21 + -2] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -3] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - k00_201 = u[eeOffset01 + -4] - u[eeOffset21 + -4]; - k01_211 = u[eeOffset01 + -5] - u[eeOffset21 + -5]; - var _g22 = eeOffset01 + -4; - var _g112 = u; - _g112[_g22] = _g112[_g22] + u[eeOffset21 + -4]; - var _g23 = eeOffset01 + -5; - var _g113 = u; - _g113[_g23] = _g113[_g23] + u[eeOffset21 + -5]; - u[eeOffset21 + -4] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -5] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - k00_201 = u[eeOffset01 + -6] - u[eeOffset21 + -6]; - k01_211 = u[eeOffset01 + -7] - u[eeOffset21 + -7]; - var _g24 = eeOffset01 + -6; - var _g114 = u; - _g114[_g24] = _g114[_g24] + u[eeOffset21 + -6]; - var _g25 = eeOffset01 + -7; - var _g115 = u; - _g115[_g25] = _g115[_g25] + u[eeOffset21 + -7]; - u[eeOffset21 + -6] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -7] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - eeOffset01 -= 8; - eeOffset21 -= 8; - } - var d0 = n2 - 1 - n8 * 0; - var aOffset2 = 0; - var eOffset01 = d0; - var eOffset2 = d0 + -(n >> 4); - var i2 = (n >> 5 >> 2) + 1; - while(--i2 > 0) { - var k00_202 = u[eOffset01] - u[eOffset2]; - var k01_212 = u[eOffset01 + -1] - u[eOffset2 + -1]; - var _g26 = eOffset01; - var _g116 = u; - _g116[_g26] = _g116[_g26] + u[eOffset2]; - var _g27 = eOffset01 + -1; - var _g117 = u; - _g117[_g27] = _g117[_g27] + u[eOffset2 + -1]; - u[eOffset2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -1] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - aOffset2 += 16; - k00_202 = u[eOffset01 + -2] - u[eOffset2 + -2]; - k01_212 = u[eOffset01 + -3] - u[eOffset2 + -3]; - var _g28 = eOffset01 + -2; - var _g118 = u; - _g118[_g28] = _g118[_g28] + u[eOffset2 + -2]; - var _g29 = eOffset01 + -3; - var _g119 = u; - _g119[_g29] = _g119[_g29] + u[eOffset2 + -3]; - u[eOffset2 + -2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -3] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - aOffset2 += 16; - k00_202 = u[eOffset01 + -4] - u[eOffset2 + -4]; - k01_212 = u[eOffset01 + -5] - u[eOffset2 + -5]; - var _g30 = eOffset01 + -4; - var _g120 = u; - _g120[_g30] = _g120[_g30] + u[eOffset2 + -4]; - var _g31 = eOffset01 + -5; - var _g121 = u; - _g121[_g31] = _g121[_g31] + u[eOffset2 + -5]; - u[eOffset2 + -4] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -5] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - aOffset2 += 16; - k00_202 = u[eOffset01 + -6] - u[eOffset2 + -6]; - k01_212 = u[eOffset01 + -7] - u[eOffset2 + -7]; - var _g32 = eOffset01 + -6; - var _g122 = u; - _g122[_g32] = _g122[_g32] + u[eOffset2 + -6]; - var _g33 = eOffset01 + -7; - var _g123 = u; - _g123[_g33] = _g123[_g33] + u[eOffset2 + -7]; - u[eOffset2 + -6] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -7] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - eOffset01 -= 8; - eOffset2 -= 8; - aOffset2 += 16; - } - var d01 = n2 - 1 - n8; - var aOffset3 = 0; - var eOffset02 = d01; - var eOffset21 = d01 + -(n >> 4); - var i3 = (n >> 5 >> 2) + 1; - while(--i3 > 0) { - var k00_203 = u[eOffset02] - u[eOffset21]; - var k01_213 = u[eOffset02 + -1] - u[eOffset21 + -1]; - var _g34 = eOffset02; - var _g124 = u; - _g124[_g34] = _g124[_g34] + u[eOffset21]; - var _g35 = eOffset02 + -1; - var _g125 = u; - _g125[_g35] = _g125[_g35] + u[eOffset21 + -1]; - u[eOffset21] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -1] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - aOffset3 += 16; - k00_203 = u[eOffset02 + -2] - u[eOffset21 + -2]; - k01_213 = u[eOffset02 + -3] - u[eOffset21 + -3]; - var _g36 = eOffset02 + -2; - var _g126 = u; - _g126[_g36] = _g126[_g36] + u[eOffset21 + -2]; - var _g37 = eOffset02 + -3; - var _g127 = u; - _g127[_g37] = _g127[_g37] + u[eOffset21 + -3]; - u[eOffset21 + -2] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -3] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - aOffset3 += 16; - k00_203 = u[eOffset02 + -4] - u[eOffset21 + -4]; - k01_213 = u[eOffset02 + -5] - u[eOffset21 + -5]; - var _g38 = eOffset02 + -4; - var _g128 = u; - _g128[_g38] = _g128[_g38] + u[eOffset21 + -4]; - var _g39 = eOffset02 + -5; - var _g129 = u; - _g129[_g39] = _g129[_g39] + u[eOffset21 + -5]; - u[eOffset21 + -4] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -5] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - aOffset3 += 16; - k00_203 = u[eOffset02 + -6] - u[eOffset21 + -6]; - k01_213 = u[eOffset02 + -7] - u[eOffset21 + -7]; - var _g40 = eOffset02 + -6; - var _g130 = u; - _g130[_g40] = _g130[_g40] + u[eOffset21 + -6]; - var _g41 = eOffset02 + -7; - var _g131 = u; - _g131[_g41] = _g131[_g41] + u[eOffset21 + -7]; - u[eOffset21 + -6] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -7] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - eOffset02 -= 8; - eOffset21 -= 8; - aOffset3 += 16; - } - var d02 = n2 - 1 - n8 * 2; - var aOffset4 = 0; - var eOffset03 = d02; - var eOffset22 = d02 + -(n >> 4); - var i4 = (n >> 5 >> 2) + 1; - while(--i4 > 0) { - var k00_204 = u[eOffset03] - u[eOffset22]; - var k01_214 = u[eOffset03 + -1] - u[eOffset22 + -1]; - var _g42 = eOffset03; - var _g132 = u; - _g132[_g42] = _g132[_g42] + u[eOffset22]; - var _g43 = eOffset03 + -1; - var _g133 = u; - _g133[_g43] = _g133[_g43] + u[eOffset22 + -1]; - u[eOffset22] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -1] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - aOffset4 += 16; - k00_204 = u[eOffset03 + -2] - u[eOffset22 + -2]; - k01_214 = u[eOffset03 + -3] - u[eOffset22 + -3]; - var _g44 = eOffset03 + -2; - var _g134 = u; - _g134[_g44] = _g134[_g44] + u[eOffset22 + -2]; - var _g45 = eOffset03 + -3; - var _g135 = u; - _g135[_g45] = _g135[_g45] + u[eOffset22 + -3]; - u[eOffset22 + -2] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -3] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - aOffset4 += 16; - k00_204 = u[eOffset03 + -4] - u[eOffset22 + -4]; - k01_214 = u[eOffset03 + -5] - u[eOffset22 + -5]; - var _g46 = eOffset03 + -4; - var _g136 = u; - _g136[_g46] = _g136[_g46] + u[eOffset22 + -4]; - var _g47 = eOffset03 + -5; - var _g137 = u; - _g137[_g47] = _g137[_g47] + u[eOffset22 + -5]; - u[eOffset22 + -4] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -5] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - aOffset4 += 16; - k00_204 = u[eOffset03 + -6] - u[eOffset22 + -6]; - k01_214 = u[eOffset03 + -7] - u[eOffset22 + -7]; - var _g48 = eOffset03 + -6; - var _g138 = u; - _g138[_g48] = _g138[_g48] + u[eOffset22 + -6]; - var _g49 = eOffset03 + -7; - var _g139 = u; - _g139[_g49] = _g139[_g49] + u[eOffset22 + -7]; - u[eOffset22 + -6] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -7] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - eOffset03 -= 8; - eOffset22 -= 8; - aOffset4 += 16; - } - var d03 = n2 - 1 - n8 * 3; - var aOffset5 = 0; - var eOffset04 = d03; - var eOffset23 = d03 + -(n >> 4); - var i5 = (n >> 5 >> 2) + 1; - while(--i5 > 0) { - var k00_205 = u[eOffset04] - u[eOffset23]; - var k01_215 = u[eOffset04 + -1] - u[eOffset23 + -1]; - var _g50 = eOffset04; - var _g140 = u; - _g140[_g50] = _g140[_g50] + u[eOffset23]; - var _g51 = eOffset04 + -1; - var _g141 = u; - _g141[_g51] = _g141[_g51] + u[eOffset23 + -1]; - u[eOffset23] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -1] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - aOffset5 += 16; - k00_205 = u[eOffset04 + -2] - u[eOffset23 + -2]; - k01_215 = u[eOffset04 + -3] - u[eOffset23 + -3]; - var _g52 = eOffset04 + -2; - var _g142 = u; - _g142[_g52] = _g142[_g52] + u[eOffset23 + -2]; - var _g53 = eOffset04 + -3; - var _g143 = u; - _g143[_g53] = _g143[_g53] + u[eOffset23 + -3]; - u[eOffset23 + -2] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -3] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - aOffset5 += 16; - k00_205 = u[eOffset04 + -4] - u[eOffset23 + -4]; - k01_215 = u[eOffset04 + -5] - u[eOffset23 + -5]; - var _g54 = eOffset04 + -4; - var _g144 = u; - _g144[_g54] = _g144[_g54] + u[eOffset23 + -4]; - var _g55 = eOffset04 + -5; - var _g145 = u; - _g145[_g55] = _g145[_g55] + u[eOffset23 + -5]; - u[eOffset23 + -4] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -5] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - aOffset5 += 16; - k00_205 = u[eOffset04 + -6] - u[eOffset23 + -6]; - k01_215 = u[eOffset04 + -7] - u[eOffset23 + -7]; - var _g56 = eOffset04 + -6; - var _g146 = u; - _g146[_g56] = _g146[_g56] + u[eOffset23 + -6]; - var _g57 = eOffset04 + -7; - var _g147 = u; - _g147[_g57] = _g147[_g57] + u[eOffset23 + -7]; - u[eOffset23 + -6] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -7] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - eOffset04 -= 8; - eOffset23 -= 8; - aOffset5 += 16; - } - var _g148 = 2; - var _g58 = ld - 3 >> 1; - while(_g148 < _g58) { - var l = _g148++; - var k0 = n >> l + 2; - var k0_2 = k0 >> 1; - var lim = 1 << l + 1; - var _g310 = 0; - var _g210 = lim; - while(_g310 < _g210) { - var i6 = _g310++; - var d04 = n2 - 1 - k0 * i6; - var k1 = 1 << l + 3; - var aOffset6 = 0; - var eOffset05 = d04; - var eOffset24 = d04 + -k0_2; - var i7 = (n >> l + 4 >> 2) + 1; - while(--i7 > 0) { - var k00_206 = u[eOffset05] - u[eOffset24]; - var k01_216 = u[eOffset05 + -1] - u[eOffset24 + -1]; - var _g59 = eOffset05; - var _g149 = u; - _g149[_g59] = _g149[_g59] + u[eOffset24]; - var _g60 = eOffset05 + -1; - var _g150 = u; - _g150[_g60] = _g150[_g60] + u[eOffset24 + -1]; - u[eOffset24] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -1] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - aOffset6 += k1; - k00_206 = u[eOffset05 + -2] - u[eOffset24 + -2]; - k01_216 = u[eOffset05 + -3] - u[eOffset24 + -3]; - var _g61 = eOffset05 + -2; - var _g151 = u; - _g151[_g61] = _g151[_g61] + u[eOffset24 + -2]; - var _g62 = eOffset05 + -3; - var _g152 = u; - _g152[_g62] = _g152[_g62] + u[eOffset24 + -3]; - u[eOffset24 + -2] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -3] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - aOffset6 += k1; - k00_206 = u[eOffset05 + -4] - u[eOffset24 + -4]; - k01_216 = u[eOffset05 + -5] - u[eOffset24 + -5]; - var _g63 = eOffset05 + -4; - var _g153 = u; - _g153[_g63] = _g153[_g63] + u[eOffset24 + -4]; - var _g64 = eOffset05 + -5; - var _g154 = u; - _g154[_g64] = _g154[_g64] + u[eOffset24 + -5]; - u[eOffset24 + -4] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -5] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - aOffset6 += k1; - k00_206 = u[eOffset05 + -6] - u[eOffset24 + -6]; - k01_216 = u[eOffset05 + -7] - u[eOffset24 + -7]; - var _g65 = eOffset05 + -6; - var _g155 = u; - _g155[_g65] = _g155[_g65] + u[eOffset24 + -6]; - var _g66 = eOffset05 + -7; - var _g156 = u; - _g156[_g66] = _g156[_g66] + u[eOffset24 + -7]; - u[eOffset24 + -6] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -7] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - eOffset05 -= 8; - eOffset24 -= 8; - aOffset6 += k1; - } - } - } - var _g157 = ld - 3 >> 1; - var _g67 = ld - 6; - while(_g157 < _g67) { - var l1 = _g157++; - var k01 = n >> l1 + 2; - var k11 = 1 << l1 + 3; - var k0_21 = k01 >> 1; - var rlim = n >> l1 + 6; - var lim1 = 1 << l1 + 1; - var aOffset7 = 0; - var i_off2 = n2 - 1; - var r = rlim + 1; - while(--r > 0) { - var A0 = a[aOffset7]; - var A1 = a[aOffset7 + 1]; - var A2 = a[aOffset7 + k11]; - var A3 = a[aOffset7 + k11 + 1]; - var A4 = a[aOffset7 + k11 * 2]; - var A5 = a[aOffset7 + k11 * 2 + 1]; - var A6 = a[aOffset7 + k11 * 3]; - var A7 = a[aOffset7 + k11 * 3 + 1]; - var eeOffset02 = i_off2; - var eeOffset22 = i_off2 + -k0_21; - var i8 = lim1 + 1; - while(--i8 > 0) { - var k00 = u[eeOffset02] - u[eeOffset22]; - var k111 = u[eeOffset02 + -1] - u[eeOffset22 + -1]; - u[eeOffset02] = u[eeOffset02] + u[eeOffset22]; - u[eeOffset02 + -1] = u[eeOffset02 + -1] + u[eeOffset22 + -1]; - u[eeOffset22] = k00 * A0 - k111 * A1; - u[eeOffset22 + -1] = k111 * A0 + k00 * A1; - k00 = u[eeOffset02 + -2] - u[eeOffset22 + -2]; - k111 = u[eeOffset02 + -3] - u[eeOffset22 + -3]; - u[eeOffset02 + -2] = u[eeOffset02 + -2] + u[eeOffset22 + -2]; - u[eeOffset02 + -3] = u[eeOffset02 + -3] + u[eeOffset22 + -3]; - u[eeOffset22 + -2] = k00 * A2 - k111 * A3; - u[eeOffset22 + -3] = k111 * A2 + k00 * A3; - k00 = u[eeOffset02 + -4] - u[eeOffset22 + -4]; - k111 = u[eeOffset02 + -5] - u[eeOffset22 + -5]; - u[eeOffset02 + -4] = u[eeOffset02 + -4] + u[eeOffset22 + -4]; - u[eeOffset02 + -5] = u[eeOffset02 + -5] + u[eeOffset22 + -5]; - u[eeOffset22 + -4] = k00 * A4 - k111 * A5; - u[eeOffset22 + -5] = k111 * A4 + k00 * A5; - k00 = u[eeOffset02 + -6] - u[eeOffset22 + -6]; - k111 = u[eeOffset02 + -7] - u[eeOffset22 + -7]; - u[eeOffset02 + -6] = u[eeOffset02 + -6] + u[eeOffset22 + -6]; - u[eeOffset02 + -7] = u[eeOffset02 + -7] + u[eeOffset22 + -7]; - u[eeOffset22 + -6] = k00 * A6 - k111 * A7; - u[eeOffset22 + -7] = k111 * A6 + k00 * A7; - eeOffset02 -= k01; - eeOffset22 -= k01; - } - aOffset7 += k11 * 4; - i_off2 -= 8; - } - } - var i_off3 = n2 - 1; - var A21 = a[n >> 3]; - var zOffset = i_off3; - var baseOffset = i_off3 - 16 * (n >> 5); - while(zOffset > baseOffset) { - var t0 = u[zOffset]; - var t1 = u[zOffset + -8]; - u[zOffset + -8] = t0 - t1; - u[zOffset] = t0 + t1; - t0 = u[zOffset + -1]; - t1 = u[zOffset + -9]; - u[zOffset + -9] = t0 - t1; - u[zOffset + -1] = t0 + t1; - t0 = u[zOffset + -2]; - t1 = u[zOffset + -10]; - var k001 = t0 - t1; - u[zOffset + -2] = t0 + t1; - t0 = u[zOffset + -3]; - t1 = u[zOffset + -11]; - var k112 = t0 - t1; - u[zOffset + -3] = t0 + t1; - u[zOffset + -10] = (k001 + k112) * A21; - u[zOffset + -11] = (k112 - k001) * A21; - t0 = u[zOffset + -4]; - t1 = u[zOffset + -12]; - k001 = t1 - t0; - u[zOffset + -4] = t0 + t1; - t0 = u[zOffset + -5]; - t1 = u[zOffset + -13]; - k112 = t0 - t1; - u[zOffset + -5] = t0 + t1; - u[zOffset + -12] = k112; - u[zOffset + -13] = k001; - t0 = u[zOffset + -6]; - t1 = u[zOffset + -14]; - k001 = t1 - t0; - u[zOffset + -6] = t0 + t1; - t0 = u[zOffset + -7]; - t1 = u[zOffset + -15]; - k112 = t0 - t1; - u[zOffset + -7] = t0 + t1; - u[zOffset + -14] = (k001 + k112) * A21; - u[zOffset + -15] = (k001 - k112) * A21; - var t01 = u[zOffset]; - var t11 = u[zOffset + -4]; - var k002 = t01 - t11; - var y0 = t01 + t11; - t01 = u[zOffset + -2]; - t11 = u[zOffset + -6]; - var y2 = t01 + t11; - var k22 = t01 - t11; - u[zOffset] = y0 + y2; - u[zOffset + -2] = y0 - y2; - var k33 = u[zOffset + -3] - u[zOffset + -7]; - u[zOffset + -4] = k002 + k33; - u[zOffset + -6] = k002 - k33; - t01 = u[zOffset + -1]; - t11 = u[zOffset + -5]; - var k113 = t01 - t11; - var y1 = t01 + t11; - var y3 = u[zOffset + -3] + u[zOffset + -7]; - u[zOffset + -1] = y1 + y3; - u[zOffset + -3] = y1 - y3; - u[zOffset + -5] = k113 - k22; - u[zOffset + -7] = k113 + k22; - var zOffset1 = zOffset - 8; - var t02 = u[zOffset1]; - var t12 = u[zOffset1 + -4]; - var k003 = t02 - t12; - var y01 = t02 + t12; - t02 = u[zOffset1 + -2]; - t12 = u[zOffset1 + -6]; - var y21 = t02 + t12; - var k221 = t02 - t12; - u[zOffset1] = y01 + y21; - u[zOffset1 + -2] = y01 - y21; - var k331 = u[zOffset1 + -3] - u[zOffset1 + -7]; - u[zOffset1 + -4] = k003 + k331; - u[zOffset1 + -6] = k003 - k331; - t02 = u[zOffset1 + -1]; - t12 = u[zOffset1 + -5]; - var k114 = t02 - t12; - var y11 = t02 + t12; - var y31 = u[zOffset1 + -3] + u[zOffset1 + -7]; - u[zOffset1 + -1] = y11 + y31; - u[zOffset1 + -3] = y11 - y31; - u[zOffset1 + -5] = k114 - k221; - u[zOffset1 + -7] = k114 + k221; - zOffset -= 16; - } - var brOffset = 0; - var dOffset01 = n4 - 4; - var dOffset11 = n2 - 4; - while(dOffset01 >= 0) { - var k4 = bitReverse[brOffset]; - v[dOffset11 + 3] = u[k4]; - v[dOffset11 + 2] = u[k4 + 1]; - v[dOffset01 + 3] = u[k4 + 2]; - v[dOffset01 + 2] = u[k4 + 3]; - k4 = bitReverse[brOffset + 1]; - v[dOffset11 + 1] = u[k4]; - v[dOffset11] = u[k4 + 1]; - v[dOffset01 + 1] = u[k4 + 2]; - v[dOffset01] = u[k4 + 3]; - dOffset01 -= 4; - dOffset11 -= 4; - brOffset += 2; - } - var cOffset = 0; - var dOffset2 = 0; - var eOffset3 = n2 - 4; - while(dOffset2 < eOffset3) { - var a02 = v[dOffset2] - v[eOffset3 + 2]; - var a11 = v[dOffset2 + 1] + v[eOffset3 + 3]; - var b0 = c[cOffset + 1] * a02 + c[cOffset] * a11; - var b1 = c[cOffset + 1] * a11 - c[cOffset] * a02; - var b2 = v[dOffset2] + v[eOffset3 + 2]; - var b3 = v[dOffset2 + 1] - v[eOffset3 + 3]; - v[dOffset2] = b2 + b0; - v[dOffset2 + 1] = b3 + b1; - v[eOffset3 + 2] = b2 - b0; - v[eOffset3 + 3] = b1 - b3; - a02 = v[dOffset2 + 2] - v[eOffset3]; - a11 = v[dOffset2 + 3] + v[eOffset3 + 1]; - b0 = c[cOffset + 3] * a02 + c[cOffset + 2] * a11; - b1 = c[cOffset + 3] * a11 - c[cOffset + 2] * a02; - b2 = v[dOffset2 + 2] + v[eOffset3]; - b3 = v[dOffset2 + 3] - v[eOffset3 + 1]; - v[dOffset2 + 2] = b2 + b0; - v[dOffset2 + 3] = b3 + b1; - v[eOffset3] = b2 - b0; - v[eOffset3 + 1] = b1 - b3; - cOffset += 4; - dOffset2 += 4; - eOffset3 -= 4; - } - var bOffset = n2 - 8; - var eOffset4 = n2 - 8; - var dOffset02 = 0; - var dOffset12 = n2 - 4; - var dOffset21 = n2; - var dOffset3 = n - 4; - while(eOffset4 >= 0) { - var p3 = buf2[eOffset4 + 6] * b[bOffset + 7] - buf2[eOffset4 + 7] * b[bOffset + 6]; - var p2 = -buf2[eOffset4 + 6] * b[bOffset + 6] - buf2[eOffset4 + 7] * b[bOffset + 7]; - buffer[dOffset02] = p3; - buffer[dOffset12 + 3] = -p3; - buffer[dOffset21] = p2; - buffer[dOffset3 + 3] = p2; - var p1 = buf2[eOffset4 + 4] * b[bOffset + 5] - buf2[eOffset4 + 5] * b[bOffset + 4]; - var p0 = -buf2[eOffset4 + 4] * b[bOffset + 4] - buf2[eOffset4 + 5] * b[bOffset + 5]; - buffer[dOffset02 + 1] = p1; - buffer[dOffset12 + 2] = -p1; - buffer[dOffset21 + 1] = p0; - buffer[dOffset3 + 2] = p0; - p3 = buf2[eOffset4 + 2] * b[bOffset + 3] - buf2[eOffset4 + 3] * b[bOffset + 2]; - p2 = -buf2[eOffset4 + 2] * b[bOffset + 2] - buf2[eOffset4 + 3] * b[bOffset + 3]; - buffer[dOffset02 + 2] = p3; - buffer[dOffset12 + 1] = -p3; - buffer[dOffset21 + 2] = p2; - buffer[dOffset3 + 1] = p2; - p1 = buf2[eOffset4] * b[bOffset + 1] - buf2[eOffset4 + 1] * b[bOffset]; - p0 = -buf2[eOffset4] * b[bOffset] - buf2[eOffset4 + 1] * b[bOffset + 1]; - buffer[dOffset02 + 3] = p1; - buffer[dOffset12] = -p1; - buffer[dOffset21 + 3] = p0; - buffer[dOffset3] = p0; - bOffset -= 8; - eOffset4 -= 8; - dOffset02 += 4; - dOffset21 += 4; - dOffset12 -= 4; - dOffset3 -= 4; - } -}; -kha_audio2_ogg_tools_Mdct.step3Iter0Loop = function(n,e,i_off,k_off,a) { - var eeOffset0 = i_off; - var eeOffset2 = i_off + k_off; - var aOffset = 0; - var i = (n >> 2) + 1; - while(--i > 0) { - var k00_20 = e[eeOffset0] - e[eeOffset2]; - var k01_21 = e[eeOffset0 + -1] - e[eeOffset2 + -1]; - var _g = eeOffset0; - var _g1 = e; - _g1[_g] = _g1[_g] + e[eeOffset2]; - var _g2 = eeOffset0 + -1; - var _g11 = e; - _g11[_g2] = _g11[_g2] + e[eeOffset2 + -1]; - e[eeOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eeOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = e[eeOffset0 + -2] - e[eeOffset2 + -2]; - k01_21 = e[eeOffset0 + -3] - e[eeOffset2 + -3]; - var _g3 = eeOffset0 + -2; - var _g12 = e; - _g12[_g3] = _g12[_g3] + e[eeOffset2 + -2]; - var _g4 = eeOffset0 + -3; - var _g13 = e; - _g13[_g4] = _g13[_g4] + e[eeOffset2 + -3]; - e[eeOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eeOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = e[eeOffset0 + -4] - e[eeOffset2 + -4]; - k01_21 = e[eeOffset0 + -5] - e[eeOffset2 + -5]; - var _g5 = eeOffset0 + -4; - var _g14 = e; - _g14[_g5] = _g14[_g5] + e[eeOffset2 + -4]; - var _g6 = eeOffset0 + -5; - var _g15 = e; - _g15[_g6] = _g15[_g6] + e[eeOffset2 + -5]; - e[eeOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eeOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = e[eeOffset0 + -6] - e[eeOffset2 + -6]; - k01_21 = e[eeOffset0 + -7] - e[eeOffset2 + -7]; - var _g7 = eeOffset0 + -6; - var _g16 = e; - _g16[_g7] = _g16[_g7] + e[eeOffset2 + -6]; - var _g8 = eeOffset0 + -7; - var _g17 = e; - _g17[_g8] = _g17[_g8] + e[eeOffset2 + -7]; - e[eeOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eeOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - eeOffset0 -= 8; - eeOffset2 -= 8; - } -}; -kha_audio2_ogg_tools_Mdct.step3InnerRLoop = function(lim,e,d0,k_off,a,k1) { - var aOffset = 0; - var eOffset0 = d0; - var eOffset2 = d0 + k_off; - var i = (lim >> 2) + 1; - while(--i > 0) { - var k00_20 = e[eOffset0] - e[eOffset2]; - var k01_21 = e[eOffset0 + -1] - e[eOffset2 + -1]; - var _g = eOffset0; - var _g1 = e; - _g1[_g] = _g1[_g] + e[eOffset2]; - var _g2 = eOffset0 + -1; - var _g11 = e; - _g11[_g2] = _g11[_g2] + e[eOffset2 + -1]; - e[eOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += k1; - k00_20 = e[eOffset0 + -2] - e[eOffset2 + -2]; - k01_21 = e[eOffset0 + -3] - e[eOffset2 + -3]; - var _g3 = eOffset0 + -2; - var _g12 = e; - _g12[_g3] = _g12[_g3] + e[eOffset2 + -2]; - var _g4 = eOffset0 + -3; - var _g13 = e; - _g13[_g4] = _g13[_g4] + e[eOffset2 + -3]; - e[eOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += k1; - k00_20 = e[eOffset0 + -4] - e[eOffset2 + -4]; - k01_21 = e[eOffset0 + -5] - e[eOffset2 + -5]; - var _g5 = eOffset0 + -4; - var _g14 = e; - _g14[_g5] = _g14[_g5] + e[eOffset2 + -4]; - var _g6 = eOffset0 + -5; - var _g15 = e; - _g15[_g6] = _g15[_g6] + e[eOffset2 + -5]; - e[eOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += k1; - k00_20 = e[eOffset0 + -6] - e[eOffset2 + -6]; - k01_21 = e[eOffset0 + -7] - e[eOffset2 + -7]; - var _g7 = eOffset0 + -6; - var _g16 = e; - _g16[_g7] = _g16[_g7] + e[eOffset2 + -6]; - var _g8 = eOffset0 + -7; - var _g17 = e; - _g17[_g8] = _g17[_g8] + e[eOffset2 + -7]; - e[eOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - e[eOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - eOffset0 -= 8; - eOffset2 -= 8; - aOffset += k1; - } -}; -kha_audio2_ogg_tools_Mdct.step3InnerSLoop = function(n,e,i_off,k_off,a,aOffset0,aOffset1,k0) { - var A0 = a[aOffset0]; - var A1 = a[aOffset0 + 1]; - var A2 = a[aOffset0 + aOffset1]; - var A3 = a[aOffset0 + aOffset1 + 1]; - var A4 = a[aOffset0 + aOffset1 * 2]; - var A5 = a[aOffset0 + aOffset1 * 2 + 1]; - var A6 = a[aOffset0 + aOffset1 * 3]; - var A7 = a[aOffset0 + aOffset1 * 3 + 1]; - var eeOffset0 = i_off; - var eeOffset2 = i_off + k_off; - var i = n + 1; - while(--i > 0) { - var k00 = e[eeOffset0] - e[eeOffset2]; - var k11 = e[eeOffset0 + -1] - e[eeOffset2 + -1]; - e[eeOffset0] = e[eeOffset0] + e[eeOffset2]; - e[eeOffset0 + -1] = e[eeOffset0 + -1] + e[eeOffset2 + -1]; - e[eeOffset2] = k00 * A0 - k11 * A1; - e[eeOffset2 + -1] = k11 * A0 + k00 * A1; - k00 = e[eeOffset0 + -2] - e[eeOffset2 + -2]; - k11 = e[eeOffset0 + -3] - e[eeOffset2 + -3]; - e[eeOffset0 + -2] = e[eeOffset0 + -2] + e[eeOffset2 + -2]; - e[eeOffset0 + -3] = e[eeOffset0 + -3] + e[eeOffset2 + -3]; - e[eeOffset2 + -2] = k00 * A2 - k11 * A3; - e[eeOffset2 + -3] = k11 * A2 + k00 * A3; - k00 = e[eeOffset0 + -4] - e[eeOffset2 + -4]; - k11 = e[eeOffset0 + -5] - e[eeOffset2 + -5]; - e[eeOffset0 + -4] = e[eeOffset0 + -4] + e[eeOffset2 + -4]; - e[eeOffset0 + -5] = e[eeOffset0 + -5] + e[eeOffset2 + -5]; - e[eeOffset2 + -4] = k00 * A4 - k11 * A5; - e[eeOffset2 + -5] = k11 * A4 + k00 * A5; - k00 = e[eeOffset0 + -6] - e[eeOffset2 + -6]; - k11 = e[eeOffset0 + -7] - e[eeOffset2 + -7]; - e[eeOffset0 + -6] = e[eeOffset0 + -6] + e[eeOffset2 + -6]; - e[eeOffset0 + -7] = e[eeOffset0 + -7] + e[eeOffset2 + -7]; - e[eeOffset2 + -6] = k00 * A6 - k11 * A7; - e[eeOffset2 + -7] = k11 * A6 + k00 * A7; - eeOffset0 -= k0; - eeOffset2 -= k0; - } -}; -kha_audio2_ogg_tools_Mdct.iter54 = function(e,zOffset) { - var t0 = e[zOffset]; - var t1 = e[zOffset + -4]; - var k00 = t0 - t1; - var y0 = t0 + t1; - t0 = e[zOffset + -2]; - t1 = e[zOffset + -6]; - var y2 = t0 + t1; - var k22 = t0 - t1; - e[zOffset] = y0 + y2; - e[zOffset + -2] = y0 - y2; - var k33 = e[zOffset + -3] - e[zOffset + -7]; - e[zOffset + -4] = k00 + k33; - e[zOffset + -6] = k00 - k33; - t0 = e[zOffset + -1]; - t1 = e[zOffset + -5]; - var k11 = t0 - t1; - var y1 = t0 + t1; - var y3 = e[zOffset + -3] + e[zOffset + -7]; - e[zOffset + -1] = y1 + y3; - e[zOffset + -3] = y1 - y3; - e[zOffset + -5] = k11 - k22; - e[zOffset + -7] = k11 + k22; -}; -kha_audio2_ogg_tools_Mdct.step3InnerSLoopLd654 = function(n,e,i_off,a,baseN) { - var A2 = a[baseN >> 3]; - var zOffset = i_off; - var baseOffset = i_off - 16 * n; - while(zOffset > baseOffset) { - var t0 = e[zOffset]; - var t1 = e[zOffset + -8]; - e[zOffset + -8] = t0 - t1; - e[zOffset] = t0 + t1; - t0 = e[zOffset + -1]; - t1 = e[zOffset + -9]; - e[zOffset + -9] = t0 - t1; - e[zOffset + -1] = t0 + t1; - t0 = e[zOffset + -2]; - t1 = e[zOffset + -10]; - var k00 = t0 - t1; - e[zOffset + -2] = t0 + t1; - t0 = e[zOffset + -3]; - t1 = e[zOffset + -11]; - var k11 = t0 - t1; - e[zOffset + -3] = t0 + t1; - e[zOffset + -10] = (k00 + k11) * A2; - e[zOffset + -11] = (k11 - k00) * A2; - t0 = e[zOffset + -4]; - t1 = e[zOffset + -12]; - k00 = t1 - t0; - e[zOffset + -4] = t0 + t1; - t0 = e[zOffset + -5]; - t1 = e[zOffset + -13]; - k11 = t0 - t1; - e[zOffset + -5] = t0 + t1; - e[zOffset + -12] = k11; - e[zOffset + -13] = k00; - t0 = e[zOffset + -6]; - t1 = e[zOffset + -14]; - k00 = t1 - t0; - e[zOffset + -6] = t0 + t1; - t0 = e[zOffset + -7]; - t1 = e[zOffset + -15]; - k11 = t0 - t1; - e[zOffset + -7] = t0 + t1; - e[zOffset + -14] = (k00 + k11) * A2; - e[zOffset + -15] = (k00 - k11) * A2; - var t01 = e[zOffset]; - var t11 = e[zOffset + -4]; - var k001 = t01 - t11; - var y0 = t01 + t11; - t01 = e[zOffset + -2]; - t11 = e[zOffset + -6]; - var y2 = t01 + t11; - var k22 = t01 - t11; - e[zOffset] = y0 + y2; - e[zOffset + -2] = y0 - y2; - var k33 = e[zOffset + -3] - e[zOffset + -7]; - e[zOffset + -4] = k001 + k33; - e[zOffset + -6] = k001 - k33; - t01 = e[zOffset + -1]; - t11 = e[zOffset + -5]; - var k111 = t01 - t11; - var y1 = t01 + t11; - var y3 = e[zOffset + -3] + e[zOffset + -7]; - e[zOffset + -1] = y1 + y3; - e[zOffset + -3] = y1 - y3; - e[zOffset + -5] = k111 - k22; - e[zOffset + -7] = k111 + k22; - var zOffset1 = zOffset - 8; - var t02 = e[zOffset1]; - var t12 = e[zOffset1 + -4]; - var k002 = t02 - t12; - var y01 = t02 + t12; - t02 = e[zOffset1 + -2]; - t12 = e[zOffset1 + -6]; - var y21 = t02 + t12; - var k221 = t02 - t12; - e[zOffset1] = y01 + y21; - e[zOffset1 + -2] = y01 - y21; - var k331 = e[zOffset1 + -3] - e[zOffset1 + -7]; - e[zOffset1 + -4] = k002 + k331; - e[zOffset1 + -6] = k002 - k331; - t02 = e[zOffset1 + -1]; - t12 = e[zOffset1 + -5]; - var k112 = t02 - t12; - var y11 = t02 + t12; - var y31 = e[zOffset1 + -3] + e[zOffset1 + -7]; - e[zOffset1 + -1] = y11 + y31; - e[zOffset1 + -3] = y11 - y31; - e[zOffset1 + -5] = k112 - k221; - e[zOffset1 + -7] = k112 + k221; - zOffset -= 16; - } -}; -var kha_audio2_ogg_vorbis_Reader = function(input,seekFunc,inputLength) { - this.seekFunc = seekFunc; - this.inputLength = inputLength; - this.decoder = kha_audio2_ogg_vorbis_VorbisDecoder.start(input); - this.decoder.setupSampleNumber(seekFunc,inputLength); - this.loopStart = this.get_header().comment.get_loopStart(); - this.loopLength = this.get_header().comment.get_loopLength(); -}; -$hxClasses["kha.audio2.ogg.vorbis.Reader"] = kha_audio2_ogg_vorbis_Reader; -kha_audio2_ogg_vorbis_Reader.__name__ = true; -kha_audio2_ogg_vorbis_Reader.openFromBytes = function(bytes) { - var input = new haxe_io_BytesInput(bytes); - var a1 = input; - return new kha_audio2_ogg_vorbis_Reader(input,function(a2) { - kha_audio2_ogg_vorbis_Reader.seekBytes(a1,a2); - },bytes.length); -}; -kha_audio2_ogg_vorbis_Reader.seekBytes = function(bytes,pos) { - bytes.set_position(pos); -}; -kha_audio2_ogg_vorbis_Reader.readAll = function(bytes,output,useFloat) { - if(useFloat == null) { - useFloat = false; - } - var input = new haxe_io_BytesInput(bytes); - var decoder = kha_audio2_ogg_vorbis_VorbisDecoder.start(input); - var a1 = input; - decoder.setupSampleNumber(function(a2) { - kha_audio2_ogg_vorbis_Reader.seekBytes(a1,a2); - },bytes.length); - var header = decoder.header; - var count = 0; - var bufferSize = 4096; - var length = bufferSize * header.channel; - var this1 = new Array(length); - var buffer = this1; - while(true) { - var n = decoder.read(buffer,bufferSize,header.channel,header.sampleRate,useFloat); - var _g1 = 0; - var _g = n * header.channel; - while(_g1 < _g) { - var i = _g1++; - output.writeFloat(buffer[i]); - } - if(n == 0) { - break; - } - count += n; - } - return decoder.header; -}; -kha_audio2_ogg_vorbis_Reader.prototype = { - decoder: null - ,get_header: function() { - return this.decoder.header; - } - ,get_totalSample: function() { - return this.decoder.totalSample; - } - ,get_totalMillisecond: function() { - var samples = this.decoder.totalSample; - var b = this.get_header().sampleRate; - return _$UInt_UInt_$Impl_$.toFloat(samples) / _$UInt_UInt_$Impl_$.toFloat(b) * 1000; - } - ,get_currentSample: function() { - return this.decoder.currentSample; - } - ,set_currentSample: function(value) { - this.decoder.seek(this.seekFunc,this.inputLength,value); - return this.decoder.currentSample; - } - ,get_currentMillisecond: function() { - var samples = this.get_currentSample(); - var b = this.get_header().sampleRate; - return _$UInt_UInt_$Impl_$.toFloat(samples) / _$UInt_UInt_$Impl_$.toFloat(b) * 1000; - } - ,set_currentMillisecond: function(value) { - var _g = value / 1000; - var _g1 = this.get_header().sampleRate; - this.set_currentSample(Math.floor(_$UInt_UInt_$Impl_$.toFloat(_g1) * _g)); - return this.get_currentMillisecond(); - } - ,loopStart: null - ,loopLength: null - ,seekFunc: null - ,inputLength: null - ,read: function(output,samples,channels,sampleRate,useFloat) { - if(useFloat == null) { - useFloat = false; - } - this.decoder.ensurePosition(this.seekFunc); - if(samples == null) { - samples = this.decoder.totalSample; - } - if(channels == null) { - channels = this.get_header().channel; - } - if(sampleRate == null) { - sampleRate = this.get_header().sampleRate; - } - return this.decoder.read(output,samples,channels,sampleRate,useFloat); - } - ,clone: function() { - var reader = Type.createEmptyInstance(kha_audio2_ogg_vorbis_Reader); - reader.seekFunc = this.seekFunc; - reader.inputLength = this.inputLength; - reader.decoder = this.decoder.clone(this.seekFunc); - reader.loopStart = this.loopStart; - reader.loopLength = this.loopLength; - return reader; - } - ,sampleToMillisecond: function(samples) { - var b = this.get_header().sampleRate; - return _$UInt_UInt_$Impl_$.toFloat(samples) / _$UInt_UInt_$Impl_$.toFloat(b) * 1000; - } - ,millisecondToSample: function(millseconds) { - var _g = millseconds / 1000; - var _g1 = this.get_header().sampleRate; - return Math.floor(_$UInt_UInt_$Impl_$.toFloat(_g1) * _g); - } - ,__class__: kha_audio2_ogg_vorbis_Reader -}; -var kha_audio2_ogg_vorbis_VorbisDecodeState = function(input) { - this.nextSeg = 0; - this.firstDecode = false; - this.bytesInSeg = 0; - this.validBits = 0; - this.input = input; - this.inputPosition = 0; - this.page = new kha_audio2_ogg_vorbis_data_Page(); - kha_audio2_ogg_tools_Crc32.init(); -}; -$hxClasses["kha.audio2.ogg.vorbis.VorbisDecodeState"] = kha_audio2_ogg_vorbis_VorbisDecodeState; -kha_audio2_ogg_vorbis_VorbisDecodeState.__name__ = true; -kha_audio2_ogg_vorbis_VorbisDecodeState.prototype = { - page: null - ,eof: null - ,pFirst: null - ,pLast: null - ,validBits: null - ,inputPosition: null - ,input: null - ,discardSamplesDeferred: null - ,segments: null - ,bytesInSeg: null - ,channelBuffers: null - ,channelBufferStart: null - ,channelBufferEnd: null - ,currentSample: null - ,previousWindow: null - ,previousLength: null - ,finalY: null - ,firstDecode: null - ,nextSeg: null - ,acc: null - ,lastSeg: null - ,lastSegWhich: null - ,endSegWithKnownLoc: null - ,knownLocForPacket: null - ,error: null - ,currentLoc: null - ,currentLocValid: null - ,firstAudioPageOffset: null - ,setup: function(loc0,loc1) { - this.inputPosition += 1; - var segmentCount = this.input.readByte(); - this.inputPosition += segmentCount; - var this1 = new Array(segmentCount); - var vec = this1; - var _g1 = 0; - var _g = segmentCount; - while(_g1 < _g) { - var i = _g1++; - vec[i] = this.input.readByte(); - } - this.segments = vec; - this.endSegWithKnownLoc = -2; - if(loc0 != -1 || loc1 != -1) { - var i1 = segmentCount - 1; - while(i1 >= 0) { - if(this.segments[i1] < 255) { - break; - } - if(i1 >= 0) { - this.endSegWithKnownLoc = i1; - this.knownLocForPacket = loc0; - } - --i1; - } - } - if(this.firstDecode) { - var i2 = 0; - var len = 0; - var p = new kha_audio2_ogg_vorbis_data_ProbedPage(); - var _g11 = 0; - var _g2 = segmentCount; - while(_g11 < _g2) { - var i3 = _g11++; - len += this.segments[i3]; - } - len += 27 + segmentCount; - p.pageStart = this.firstAudioPageOffset; - p.pageEnd = p.pageStart + len; - p.firstDecodedSample = 0; - p.lastDecodedSample = loc0; - this.pFirst = p; - } - this.nextSeg = 0; - } - ,clone: function(seekFunc) { - var state = Type.createEmptyInstance(kha_audio2_ogg_vorbis_VorbisDecodeState); - seekFunc(this.inputPosition); - state.input = this.input; - state.eof = this.eof; - state.validBits = this.validBits; - state.discardSamplesDeferred = this.discardSamplesDeferred; - state.firstDecode = this.firstDecode; - state.nextSeg = this.nextSeg; - state.bytesInSeg = this.bytesInSeg; - state.acc = state.acc; - state.lastSeg = this.lastSeg; - state.lastSegWhich = this.lastSegWhich; - state.currentLoc = this.currentLoc; - state.currentLocValid = this.currentLocValid; - state.inputPosition = this.inputPosition; - state.firstAudioPageOffset = this.firstAudioPageOffset; - state.error = this.error; - state.segments = this.segments; - state.pFirst = this.pFirst; - state.pLast = this.pLast; - state.page = this.page.clone(); - return state; - } - ,next: function() { - if(this.lastSeg) { - return 0; - } - if(this.nextSeg == -1) { - this.lastSegWhich = this.segments.length - 1; - try { - this.page.start(this); - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - if( js_Boot.__instanceof(e,kha_audio2_ogg_vorbis_data_ReaderError) ) { - this.lastSeg = true; - this.error = e; - return 0; - } else throw(e); - } - if((this.page.flag & 1) == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 171, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "next"})); - } - } - var len = this.segments[this.nextSeg++]; - if(len < 255) { - this.lastSeg = true; - this.lastSegWhich = this.nextSeg - 1; - } - if(this.nextSeg >= this.segments.length) { - this.nextSeg = -1; - } - var b = this.bytesInSeg == 0; - this.bytesInSeg = len; - return len; - } - ,startPacket: function() { - while(this.nextSeg == -1) { - this.page.start(this); - if((this.page.flag & 1) != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 193, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "startPacket"})); - } - } - this.lastSeg = false; - this.validBits = 0; - this.bytesInSeg = 0; - } - ,maybeStartPacket: function() { - if(this.nextSeg == -1) { - var eof = false; - var x; - try { - this.inputPosition += 1; - x = this.input.readByte(); - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - if( js_Boot.__instanceof(e,haxe_io_Eof) ) { - eof = true; - x = 0; - } else throw(e); - } - if(eof) { - return false; - } - var tmp; - var tmp1; - var tmp2; - if(x == 79) { - this.inputPosition += 1; - tmp2 = this.input.readByte() != 103; - } else { - tmp2 = true; - } - if(!tmp2) { - this.inputPosition += 1; - tmp1 = this.input.readByte() != 103; - } else { - tmp1 = true; - } - if(!tmp1) { - this.inputPosition += 1; - tmp = this.input.readByte() != 83; - } else { - tmp = true; - } - if(tmp) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 218, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "maybeStartPacket"})); - } - this.page.startWithoutCapturePattern(this); - } - this.startPacket(); - return true; - } - ,readBits: function(n) { - if(this.validBits < 0) { - return 0; - } else if(this.validBits < n) { - if(n > 24) { - return this.readBits(24) + (this.readBits(n - 24) << 24); - } else { - if(this.validBits == 0) { - this.acc = 0; - } - while(true) { - if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) { - this.validBits = -1; - break; - } else { - this.bytesInSeg--; - this.inputPosition += 1; - this.acc = this.acc + (this.input.readByte() << this.validBits); - this.validBits += 8; - } - if(!(this.validBits < n)) { - break; - } - } - if(this.validBits < 0) { - return 0; - } else { - var z = this.acc & (1 << n) - 1; - this.acc = this.acc >>> n; - this.validBits -= n; - return z; - } - } - } else { - var z1 = this.acc & (1 << n) - 1; - this.acc = this.acc >>> n; - this.validBits -= n; - return z1; - } - } - ,readPacketRaw: function() { - if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) { - return -1; - } else { - this.bytesInSeg--; - this.inputPosition += 1; - return this.input.readByte(); - } - } - ,readPacket: function() { - var x; - if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) { - x = -1; - } else { - this.bytesInSeg--; - this.inputPosition += 1; - x = this.input.readByte(); - } - this.validBits = 0; - return x; - } - ,flushPacket: function() { - while(this.bytesInSeg != 0 || !this.lastSeg && this.next() != 0) { - this.bytesInSeg--; - this.inputPosition += 1; - this.input.readByte(); - } - } - ,vorbisValidate: function() { - var header = new haxe_io_Bytes(new ArrayBuffer(6)); - var _g = 0; - while(_g < 6) { - var i = _g++; - var x; - if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) { - x = -1; - } else { - this.bytesInSeg--; - this.inputPosition += 1; - x = this.input.readByte(); - } - this.validBits = 0; - header.b[i] = x & 255; - } - if(header.toString() != "vorbis") { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "VorbisDecodeState.hx", lineNumber : 300, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"})); - } - } - ,firstPageValidate: function() { - if(this.segments.length != 1) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"segmentCount",{ fileName : "VorbisDecodeState.hx", lineNumber : 307, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "firstPageValidate"})); - } - if(this.segments[0] != 30) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{ fileName : "VorbisDecodeState.hx", lineNumber : 310, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "firstPageValidate"})); - } - } - ,startFirstDecode: function() { - this.firstAudioPageOffset = this.inputPosition; - this.firstDecode = true; - } - ,capturePattern: function() { - var tmp; - var tmp1; - var tmp2; - this.inputPosition += 1; - if(this.input.readByte() == 79) { - this.inputPosition += 1; - tmp2 = this.input.readByte() != 103; - } else { - tmp2 = true; - } - if(!tmp2) { - this.inputPosition += 1; - tmp1 = this.input.readByte() != 103; - } else { - tmp1 = true; - } - if(!tmp1) { - this.inputPosition += 1; - tmp = this.input.readByte() != 83; - } else { - tmp = true; - } - if(tmp) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 323, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "capturePattern"})); - } - } - ,skip: function(len) { - this.inputPosition += len; - var this1 = new Array(len); - var vec = this1; - var _g1 = 0; - var _g = len; - while(_g1 < _g) { - var i = _g1++; - vec[i] = this.input.readByte(); - } - } - ,prepHuffman: function() { - if(this.validBits <= 24) { - if(this.validBits == 0) { - this.acc = 0; - } - while(true) { - if(this.bytesInSeg == 0 && (this.lastSeg || this.next() == 0)) { - return; - } else { - this.bytesInSeg--; - this.inputPosition += 1; - this.acc = this.acc + (this.input.readByte() << this.validBits); - this.validBits += 8; - } - if(!(this.validBits <= 24)) { - break; - } - } - } - } - ,decode: function(c) { - if(this.validBits < 10) { - this.prepHuffman(); - } - var i = c.fastHuffman[this.acc & 1023]; - var val; - if(i >= 0) { - var l = c.codewordLengths[i]; - this.acc = this.acc >>> l; - this.validBits -= l; - if(this.validBits < 0) { - this.validBits = 0; - val = -1; - } else { - val = i; - } - } else { - val = this.decodeScalarRaw(c); - } - if(c.sparse) { - val = c.sortedValues[val]; - } - return val; - } - ,decodeRaw: function(c) { - if(this.validBits < 10) { - this.prepHuffman(); - } - var i = c.fastHuffman[this.acc & 1023]; - if(i >= 0) { - var l = c.codewordLengths[i]; - this.acc = this.acc >>> l; - this.validBits -= l; - if(this.validBits < 0) { - this.validBits = 0; - return -1; - } else { - return i; - } - } else { - return this.decodeScalarRaw(c); - } - } - ,isLastByte: function() { - if(this.bytesInSeg == 0) { - return this.lastSeg; - } else { - return false; - } - } - ,finishDecodePacket: function(previousLength,n,r) { - var left = r.left.start; - var currentLocValid = false; - var n2 = n >> 1; - if(this.firstDecode) { - this.currentLoc = -n2; - this.discardSamplesDeferred = n - r.right.end; - currentLocValid = true; - this.firstDecode = false; - } else if(this.discardSamplesDeferred != 0) { - r.left.start += this.discardSamplesDeferred; - left = r.left.start; - this.discardSamplesDeferred = 0; - } else { - var tmp = previousLength == 0 && currentLocValid; - } - if(this.lastSegWhich == this.endSegWithKnownLoc) { - if(currentLocValid && (this.page.flag & 4) != 0) { - var currentEnd = this.knownLocForPacket - (n - r.right.end); - if(currentEnd < this.currentLoc + r.right.end) { - var len = currentEnd < this.currentLoc ? 0 : currentEnd - this.currentLoc; - len += r.left.start; - this.currentLoc += len; - return { len : len, left : left, right : r.right.start}; - } - } - this.currentLoc = this.knownLocForPacket - (n2 - r.left.start); - currentLocValid = true; - } - if(currentLocValid) { - this.currentLoc += r.right.start - r.left.start; - } - return { len : r.right.end, left : left, right : r.right.start}; - } - ,readInt32: function() { - this.inputPosition += 4; - return this.input.readInt32(); - } - ,readByte: function() { - this.inputPosition += 1; - return this.input.readByte(); - } - ,read: function(n) { - this.inputPosition += n; - var this1 = new Array(n); - var vec = this1; - var _g1 = 0; - var _g = n; - while(_g1 < _g) { - var i = _g1++; - vec[i] = this.input.readByte(); - } - return vec; - } - ,readBytes: function(n) { - this.inputPosition += n; - return this.input.read(n); - } - ,readString: function(n) { - this.inputPosition += n; - return this.input.readString(n); - } - ,getSampleNumber: function(seekFunc,inputLength) { - var restoreOffset = this.inputPosition; - var previousSafe = _$UInt_UInt_$Impl_$.gte(inputLength,65536) && _$UInt_UInt_$Impl_$.gte(inputLength - 65536,this.firstAudioPageOffset) ? inputLength - 65536 : this.firstAudioPageOffset; - seekFunc(this.inputPosition = previousSafe); - var end = 0; - var last = false; - var _g = this.findPage(seekFunc,inputLength); - switch(_g[1]) { - case 0: - var l = _g[3]; - var e = _g[2]; - end = e; - last = l; - break; - case 1: - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 518, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "getSampleNumber"})); - break; - } - var lastPageLoc = this.inputPosition; - try { - while(!last) { - seekFunc(this.inputPosition = end); - var _g1 = this.findPage(seekFunc,inputLength); - switch(_g1[1]) { - case 0: - var l1 = _g1[3]; - var e1 = _g1[2]; - end = e1; - last = l1; - break; - case 1: - throw "__break__"; - break; - } - previousSafe = lastPageLoc + 1; - lastPageLoc = this.inputPosition; - } - } catch( e ) { if( e != "__break__" ) throw e; } - seekFunc(this.inputPosition = lastPageLoc); - this.inputPosition += 6; - var this1 = new Array(6); - var vec = this1; - var _g11 = 0; - var _g2 = 6; - while(_g11 < _g2) { - var i = _g11++; - vec[i] = this.input.readByte(); - } - var vorbisHeader = vec; - this.inputPosition += 4; - var lo = this.input.readInt32(); - this.inputPosition += 4; - var hi = this.input.readInt32(); - if(lo == -1 && hi == -1 || hi > 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 552, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "getSampleNumber"})); - } - this.pLast = new kha_audio2_ogg_vorbis_data_ProbedPage(); - this.pLast.pageStart = lastPageLoc; - this.pLast.pageEnd = end; - this.pLast.lastDecodedSample = lo; - this.pLast.firstDecodedSample = null; - this.pLast.afterPreviousPageStart = previousSafe; - seekFunc(this.inputPosition = restoreOffset); - return lo; - } - ,forcePageResync: function() { - this.nextSeg = -1; - } - ,setInputOffset: function(seekFunc,n) { - seekFunc(this.inputPosition = n); - } - ,findPage: function(seekFunc,inputLength) { - try { - while(true) { - this.inputPosition += 1; - var n = this.input.readByte(); - if(n == 79) { - var retryLoc = this.inputPosition; - if(retryLoc - 25 > inputLength) { - return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound; - } - var tmp; - var tmp1; - this.inputPosition += 1; - if(this.input.readByte() == 103) { - this.inputPosition += 1; - tmp1 = this.input.readByte() != 103; - } else { - tmp1 = true; - } - if(!tmp1) { - this.inputPosition += 1; - tmp = this.input.readByte() != 83; - } else { - tmp = true; - } - if(tmp) { - continue; - } - var this1 = new Array(27); - var header = this1; - header[0] = 79; - header[1] = 103; - header[2] = 103; - header[3] = 83; - var _g = 4; - while(_g < 27) { - var i = _g++; - this.inputPosition += 1; - header[i] = this.input.readByte(); - } - if(header[4] != 0) { - seekFunc(this.inputPosition = retryLoc); - continue; - } - var goal = header[22] + (header[23] << 8) + (header[24] << 16) + (header[25] << 24); - var _g1 = 22; - while(_g1 < 26) { - var i1 = _g1++; - header[i1] = 0; - } - var crc = 0; - var _g2 = 0; - while(_g2 < 27) { - var i2 = _g2++; - crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[header[i2] ^ crc >>> 24]; - } - var len = 0; - try { - var _g11 = 0; - var _g3 = header[26]; - while(_g11 < _g3) { - var i3 = _g11++; - this.inputPosition += 1; - var s = this.input.readByte(); - crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[s ^ crc >>> 24]; - len += s; - } - var _g12 = 0; - var _g4 = len; - while(_g12 < _g4) { - var i4 = _g12++; - this.inputPosition += 1; - var $byte = this.input.readByte(); - crc = crc << 8 ^ kha_audio2_ogg_tools_Crc32.table[$byte ^ crc >>> 24]; - } - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - if( js_Boot.__instanceof(e,haxe_io_Eof) ) { - return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound; - } else throw(e); - } - if(crc == goal) { - var end = this.inputPosition; - seekFunc(this.inputPosition = retryLoc - 1); - return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.Found(end,(header[5] & 4) != 0); - } - } - } - } catch( e1 ) { - if (e1 instanceof js__$Boot_HaxeError) e1 = e1.val; - if( js_Boot.__instanceof(e1,haxe_io_Eof) ) { - return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound; - } else throw(e1); - } - } - ,analyzePage: function(seekFunc,h) { - var z = new kha_audio2_ogg_vorbis_data_ProbedPage(); - var this1 = new Array(255); - var packetType = this1; - z.pageStart = this.inputPosition; - this.inputPosition += 27; - var this2 = new Array(27); - var vec = this2; - var _g1 = 0; - var _g = 27; - while(_g1 < _g) { - var i = _g1++; - vec[i] = this.input.readByte(); - } - var pageHeader = vec; - var n = pageHeader[26]; - this.inputPosition += n; - var this3 = new Array(n); - var vec1 = this3; - var _g11 = 0; - var _g2 = n; - while(_g11 < _g2) { - var i1 = _g11++; - vec1[i1] = this.input.readByte(); - } - var lacing = vec1; - var len = 0; - var _g12 = 0; - var _g3 = pageHeader[26]; - while(_g12 < _g3) { - var i2 = _g12++; - len += lacing[i2]; - } - z.pageEnd = z.pageStart + 27 + pageHeader[26] + len; - z.lastDecodedSample = pageHeader[6] + (pageHeader[7] << 8) + (pageHeader[8] << 16) + (pageHeader[9] << 16); - if((pageHeader[5] & 4) != 0) { - z.firstDecodedSample = null; - seekFunc(this.inputPosition = z.pageStart); - return z; - } - var numPacket = 0; - var packetStart = (pageHeader[5] & 1) == 0; - var modeCount = h.modes.length; - var _g13 = 0; - var _g4 = pageHeader[26]; - while(_g13 < _g4) { - var i3 = _g13++; - if(packetStart) { - if(lacing[i3] == 0) { - seekFunc(this.inputPosition = z.pageStart); - return null; - } - this.inputPosition += 1; - var n1 = this.input.readByte(); - if((n1 & 1) != 0) { - seekFunc(this.inputPosition = z.pageStart); - return null; - } - n1 >>= 1; - var n2 = modeCount - 1; - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var b = n2 < 16384 ? n2 < 16 ? log2_4[n2] : n2 < 512 ? 5 + log2_4[n2 >> 5] : 10 + log2_4[n2 >> 10] : n2 < 16777216 ? n2 < 524288 ? 15 + log2_4[n2 >> 15] : 20 + log2_4[n2 >> 20] : n2 < 536870912 ? 25 + log2_4[n2 >> 25] : n2 < -2147483648 ? 30 + log2_4[n2 >> 30] : 0; - n1 &= (1 << b) - 1; - if(n1 >= modeCount) { - seekFunc(this.inputPosition = z.pageStart); - return null; - } - packetType[numPacket++] = h.modes[n1].blockflag; - var len1 = lacing[i3] - 1; - this.inputPosition += len1; - var this4 = new Array(len1); - var vec2 = this4; - var _g14 = 0; - var _g5 = len1; - while(_g14 < _g5) { - var i4 = _g14++; - vec2[i4] = this.input.readByte(); - } - } else { - var len2 = lacing[i3]; - this.inputPosition += len2; - var this5 = new Array(len2); - var vec3 = this5; - var _g15 = 0; - var _g6 = len2; - while(_g15 < _g6) { - var i5 = _g15++; - vec3[i5] = this.input.readByte(); - } - } - packetStart = lacing[i3] < 255; - } - var samples = 0; - if(numPacket > 1) { - samples += packetType[numPacket - 1] ? h.blocksize1 : h.blocksize0; - } - var i6 = numPacket - 2; - while(i6 >= 1) { - --i6; - if(packetType[i6]) { - if(packetType[i6 + 1]) { - samples += h.blocksize1 >> 1; - } else { - samples += (h.blocksize1 - h.blocksize0 >> 2) + (h.blocksize0 >> 1); - } - } else { - samples += h.blocksize0 >> 1; - } - --i6; - } - z.firstDecodedSample = z.lastDecodedSample - samples; - seekFunc(this.inputPosition = z.pageStart); - return z; - } - ,decodeScalarRaw: function(c) { - this.prepHuffman(); - var b = c.sortedCodewords != null || c.codewords != null; - var codewordLengths = c.codewordLengths; - var codewords = c.codewords; - var sortedCodewords = c.sortedCodewords; - if(c.entries > 8 ? sortedCodewords != null : codewords != null) { - var n = this.acc; - n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1; - n = (n & -858993460) >>> 2 | (n & 858993459) << 2; - n = (n & -252645136) >>> 4 | (n & 252645135) << 4; - n = (n & -16711936) >>> 8 | (n & 16711935) << 8; - var code = n >>> 16 | n << 16; - var x = 0; - var n1 = c.sortedEntries; - while(n1 > 1) { - var m = x + (n1 >> 1); - if(_$UInt_UInt_$Impl_$.gte(code,sortedCodewords[m])) { - x = m; - n1 -= n1 >> 1; - } else { - n1 >>= 1; - } - } - if(!c.sparse) { - x = c.sortedValues[x]; - } - var len = codewordLengths[x]; - if(this.validBits >= len) { - this.acc = this.acc >>> len; - this.validBits -= len; - return x; - } - this.validBits = 0; - return -1; - } - var b1 = !c.sparse; - var _g1 = 0; - var _g = c.entries; - while(_g1 < _g) { - var i = _g1++; - var cl = codewordLengths[i]; - if(cl == 255) { - continue; - } - if(codewords[i] == (this.acc & (1 << cl) - 1)) { - if(this.validBits >= cl) { - this.acc = this.acc >>> cl; - this.validBits -= cl; - return i; - } - this.validBits = 0; - return -1; - } - } - this.error = new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 846, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "decodeScalarRaw"}); - this.validBits = 0; - return -1; - } - ,__class__: kha_audio2_ogg_vorbis_VorbisDecodeState -}; -var kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult = $hxClasses["kha.audio2.ogg.vorbis._VorbisDecodeState.FindPageResult"] = { __ename__ : true, __constructs__ : ["Found","NotFound"] }; -kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.Found = function(end,last) { var $x = ["Found",0,end,last]; $x.__enum__ = kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult; $x.toString = $estr; return $x; }; -kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound = ["NotFound",1]; -kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound.toString = $estr; -kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound.__enum__ = kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult; -var kha_audio2_ogg_vorbis_VorbisDecoder = function(header,decodeState) { - this.header = header; - this.decodeState = decodeState; - this.totalSample = null; - this.currentSample = 0; - this.previousLength = 0; - var length = header.channel; - var this1 = new Array(length); - this.channelBuffers = this1; - var length1 = header.channel; - var this2 = new Array(length1); - this.previousWindow = this2; - var length2 = header.channel; - var this3 = new Array(length2); - this.finalY = this3; - var _g1 = 0; - var _g = header.channel; - while(_g1 < _g) { - var i = _g1++; - var this4 = this.channelBuffers; - var len = header.blocksize1; - var this5 = new Array(len); - var vec = this5; - this4[i] = vec; - var this6 = this.previousWindow; - var len1 = header.blocksize1 / 2 | 0; - var this7 = new Array(len1); - var vec1 = this7; - this6[i] = vec1; - this.finalY[i] = []; - } - var this8 = new Array(2); - this.a = this8; - var this9 = new Array(2); - this.b = this9; - var this10 = new Array(2); - this.c = this10; - var this11 = new Array(2); - this.window = this11; - var this12 = new Array(2); - this.bitReverseData = this12; - this.initBlocksize(0,header.blocksize0); - this.initBlocksize(1,header.blocksize1); -}; -$hxClasses["kha.audio2.ogg.vorbis.VorbisDecoder"] = kha_audio2_ogg_vorbis_VorbisDecoder; -kha_audio2_ogg_vorbis_VorbisDecoder.__name__ = true; -kha_audio2_ogg_vorbis_VorbisDecoder.start = function(input) { - var decodeState = new kha_audio2_ogg_vorbis_VorbisDecodeState(input); - var header = kha_audio2_ogg_vorbis_data_Header.read(decodeState); - var decoder = new kha_audio2_ogg_vorbis_VorbisDecoder(header,decodeState); - decodeState.startFirstDecode(); - decoder.pumpFirstFrame(); - return decoder; -}; -kha_audio2_ogg_vorbis_VorbisDecoder.prototype = { - previousWindow: null - ,previousLength: null - ,finalY: null - ,a: null - ,b: null - ,c: null - ,window: null - ,bitReverseData: null - ,channelBuffers: null - ,channelBufferStart: null - ,channelBufferEnd: null - ,header: null - ,currentSample: null - ,totalSample: null - ,decodeState: null - ,read: function(output,samples,channels,sampleRate,useFloat) { - var b = this.header.sampleRate; - if((_$UInt_UInt_$Impl_$.toFloat(sampleRate) % _$UInt_UInt_$Impl_$.toFloat(b) | 0) != 0) { - throw new js__$Boot_HaxeError("Unsupported sampleRate : can't convert " + Std.string(_$UInt_UInt_$Impl_$.toFloat(this.header.sampleRate)) + " to " + sampleRate); - } - if(channels % this.header.channel != 0) { - throw new js__$Boot_HaxeError("Unsupported channels : can't convert " + this.header.channel + " to " + channels); - } - var b1 = this.header.sampleRate; - var sampleRepeat = _$UInt_UInt_$Impl_$.toFloat(sampleRate) / _$UInt_UInt_$Impl_$.toFloat(b1) | 0; - var channelRepeat = channels / this.header.channel | 0; - var n = 0; - var len = Math.floor(samples / sampleRepeat); - if(this.totalSample != null && len > this.totalSample - this.currentSample) { - len = this.totalSample - this.currentSample; - } - var index = 0; - while(n < len) { - var k = this.channelBufferEnd - this.channelBufferStart; - if(k >= len - n) { - k = len - n; - } - var _g1 = this.channelBufferStart; - var _g = this.channelBufferStart + k; - while(_g1 < _g) { - var j = _g1++; - var _g3 = 0; - var _g2 = sampleRepeat; - while(_g3 < _g2) { - var sr = _g3++; - var _g5 = 0; - var _g4 = this.header.channel; - while(_g5 < _g4) { - var i = _g5++; - var _g7 = 0; - var _g6 = channelRepeat; - while(_g7 < _g6) { - var cr = _g7++; - var value = this.channelBuffers[i][j]; - if(value > 1) { - value = 1; - } else if(value < -1) { - value = -1; - } - if(useFloat) { - output[index] = value; - ++index; - } - } - } - } - } - n += k; - this.channelBufferStart += k; - if(n == len || this.getFrameFloat() == 0) { - break; - } - } - var _g11 = n; - var _g8 = len; - while(_g11 < _g8) { - var j1 = _g11++; - var _g31 = 0; - var _g21 = sampleRepeat; - while(_g31 < _g21) { - var sr1 = _g31++; - var _g51 = 0; - var _g41 = this.header.channel; - while(_g51 < _g41) { - var i1 = _g51++; - var _g71 = 0; - var _g61 = channelRepeat; - while(_g71 < _g61) { - var cr1 = _g71++; - if(useFloat) { - output[index] = 0; - ++index; - } - } - } - } - } - this.currentSample += len; - return len * sampleRepeat; - } - ,skipSamples: function(len) { - var n = 0; - if(this.totalSample != null && len > this.totalSample - this.currentSample) { - len = this.totalSample - this.currentSample; - } - while(n < len) { - var k = this.channelBufferEnd - this.channelBufferStart; - if(k >= len - n) { - k = len - n; - } - n += k; - this.channelBufferStart += k; - if(n == len || this.getFrameFloat() == 0) { - break; - } - } - this.currentSample += len; - return len; - } - ,setupSampleNumber: function(seekFunc,inputLength) { - if(this.totalSample == null) { - this.totalSample = this.decodeState.getSampleNumber(seekFunc,inputLength); - } - } - ,seek: function(seekFunc,inputLength,sampleNumber) { - if(this.currentSample == sampleNumber) { - return; - } - if(this.totalSample == null) { - this.setupSampleNumber(seekFunc,inputLength); - if(this.totalSample == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{ fileName : "VorbisDecoder.hx", lineNumber : 187, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"})); - } - } - if(sampleNumber < 0) { - sampleNumber = 0; - } - var p0 = this.decodeState.pFirst; - var p1 = this.decodeState.pLast; - if(sampleNumber >= p1.lastDecodedSample) { - sampleNumber = p1.lastDecodedSample - 1; - } - if(sampleNumber < p0.lastDecodedSample) { - this.seekFrameFromPage(seekFunc,p0.pageStart,0,sampleNumber); - } else { - var attempts = 0; - while(p0.pageEnd < p1.pageStart) { - var startOffset = p0.pageEnd; - var endOffset = p1.afterPreviousPageStart; - var startSample = p0.lastDecodedSample; - var endSample = p1.lastDecodedSample; - if(startSample == null || endSample == null) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 219, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"})); - } - if(_$UInt_UInt_$Impl_$.gt(endOffset,startOffset + 4000)) { - endOffset = endOffset - 4000; - } - var probe = startOffset + Math.floor(_$UInt_UInt_$Impl_$.toFloat(endOffset - startOffset) / _$UInt_UInt_$Impl_$.toFloat(endSample - startSample) * (sampleNumber - startSample)); - if(attempts >= 4) { - var probe2 = startOffset + (endOffset - startOffset >>> 1); - if(attempts >= 8) { - probe = probe2; - } else if(_$UInt_UInt_$Impl_$.gt(probe2,probe)) { - probe = probe + (probe2 - probe >>> 1); - } else { - probe = probe2 + (probe - probe2 >>> 1); - } - } - ++attempts; - seekFunc(this.decodeState.inputPosition = probe); - var _g = this.decodeState.findPage(seekFunc,inputLength); - switch(_g[1]) { - case 0: - break; - case 1: - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 249, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"})); - break; - } - var q = this.decodeState.analyzePage(seekFunc,this.header); - if(q == null) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 255, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"})); - } - q.afterPreviousPageStart = probe; - if(q.pageStart == p1.pageStart) { - p1 = q; - continue; - } - if(sampleNumber < q.lastDecodedSample) { - p1 = q; - } else { - p0 = q; - } - } - if(p0.lastDecodedSample <= sampleNumber && sampleNumber < p1.lastDecodedSample) { - this.seekFrameFromPage(seekFunc,p1.pageStart,p0.lastDecodedSample,sampleNumber); - } else { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 275, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "seek"})); - } - } - } - ,seekFrameFromPage: function(seekFunc,pageStart,firstSample,targetSample) { - var frame = 0; - var frameStart = firstSample; - seekFunc(this.decodeState.inputPosition = pageStart); - this.decodeState.nextSeg = -1; - var leftEnd = 0; - var leftStart = 0; - var prevState = null; - var lastState = null; - while(true) { - prevState = lastState; - lastState = this.decodeState.clone(seekFunc); - var initialResult = this.decodeInitial(); - if(initialResult == null) { - lastState = prevState; - break; - } - leftStart = initialResult.left.start; - leftEnd = initialResult.left.end; - var start = frame == 0 ? leftEnd : leftStart; - if(targetSample < frameStart + initialResult.right.start - start) { - break; - } - var _this = this.decodeState; - while(_this.bytesInSeg != 0 || !_this.lastSeg && _this.next() != 0) { - _this.bytesInSeg--; - _this.inputPosition += 1; - _this.input.readByte(); - } - frameStart += initialResult.right.start - start; - ++frame; - } - this.decodeState = lastState; - seekFunc(this.decodeState.inputPosition); - this.previousLength = 0; - this.pumpFirstFrame(); - this.currentSample = frameStart; - this.skipSamples(targetSample - frameStart); - } - ,clone: function(seekFunc) { - var decoder = Type.createEmptyInstance(kha_audio2_ogg_vorbis_VorbisDecoder); - decoder.currentSample = this.currentSample; - decoder.totalSample = this.totalSample; - decoder.previousLength = this.previousLength; - decoder.channelBufferStart = this.channelBufferStart; - decoder.channelBufferEnd = this.channelBufferEnd; - decoder.a = this.a; - decoder.b = this.b; - decoder.c = this.c; - decoder.window = this.window; - decoder.bitReverseData = this.bitReverseData; - decoder.header = this.header; - decoder.decodeState = this.decodeState.clone(seekFunc); - var length = this.header.channel; - var this1 = new Array(length); - decoder.channelBuffers = this1; - var length1 = this.header.channel; - var this2 = new Array(length1); - decoder.previousWindow = this2; - var length2 = this.header.channel; - var this3 = new Array(length2); - decoder.finalY = this3; - var _g1 = 0; - var _g = this.header.channel; - while(_g1 < _g) { - var i = _g1++; - decoder.channelBuffers[i] = kha_audio2_ogg_vorbis_VorbisTools.copyVector(this.channelBuffers[i]); - decoder.previousWindow[i] = kha_audio2_ogg_vorbis_VorbisTools.copyVector(this.previousWindow[i]); - decoder.finalY[i] = Lambda.array(this.finalY[i]); - } - return decoder; - } - ,ensurePosition: function(seekFunc) { - seekFunc(this.decodeState.inputPosition); - } - ,getFrameFloat: function() { - var result = this.decodePacket(); - if(result == null) { - this.channelBufferStart = this.channelBufferEnd = 0; - return 0; - } - var len = this.finishFrame(result); - this.channelBufferStart = result.left; - this.channelBufferEnd = result.left + len; - return len; - } - ,pumpFirstFrame: function() { - this.finishFrame(this.decodePacket()); - } - ,finishFrame: function(r) { - var len = r.len; - var right = r.right; - var left = r.left; - if(this.previousLength != 0) { - var n = this.previousLength; - var w = this.getWindow(n); - var _g1 = 0; - var _g = this.header.channel; - while(_g1 < _g) { - var i = _g1++; - var cb = this.channelBuffers[i]; - var pw = this.previousWindow[i]; - var _g3 = 0; - var _g2 = n; - while(_g3 < _g2) { - var j = _g3++; - cb[left + j] = cb[left + j] * w[j] + pw[j] * w[n - 1 - j]; - } - } - } - var prev = this.previousLength; - this.previousLength = len - right; - var _g11 = 0; - var _g4 = this.header.channel; - while(_g11 < _g4) { - var i1 = _g11++; - var pw1 = this.previousWindow[i1]; - var cb1 = this.channelBuffers[i1]; - var _g31 = 0; - var _g21 = len - right; - while(_g31 < _g21) { - var j1 = _g31++; - pw1[j1] = cb1[right + j1]; - } - } - if(prev == 0) { - return 0; - } - if(len < right) { - right = len; - } - return right - left; - } - ,getWindow: function(len) { - len <<= 1; - if(len == this.header.blocksize0) { - return this.window[0]; - } else if(len == this.header.blocksize1) { - return this.window[1]; - } else { - return null; - } - } - ,initBlocksize: function(bs,n) { - var n2 = n >> 1; - var n4 = n >> 2; - var n8 = n >> 3; - var this1 = this.a; - var this2 = new Array(n2); - this1[bs] = this2; - var this3 = this.b; - var this4 = new Array(n2); - this3[bs] = this4; - var this5 = this.c; - var this6 = new Array(n4); - this5[bs] = this6; - var this7 = this.window; - var this8 = new Array(n2); - this7[bs] = this8; - var this9 = this.bitReverseData; - var this10 = new Array(n8); - this9[bs] = this10; - kha_audio2_ogg_vorbis_VorbisTools.computeTwiddleFactors(n,this.a[bs],this.b[bs],this.c[bs]); - kha_audio2_ogg_vorbis_VorbisTools.computeWindow(n,this.window[bs]); - kha_audio2_ogg_vorbis_VorbisTools.computeBitReverse(n,this.bitReverseData[bs]); - } - ,inverseMdct: function(buffer,n,blocktype) { - var bt = blocktype ? 1 : 0; - var a = this.a[bt]; - var b = this.b[bt]; - var c = this.c[bt]; - var bitReverse = this.bitReverseData[bt]; - var n2 = n >> 1; - var n4 = n >> 2; - var n8 = n >> 3; - var this1 = new Array(n2); - var buf2 = this1; - var dOffset = n2 - 2; - var aaOffset = 0; - var eOffset = 0; - var eStopOffset = n2; - while(eOffset != eStopOffset) { - buf2[dOffset + 1] = buffer[eOffset] * a[aaOffset] - buffer[eOffset + 2] * a[aaOffset + 1]; - buf2[dOffset] = buffer[eOffset] * a[aaOffset + 1] + buffer[eOffset + 2] * a[aaOffset]; - dOffset -= 2; - aaOffset += 2; - eOffset += 4; - } - eOffset = n2 - 3; - while(dOffset >= 0) { - buf2[dOffset + 1] = -buffer[eOffset + 2] * a[aaOffset] - -buffer[eOffset] * a[aaOffset + 1]; - buf2[dOffset] = -buffer[eOffset + 2] * a[aaOffset + 1] + -buffer[eOffset] * a[aaOffset]; - dOffset -= 2; - aaOffset += 2; - eOffset -= 4; - } - var u = buffer; - var v = buf2; - var aaOffset1 = n2 - 8; - var eOffset0 = n4; - var eOffset1 = 0; - var dOffset0 = n4; - var dOffset1 = 0; - while(aaOffset1 >= 0) { - var v41_21 = v[eOffset0 + 1] - v[eOffset1 + 1]; - var v40_20 = v[eOffset0] - v[eOffset1]; - u[dOffset0 + 1] = v[eOffset0 + 1] + v[eOffset1 + 1]; - u[dOffset0] = v[eOffset0] + v[eOffset1]; - u[dOffset1 + 1] = v41_21 * a[aaOffset1 + 4] - v40_20 * a[aaOffset1 + 5]; - u[dOffset1] = v40_20 * a[aaOffset1 + 4] + v41_21 * a[aaOffset1 + 5]; - v41_21 = v[eOffset0 + 3] - v[eOffset1 + 3]; - v40_20 = v[eOffset0 + 2] - v[eOffset1 + 2]; - u[dOffset0 + 3] = v[eOffset0 + 3] + v[eOffset1 + 3]; - u[dOffset0 + 2] = v[eOffset0 + 2] + v[eOffset1 + 2]; - u[dOffset1 + 3] = v41_21 * a[aaOffset1] - v40_20 * a[aaOffset1 + 1]; - u[dOffset1 + 2] = v40_20 * a[aaOffset1] + v41_21 * a[aaOffset1 + 1]; - aaOffset1 -= 8; - dOffset0 += 4; - dOffset1 += 4; - eOffset0 += 4; - eOffset1 += 4; - } - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var ld = (n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0) - 1; - var i_off = n2 - 1 - n4 * 0; - var eeOffset0 = i_off; - var eeOffset2 = i_off + -(n >> 3); - var aOffset = 0; - var i = (n >> 4 >> 2) + 1; - while(--i > 0) { - var k00_20 = u[eeOffset0] - u[eeOffset2]; - var k01_21 = u[eeOffset0 + -1] - u[eeOffset2 + -1]; - var _g = eeOffset0; - var _g1 = u; - _g1[_g] = _g1[_g] + u[eeOffset2]; - var _g2 = eeOffset0 + -1; - var _g11 = u; - _g11[_g2] = _g11[_g2] + u[eeOffset2 + -1]; - u[eeOffset2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -1] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = u[eeOffset0 + -2] - u[eeOffset2 + -2]; - k01_21 = u[eeOffset0 + -3] - u[eeOffset2 + -3]; - var _g3 = eeOffset0 + -2; - var _g12 = u; - _g12[_g3] = _g12[_g3] + u[eeOffset2 + -2]; - var _g4 = eeOffset0 + -3; - var _g13 = u; - _g13[_g4] = _g13[_g4] + u[eeOffset2 + -3]; - u[eeOffset2 + -2] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -3] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = u[eeOffset0 + -4] - u[eeOffset2 + -4]; - k01_21 = u[eeOffset0 + -5] - u[eeOffset2 + -5]; - var _g5 = eeOffset0 + -4; - var _g14 = u; - _g14[_g5] = _g14[_g5] + u[eeOffset2 + -4]; - var _g6 = eeOffset0 + -5; - var _g15 = u; - _g15[_g6] = _g15[_g6] + u[eeOffset2 + -5]; - u[eeOffset2 + -4] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -5] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - k00_20 = u[eeOffset0 + -6] - u[eeOffset2 + -6]; - k01_21 = u[eeOffset0 + -7] - u[eeOffset2 + -7]; - var _g7 = eeOffset0 + -6; - var _g16 = u; - _g16[_g7] = _g16[_g7] + u[eeOffset2 + -6]; - var _g8 = eeOffset0 + -7; - var _g17 = u; - _g17[_g8] = _g17[_g8] + u[eeOffset2 + -7]; - u[eeOffset2 + -6] = k00_20 * a[aOffset] - k01_21 * a[aOffset + 1]; - u[eeOffset2 + -7] = k01_21 * a[aOffset] + k00_20 * a[aOffset + 1]; - aOffset += 8; - eeOffset0 -= 8; - eeOffset2 -= 8; - } - var i_off1 = n2 - 1 - n4; - var eeOffset01 = i_off1; - var eeOffset21 = i_off1 + -(n >> 3); - var aOffset1 = 0; - var i1 = (n >> 4 >> 2) + 1; - while(--i1 > 0) { - var k00_201 = u[eeOffset01] - u[eeOffset21]; - var k01_211 = u[eeOffset01 + -1] - u[eeOffset21 + -1]; - var _g9 = eeOffset01; - var _g18 = u; - _g18[_g9] = _g18[_g9] + u[eeOffset21]; - var _g10 = eeOffset01 + -1; - var _g19 = u; - _g19[_g10] = _g19[_g10] + u[eeOffset21 + -1]; - u[eeOffset21] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -1] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - k00_201 = u[eeOffset01 + -2] - u[eeOffset21 + -2]; - k01_211 = u[eeOffset01 + -3] - u[eeOffset21 + -3]; - var _g20 = eeOffset01 + -2; - var _g110 = u; - _g110[_g20] = _g110[_g20] + u[eeOffset21 + -2]; - var _g21 = eeOffset01 + -3; - var _g111 = u; - _g111[_g21] = _g111[_g21] + u[eeOffset21 + -3]; - u[eeOffset21 + -2] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -3] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - k00_201 = u[eeOffset01 + -4] - u[eeOffset21 + -4]; - k01_211 = u[eeOffset01 + -5] - u[eeOffset21 + -5]; - var _g22 = eeOffset01 + -4; - var _g112 = u; - _g112[_g22] = _g112[_g22] + u[eeOffset21 + -4]; - var _g23 = eeOffset01 + -5; - var _g113 = u; - _g113[_g23] = _g113[_g23] + u[eeOffset21 + -5]; - u[eeOffset21 + -4] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -5] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - k00_201 = u[eeOffset01 + -6] - u[eeOffset21 + -6]; - k01_211 = u[eeOffset01 + -7] - u[eeOffset21 + -7]; - var _g24 = eeOffset01 + -6; - var _g114 = u; - _g114[_g24] = _g114[_g24] + u[eeOffset21 + -6]; - var _g25 = eeOffset01 + -7; - var _g115 = u; - _g115[_g25] = _g115[_g25] + u[eeOffset21 + -7]; - u[eeOffset21 + -6] = k00_201 * a[aOffset1] - k01_211 * a[aOffset1 + 1]; - u[eeOffset21 + -7] = k01_211 * a[aOffset1] + k00_201 * a[aOffset1 + 1]; - aOffset1 += 8; - eeOffset01 -= 8; - eeOffset21 -= 8; - } - var d0 = n2 - 1 - n8 * 0; - var aOffset2 = 0; - var eOffset01 = d0; - var eOffset2 = d0 + -(n >> 4); - var i2 = (n >> 5 >> 2) + 1; - while(--i2 > 0) { - var k00_202 = u[eOffset01] - u[eOffset2]; - var k01_212 = u[eOffset01 + -1] - u[eOffset2 + -1]; - var _g26 = eOffset01; - var _g116 = u; - _g116[_g26] = _g116[_g26] + u[eOffset2]; - var _g27 = eOffset01 + -1; - var _g117 = u; - _g117[_g27] = _g117[_g27] + u[eOffset2 + -1]; - u[eOffset2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -1] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - aOffset2 += 16; - k00_202 = u[eOffset01 + -2] - u[eOffset2 + -2]; - k01_212 = u[eOffset01 + -3] - u[eOffset2 + -3]; - var _g28 = eOffset01 + -2; - var _g118 = u; - _g118[_g28] = _g118[_g28] + u[eOffset2 + -2]; - var _g29 = eOffset01 + -3; - var _g119 = u; - _g119[_g29] = _g119[_g29] + u[eOffset2 + -3]; - u[eOffset2 + -2] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -3] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - aOffset2 += 16; - k00_202 = u[eOffset01 + -4] - u[eOffset2 + -4]; - k01_212 = u[eOffset01 + -5] - u[eOffset2 + -5]; - var _g30 = eOffset01 + -4; - var _g120 = u; - _g120[_g30] = _g120[_g30] + u[eOffset2 + -4]; - var _g31 = eOffset01 + -5; - var _g121 = u; - _g121[_g31] = _g121[_g31] + u[eOffset2 + -5]; - u[eOffset2 + -4] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -5] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - aOffset2 += 16; - k00_202 = u[eOffset01 + -6] - u[eOffset2 + -6]; - k01_212 = u[eOffset01 + -7] - u[eOffset2 + -7]; - var _g32 = eOffset01 + -6; - var _g122 = u; - _g122[_g32] = _g122[_g32] + u[eOffset2 + -6]; - var _g33 = eOffset01 + -7; - var _g123 = u; - _g123[_g33] = _g123[_g33] + u[eOffset2 + -7]; - u[eOffset2 + -6] = k00_202 * a[aOffset2] - k01_212 * a[aOffset2 + 1]; - u[eOffset2 + -7] = k01_212 * a[aOffset2] + k00_202 * a[aOffset2 + 1]; - eOffset01 -= 8; - eOffset2 -= 8; - aOffset2 += 16; - } - var d01 = n2 - 1 - n8; - var aOffset3 = 0; - var eOffset02 = d01; - var eOffset21 = d01 + -(n >> 4); - var i3 = (n >> 5 >> 2) + 1; - while(--i3 > 0) { - var k00_203 = u[eOffset02] - u[eOffset21]; - var k01_213 = u[eOffset02 + -1] - u[eOffset21 + -1]; - var _g34 = eOffset02; - var _g124 = u; - _g124[_g34] = _g124[_g34] + u[eOffset21]; - var _g35 = eOffset02 + -1; - var _g125 = u; - _g125[_g35] = _g125[_g35] + u[eOffset21 + -1]; - u[eOffset21] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -1] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - aOffset3 += 16; - k00_203 = u[eOffset02 + -2] - u[eOffset21 + -2]; - k01_213 = u[eOffset02 + -3] - u[eOffset21 + -3]; - var _g36 = eOffset02 + -2; - var _g126 = u; - _g126[_g36] = _g126[_g36] + u[eOffset21 + -2]; - var _g37 = eOffset02 + -3; - var _g127 = u; - _g127[_g37] = _g127[_g37] + u[eOffset21 + -3]; - u[eOffset21 + -2] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -3] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - aOffset3 += 16; - k00_203 = u[eOffset02 + -4] - u[eOffset21 + -4]; - k01_213 = u[eOffset02 + -5] - u[eOffset21 + -5]; - var _g38 = eOffset02 + -4; - var _g128 = u; - _g128[_g38] = _g128[_g38] + u[eOffset21 + -4]; - var _g39 = eOffset02 + -5; - var _g129 = u; - _g129[_g39] = _g129[_g39] + u[eOffset21 + -5]; - u[eOffset21 + -4] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -5] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - aOffset3 += 16; - k00_203 = u[eOffset02 + -6] - u[eOffset21 + -6]; - k01_213 = u[eOffset02 + -7] - u[eOffset21 + -7]; - var _g40 = eOffset02 + -6; - var _g130 = u; - _g130[_g40] = _g130[_g40] + u[eOffset21 + -6]; - var _g41 = eOffset02 + -7; - var _g131 = u; - _g131[_g41] = _g131[_g41] + u[eOffset21 + -7]; - u[eOffset21 + -6] = k00_203 * a[aOffset3] - k01_213 * a[aOffset3 + 1]; - u[eOffset21 + -7] = k01_213 * a[aOffset3] + k00_203 * a[aOffset3 + 1]; - eOffset02 -= 8; - eOffset21 -= 8; - aOffset3 += 16; - } - var d02 = n2 - 1 - n8 * 2; - var aOffset4 = 0; - var eOffset03 = d02; - var eOffset22 = d02 + -(n >> 4); - var i4 = (n >> 5 >> 2) + 1; - while(--i4 > 0) { - var k00_204 = u[eOffset03] - u[eOffset22]; - var k01_214 = u[eOffset03 + -1] - u[eOffset22 + -1]; - var _g42 = eOffset03; - var _g132 = u; - _g132[_g42] = _g132[_g42] + u[eOffset22]; - var _g43 = eOffset03 + -1; - var _g133 = u; - _g133[_g43] = _g133[_g43] + u[eOffset22 + -1]; - u[eOffset22] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -1] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - aOffset4 += 16; - k00_204 = u[eOffset03 + -2] - u[eOffset22 + -2]; - k01_214 = u[eOffset03 + -3] - u[eOffset22 + -3]; - var _g44 = eOffset03 + -2; - var _g134 = u; - _g134[_g44] = _g134[_g44] + u[eOffset22 + -2]; - var _g45 = eOffset03 + -3; - var _g135 = u; - _g135[_g45] = _g135[_g45] + u[eOffset22 + -3]; - u[eOffset22 + -2] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -3] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - aOffset4 += 16; - k00_204 = u[eOffset03 + -4] - u[eOffset22 + -4]; - k01_214 = u[eOffset03 + -5] - u[eOffset22 + -5]; - var _g46 = eOffset03 + -4; - var _g136 = u; - _g136[_g46] = _g136[_g46] + u[eOffset22 + -4]; - var _g47 = eOffset03 + -5; - var _g137 = u; - _g137[_g47] = _g137[_g47] + u[eOffset22 + -5]; - u[eOffset22 + -4] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -5] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - aOffset4 += 16; - k00_204 = u[eOffset03 + -6] - u[eOffset22 + -6]; - k01_214 = u[eOffset03 + -7] - u[eOffset22 + -7]; - var _g48 = eOffset03 + -6; - var _g138 = u; - _g138[_g48] = _g138[_g48] + u[eOffset22 + -6]; - var _g49 = eOffset03 + -7; - var _g139 = u; - _g139[_g49] = _g139[_g49] + u[eOffset22 + -7]; - u[eOffset22 + -6] = k00_204 * a[aOffset4] - k01_214 * a[aOffset4 + 1]; - u[eOffset22 + -7] = k01_214 * a[aOffset4] + k00_204 * a[aOffset4 + 1]; - eOffset03 -= 8; - eOffset22 -= 8; - aOffset4 += 16; - } - var d03 = n2 - 1 - n8 * 3; - var aOffset5 = 0; - var eOffset04 = d03; - var eOffset23 = d03 + -(n >> 4); - var i5 = (n >> 5 >> 2) + 1; - while(--i5 > 0) { - var k00_205 = u[eOffset04] - u[eOffset23]; - var k01_215 = u[eOffset04 + -1] - u[eOffset23 + -1]; - var _g50 = eOffset04; - var _g140 = u; - _g140[_g50] = _g140[_g50] + u[eOffset23]; - var _g51 = eOffset04 + -1; - var _g141 = u; - _g141[_g51] = _g141[_g51] + u[eOffset23 + -1]; - u[eOffset23] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -1] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - aOffset5 += 16; - k00_205 = u[eOffset04 + -2] - u[eOffset23 + -2]; - k01_215 = u[eOffset04 + -3] - u[eOffset23 + -3]; - var _g52 = eOffset04 + -2; - var _g142 = u; - _g142[_g52] = _g142[_g52] + u[eOffset23 + -2]; - var _g53 = eOffset04 + -3; - var _g143 = u; - _g143[_g53] = _g143[_g53] + u[eOffset23 + -3]; - u[eOffset23 + -2] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -3] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - aOffset5 += 16; - k00_205 = u[eOffset04 + -4] - u[eOffset23 + -4]; - k01_215 = u[eOffset04 + -5] - u[eOffset23 + -5]; - var _g54 = eOffset04 + -4; - var _g144 = u; - _g144[_g54] = _g144[_g54] + u[eOffset23 + -4]; - var _g55 = eOffset04 + -5; - var _g145 = u; - _g145[_g55] = _g145[_g55] + u[eOffset23 + -5]; - u[eOffset23 + -4] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -5] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - aOffset5 += 16; - k00_205 = u[eOffset04 + -6] - u[eOffset23 + -6]; - k01_215 = u[eOffset04 + -7] - u[eOffset23 + -7]; - var _g56 = eOffset04 + -6; - var _g146 = u; - _g146[_g56] = _g146[_g56] + u[eOffset23 + -6]; - var _g57 = eOffset04 + -7; - var _g147 = u; - _g147[_g57] = _g147[_g57] + u[eOffset23 + -7]; - u[eOffset23 + -6] = k00_205 * a[aOffset5] - k01_215 * a[aOffset5 + 1]; - u[eOffset23 + -7] = k01_215 * a[aOffset5] + k00_205 * a[aOffset5 + 1]; - eOffset04 -= 8; - eOffset23 -= 8; - aOffset5 += 16; - } - var _g148 = 2; - var _g58 = ld - 3 >> 1; - while(_g148 < _g58) { - var l = _g148++; - var k0 = n >> l + 2; - var k0_2 = k0 >> 1; - var lim = 1 << l + 1; - var _g310 = 0; - var _g210 = lim; - while(_g310 < _g210) { - var i6 = _g310++; - var d04 = n2 - 1 - k0 * i6; - var k1 = 1 << l + 3; - var aOffset6 = 0; - var eOffset05 = d04; - var eOffset24 = d04 + -k0_2; - var i7 = (n >> l + 4 >> 2) + 1; - while(--i7 > 0) { - var k00_206 = u[eOffset05] - u[eOffset24]; - var k01_216 = u[eOffset05 + -1] - u[eOffset24 + -1]; - var _g59 = eOffset05; - var _g149 = u; - _g149[_g59] = _g149[_g59] + u[eOffset24]; - var _g60 = eOffset05 + -1; - var _g150 = u; - _g150[_g60] = _g150[_g60] + u[eOffset24 + -1]; - u[eOffset24] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -1] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - aOffset6 += k1; - k00_206 = u[eOffset05 + -2] - u[eOffset24 + -2]; - k01_216 = u[eOffset05 + -3] - u[eOffset24 + -3]; - var _g61 = eOffset05 + -2; - var _g151 = u; - _g151[_g61] = _g151[_g61] + u[eOffset24 + -2]; - var _g62 = eOffset05 + -3; - var _g152 = u; - _g152[_g62] = _g152[_g62] + u[eOffset24 + -3]; - u[eOffset24 + -2] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -3] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - aOffset6 += k1; - k00_206 = u[eOffset05 + -4] - u[eOffset24 + -4]; - k01_216 = u[eOffset05 + -5] - u[eOffset24 + -5]; - var _g63 = eOffset05 + -4; - var _g153 = u; - _g153[_g63] = _g153[_g63] + u[eOffset24 + -4]; - var _g64 = eOffset05 + -5; - var _g154 = u; - _g154[_g64] = _g154[_g64] + u[eOffset24 + -5]; - u[eOffset24 + -4] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -5] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - aOffset6 += k1; - k00_206 = u[eOffset05 + -6] - u[eOffset24 + -6]; - k01_216 = u[eOffset05 + -7] - u[eOffset24 + -7]; - var _g65 = eOffset05 + -6; - var _g155 = u; - _g155[_g65] = _g155[_g65] + u[eOffset24 + -6]; - var _g66 = eOffset05 + -7; - var _g156 = u; - _g156[_g66] = _g156[_g66] + u[eOffset24 + -7]; - u[eOffset24 + -6] = k00_206 * a[aOffset6] - k01_216 * a[aOffset6 + 1]; - u[eOffset24 + -7] = k01_216 * a[aOffset6] + k00_206 * a[aOffset6 + 1]; - eOffset05 -= 8; - eOffset24 -= 8; - aOffset6 += k1; - } - } - } - var _g157 = ld - 3 >> 1; - var _g67 = ld - 6; - while(_g157 < _g67) { - var l1 = _g157++; - var k01 = n >> l1 + 2; - var k11 = 1 << l1 + 3; - var k0_21 = k01 >> 1; - var rlim = n >> l1 + 6; - var lim1 = 1 << l1 + 1; - var aOffset7 = 0; - var i_off2 = n2 - 1; - var r = rlim + 1; - while(--r > 0) { - var A0 = a[aOffset7]; - var A1 = a[aOffset7 + 1]; - var A2 = a[aOffset7 + k11]; - var A3 = a[aOffset7 + k11 + 1]; - var A4 = a[aOffset7 + k11 * 2]; - var A5 = a[aOffset7 + k11 * 2 + 1]; - var A6 = a[aOffset7 + k11 * 3]; - var A7 = a[aOffset7 + k11 * 3 + 1]; - var eeOffset02 = i_off2; - var eeOffset22 = i_off2 + -k0_21; - var i8 = lim1 + 1; - while(--i8 > 0) { - var k00 = u[eeOffset02] - u[eeOffset22]; - var k111 = u[eeOffset02 + -1] - u[eeOffset22 + -1]; - u[eeOffset02] = u[eeOffset02] + u[eeOffset22]; - u[eeOffset02 + -1] = u[eeOffset02 + -1] + u[eeOffset22 + -1]; - u[eeOffset22] = k00 * A0 - k111 * A1; - u[eeOffset22 + -1] = k111 * A0 + k00 * A1; - k00 = u[eeOffset02 + -2] - u[eeOffset22 + -2]; - k111 = u[eeOffset02 + -3] - u[eeOffset22 + -3]; - u[eeOffset02 + -2] = u[eeOffset02 + -2] + u[eeOffset22 + -2]; - u[eeOffset02 + -3] = u[eeOffset02 + -3] + u[eeOffset22 + -3]; - u[eeOffset22 + -2] = k00 * A2 - k111 * A3; - u[eeOffset22 + -3] = k111 * A2 + k00 * A3; - k00 = u[eeOffset02 + -4] - u[eeOffset22 + -4]; - k111 = u[eeOffset02 + -5] - u[eeOffset22 + -5]; - u[eeOffset02 + -4] = u[eeOffset02 + -4] + u[eeOffset22 + -4]; - u[eeOffset02 + -5] = u[eeOffset02 + -5] + u[eeOffset22 + -5]; - u[eeOffset22 + -4] = k00 * A4 - k111 * A5; - u[eeOffset22 + -5] = k111 * A4 + k00 * A5; - k00 = u[eeOffset02 + -6] - u[eeOffset22 + -6]; - k111 = u[eeOffset02 + -7] - u[eeOffset22 + -7]; - u[eeOffset02 + -6] = u[eeOffset02 + -6] + u[eeOffset22 + -6]; - u[eeOffset02 + -7] = u[eeOffset02 + -7] + u[eeOffset22 + -7]; - u[eeOffset22 + -6] = k00 * A6 - k111 * A7; - u[eeOffset22 + -7] = k111 * A6 + k00 * A7; - eeOffset02 -= k01; - eeOffset22 -= k01; - } - aOffset7 += k11 * 4; - i_off2 -= 8; - } - } - var i_off3 = n2 - 1; - var A21 = a[n >> 3]; - var zOffset = i_off3; - var baseOffset = i_off3 - 16 * (n >> 5); - while(zOffset > baseOffset) { - var t0 = u[zOffset]; - var t1 = u[zOffset + -8]; - u[zOffset + -8] = t0 - t1; - u[zOffset] = t0 + t1; - t0 = u[zOffset + -1]; - t1 = u[zOffset + -9]; - u[zOffset + -9] = t0 - t1; - u[zOffset + -1] = t0 + t1; - t0 = u[zOffset + -2]; - t1 = u[zOffset + -10]; - var k001 = t0 - t1; - u[zOffset + -2] = t0 + t1; - t0 = u[zOffset + -3]; - t1 = u[zOffset + -11]; - var k112 = t0 - t1; - u[zOffset + -3] = t0 + t1; - u[zOffset + -10] = (k001 + k112) * A21; - u[zOffset + -11] = (k112 - k001) * A21; - t0 = u[zOffset + -4]; - t1 = u[zOffset + -12]; - k001 = t1 - t0; - u[zOffset + -4] = t0 + t1; - t0 = u[zOffset + -5]; - t1 = u[zOffset + -13]; - k112 = t0 - t1; - u[zOffset + -5] = t0 + t1; - u[zOffset + -12] = k112; - u[zOffset + -13] = k001; - t0 = u[zOffset + -6]; - t1 = u[zOffset + -14]; - k001 = t1 - t0; - u[zOffset + -6] = t0 + t1; - t0 = u[zOffset + -7]; - t1 = u[zOffset + -15]; - k112 = t0 - t1; - u[zOffset + -7] = t0 + t1; - u[zOffset + -14] = (k001 + k112) * A21; - u[zOffset + -15] = (k001 - k112) * A21; - var t01 = u[zOffset]; - var t11 = u[zOffset + -4]; - var k002 = t01 - t11; - var y0 = t01 + t11; - t01 = u[zOffset + -2]; - t11 = u[zOffset + -6]; - var y2 = t01 + t11; - var k22 = t01 - t11; - u[zOffset] = y0 + y2; - u[zOffset + -2] = y0 - y2; - var k33 = u[zOffset + -3] - u[zOffset + -7]; - u[zOffset + -4] = k002 + k33; - u[zOffset + -6] = k002 - k33; - t01 = u[zOffset + -1]; - t11 = u[zOffset + -5]; - var k113 = t01 - t11; - var y1 = t01 + t11; - var y3 = u[zOffset + -3] + u[zOffset + -7]; - u[zOffset + -1] = y1 + y3; - u[zOffset + -3] = y1 - y3; - u[zOffset + -5] = k113 - k22; - u[zOffset + -7] = k113 + k22; - var zOffset1 = zOffset - 8; - var t02 = u[zOffset1]; - var t12 = u[zOffset1 + -4]; - var k003 = t02 - t12; - var y01 = t02 + t12; - t02 = u[zOffset1 + -2]; - t12 = u[zOffset1 + -6]; - var y21 = t02 + t12; - var k221 = t02 - t12; - u[zOffset1] = y01 + y21; - u[zOffset1 + -2] = y01 - y21; - var k331 = u[zOffset1 + -3] - u[zOffset1 + -7]; - u[zOffset1 + -4] = k003 + k331; - u[zOffset1 + -6] = k003 - k331; - t02 = u[zOffset1 + -1]; - t12 = u[zOffset1 + -5]; - var k114 = t02 - t12; - var y11 = t02 + t12; - var y31 = u[zOffset1 + -3] + u[zOffset1 + -7]; - u[zOffset1 + -1] = y11 + y31; - u[zOffset1 + -3] = y11 - y31; - u[zOffset1 + -5] = k114 - k221; - u[zOffset1 + -7] = k114 + k221; - zOffset -= 16; - } - var brOffset = 0; - var dOffset01 = n4 - 4; - var dOffset11 = n2 - 4; - while(dOffset01 >= 0) { - var k4 = bitReverse[brOffset]; - v[dOffset11 + 3] = u[k4]; - v[dOffset11 + 2] = u[k4 + 1]; - v[dOffset01 + 3] = u[k4 + 2]; - v[dOffset01 + 2] = u[k4 + 3]; - k4 = bitReverse[brOffset + 1]; - v[dOffset11 + 1] = u[k4]; - v[dOffset11] = u[k4 + 1]; - v[dOffset01 + 1] = u[k4 + 2]; - v[dOffset01] = u[k4 + 3]; - dOffset01 -= 4; - dOffset11 -= 4; - brOffset += 2; - } - var cOffset = 0; - var dOffset2 = 0; - var eOffset3 = n2 - 4; - while(dOffset2 < eOffset3) { - var a02 = v[dOffset2] - v[eOffset3 + 2]; - var a11 = v[dOffset2 + 1] + v[eOffset3 + 3]; - var b0 = c[cOffset + 1] * a02 + c[cOffset] * a11; - var b1 = c[cOffset + 1] * a11 - c[cOffset] * a02; - var b2 = v[dOffset2] + v[eOffset3 + 2]; - var b3 = v[dOffset2 + 1] - v[eOffset3 + 3]; - v[dOffset2] = b2 + b0; - v[dOffset2 + 1] = b3 + b1; - v[eOffset3 + 2] = b2 - b0; - v[eOffset3 + 3] = b1 - b3; - a02 = v[dOffset2 + 2] - v[eOffset3]; - a11 = v[dOffset2 + 3] + v[eOffset3 + 1]; - b0 = c[cOffset + 3] * a02 + c[cOffset + 2] * a11; - b1 = c[cOffset + 3] * a11 - c[cOffset + 2] * a02; - b2 = v[dOffset2 + 2] + v[eOffset3]; - b3 = v[dOffset2 + 3] - v[eOffset3 + 1]; - v[dOffset2 + 2] = b2 + b0; - v[dOffset2 + 3] = b3 + b1; - v[eOffset3] = b2 - b0; - v[eOffset3 + 1] = b1 - b3; - cOffset += 4; - dOffset2 += 4; - eOffset3 -= 4; - } - var bOffset = n2 - 8; - var eOffset4 = n2 - 8; - var dOffset02 = 0; - var dOffset12 = n2 - 4; - var dOffset21 = n2; - var dOffset3 = n - 4; - while(eOffset4 >= 0) { - var p3 = buf2[eOffset4 + 6] * b[bOffset + 7] - buf2[eOffset4 + 7] * b[bOffset + 6]; - var p2 = -buf2[eOffset4 + 6] * b[bOffset + 6] - buf2[eOffset4 + 7] * b[bOffset + 7]; - buffer[dOffset02] = p3; - buffer[dOffset12 + 3] = -p3; - buffer[dOffset21] = p2; - buffer[dOffset3 + 3] = p2; - var p1 = buf2[eOffset4 + 4] * b[bOffset + 5] - buf2[eOffset4 + 5] * b[bOffset + 4]; - var p0 = -buf2[eOffset4 + 4] * b[bOffset + 4] - buf2[eOffset4 + 5] * b[bOffset + 5]; - buffer[dOffset02 + 1] = p1; - buffer[dOffset12 + 2] = -p1; - buffer[dOffset21 + 1] = p0; - buffer[dOffset3 + 2] = p0; - p3 = buf2[eOffset4 + 2] * b[bOffset + 3] - buf2[eOffset4 + 3] * b[bOffset + 2]; - p2 = -buf2[eOffset4 + 2] * b[bOffset + 2] - buf2[eOffset4 + 3] * b[bOffset + 3]; - buffer[dOffset02 + 2] = p3; - buffer[dOffset12 + 1] = -p3; - buffer[dOffset21 + 2] = p2; - buffer[dOffset3 + 1] = p2; - p1 = buf2[eOffset4] * b[bOffset + 1] - buf2[eOffset4 + 1] * b[bOffset]; - p0 = -buf2[eOffset4] * b[bOffset] - buf2[eOffset4 + 1] * b[bOffset + 1]; - buffer[dOffset02 + 3] = p1; - buffer[dOffset12] = -p1; - buffer[dOffset21 + 3] = p0; - buffer[dOffset3] = p0; - bOffset -= 8; - eOffset4 -= 8; - dOffset02 += 4; - dOffset21 += 4; - dOffset12 -= 4; - dOffset3 -= 4; - } - } - ,decodePacket: function() { - var result = this.decodeInitial(); - if(result == null) { - return null; - } - var rest = this.decodePacketRest(result); - return rest; - } - ,decodeInitial: function() { - this.channelBufferStart = this.channelBufferEnd = 0; - while(true) { - if(!this.decodeState.maybeStartPacket()) { - return null; - } - var _this = this.decodeState; - var tmp; - if(_this.validBits < 0) { - tmp = 0; - } else if(_this.validBits < 1) { - if(_this.validBits == 0) { - _this.acc = 0; - } - while(true) { - if(_this.bytesInSeg == 0 && (_this.lastSeg || _this.next() == 0)) { - _this.validBits = -1; - break; - } else { - _this.bytesInSeg--; - _this.inputPosition += 1; - _this.acc = _this.acc + (_this.input.readByte() << _this.validBits); - _this.validBits += 8; - } - if(!(_this.validBits < 1)) { - break; - } - } - if(_this.validBits < 0) { - tmp = 0; - } else { - var z = _this.acc & 1; - _this.acc = _this.acc >>> 1; - _this.validBits -= 1; - tmp = z; - } - } else { - var z1 = _this.acc & 1; - _this.acc = _this.acc >>> 1; - _this.validBits -= 1; - tmp = z1; - } - if(tmp != 0) { - while(true) { - var _this1 = this.decodeState; - var x; - if(_this1.bytesInSeg == 0 && (_this1.lastSeg || _this1.next() == 0)) { - x = -1; - } else { - _this1.bytesInSeg--; - _this1.inputPosition += 1; - x = _this1.input.readByte(); - } - _this1.validBits = 0; - if(!(-1 != x)) { - break; - } - } - continue; - } - break; - } - var _this2 = this.decodeState; - var n = this.header.modes.length - 1; - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var n1 = n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0; - var i; - if(_this2.validBits < 0) { - i = 0; - } else if(_this2.validBits < n1) { - if(n1 > 24) { - i = _this2.readBits(24) + (_this2.readBits(n1 - 24) << 24); - } else { - if(_this2.validBits == 0) { - _this2.acc = 0; - } - while(true) { - if(_this2.bytesInSeg == 0 && (_this2.lastSeg || _this2.next() == 0)) { - _this2.validBits = -1; - break; - } else { - _this2.bytesInSeg--; - _this2.inputPosition += 1; - _this2.acc = _this2.acc + (_this2.input.readByte() << _this2.validBits); - _this2.validBits += 8; - } - if(!(_this2.validBits < n1)) { - break; - } - } - if(_this2.validBits < 0) { - i = 0; - } else { - var z2 = _this2.acc & (1 << n1) - 1; - _this2.acc = _this2.acc >>> n1; - _this2.validBits -= n1; - i = z2; - } - } - } else { - var z3 = _this2.acc & (1 << n1) - 1; - _this2.acc = _this2.acc >>> n1; - _this2.validBits -= n1; - i = z3; - } - if(i == -1 || i >= this.header.modes.length) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{ fileName : "VorbisDecoder.hx", lineNumber : 519, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "decodeInitial"})); - } - var m = this.header.modes[i]; - var n2; - var prev; - var next; - if(m.blockflag) { - n2 = this.header.blocksize1; - var _this3 = this.decodeState; - if(_this3.validBits < 0) { - prev = 0; - } else if(_this3.validBits < 1) { - if(_this3.validBits == 0) { - _this3.acc = 0; - } - while(true) { - if(_this3.bytesInSeg == 0 && (_this3.lastSeg || _this3.next() == 0)) { - _this3.validBits = -1; - break; - } else { - _this3.bytesInSeg--; - _this3.inputPosition += 1; - _this3.acc = _this3.acc + (_this3.input.readByte() << _this3.validBits); - _this3.validBits += 8; - } - if(!(_this3.validBits < 1)) { - break; - } - } - if(_this3.validBits < 0) { - prev = 0; - } else { - var z4 = _this3.acc & 1; - _this3.acc = _this3.acc >>> 1; - _this3.validBits -= 1; - prev = z4; - } - } else { - var z5 = _this3.acc & 1; - _this3.acc = _this3.acc >>> 1; - _this3.validBits -= 1; - prev = z5; - } - var _this4 = this.decodeState; - if(_this4.validBits < 0) { - next = 0; - } else if(_this4.validBits < 1) { - if(_this4.validBits == 0) { - _this4.acc = 0; - } - while(true) { - if(_this4.bytesInSeg == 0 && (_this4.lastSeg || _this4.next() == 0)) { - _this4.validBits = -1; - break; - } else { - _this4.bytesInSeg--; - _this4.inputPosition += 1; - _this4.acc = _this4.acc + (_this4.input.readByte() << _this4.validBits); - _this4.validBits += 8; - } - if(!(_this4.validBits < 1)) { - break; - } - } - if(_this4.validBits < 0) { - next = 0; - } else { - var z6 = _this4.acc & 1; - _this4.acc = _this4.acc >>> 1; - _this4.validBits -= 1; - next = z6; - } - } else { - var z7 = _this4.acc & 1; - _this4.acc = _this4.acc >>> 1; - _this4.validBits -= 1; - next = z7; - } - } else { - next = 0; - prev = next; - n2 = this.header.blocksize0; - } - var windowCenter = n2 >> 1; - return { mode : i, left : m.blockflag && prev == 0 ? { start : n2 - this.header.blocksize0 >> 2, end : n2 + this.header.blocksize0 >> 2} : { start : 0, end : windowCenter}, right : m.blockflag && next == 0 ? { start : n2 * 3 - this.header.blocksize0 >> 2, end : n2 * 3 + this.header.blocksize0 >> 2} : { start : windowCenter, end : n2}}; - } - ,decodePacketRest: function(r) { - var len = 0; - var m = this.header.modes[r.mode]; - var this1 = new Array(256); - var zeroChannel = this1; - var this2 = new Array(256); - var reallyZeroChannel = this2; - var n = m.blockflag ? this.header.blocksize1 : this.header.blocksize0; - var map = this.header.mapping[m.mapping]; - var n2 = n >> 1; - var rangeList = [256,128,86,64]; - var codebooks = this.header.codebooks; - var _g1 = 0; - var _g = this.header.channel; - while(_g1 < _g) { - var i = _g1++; - var s = map.chan[i].mux; - zeroChannel[i] = false; - var floor = this.header.floorConfig[map.submapFloor[s]]; - if(floor.type == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "VorbisDecoder.hx", lineNumber : 581, className : "kha.audio2.ogg.vorbis.VorbisDecoder", methodName : "decodePacketRest"})); - } else { - var g = floor.floor1; - var _this = this.decodeState; - var tmp; - if(_this.validBits < 0) { - tmp = 0; - } else if(_this.validBits < 1) { - if(_this.validBits == 0) { - _this.acc = 0; - } - while(true) { - if(_this.bytesInSeg == 0 && (_this.lastSeg || _this.next() == 0)) { - _this.validBits = -1; - break; - } else { - _this.bytesInSeg--; - _this.inputPosition += 1; - _this.acc = _this.acc + (_this.input.readByte() << _this.validBits); - _this.validBits += 8; - } - if(!(_this.validBits < 1)) { - break; - } - } - if(_this.validBits < 0) { - tmp = 0; - } else { - var z = _this.acc & 1; - _this.acc = _this.acc >>> 1; - _this.validBits -= 1; - tmp = z; - } - } else { - var z1 = _this.acc & 1; - _this.acc = _this.acc >>> 1; - _this.validBits -= 1; - tmp = z1; - } - if(tmp != 0) { - var fy = []; - var this3 = new Array(256); - var step2Flag = this3; - var range = rangeList[g.floor1Multiplier - 1]; - var offset = 2; - fy = this.finalY[i]; - var _this1 = this.decodeState; - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var n1 = (range < 16384 ? range < 16 ? log2_4[range] : range < 512 ? 5 + log2_4[range >> 5] : 10 + log2_4[range >> 10] : range < 16777216 ? range < 524288 ? 15 + log2_4[range >> 15] : 20 + log2_4[range >> 20] : range < 536870912 ? 25 + log2_4[range >> 25] : range < -2147483648 ? 30 + log2_4[range >> 30] : 0) - 1; - var tmp1; - if(_this1.validBits < 0) { - tmp1 = 0; - } else if(_this1.validBits < n1) { - if(n1 > 24) { - tmp1 = _this1.readBits(24) + (_this1.readBits(n1 - 24) << 24); - } else { - if(_this1.validBits == 0) { - _this1.acc = 0; - } - while(true) { - if(_this1.bytesInSeg == 0 && (_this1.lastSeg || _this1.next() == 0)) { - _this1.validBits = -1; - break; - } else { - _this1.bytesInSeg--; - _this1.inputPosition += 1; - _this1.acc = _this1.acc + (_this1.input.readByte() << _this1.validBits); - _this1.validBits += 8; - } - if(!(_this1.validBits < n1)) { - break; - } - } - if(_this1.validBits < 0) { - tmp1 = 0; - } else { - var z2 = _this1.acc & (1 << n1) - 1; - _this1.acc = _this1.acc >>> n1; - _this1.validBits -= n1; - tmp1 = z2; - } - } - } else { - var z3 = _this1.acc & (1 << n1) - 1; - _this1.acc = _this1.acc >>> n1; - _this1.validBits -= n1; - tmp1 = z3; - } - fy[0] = tmp1; - var _this2 = this.decodeState; - var log2_41 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var n3 = (range < 16384 ? range < 16 ? log2_41[range] : range < 512 ? 5 + log2_41[range >> 5] : 10 + log2_41[range >> 10] : range < 16777216 ? range < 524288 ? 15 + log2_41[range >> 15] : 20 + log2_41[range >> 20] : range < 536870912 ? 25 + log2_41[range >> 25] : range < -2147483648 ? 30 + log2_41[range >> 30] : 0) - 1; - var tmp2; - if(_this2.validBits < 0) { - tmp2 = 0; - } else if(_this2.validBits < n3) { - if(n3 > 24) { - tmp2 = _this2.readBits(24) + (_this2.readBits(n3 - 24) << 24); - } else { - if(_this2.validBits == 0) { - _this2.acc = 0; - } - while(true) { - if(_this2.bytesInSeg == 0 && (_this2.lastSeg || _this2.next() == 0)) { - _this2.validBits = -1; - break; - } else { - _this2.bytesInSeg--; - _this2.inputPosition += 1; - _this2.acc = _this2.acc + (_this2.input.readByte() << _this2.validBits); - _this2.validBits += 8; - } - if(!(_this2.validBits < n3)) { - break; - } - } - if(_this2.validBits < 0) { - tmp2 = 0; - } else { - var z4 = _this2.acc & (1 << n3) - 1; - _this2.acc = _this2.acc >>> n3; - _this2.validBits -= n3; - tmp2 = z4; - } - } - } else { - var z5 = _this2.acc & (1 << n3) - 1; - _this2.acc = _this2.acc >>> n3; - _this2.validBits -= n3; - tmp2 = z5; - } - fy[1] = tmp2; - var _g3 = 0; - var _g2 = g.partitions; - while(_g3 < _g2) { - var j = _g3++; - var pclass = g.partitionClassList[j]; - var cdim = g.classDimensions[pclass]; - var cbits = g.classSubclasses[pclass]; - var csub = (1 << cbits) - 1; - var cval = 0; - if(cbits != 0) { - var c = codebooks[g.classMasterbooks[pclass]]; - var _this3 = this.decodeState; - if(_this3.validBits < 10) { - _this3.prepHuffman(); - } - var i1 = c.fastHuffman[_this3.acc & 1023]; - var val; - if(i1 >= 0) { - var l = c.codewordLengths[i1]; - _this3.acc = _this3.acc >>> l; - _this3.validBits -= l; - if(_this3.validBits < 0) { - _this3.validBits = 0; - val = -1; - } else { - val = i1; - } - } else { - val = _this3.decodeScalarRaw(c); - } - if(c.sparse) { - val = c.sortedValues[val]; - } - cval = val; - } - var books = g.subclassBooks[pclass]; - var _g5 = 0; - var _g4 = cdim; - while(_g5 < _g4) { - var k = _g5++; - var book = books[cval & csub]; - cval >>= cbits; - var tmp3 = offset++; - var tmp4; - if(book >= 0) { - var _this4 = this.decodeState; - var c1 = codebooks[book]; - if(_this4.validBits < 10) { - _this4.prepHuffman(); - } - var i2 = c1.fastHuffman[_this4.acc & 1023]; - var val1; - if(i2 >= 0) { - var l1 = c1.codewordLengths[i2]; - _this4.acc = _this4.acc >>> l1; - _this4.validBits -= l1; - if(_this4.validBits < 0) { - _this4.validBits = 0; - val1 = -1; - } else { - val1 = i2; - } - } else { - val1 = _this4.decodeScalarRaw(c1); - } - if(c1.sparse) { - val1 = c1.sortedValues[val1]; - } - tmp4 = val1; - } else { - tmp4 = 0; - } - fy[tmp3] = tmp4; - } - } - if(this.decodeState.validBits == -1) { - zeroChannel[i] = true; - continue; - } - step2Flag[0] = step2Flag[1] = true; - var naighbors = g.neighbors; - var xlist = g.xlist; - var _g31 = 2; - var _g21 = g.values; - while(_g31 < _g21) { - var j1 = _g31++; - var low = naighbors[j1][0]; - var high = naighbors[j1][1]; - var x0 = xlist[low]; - var y0 = fy[low]; - var dy = fy[high] - y0; - var adx = xlist[high] - x0; - var err = Math.abs(dy) * (xlist[j1] - x0); - var off = err / adx | 0; - var lowroom = dy < 0 ? y0 - off : y0 + off; - var val2 = fy[j1]; - var highroom = range - lowroom; - var room = highroom < lowroom ? highroom * 2 : lowroom * 2; - if(val2 != 0) { - step2Flag[low] = step2Flag[high] = true; - step2Flag[j1] = true; - if(val2 >= room) { - if(highroom > lowroom) { - fy[j1] = val2 - lowroom + lowroom; - } else { - fy[j1] = lowroom - val2 + highroom - 1; - } - } else if((val2 & 1) != 0) { - fy[j1] = lowroom - (val2 + 1 >> 1); - } else { - fy[j1] = lowroom + (val2 >> 1); - } - } else { - step2Flag[j1] = false; - fy[j1] = lowroom; - } - } - var _g32 = 0; - var _g22 = g.values; - while(_g32 < _g22) { - var j2 = _g32++; - if(!step2Flag[j2]) { - fy[j2] = -1; - } - } - } else { - zeroChannel[i] = true; - } - } - } - var _g11 = 0; - var _g6 = this.header.channel; - while(_g11 < _g6) { - var i3 = _g11++; - reallyZeroChannel[i3] = zeroChannel[i3]; - } - var _g12 = 0; - var _g7 = map.couplingSteps; - while(_g12 < _g7) { - var i4 = _g12++; - if(!zeroChannel[map.chan[i4].magnitude] || !zeroChannel[map.chan[i4].angle]) { - zeroChannel[map.chan[i4].magnitude] = zeroChannel[map.chan[i4].angle] = false; - } - } - var _g13 = 0; - var _g8 = map.submaps; - while(_g13 < _g8) { - var i5 = _g13++; - var length = this.header.channel; - var this4 = new Array(length); - var residueBuffers = this4; - var this5 = new Array(256); - var doNotDecode = this5; - var ch = 0; - var _g33 = 0; - var _g23 = this.header.channel; - while(_g33 < _g23) { - var j3 = _g33++; - if(map.chan[j3].mux == i5) { - if(zeroChannel[j3]) { - doNotDecode[ch] = true; - residueBuffers[ch] = null; - } else { - doNotDecode[ch] = false; - residueBuffers[ch] = this.channelBuffers[j3]; - } - ++ch; - } - } - var r1 = map.submapResidue[i5]; - var residue = this.header.residueConfig[r1]; - residue.decode(this.decodeState,this.header,residueBuffers,ch,n2,doNotDecode,this.channelBuffers); - } - var i6 = map.couplingSteps; - var n21 = n >> 1; - while(--i6 >= 0) { - var m1 = this.channelBuffers[map.chan[i6].magnitude]; - var a = this.channelBuffers[map.chan[i6].angle]; - var _g14 = 0; - var _g9 = n21; - while(_g14 < _g9) { - var j4 = _g14++; - var a2; - var m2; - if(m1[j4] > 0) { - if(a[j4] > 0) { - m2 = m1[j4]; - a2 = m1[j4] - a[j4]; - } else { - a2 = m1[j4]; - m2 = m1[j4] + a[j4]; - } - } else if(a[j4] > 0) { - m2 = m1[j4]; - a2 = m1[j4] + a[j4]; - } else { - a2 = m1[j4]; - m2 = m1[j4] - a[j4]; - } - m1[j4] = m2; - a[j4] = a2; - } - } - var _g15 = 0; - var _g10 = this.header.channel; - while(_g15 < _g10) { - var i7 = _g15++; - if(reallyZeroChannel[i7]) { - var _g34 = 0; - var _g24 = n21; - while(_g34 < _g24) { - var j5 = _g34++; - this.channelBuffers[i7][j5] = 0; - } - } else { - map.doFloor(this.header.floorConfig,i7,n,this.channelBuffers[i7],this.finalY[i7],null); - } - } - var _g16 = 0; - var _g17 = this.header.channel; - while(_g16 < _g17) { - var i8 = _g16++; - this.inverseMdct(this.channelBuffers[i8],n,m.blockflag); - } - var _this5 = this.decodeState; - while(_this5.bytesInSeg != 0 || !_this5.lastSeg && _this5.next() != 0) { - _this5.bytesInSeg--; - _this5.inputPosition += 1; - _this5.input.readByte(); - } - return this.decodeState.finishDecodePacket(this.previousLength,n,r); - } - ,__class__: kha_audio2_ogg_vorbis_VorbisDecoder -}; -var kha_audio2_ogg_vorbis_VorbisTools = function() { }; -$hxClasses["kha.audio2.ogg.vorbis.VorbisTools"] = kha_audio2_ogg_vorbis_VorbisTools; -kha_audio2_ogg_vorbis_VorbisTools.__name__ = true; -kha_audio2_ogg_vorbis_VorbisTools.assert = function(b,p) { -}; -kha_audio2_ogg_vorbis_VorbisTools.neighbors = function(x,n) { - var low = -1; - var high = 65536; - var plow = 0; - var phigh = 0; - var _g1 = 0; - var _g = n; - while(_g1 < _g) { - var i = _g1++; - if(x[i] > low && x[i] < x[n]) { - plow = i; - low = x[i]; - } - if(x[i] < high && x[i] > x[n]) { - phigh = i; - high = x[i]; - } - } - return { low : plow, high : phigh}; -}; -kha_audio2_ogg_vorbis_VorbisTools.floatUnpack = function(x) { - var mantissa = _$UInt_UInt_$Impl_$.toFloat(x & 2097151); - var sign = x & -2147483648; - var exp = (x & 2145386496) >>> 21; - var res = sign != 0 ? -mantissa : mantissa; - return res * Math.pow(2,exp - 788); -}; -kha_audio2_ogg_vorbis_VorbisTools.bitReverse = function(n) { - n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1; - n = (n & -858993460) >>> 2 | (n & 858993459) << 2; - n = (n & -252645136) >>> 4 | (n & 252645135) << 4; - n = (n & -16711936) >>> 8 | (n & 16711935) << 8; - return n >>> 16 | n << 16; -}; -kha_audio2_ogg_vorbis_VorbisTools.pointCompare = function(a,b) { - if(a.x < b.x) { - return -1; - } else if(a.x > b.x) { - return 1; - } else { - return 0; - } -}; -kha_audio2_ogg_vorbis_VorbisTools.uintAsc = function(a,b) { - if(_$UInt_UInt_$Impl_$.gt(b,a)) { - return -1; - } else if(a == b) { - return 0; - } else { - return 1; - } -}; -kha_audio2_ogg_vorbis_VorbisTools.lookup1Values = function(entries,dim) { - var r = Math.exp(Math.log(entries) / dim) | 0; - if((Math.pow(r + 1,dim) | 0) <= entries) { - ++r; - } - var b = Math.pow(r + 1,dim) > entries; - var b1 = (Math.pow(r,dim) | 0) <= entries; - return r; -}; -kha_audio2_ogg_vorbis_VorbisTools.computeWindow = function(n,window) { - var n2 = n >> 1; - var _g1 = 0; - var _g = n2; - while(_g1 < _g) { - var i = _g1++; - window[i] = Math.sin(1.57079632679489656 * kha_audio2_ogg_vorbis_VorbisTools.square(Math.sin((i + 0.5) / n2 * 0.5 * 3.14159265358979323846264))); - } -}; -kha_audio2_ogg_vorbis_VorbisTools.square = function(f) { - return f * f; -}; -kha_audio2_ogg_vorbis_VorbisTools.computeBitReverse = function(n,rev) { - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var ld = (n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0) - 1; - var n8 = n >> 3; - var _g1 = 0; - var _g = n8; - while(_g1 < _g) { - var i = _g1++; - var n1 = i; - n1 = (n1 & -1431655766) >>> 1 | (n1 & 1431655765) << 1; - n1 = (n1 & -858993460) >>> 2 | (n1 & 858993459) << 2; - n1 = (n1 & -252645136) >>> 4 | (n1 & 252645135) << 4; - n1 = (n1 & -16711936) >>> 8 | (n1 & 16711935) << 8; - rev[i] = (n1 >>> 16 | n1 << 16) >>> 32 - ld + 3 << 2; - } -}; -kha_audio2_ogg_vorbis_VorbisTools.computeTwiddleFactors = function(n,af,bf,cf) { - var n4 = n >> 2; - var n8 = n >> 3; - var k2 = 0; - var _g1 = 0; - var _g = n4; - while(_g1 < _g) { - var k = _g1++; - af[k2] = Math.cos(4 * k * 3.14159265358979323846264 / n); - af[k2 + 1] = -Math.sin(4 * k * 3.14159265358979323846264 / n); - bf[k2] = Math.cos((k2 + 1) * 3.14159265358979323846264 / n / 2) * 0.5; - bf[k2 + 1] = Math.sin((k2 + 1) * 3.14159265358979323846264 / n / 2) * 0.5; - k2 += 2; - } - var k21 = 0; - var _g11 = 0; - var _g2 = n8; - while(_g11 < _g2) { - var k1 = _g11++; - cf[k21] = Math.cos(2 * (k21 + 1) * 3.14159265358979323846264 / n); - cf[k21 + 1] = -Math.sin(2 * (k21 + 1) * 3.14159265358979323846264 / n); - k21 += 2; - } -}; -kha_audio2_ogg_vorbis_VorbisTools.drawLine = function(output,x0,y0,x1,y1,n) { - if(kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable == null) { - var this1 = new Array(32); - kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable = this1; - var _g = 0; - while(_g < 32) { - var i = _g++; - var this2 = kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable; - var this3 = new Array(64); - this2[i] = this3; - var _g1 = 1; - while(_g1 < 64) { - var j = _g1++; - kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable[i][j] = i / j | 0; - } - } - } - var dy = y1 - y0; - var adx = x1 - x0; - var ady = dy < 0 ? -dy : dy; - var base; - var x = x0; - var y = y0; - var err = 0; - var sy; - if(adx < 64 && ady < 32) { - if(dy < 0) { - base = -kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable[ady][adx]; - sy = base - 1; - } else { - base = kha_audio2_ogg_vorbis_VorbisTools.integerDivideTable[ady][adx]; - sy = base + 1; - } - } else { - base = dy / adx | 0; - if(dy < 0) { - sy = base - 1; - } else { - sy = base + 1; - } - } - ady -= (base < 0 ? -base : base) * adx; - if(x1 > n) { - x1 = n; - } - var _g2 = x; - var _g11 = output; - _g11[_g2] = _g11[_g2] * kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[y]; - var _g12 = x + 1; - var _g3 = x1; - while(_g12 < _g3) { - var i1 = _g12++; - err += ady; - if(err >= adx) { - err -= adx; - y += sy; - } else { - y += base; - } - var _g21 = i1; - var _g31 = output; - _g31[_g21] = _g31[_g21] * kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[y]; - } -}; -kha_audio2_ogg_vorbis_VorbisTools.predictPoint = function(x,x0,x1,y0,y1) { - var dy = y1 - y0; - var adx = x1 - x0; - var err = Math.abs(dy) * (x - x0); - var off = err / adx | 0; - if(dy < 0) { - return y0 - off; - } else { - return y0 + off; - } -}; -kha_audio2_ogg_vorbis_VorbisTools.emptyFloatVector = function(len) { - var this1 = new Array(len); - var vec = this1; - return vec; -}; -kha_audio2_ogg_vorbis_VorbisTools.copyVector = function(source) { - var length = source.length; - var this1 = new Array(length); - var dest = this1; - var _g1 = 0; - var _g = source.length; - while(_g1 < _g) { - var i = _g1++; - dest[i] = source[i]; - } - return dest; -}; -var kha_audio2_ogg_vorbis_data_Codebook = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Codebook"] = kha_audio2_ogg_vorbis_data_Codebook; -kha_audio2_ogg_vorbis_data_Codebook.__name__ = true; -kha_audio2_ogg_vorbis_data_Codebook.read = function(decodeState) { - var c = new kha_audio2_ogg_vorbis_data_Codebook(); - var tmp; - var tmp1; - var tmp2; - if(decodeState.validBits < 0) { - tmp2 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp2 = 0; - } else { - var z = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp2 = z; - } - } else { - var z1 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp2 = z1; - } - if(tmp2 == 66) { - var tmp3; - if(decodeState.validBits < 0) { - tmp3 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp3 = 0; - } else { - var z2 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp3 = z2; - } - } else { - var z3 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp3 = z3; - } - tmp1 = tmp3 != 67; - } else { - tmp1 = true; - } - if(!tmp1) { - var tmp4; - if(decodeState.validBits < 0) { - tmp4 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp4 = 0; - } else { - var z4 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp4 = z4; - } - } else { - var z5 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp4 = z5; - } - tmp = tmp4 != 86; - } else { - tmp = true; - } - if(tmp) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Codebook.hx", lineNumber : 40, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); - } - var x; - if(decodeState.validBits < 0) { - x = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - x = 0; - } else { - var z6 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - x = z6; - } - } else { - var z7 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - x = z7; - } - var tmp5; - if(decodeState.validBits < 0) { - tmp5 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp5 = 0; - } else { - var z8 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp5 = z8; - } - } else { - var z9 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp5 = z9; - } - c.dimensions = (tmp5 << 8) + x; - var x1; - if(decodeState.validBits < 0) { - x1 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - x1 = 0; - } else { - var z10 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - x1 = z10; - } - } else { - var z11 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - x1 = z11; - } - var y; - if(decodeState.validBits < 0) { - y = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - y = 0; - } else { - var z12 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - y = z12; - } - } else { - var z13 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - y = z13; - } - var tmp6; - if(decodeState.validBits < 0) { - tmp6 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp6 = 0; - } else { - var z14 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp6 = z14; - } - } else { - var z15 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp6 = z15; - } - c.entries = (tmp6 << 16) + (y << 8) + x1; - var ordered; - if(decodeState.validBits < 0) { - ordered = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - ordered = 0; - } else { - var z16 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - ordered = z16; - } - } else { - var z17 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - ordered = z17; - } - var tmp7; - if(ordered != 0) { - tmp7 = false; - } else { - var tmp8; - if(decodeState.validBits < 0) { - tmp8 = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp8 = 0; - } else { - var z18 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp8 = z18; - } - } else { - var z19 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp8 = z19; - } - tmp7 = tmp8 != 0; - } - c.sparse = tmp7; - var length = c.entries; - var this1 = new Array(length); - var lengths = this1; - if(!c.sparse) { - c.codewordLengths = lengths; - } - var total = 0; - if(ordered != 0) { - var currentEntry = 0; - var currentLength; - if(decodeState.validBits < 0) { - currentLength = 0; - } else if(decodeState.validBits < 5) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 5)) { - break; - } - } - if(decodeState.validBits < 0) { - currentLength = 0; - } else { - var z20 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - currentLength = z20; - } - } else { - var z21 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - currentLength = z21; - } - var currentLength1 = currentLength + 1; - while(currentEntry < c.entries) { - var limit = c.entries - currentEntry; - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var n = limit < 16384 ? limit < 16 ? log2_4[limit] : limit < 512 ? 5 + log2_4[limit >> 5] : 10 + log2_4[limit >> 10] : limit < 16777216 ? limit < 524288 ? 15 + log2_4[limit >> 15] : 20 + log2_4[limit >> 20] : limit < 536870912 ? 25 + log2_4[limit >> 25] : limit < -2147483648 ? 30 + log2_4[limit >> 30] : 0; - var n1; - if(decodeState.validBits < 0) { - n1 = 0; - } else if(decodeState.validBits < n) { - if(n > 24) { - n1 = decodeState.readBits(24) + (decodeState.readBits(n - 24) << 24); - } else { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < n)) { - break; - } - } - if(decodeState.validBits < 0) { - n1 = 0; - } else { - var z22 = decodeState.acc & (1 << n) - 1; - decodeState.acc = decodeState.acc >>> n; - decodeState.validBits -= n; - n1 = z22; - } - } - } else { - var z23 = decodeState.acc & (1 << n) - 1; - decodeState.acc = decodeState.acc >>> n; - decodeState.validBits -= n; - n1 = z23; - } - if(currentEntry + n1 > c.entries) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook entrys",{ fileName : "Codebook.hx", lineNumber : 67, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); - } - var _g1 = 0; - var _g = n1; - while(_g1 < _g) { - var i = _g1++; - lengths[currentEntry + i] = currentLength1; - } - currentEntry += n1; - ++currentLength1; - } - } else { - var _g11 = 0; - var _g2 = c.entries; - while(_g11 < _g2) { - var j = _g11++; - var present; - if(c.sparse) { - if(decodeState.validBits < 0) { - present = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - present = 0; - } else { - var z24 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - present = z24; - } - } else { - var z25 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - present = z25; - } - } else { - present = 1; - } - if(present != 0) { - var val; - if(decodeState.validBits < 0) { - val = 0; - } else if(decodeState.validBits < 5) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 5)) { - break; - } - } - if(decodeState.validBits < 0) { - val = 0; - } else { - var z26 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - val = z26; - } - } else { - var z27 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - val = z27; - } - lengths[j] = val + 1; - ++total; - } else { - lengths[j] = 255; - } - } - } - if(c.sparse && total >= c.entries >> 2) { - c.codewordLengths = lengths; - c.sparse = false; - } - var tmp9; - if(c.sparse) { - tmp9 = total; - } else { - var sortedCount = 0; - var _g12 = 0; - var _g3 = c.entries; - while(_g12 < _g3) { - var j1 = _g12++; - var l = lengths[j1]; - if(l > 10 && l != 255) { - ++sortedCount; - } - } - tmp9 = sortedCount; - } - c.sortedEntries = tmp9; - var values = null; - if(!c.sparse) { - var length1 = c.entries; - var this2 = new Array(length1); - c.codewords = this2; - } else { - if(c.sortedEntries != 0) { - var length2 = c.sortedEntries; - var this3 = new Array(length2); - c.codewordLengths = this3; - var length3 = c.entries; - var this4 = new Array(length3); - c.codewords = this4; - var length4 = c.entries; - var this5 = new Array(length4); - values = this5; - } - var size = c.entries + 64 * c.sortedEntries; - } - if(!c.computeCodewords(lengths,c.entries,values)) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"compute codewords",{ fileName : "Codebook.hx", lineNumber : 120, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); - } - if(c.sortedEntries != 0) { - c.sortedCodewords = []; - var length5 = c.sortedEntries; - var this6 = new Array(length5); - c.sortedValues = this6; - c.computeSortedHuffman(lengths,values); - } - if(c.sparse) { - values = null; - c.codewords = null; - lengths = null; - } - c.computeAcceleratedHuffman(); - var tmp10; - if(decodeState.validBits < 0) { - tmp10 = 0; - } else if(decodeState.validBits < 4) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 4)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp10 = 0; - } else { - var z28 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp10 = z28; - } - } else { - var z29 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp10 = z29; - } - c.lookupType = tmp10; - if(c.lookupType > 2) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook lookup type",{ fileName : "Codebook.hx", lineNumber : 143, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); - } - if(c.lookupType > 0) { - var x2; - if(decodeState.validBits < 0) { - x2 = 0; - } else if(decodeState.validBits < 32) { - x2 = decodeState.readBits(24) + (decodeState.readBits(8) << 24); - } else { - var z30 = decodeState.acc & -1; - decodeState.acc = decodeState.acc >>> 32; - decodeState.validBits -= 32; - x2 = z30; - } - var mantissa = _$UInt_UInt_$Impl_$.toFloat(x2 & 2097151); - var sign = x2 & -2147483648; - var exp = (x2 & 2145386496) >>> 21; - var res = sign != 0 ? -mantissa : mantissa; - c.minimumValue = res * Math.pow(2,exp - 788); - var x3; - if(decodeState.validBits < 0) { - x3 = 0; - } else if(decodeState.validBits < 32) { - x3 = decodeState.readBits(24) + (decodeState.readBits(8) << 24); - } else { - var z31 = decodeState.acc & -1; - decodeState.acc = decodeState.acc >>> 32; - decodeState.validBits -= 32; - x3 = z31; - } - var mantissa1 = _$UInt_UInt_$Impl_$.toFloat(x3 & 2097151); - var sign1 = x3 & -2147483648; - var exp1 = (x3 & 2145386496) >>> 21; - var res1 = sign1 != 0 ? -mantissa1 : mantissa1; - c.deltaValue = res1 * Math.pow(2,exp1 - 788); - var tmp11; - if(decodeState.validBits < 0) { - tmp11 = 0; - } else if(decodeState.validBits < 4) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 4)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp11 = 0; - } else { - var z32 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp11 = z32; - } - } else { - var z33 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp11 = z33; - } - c.valueBits = tmp11 + 1; - var tmp12; - if(decodeState.validBits < 0) { - tmp12 = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp12 = 0; - } else { - var z34 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp12 = z34; - } - } else { - var z35 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp12 = z35; - } - c.sequenceP = tmp12 != 0; - if(c.lookupType == 1) { - c.lookupValues = kha_audio2_ogg_vorbis_VorbisTools.lookup1Values(c.entries,c.dimensions); - } else { - c.lookupValues = c.entries * c.dimensions; - } - var length6 = c.lookupValues; - var this7 = new Array(length6); - var mults = this7; - var _g13 = 0; - var _g4 = c.lookupValues; - while(_g13 < _g4) { - var j2 = _g13++; - var n2 = c.valueBits; - var q; - if(decodeState.validBits < 0) { - q = 0; - } else if(decodeState.validBits < n2) { - if(n2 > 24) { - q = decodeState.readBits(24) + (decodeState.readBits(n2 - 24) << 24); - } else { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < n2)) { - break; - } - } - if(decodeState.validBits < 0) { - q = 0; - } else { - var z36 = decodeState.acc & (1 << n2) - 1; - decodeState.acc = decodeState.acc >>> n2; - decodeState.validBits -= n2; - q = z36; - } - } - } else { - var z37 = decodeState.acc & (1 << n2) - 1; - decodeState.acc = decodeState.acc >>> n2; - decodeState.validBits -= n2; - q = z37; - } - if(q == -1) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"fail lookup",{ fileName : "Codebook.hx", lineNumber : 161, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "read"})); - } - mults[j2] = q; - } - var length7 = c.lookupValues; - var this8 = new Array(length7); - c.multiplicands = this8; - var _g14 = 0; - var _g5 = c.lookupValues; - while(_g14 < _g5) { - var j3 = _g14++; - c.multiplicands[j3] = mults[j3] * c.deltaValue + c.minimumValue; - } - if(c.lookupType == 2 && c.sequenceP) { - var _g15 = 1; - var _g6 = c.lookupValues; - while(_g15 < _g6) { - var j4 = _g15++; - c.multiplicands[j4] = c.multiplicands[j4 - 1]; - } - c.sequenceP = false; - } - } - return c; -}; -kha_audio2_ogg_vorbis_data_Codebook.prototype = { - dimensions: null - ,entries: null - ,codewordLengths: null - ,minimumValue: null - ,deltaValue: null - ,valueBits: null - ,lookupType: null - ,sequenceP: null - ,sparse: null - ,lookupValues: null - ,multiplicands: null - ,codewords: null - ,fastHuffman: null - ,sortedCodewords: null - ,sortedValues: null - ,sortedEntries: null - ,addEntry: function(huffCode,symbol,count,len,values) { - if(!this.sparse) { - this.codewords[symbol] = huffCode; - } else { - this.codewords[count] = huffCode; - this.codewordLengths[count] = len; - values[count] = symbol; - } - } - ,includeInSort: function(len) { - if(this.sparse) { - return true; - } else if(len == 255) { - return false; - } else if(len > 10) { - return true; - } else { - return false; - } - } - ,computeCodewords: function(len,n,values) { - var this1 = new Array(32); - var available = this1; - var _g = 0; - while(_g < 32) { - var x = _g++; - available[x] = 0; - } - var k = 0; - while(k < n) { - if(len[k] < 255) { - break; - } - ++k; - } - if(k == n) { - var b = this.sortedEntries == 0; - return true; - } - var m = 0; - var count = m++; - if(!this.sparse) { - this.codewords[k] = 0; - } else { - this.codewords[count] = 0; - this.codewordLengths[count] = len[k]; - values[count] = k; - } - var i = 0; - while(++i <= len[k]) available[i] = 1 << 32 - i; - i = k; - while(++i < n) { - var z = len[i]; - if(z == 255) { - continue; - } - while(z > 0 && available[z] == 0) --z; - if(z == 0) { - return false; - } - var res = available[z]; - available[z] = 0; - var n1 = res; - n1 = (n1 & -1431655766) >>> 1 | (n1 & 1431655765) << 1; - n1 = (n1 & -858993460) >>> 2 | (n1 & 858993459) << 2; - n1 = (n1 & -252645136) >>> 4 | (n1 & 252645135) << 4; - n1 = (n1 & -16711936) >>> 8 | (n1 & 16711935) << 8; - var huffCode = n1 >>> 16 | n1 << 16; - var count1 = m++; - if(!this.sparse) { - this.codewords[i] = huffCode; - } else { - this.codewords[count1] = huffCode; - this.codewordLengths[count1] = len[i]; - values[count1] = i; - } - if(z != len[i]) { - var y = len[i]; - while(y > z) { - available[y] = res + (1 << 32 - y); - --y; - } - } - } - return true; - } - ,computeSortedHuffman: function(lengths,values) { - if(!this.sparse) { - var k = 0; - var _g1 = 0; - var _g = this.entries; - while(_g1 < _g) { - var i = _g1++; - var len = lengths[i]; - if(this.sparse ? true : len == 255 ? false : len > 10) { - var n = this.codewords[i]; - n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1; - n = (n & -858993460) >>> 2 | (n & 858993459) << 2; - n = (n & -252645136) >>> 4 | (n & 252645135) << 4; - n = (n & -16711936) >>> 8 | (n & 16711935) << 8; - this.sortedCodewords[k++] = n >>> 16 | n << 16; - } - } - var b = k == this.sortedEntries; - } else { - var _g11 = 0; - var _g2 = this.sortedEntries; - while(_g11 < _g2) { - var i1 = _g11++; - var n1 = this.codewords[i1]; - n1 = (n1 & -1431655766) >>> 1 | (n1 & 1431655765) << 1; - n1 = (n1 & -858993460) >>> 2 | (n1 & 858993459) << 2; - n1 = (n1 & -252645136) >>> 4 | (n1 & 252645135) << 4; - n1 = (n1 & -16711936) >>> 8 | (n1 & 16711935) << 8; - this.sortedCodewords[i1] = n1 >>> 16 | n1 << 16; - } - } - this.sortedCodewords[this.sortedEntries] = -1; - this.sortedCodewords.sort(kha_audio2_ogg_vorbis_VorbisTools.uintAsc); - var len1 = this.sparse ? this.sortedEntries : this.entries; - var _g12 = 0; - var _g3 = len1; - while(_g12 < _g3) { - var i2 = _g12++; - var huffLen = this.sparse ? lengths[values[i2]] : lengths[i2]; - if(this.sparse ? true : huffLen == 255 ? false : huffLen > 10) { - var n2 = this.codewords[i2]; - n2 = (n2 & -1431655766) >>> 1 | (n2 & 1431655765) << 1; - n2 = (n2 & -858993460) >>> 2 | (n2 & 858993459) << 2; - n2 = (n2 & -252645136) >>> 4 | (n2 & 252645135) << 4; - n2 = (n2 & -16711936) >>> 8 | (n2 & 16711935) << 8; - var code = n2 >>> 16 | n2 << 16; - var x = 0; - var n3 = this.sortedEntries; - while(n3 > 1) { - var m = x + (n3 >> 1); - if(_$UInt_UInt_$Impl_$.gte(code,this.sortedCodewords[m])) { - x = m; - n3 -= n3 >> 1; - } else { - n3 >>= 1; - } - } - if(this.sparse) { - this.sortedValues[x] = values[i2]; - this.codewordLengths[x] = huffLen; - } else { - this.sortedValues[x] = i2; - } - } - } - } - ,computeAcceleratedHuffman: function() { - var this1 = new Array(1024); - this.fastHuffman = this1; - this.fastHuffman[0] = -1; - var _g1 = 0; - var _g = 1024; - while(_g1 < _g) { - var i = _g1++; - this.fastHuffman[i] = -1; - } - var len = this.sparse ? this.sortedEntries : this.entries; - var _g11 = 0; - var _g2 = len; - while(_g11 < _g2) { - var i1 = _g11++; - if(this.codewordLengths[i1] <= 10) { - var z; - if(this.sparse) { - var n = this.sortedCodewords[i1]; - n = (n & -1431655766) >>> 1 | (n & 1431655765) << 1; - n = (n & -858993460) >>> 2 | (n & 858993459) << 2; - n = (n & -252645136) >>> 4 | (n & 252645135) << 4; - n = (n & -16711936) >>> 8 | (n & 16711935) << 8; - z = n >>> 16 | n << 16; - } else { - z = this.codewords[i1]; - } - while(z < 1024) { - this.fastHuffman[z] = i1; - z += 1 << this.codewordLengths[i1]; - } - } - } - } - ,codebookDecode: function(decodeState,output,offset,len) { - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i = this.fastHuffman[decodeState.acc & 1023]; - var val; - if(i >= 0) { - var l = this.codewordLengths[i]; - decodeState.acc = decodeState.acc >>> l; - decodeState.validBits -= l; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val = -1; - } else { - val = i; - } - } else { - val = decodeState.decodeScalarRaw(this); - } - if(this.sparse) { - val = this.sortedValues[val]; - } - var z = val; - var lookupValues = this.lookupValues; - var sequenceP = this.sequenceP; - var multiplicands = this.multiplicands; - var minimumValue = this.minimumValue; - if(z < 0) { - return false; - } - if(len > this.dimensions) { - len = this.dimensions; - } - if(this.lookupType == 1) { - var div = 1; - var last = 0.0; - var _g1 = 0; - var _g = len; - while(_g1 < _g) { - var i1 = _g1++; - var off = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0; - var val1 = multiplicands[off] + last; - var _g2 = offset + i1; - var _g3 = output; - _g3[_g2] = _g3[_g2] + val1; - if(sequenceP) { - last = val1 + minimumValue; - } - div = div * lookupValues; - } - return true; - } - z *= this.dimensions; - if(sequenceP) { - var last1 = 0.0; - var _g11 = 0; - var _g4 = len; - while(_g11 < _g4) { - var i2 = _g11++; - var val2 = multiplicands[z + i2] + last1; - var _g21 = offset + i2; - var _g31 = output; - _g31[_g21] = _g31[_g21] + val2; - last1 = val2 + minimumValue; - } - } else { - var last2 = 0.0; - var _g12 = 0; - var _g5 = len; - while(_g12 < _g5) { - var i3 = _g12++; - var _g22 = offset + i3; - var _g32 = output; - _g32[_g22] = _g32[_g22] + (multiplicands[z + i3] + last2); - } - } - return true; - } - ,codebookDecodeStep: function(decodeState,output,offset,len,step) { - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i = this.fastHuffman[decodeState.acc & 1023]; - var val; - if(i >= 0) { - var l = this.codewordLengths[i]; - decodeState.acc = decodeState.acc >>> l; - decodeState.validBits -= l; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val = -1; - } else { - val = i; - } - } else { - val = decodeState.decodeScalarRaw(this); - } - if(this.sparse) { - val = this.sortedValues[val]; - } - var z = val; - var last = 0.0; - if(z < 0) { - return false; - } - if(len > this.dimensions) { - len = this.dimensions; - } - var lookupValues = this.lookupValues; - var sequenceP = this.sequenceP; - var multiplicands = this.multiplicands; - if(this.lookupType == 1) { - var div = 1; - var _g1 = 0; - var _g = len; - while(_g1 < _g) { - var i1 = _g1++; - var off = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0; - var val1 = multiplicands[off] + last; - var _g2 = offset + i1 * step; - var _g3 = output; - _g3[_g2] = _g3[_g2] + val1; - if(sequenceP) { - last = val1; - } - div = div * lookupValues; - } - return true; - } - z *= this.dimensions; - var _g11 = 0; - var _g4 = len; - while(_g11 < _g4) { - var i2 = _g11++; - var val2 = multiplicands[z + i2] + last; - var _g21 = offset + i2 * step; - var _g31 = output; - _g31[_g21] = _g31[_g21] + val2; - if(sequenceP) { - last = val2; - } - } - return true; - } - ,decodeStart: function(decodeState) { - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i = this.fastHuffman[decodeState.acc & 1023]; - var val; - if(i >= 0) { - var l = this.codewordLengths[i]; - decodeState.acc = decodeState.acc >>> l; - decodeState.validBits -= l; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val = -1; - } else { - val = i; - } - } else { - val = decodeState.decodeScalarRaw(this); - } - if(this.sparse) { - val = this.sortedValues[val]; - } - return val; - } - ,decodeDeinterleaveRepeat: function(decodeState,residueBuffers,ch,cInter,pInter,len,totalDecode) { - var effective = this.dimensions; - if(this.lookupType == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "Codebook.hx", lineNumber : 488, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "decodeDeinterleaveRepeat"})); - } - var multiplicands = this.multiplicands; - var sequenceP = this.sequenceP; - var lookupValues = this.lookupValues; - while(totalDecode > 0) { - var last = 0.0; - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i = this.fastHuffman[decodeState.acc & 1023]; - var val; - if(i >= 0) { - var l = this.codewordLengths[i]; - decodeState.acc = decodeState.acc >>> l; - decodeState.validBits -= l; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val = -1; - } else { - val = i; - } - } else { - val = decodeState.decodeScalarRaw(this); - } - if(this.sparse) { - val = this.sortedValues[val]; - } - var z = val; - if(z < 0) { - if(decodeState.bytesInSeg == 0 && decodeState.lastSeg) { - return null; - } - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "Codebook.hx", lineNumber : 503, className : "kha.audio2.ogg.vorbis.data.Codebook", methodName : "decodeDeinterleaveRepeat"})); - } - if(cInter + pInter * ch + effective > len * ch) { - effective = len * ch - (pInter * ch - cInter); - } - if(this.lookupType == 1) { - var div = 1; - if(sequenceP) { - var _g1 = 0; - var _g = effective; - while(_g1 < _g) { - var i1 = _g1++; - var off = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0; - var val1 = multiplicands[off] + last; - var _g2 = pInter; - var _g3 = residueBuffers[cInter]; - _g3[_g2] = _g3[_g2] + val1; - if(++cInter == ch) { - cInter = 0; - ++pInter; - } - last = val1; - div = div * lookupValues; - } - } else { - var _g11 = 0; - var _g4 = effective; - while(_g11 < _g4) { - var i2 = _g11++; - var off1 = _$UInt_UInt_$Impl_$.toFloat(z / div | 0) % _$UInt_UInt_$Impl_$.toFloat(lookupValues) | 0; - var val2 = multiplicands[off1] + last; - var _g21 = pInter; - var _g31 = residueBuffers[cInter]; - _g31[_g21] = _g31[_g21] + val2; - if(++cInter == ch) { - cInter = 0; - ++pInter; - } - div = div * lookupValues; - } - } - } else { - z *= this.dimensions; - if(sequenceP) { - var _g12 = 0; - var _g5 = effective; - while(_g12 < _g5) { - var i3 = _g12++; - var val3 = multiplicands[z + i3] + last; - var _g22 = pInter; - var _g32 = residueBuffers[cInter]; - _g32[_g22] = _g32[_g22] + val3; - if(++cInter == ch) { - cInter = 0; - ++pInter; - } - last = val3; - } - } else { - var _g13 = 0; - var _g6 = effective; - while(_g13 < _g6) { - var i4 = _g13++; - var val4 = multiplicands[z + i4] + last; - var _g23 = pInter; - var _g33 = residueBuffers[cInter]; - _g33[_g23] = _g33[_g23] + val4; - if(++cInter == ch) { - cInter = 0; - ++pInter; - } - } - } - } - totalDecode -= effective; - } - return { cInter : cInter, pInter : pInter}; - } - ,residueDecode: function(decodeState,target,offset,n,rtype) { - if(rtype == 0) { - var step = n / this.dimensions | 0; - var _g1 = 0; - var _g = step; - while(_g1 < _g) { - var k = _g1++; - if(!this.codebookDecodeStep(decodeState,target,offset + k,n - offset - k,step)) { - return false; - } - } - } else { - var k1 = 0; - while(k1 < n) { - if(!this.codebookDecode(decodeState,target,offset,n - k1)) { - return false; - } - k1 += this.dimensions; - offset += this.dimensions; - } - } - return true; - } - ,__class__: kha_audio2_ogg_vorbis_data_Codebook -}; -var kha_audio2_ogg_vorbis_data_Comment = function() { - this.data = new haxe_ds_StringMap(); -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Comment"] = kha_audio2_ogg_vorbis_data_Comment; -kha_audio2_ogg_vorbis_data_Comment.__name__ = true; -kha_audio2_ogg_vorbis_data_Comment.prototype = { - data: null - ,get_title: function() { - return this.getString("title"); - } - ,get_loopStart: function() { - return Std.parseInt(this.getString("loopstart")); - } - ,get_loopLength: function() { - return Std.parseInt(this.getString("looplength")); - } - ,get_version: function() { - return this.getString("version"); - } - ,get_album: function() { - return this.getString("album"); - } - ,get_organization: function() { - return this.getString("organization"); - } - ,get_tracknumber: function() { - return this.getString("tracknumber"); - } - ,get_performer: function() { - return this.getString("performer"); - } - ,get_copyright: function() { - return this.getString("copyright"); - } - ,get_license: function() { - return this.getString("license"); - } - ,get_artist: function() { - return this.getString("artist"); - } - ,get_description: function() { - return this.getString("description"); - } - ,get_genre: function() { - return this.getString("genre"); - } - ,get_date: function() { - return this.getString("date"); - } - ,get_location: function() { - return this.getString("location"); - } - ,get_contact: function() { - return this.getString("contact"); - } - ,get_isrc: function() { - return this.getString("isrc"); - } - ,get_artists: function() { - return this.getArray("artist"); - } - ,add: function(key,value) { - key = key.toLowerCase(); - var _this = this.data; - if(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key)) { - var _this1 = this.data; - (__map_reserved[key] != null ? _this1.getReserved(key) : _this1.h[key]).push(value); - } else { - var v = [value]; - var _this2 = this.data; - if(__map_reserved[key] != null) { - _this2.setReserved(key,v); - } else { - _this2.h[key] = v; - } - } - } - ,getString: function(key) { - key = key.toLowerCase(); - var _this = this.data; - if(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key)) { - var _this1 = this.data; - return (__map_reserved[key] != null ? _this1.getReserved(key) : _this1.h[key])[0]; - } else { - return null; - } - } - ,getArray: function(key) { - key = key.toLowerCase(); - var _this = this.data; - if(__map_reserved[key] != null ? _this.existsReserved(key) : _this.h.hasOwnProperty(key)) { - var _this1 = this.data; - if(__map_reserved[key] != null) { - return _this1.getReserved(key); - } else { - return _this1.h[key]; - } - } else { - return null; - } - } - ,__class__: kha_audio2_ogg_vorbis_data_Comment -}; -var kha_audio2_ogg_vorbis_data_Floor = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Floor"] = kha_audio2_ogg_vorbis_data_Floor; -kha_audio2_ogg_vorbis_data_Floor.__name__ = true; -kha_audio2_ogg_vorbis_data_Floor.read = function(decodeState,codebooks) { - var floor = new kha_audio2_ogg_vorbis_data_Floor(); - var tmp; - if(decodeState.validBits < 0) { - tmp = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp = 0; - } else { - var z = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp = z; - } - } else { - var z1 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp = z1; - } - floor.type = tmp; - if(floor.type > 1) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Floor.hx", lineNumber : 28, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"})); - } - if(floor.type == 0) { - var g = floor.floor0 = new kha_audio2_ogg_vorbis_data_Floor0(); - var tmp1; - if(decodeState.validBits < 0) { - tmp1 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp1 = 0; - } else { - var z2 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp1 = z2; - } - } else { - var z3 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp1 = z3; - } - g.order = tmp1; - var tmp2; - if(decodeState.validBits < 0) { - tmp2 = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp2 = 0; - } else { - var z4 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp2 = z4; - } - } else { - var z5 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp2 = z5; - } - g.rate = tmp2; - var tmp3; - if(decodeState.validBits < 0) { - tmp3 = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp3 = 0; - } else { - var z6 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp3 = z6; - } - } else { - var z7 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp3 = z7; - } - g.barkMapSize = tmp3; - var tmp4; - if(decodeState.validBits < 0) { - tmp4 = 0; - } else if(decodeState.validBits < 6) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 6)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp4 = 0; - } else { - var z8 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - tmp4 = z8; - } - } else { - var z9 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - tmp4 = z9; - } - g.amplitudeBits = tmp4; - var tmp5; - if(decodeState.validBits < 0) { - tmp5 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp5 = 0; - } else { - var z10 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp5 = z10; - } - } else { - var z11 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp5 = z11; - } - g.amplitudeOffset = tmp5; - var tmp6; - if(decodeState.validBits < 0) { - tmp6 = 0; - } else if(decodeState.validBits < 4) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 4)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp6 = 0; - } else { - var z12 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp6 = z12; - } - } else { - var z13 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp6 = z13; - } - g.numberOfBooks = tmp6 + 1; - var _g1 = 0; - var _g = g.numberOfBooks; - while(_g1 < _g) { - var j = _g1++; - var this1 = g.bookList; - var val; - if(decodeState.validBits < 0) { - val = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - val = 0; - } else { - var z14 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val = z14; - } - } else { - var z15 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val = z15; - } - this1[j] = val; - } - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED,null,{ fileName : "Floor.hx", lineNumber : 41, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"})); - } else { - var p = []; - var g1 = floor.floor1 = new kha_audio2_ogg_vorbis_data_Floor1(); - var maxClass = -1; - var tmp7; - if(decodeState.validBits < 0) { - tmp7 = 0; - } else if(decodeState.validBits < 5) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 5)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp7 = 0; - } else { - var z16 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - tmp7 = z16; - } - } else { - var z17 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - tmp7 = z17; - } - g1.partitions = tmp7; - var length = g1.partitions; - var this2 = new Array(length); - g1.partitionClassList = this2; - var _g11 = 0; - var _g2 = g1.partitions; - while(_g11 < _g2) { - var j1 = _g11++; - var this3 = g1.partitionClassList; - var val1; - if(decodeState.validBits < 0) { - val1 = 0; - } else if(decodeState.validBits < 4) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 4)) { - break; - } - } - if(decodeState.validBits < 0) { - val1 = 0; - } else { - var z18 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - val1 = z18; - } - } else { - var z19 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - val1 = z19; - } - this3[j1] = val1; - if(g1.partitionClassList[j1] > maxClass) { - maxClass = g1.partitionClassList[j1]; - } - } - var this4 = new Array(maxClass + 1); - g1.classDimensions = this4; - var this5 = new Array(maxClass + 1); - g1.classMasterbooks = this5; - var this6 = new Array(maxClass + 1); - g1.classSubclasses = this6; - var this7 = new Array(maxClass + 1); - g1.subclassBooks = this7; - var _g12 = 0; - var _g3 = maxClass + 1; - while(_g12 < _g3) { - var j2 = _g12++; - var this8 = g1.classDimensions; - var val2; - if(decodeState.validBits < 0) { - val2 = 0; - } else if(decodeState.validBits < 3) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 3)) { - break; - } - } - if(decodeState.validBits < 0) { - val2 = 0; - } else { - var z20 = decodeState.acc & 7; - decodeState.acc = decodeState.acc >>> 3; - decodeState.validBits -= 3; - val2 = z20; - } - } else { - var z21 = decodeState.acc & 7; - decodeState.acc = decodeState.acc >>> 3; - decodeState.validBits -= 3; - val2 = z21; - } - this8[j2] = val2 + 1; - var this9 = g1.classSubclasses; - var val3; - if(decodeState.validBits < 0) { - val3 = 0; - } else if(decodeState.validBits < 2) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 2)) { - break; - } - } - if(decodeState.validBits < 0) { - val3 = 0; - } else { - var z22 = decodeState.acc & 3; - decodeState.acc = decodeState.acc >>> 2; - decodeState.validBits -= 2; - val3 = z22; - } - } else { - var z23 = decodeState.acc & 3; - decodeState.acc = decodeState.acc >>> 2; - decodeState.validBits -= 2; - val3 = z23; - } - this9[j2] = val3; - if(g1.classSubclasses[j2] != 0) { - var this10 = g1.classMasterbooks; - var val4; - if(decodeState.validBits < 0) { - val4 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - val4 = 0; - } else { - var z24 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val4 = z24; - } - } else { - var z25 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val4 = z25; - } - this10[j2] = val4; - if(g1.classMasterbooks[j2] >= codebooks.length) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Floor.hx", lineNumber : 64, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"})); - } - } - var kl = 1 << g1.classSubclasses[j2]; - var this11 = g1.subclassBooks; - var this12 = new Array(kl); - this11[j2] = this12; - var _g31 = 0; - var _g21 = kl; - while(_g31 < _g21) { - var k = _g31++; - var this13 = g1.subclassBooks[j2]; - var val5; - if(decodeState.validBits < 0) { - val5 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - val5 = 0; - } else { - var z26 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val5 = z26; - } - } else { - var z27 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val5 = z27; - } - this13[k] = val5 - 1; - if(g1.subclassBooks[j2][k] >= codebooks.length) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Floor.hx", lineNumber : 73, className : "kha.audio2.ogg.vorbis.data.Floor", methodName : "read"})); - } - } - } - var tmp8; - if(decodeState.validBits < 0) { - tmp8 = 0; - } else if(decodeState.validBits < 2) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 2)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp8 = 0; - } else { - var z28 = decodeState.acc & 3; - decodeState.acc = decodeState.acc >>> 2; - decodeState.validBits -= 2; - tmp8 = z28; - } - } else { - var z29 = decodeState.acc & 3; - decodeState.acc = decodeState.acc >>> 2; - decodeState.validBits -= 2; - tmp8 = z29; - } - g1.floor1Multiplier = tmp8 + 1; - var tmp9; - if(decodeState.validBits < 0) { - tmp9 = 0; - } else if(decodeState.validBits < 4) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 4)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp9 = 0; - } else { - var z30 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp9 = z30; - } - } else { - var z31 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp9 = z31; - } - g1.rangebits = tmp9; - var this14 = new Array(250); - g1.xlist = this14; - g1.xlist[0] = 0; - g1.xlist[1] = 1 << g1.rangebits; - g1.values = 2; - var _g13 = 0; - var _g4 = g1.partitions; - while(_g13 < _g4) { - var j3 = _g13++; - var c = g1.partitionClassList[j3]; - var _g32 = 0; - var _g22 = g1.classDimensions[c]; - while(_g32 < _g22) { - var k1 = _g32++; - var this15 = g1.xlist; - var index = g1.values; - var n = g1.rangebits; - var val6; - if(decodeState.validBits < 0) { - val6 = 0; - } else if(decodeState.validBits < n) { - if(n > 24) { - val6 = decodeState.readBits(24) + (decodeState.readBits(n - 24) << 24); - } else { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < n)) { - break; - } - } - if(decodeState.validBits < 0) { - val6 = 0; - } else { - var z32 = decodeState.acc & (1 << n) - 1; - decodeState.acc = decodeState.acc >>> n; - decodeState.validBits -= n; - val6 = z32; - } - } - } else { - var z33 = decodeState.acc & (1 << n) - 1; - decodeState.acc = decodeState.acc >>> n; - decodeState.validBits -= n; - val6 = z33; - } - this15[index] = val6; - g1.values++; - } - } - var _g14 = 0; - var _g5 = g1.values; - while(_g14 < _g5) { - var j4 = _g14++; - p.push(new kha_audio2_ogg_vorbis_data_IntPoint()); - p[j4].x = g1.xlist[j4]; - p[j4].y = j4; - } - p.sort(kha_audio2_ogg_vorbis_VorbisTools.pointCompare); - var length1 = g1.values; - var this16 = new Array(length1); - g1.sortedOrder = this16; - var _g15 = 0; - var _g6 = g1.values; - while(_g15 < _g6) { - var j5 = _g15++; - g1.sortedOrder[j5] = p[j5].y; - } - var length2 = g1.values; - var this17 = new Array(length2); - g1.neighbors = this17; - var _g16 = 2; - var _g7 = g1.values; - while(_g16 < _g7) { - var j6 = _g16++; - var ne_low; - var ne_high; - var x = g1.xlist; - var low = -1; - var high = 65536; - var plow = 0; - var phigh = 0; - var _g17 = 0; - var _g8 = j6; - while(_g17 < _g8) { - var i = _g17++; - if(x[i] > low && x[i] < x[j6]) { - plow = i; - low = x[i]; - } - if(x[i] < high && x[i] > x[j6]) { - phigh = i; - high = x[i]; - } - } - ne_low = plow; - ne_high = phigh; - var this18 = g1.neighbors; - var length3 = g1.values; - var this19 = new Array(length3); - this18[j6] = this19; - g1.neighbors[j6][0] = ne_low; - g1.neighbors[j6][1] = ne_high; - } - } - return floor; -}; -kha_audio2_ogg_vorbis_data_Floor.prototype = { - floor0: null - ,floor1: null - ,type: null - ,__class__: kha_audio2_ogg_vorbis_data_Floor -}; -var kha_audio2_ogg_vorbis_data_Floor0 = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Floor0"] = kha_audio2_ogg_vorbis_data_Floor0; -kha_audio2_ogg_vorbis_data_Floor0.__name__ = true; -kha_audio2_ogg_vorbis_data_Floor0.prototype = { - order: null - ,rate: null - ,barkMapSize: null - ,amplitudeBits: null - ,amplitudeOffset: null - ,numberOfBooks: null - ,bookList: null - ,__class__: kha_audio2_ogg_vorbis_data_Floor0 -}; -var kha_audio2_ogg_vorbis_data_Floor1 = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Floor1"] = kha_audio2_ogg_vorbis_data_Floor1; -kha_audio2_ogg_vorbis_data_Floor1.__name__ = true; -kha_audio2_ogg_vorbis_data_Floor1.prototype = { - partitions: null - ,partitionClassList: null - ,classDimensions: null - ,classSubclasses: null - ,classMasterbooks: null - ,subclassBooks: null - ,xlist: null - ,sortedOrder: null - ,neighbors: null - ,floor1Multiplier: null - ,rangebits: null - ,values: null - ,__class__: kha_audio2_ogg_vorbis_data_Floor1 -}; -var kha_audio2_ogg_vorbis_data_Header = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Header"] = kha_audio2_ogg_vorbis_data_Header; -kha_audio2_ogg_vorbis_data_Header.__name__ = true; -kha_audio2_ogg_vorbis_data_Header.read = function(decodeState) { - var page = decodeState.page; - page.start(decodeState); - if((page.flag & 2) == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"not firstPage",{ fileName : "Header.hx", lineNumber : 46, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - if((page.flag & 4) != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"lastPage",{ fileName : "Header.hx", lineNumber : 49, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - if((page.flag & 1) != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"continuedPacket",{ fileName : "Header.hx", lineNumber : 52, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - decodeState.firstPageValidate(); - decodeState.inputPosition += 1; - if(decodeState.input.readByte() != 1) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{ fileName : "Header.hx", lineNumber : 57, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - var header = new haxe_io_Bytes(new ArrayBuffer(6)); - var _g = 0; - while(_g < 6) { - var i = _g++; - var x; - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - x = -1; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - x = decodeState.input.readByte(); - } - decodeState.validBits = 0; - header.b[i] = x & 255; - } - if(header.toString() != "vorbis") { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "VorbisDecodeState.hx", lineNumber : 300, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"})); - } - decodeState.inputPosition += 4; - var version = decodeState.input.readInt32(); - if(version != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"vorbis version : " + version,{ fileName : "Header.hx", lineNumber : 66, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - var header1 = new kha_audio2_ogg_vorbis_data_Header(); - decodeState.inputPosition += 1; - header1.channel = decodeState.input.readByte(); - if(header1.channel == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no channel",{ fileName : "Header.hx", lineNumber : 73, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } else if(header1.channel > 16) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS,"too many channels",{ fileName : "Header.hx", lineNumber : 75, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - decodeState.inputPosition += 4; - header1.sampleRate = decodeState.input.readInt32(); - if(header1.sampleRate == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no sampling rate",{ fileName : "Header.hx", lineNumber : 80, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - decodeState.inputPosition += 4; - header1.maximumBitRate = decodeState.input.readInt32(); - decodeState.inputPosition += 4; - header1.nominalBitRate = decodeState.input.readInt32(); - decodeState.inputPosition += 4; - header1.minimumBitRate = decodeState.input.readInt32(); - decodeState.inputPosition += 1; - var x1 = decodeState.input.readByte(); - var log0 = x1 & 15; - var log1 = x1 >> 4; - header1.blocksize0 = 1 << log0; - header1.blocksize1 = 1 << log1; - if(log0 < 6 || log0 > 13) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 93, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - if(log1 < 6 || log1 > 13) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 96, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - if(log0 > log1) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 99, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - decodeState.inputPosition += 1; - var x2 = decodeState.input.readByte(); - if((x2 & 1) == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,null,{ fileName : "Header.hx", lineNumber : 105, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - decodeState.page.start(decodeState); - decodeState.startPacket(); - var len = 0; - var output = new haxe_io_BytesOutput(); - while(true) { - len = decodeState.next(); - if(!(len != 0)) { - break; - } - decodeState.inputPosition += len; - output.write(decodeState.input.read(len)); - decodeState.bytesInSeg = 0; - } - var packetInput = new haxe_io_BytesInput(output.getBytes()); - packetInput.readByte(); - packetInput.read(6); - var vendorLength = packetInput.readInt32(); - header1.vendor = packetInput.readString(vendorLength); - header1.comment = new kha_audio2_ogg_vorbis_data_Comment(); - var commentCount = packetInput.readInt32(); - var _g1 = 0; - var _g2 = commentCount; - while(_g1 < _g2) { - var i1 = _g1++; - var n = packetInput.readInt32(); - var str = packetInput.readString(n); - var splitter = str.indexOf("="); - if(splitter != -1) { - header1.comment.add(str.substring(0,splitter),str.substring(splitter + 1)); - } - } - var x3 = packetInput.readByte(); - if((x3 & 1) == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 141, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - decodeState.startPacket(); - var x4; - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - x4 = -1; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - x4 = decodeState.input.readByte(); - } - decodeState.validBits = 0; - if(x4 != 5) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"setup packet",{ fileName : "Header.hx", lineNumber : 149, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - var header2 = new haxe_io_Bytes(new ArrayBuffer(6)); - var _g3 = 0; - while(_g3 < 6) { - var i2 = _g3++; - var x5; - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - x5 = -1; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - x5 = decodeState.input.readByte(); - } - decodeState.validBits = 0; - header2.b[i2] = x5 & 255; - } - if(header2.toString() != "vorbis") { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{ fileName : "VorbisDecodeState.hx", lineNumber : 300, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "vorbisValidate"})); - } - var codebookCount; - if(decodeState.validBits < 0) { - codebookCount = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - codebookCount = 0; - } else { - var z = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - codebookCount = z; - } - } else { - var z1 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - codebookCount = z1; - } - var codebookCount1 = codebookCount + 1; - var this1 = new Array(codebookCount1); - header1.codebooks = this1; - var _g11 = 0; - var _g4 = codebookCount1; - while(_g11 < _g4) { - var i3 = _g11++; - header1.codebooks[i3] = kha_audio2_ogg_vorbis_data_Codebook.read(decodeState); - } - var x6; - if(decodeState.validBits < 0) { - x6 = 0; - } else if(decodeState.validBits < 6) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 6)) { - break; - } - } - if(decodeState.validBits < 0) { - x6 = 0; - } else { - var z2 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - x6 = z2; - } - } else { - var z3 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - x6 = z3; - } - x2 = x6 + 1; - var _g12 = 0; - var _g5 = x2; - while(_g12 < _g5) { - var i4 = _g12++; - var tmp; - if(decodeState.validBits < 0) { - tmp = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp = 0; - } else { - var z4 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp = z4; - } - } else { - var z5 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp = z5; - } - if(tmp != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 165, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - } - var floorCount; - if(decodeState.validBits < 0) { - floorCount = 0; - } else if(decodeState.validBits < 6) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 6)) { - break; - } - } - if(decodeState.validBits < 0) { - floorCount = 0; - } else { - var z6 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - floorCount = z6; - } - } else { - var z7 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - floorCount = z7; - } - var floorCount1 = floorCount + 1; - var this2 = new Array(floorCount1); - header1.floorConfig = this2; - var _g13 = 0; - var _g6 = floorCount1; - while(_g13 < _g6) { - var i5 = _g13++; - header1.floorConfig[i5] = kha_audio2_ogg_vorbis_data_Floor.read(decodeState,header1.codebooks); - } - var residueCount; - if(decodeState.validBits < 0) { - residueCount = 0; - } else if(decodeState.validBits < 6) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 6)) { - break; - } - } - if(decodeState.validBits < 0) { - residueCount = 0; - } else { - var z8 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - residueCount = z8; - } - } else { - var z9 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - residueCount = z9; - } - var residueCount1 = residueCount + 1; - var this3 = new Array(residueCount1); - header1.residueConfig = this3; - var _g14 = 0; - var _g7 = residueCount1; - while(_g14 < _g7) { - var i6 = _g14++; - header1.residueConfig[i6] = kha_audio2_ogg_vorbis_data_Residue.read(decodeState,header1.codebooks); - } - var mappingCount; - if(decodeState.validBits < 0) { - mappingCount = 0; - } else if(decodeState.validBits < 6) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 6)) { - break; - } - } - if(decodeState.validBits < 0) { - mappingCount = 0; - } else { - var z10 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - mappingCount = z10; - } - } else { - var z11 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - mappingCount = z11; - } - var mappingCount1 = mappingCount + 1; - var this4 = new Array(mappingCount1); - header1.mapping = this4; - var _g15 = 0; - var _g8 = mappingCount1; - while(_g15 < _g8) { - var i7 = _g15++; - var map = kha_audio2_ogg_vorbis_data_Mapping.read(decodeState,header1.channel); - header1.mapping[i7] = map; - var _g31 = 0; - var _g21 = map.submaps; - while(_g31 < _g21) { - var j = _g31++; - if(map.submapFloor[j] >= header1.floorConfig.length) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 191, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - if(map.submapResidue[j] >= header1.residueConfig.length) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 194, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - } - } - var modeCount; - if(decodeState.validBits < 0) { - modeCount = 0; - } else if(decodeState.validBits < 6) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 6)) { - break; - } - } - if(decodeState.validBits < 0) { - modeCount = 0; - } else { - var z12 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - modeCount = z12; - } - } else { - var z13 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - modeCount = z13; - } - var modeCount1 = modeCount + 1; - var this5 = new Array(modeCount1); - header1.modes = this5; - var _g16 = 0; - var _g9 = modeCount1; - while(_g16 < _g9) { - var i8 = _g16++; - var mode = kha_audio2_ogg_vorbis_data_Mode.read(decodeState); - header1.modes[i8] = mode; - if(mode.mapping >= header1.mapping.length) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Header.hx", lineNumber : 205, className : "kha.audio2.ogg.vorbis.data.Header", methodName : "read"})); - } - } - while(decodeState.bytesInSeg != 0 || !decodeState.lastSeg && decodeState.next() != 0) { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.input.readByte(); - } - return header1; -}; -kha_audio2_ogg_vorbis_data_Header.prototype = { - maximumBitRate: null - ,nominalBitRate: null - ,minimumBitRate: null - ,sampleRate: null - ,channel: null - ,blocksize0: null - ,blocksize1: null - ,codebooks: null - ,floorConfig: null - ,residueConfig: null - ,mapping: null - ,modes: null - ,comment: null - ,vendor: null - ,__class__: kha_audio2_ogg_vorbis_data_Header -}; -var kha_audio2_ogg_vorbis_data_IntPoint = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.IntPoint"] = kha_audio2_ogg_vorbis_data_IntPoint; -kha_audio2_ogg_vorbis_data_IntPoint.__name__ = true; -kha_audio2_ogg_vorbis_data_IntPoint.prototype = { - x: null - ,y: null - ,__class__: kha_audio2_ogg_vorbis_data_IntPoint -}; -var kha_audio2_ogg_vorbis_data_Mapping = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Mapping"] = kha_audio2_ogg_vorbis_data_Mapping; -kha_audio2_ogg_vorbis_data_Mapping.__name__ = true; -kha_audio2_ogg_vorbis_data_Mapping.read = function(decodeState,channels) { - var m = new kha_audio2_ogg_vorbis_data_Mapping(); - var mappingType; - if(decodeState.validBits < 0) { - mappingType = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - mappingType = 0; - } else { - var z = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - mappingType = z; - } - } else { - var z1 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - mappingType = z1; - } - if(mappingType != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"mapping type " + mappingType,{ fileName : "Mapping.hx", lineNumber : 22, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); - } - var this1 = new Array(channels); - m.chan = this1; - var _g1 = 0; - var _g = channels; - while(_g1 < _g) { - var j = _g1++; - m.chan[j] = new kha_audio2_ogg_vorbis_data_MappingChannel(); - } - var tmp; - if(decodeState.validBits < 0) { - tmp = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp = 0; - } else { - var z2 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp = z2; - } - } else { - var z3 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp = z3; - } - if(tmp != 0) { - var tmp1; - if(decodeState.validBits < 0) { - tmp1 = 0; - } else if(decodeState.validBits < 4) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 4)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp1 = 0; - } else { - var z4 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp1 = z4; - } - } else { - var z5 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp1 = z5; - } - m.submaps = tmp1 + 1; - } else { - m.submaps = 1; - } - var tmp2; - if(decodeState.validBits < 0) { - tmp2 = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp2 = 0; - } else { - var z6 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp2 = z6; - } - } else { - var z7 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp2 = z7; - } - if(tmp2 != 0) { - var tmp3; - if(decodeState.validBits < 0) { - tmp3 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp3 = 0; - } else { - var z8 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp3 = z8; - } - } else { - var z9 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp3 = z9; - } - m.couplingSteps = tmp3 + 1; - var _g11 = 0; - var _g2 = m.couplingSteps; - while(_g11 < _g2) { - var k = _g11++; - var tmp4 = m.chan[k]; - var n = channels - 1; - var log2_4 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var n1 = n < 16384 ? n < 16 ? log2_4[n] : n < 512 ? 5 + log2_4[n >> 5] : 10 + log2_4[n >> 10] : n < 16777216 ? n < 524288 ? 15 + log2_4[n >> 15] : 20 + log2_4[n >> 20] : n < 536870912 ? 25 + log2_4[n >> 25] : n < -2147483648 ? 30 + log2_4[n >> 30] : 0; - var tmp5; - if(decodeState.validBits < 0) { - tmp5 = 0; - } else if(decodeState.validBits < n1) { - if(n1 > 24) { - tmp5 = decodeState.readBits(24) + (decodeState.readBits(n1 - 24) << 24); - } else { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < n1)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp5 = 0; - } else { - var z10 = decodeState.acc & (1 << n1) - 1; - decodeState.acc = decodeState.acc >>> n1; - decodeState.validBits -= n1; - tmp5 = z10; - } - } - } else { - var z11 = decodeState.acc & (1 << n1) - 1; - decodeState.acc = decodeState.acc >>> n1; - decodeState.validBits -= n1; - tmp5 = z11; - } - tmp4.magnitude = tmp5; - var tmp6 = m.chan[k]; - var n2 = channels - 1; - var log2_41 = [0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4]; - var n3 = n2 < 16384 ? n2 < 16 ? log2_41[n2] : n2 < 512 ? 5 + log2_41[n2 >> 5] : 10 + log2_41[n2 >> 10] : n2 < 16777216 ? n2 < 524288 ? 15 + log2_41[n2 >> 15] : 20 + log2_41[n2 >> 20] : n2 < 536870912 ? 25 + log2_41[n2 >> 25] : n2 < -2147483648 ? 30 + log2_41[n2 >> 30] : 0; - var tmp7; - if(decodeState.validBits < 0) { - tmp7 = 0; - } else if(decodeState.validBits < n3) { - if(n3 > 24) { - tmp7 = decodeState.readBits(24) + (decodeState.readBits(n3 - 24) << 24); - } else { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < n3)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp7 = 0; - } else { - var z12 = decodeState.acc & (1 << n3) - 1; - decodeState.acc = decodeState.acc >>> n3; - decodeState.validBits -= n3; - tmp7 = z12; - } - } - } else { - var z13 = decodeState.acc & (1 << n3) - 1; - decodeState.acc = decodeState.acc >>> n3; - decodeState.validBits -= n3; - tmp7 = z13; - } - tmp6.angle = tmp7; - if(m.chan[k].magnitude >= channels) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 46, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); - } - if(m.chan[k].angle >= channels) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 49, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); - } - if(m.chan[k].magnitude == m.chan[k].angle) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 52, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); - } - } - } else { - m.couplingSteps = 0; - } - var tmp8; - if(decodeState.validBits < 0) { - tmp8 = 0; - } else if(decodeState.validBits < 2) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 2)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp8 = 0; - } else { - var z14 = decodeState.acc & 3; - decodeState.acc = decodeState.acc >>> 2; - decodeState.validBits -= 2; - tmp8 = z14; - } - } else { - var z15 = decodeState.acc & 3; - decodeState.acc = decodeState.acc >>> 2; - decodeState.validBits -= 2; - tmp8 = z15; - } - if(tmp8 != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 61, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); - } - if(m.submaps > 1) { - var _g12 = 0; - var _g3 = channels; - while(_g12 < _g3) { - var j1 = _g12++; - var tmp9 = m.chan[j1]; - var tmp10; - if(decodeState.validBits < 0) { - tmp10 = 0; - } else if(decodeState.validBits < 4) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 4)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp10 = 0; - } else { - var z16 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp10 = z16; - } - } else { - var z17 = decodeState.acc & 15; - decodeState.acc = decodeState.acc >>> 4; - decodeState.validBits -= 4; - tmp10 = z17; - } - tmp9.mux = tmp10; - if(m.chan[j1].mux >= m.submaps) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mapping.hx", lineNumber : 67, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "read"})); - } - } - } else { - var _g13 = 0; - var _g4 = channels; - while(_g13 < _g4) { - var j2 = _g13++; - m.chan[j2].mux = 0; - } - } - var length = m.submaps; - var this2 = new Array(length); - m.submapFloor = this2; - var length1 = m.submaps; - var this3 = new Array(length1); - m.submapResidue = this3; - var _g14 = 0; - var _g5 = m.submaps; - while(_g14 < _g5) { - var j3 = _g14++; - if(decodeState.validBits >= 0) { - if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits >= 0) { - var z18 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - } - } else { - var z19 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - } - } - var this4 = m.submapFloor; - var val; - if(decodeState.validBits < 0) { - val = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - val = 0; - } else { - var z20 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val = z20; - } - } else { - var z21 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val = z21; - } - this4[j3] = val; - var this5 = m.submapResidue; - var val1; - if(decodeState.validBits < 0) { - val1 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - val1 = 0; - } else { - var z22 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val1 = z22; - } - } else { - var z23 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val1 = z23; - } - this5[j3] = val1; - } - return m; -}; -kha_audio2_ogg_vorbis_data_Mapping.prototype = { - couplingSteps: null - ,chan: null - ,submaps: null - ,submapFloor: null - ,submapResidue: null - ,doFloor: function(floors,i,n,target,finalY,step2Flag) { - var n2 = n >> 1; - var s = this.chan[i].mux; - var floor; - var floor1 = floors[this.submapFloor[s]]; - if(floor1.type == 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{ fileName : "Mapping.hx", lineNumber : 94, className : "kha.audio2.ogg.vorbis.data.Mapping", methodName : "doFloor"})); - } else { - var g = floor1.floor1; - var lx = 0; - var ly = finalY[0] * g.floor1Multiplier; - var _g1 = 1; - var _g = g.values; - while(_g1 < _g) { - var q = _g1++; - var j = g.sortedOrder[q]; - if(finalY[j] >= 0) { - var hy = finalY[j] * g.floor1Multiplier; - var hx = g.xlist[j]; - kha_audio2_ogg_vorbis_VorbisTools.drawLine(target,lx,ly,hx,hy,n2); - lx = hx; - ly = hy; - } - } - if(lx < n2) { - var _g11 = lx; - var _g2 = n2; - while(_g11 < _g2) { - var j1 = _g11++; - var _g21 = j1; - var _g3 = target; - _g3[_g21] = _g3[_g21] * kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[ly]; - } - } - } - } - ,__class__: kha_audio2_ogg_vorbis_data_Mapping -}; -var kha_audio2_ogg_vorbis_data_MappingChannel = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.MappingChannel"] = kha_audio2_ogg_vorbis_data_MappingChannel; -kha_audio2_ogg_vorbis_data_MappingChannel.__name__ = true; -kha_audio2_ogg_vorbis_data_MappingChannel.prototype = { - magnitude: null - ,angle: null - ,mux: null - ,__class__: kha_audio2_ogg_vorbis_data_MappingChannel -}; -var kha_audio2_ogg_vorbis_data_Mode = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Mode"] = kha_audio2_ogg_vorbis_data_Mode; -kha_audio2_ogg_vorbis_data_Mode.__name__ = true; -kha_audio2_ogg_vorbis_data_Mode.read = function(decodeState) { - var m = new kha_audio2_ogg_vorbis_data_Mode(); - var tmp; - if(decodeState.validBits < 0) { - tmp = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp = 0; - } else { - var z = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp = z; - } - } else { - var z1 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp = z1; - } - m.blockflag = tmp != 0; - var tmp1; - if(decodeState.validBits < 0) { - tmp1 = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp1 = 0; - } else { - var z2 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp1 = z2; - } - } else { - var z3 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp1 = z3; - } - m.windowtype = tmp1; - var tmp2; - if(decodeState.validBits < 0) { - tmp2 = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp2 = 0; - } else { - var z4 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp2 = z4; - } - } else { - var z5 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp2 = z5; - } - m.transformtype = tmp2; - var tmp3; - if(decodeState.validBits < 0) { - tmp3 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp3 = 0; - } else { - var z6 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp3 = z6; - } - } else { - var z7 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp3 = z7; - } - m.mapping = tmp3; - if(m.windowtype != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mode.hx", lineNumber : 22, className : "kha.audio2.ogg.vorbis.data.Mode", methodName : "read"})); - } - if(m.transformtype != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Mode.hx", lineNumber : 25, className : "kha.audio2.ogg.vorbis.data.Mode", methodName : "read"})); - } - return m; -}; -kha_audio2_ogg_vorbis_data_Mode.prototype = { - blockflag: null - ,mapping: null - ,windowtype: null - ,transformtype: null - ,__class__: kha_audio2_ogg_vorbis_data_Mode -}; -var kha_audio2_ogg_vorbis_data_Page = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Page"] = kha_audio2_ogg_vorbis_data_Page; -kha_audio2_ogg_vorbis_data_Page.__name__ = true; -kha_audio2_ogg_vorbis_data_Page.prototype = { - flag: null - ,clone: function() { - var page = new kha_audio2_ogg_vorbis_data_Page(); - page.flag = this.flag; - return page; - } - ,start: function(decodeState) { - var tmp; - var tmp1; - var tmp2; - decodeState.inputPosition += 1; - if(decodeState.input.readByte() == 79) { - decodeState.inputPosition += 1; - tmp2 = decodeState.input.readByte() != 103; - } else { - tmp2 = true; - } - if(!tmp2) { - decodeState.inputPosition += 1; - tmp1 = decodeState.input.readByte() != 103; - } else { - tmp1 = true; - } - if(!tmp1) { - decodeState.inputPosition += 1; - tmp = decodeState.input.readByte() != 83; - } else { - tmp = true; - } - if(tmp) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{ fileName : "VorbisDecodeState.hx", lineNumber : 323, className : "kha.audio2.ogg.vorbis.VorbisDecodeState", methodName : "capturePattern"})); - } - this.startWithoutCapturePattern(decodeState); - } - ,startWithoutCapturePattern: function(decodeState) { - decodeState.inputPosition += 1; - var version = decodeState.input.readByte(); - if(version != 0) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION,"" + version,{ fileName : "Page.hx", lineNumber : 34, className : "kha.audio2.ogg.vorbis.data.Page", methodName : "startWithoutCapturePattern"})); - } - decodeState.inputPosition += 1; - this.flag = decodeState.input.readByte(); - decodeState.inputPosition += 4; - var loc0 = decodeState.input.readInt32(); - decodeState.inputPosition += 4; - var loc1 = decodeState.input.readInt32(); - decodeState.inputPosition += 4; - decodeState.input.readInt32(); - decodeState.inputPosition += 4; - decodeState.input.readInt32(); - decodeState.inputPosition += 4; - decodeState.input.readInt32(); - decodeState.setup(loc0,loc1); - } - ,__class__: kha_audio2_ogg_vorbis_data_Page -}; -var kha_audio2_ogg_vorbis_data_PageFlag = function() { }; -$hxClasses["kha.audio2.ogg.vorbis.data.PageFlag"] = kha_audio2_ogg_vorbis_data_PageFlag; -kha_audio2_ogg_vorbis_data_PageFlag.__name__ = true; -var kha_audio2_ogg_vorbis_data_ProbedPage = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.ProbedPage"] = kha_audio2_ogg_vorbis_data_ProbedPage; -kha_audio2_ogg_vorbis_data_ProbedPage.__name__ = true; -kha_audio2_ogg_vorbis_data_ProbedPage.prototype = { - pageStart: null - ,pageEnd: null - ,afterPreviousPageStart: null - ,firstDecodedSample: null - ,lastDecodedSample: null - ,__class__: kha_audio2_ogg_vorbis_data_ProbedPage -}; -var kha_audio2_ogg_vorbis_data_ReaderError = function(type,message,posInfos) { - if(message == null) { - message = ""; - } - this.type = type; - this.message = message; - this.posInfos = posInfos; -}; -$hxClasses["kha.audio2.ogg.vorbis.data.ReaderError"] = kha_audio2_ogg_vorbis_data_ReaderError; -kha_audio2_ogg_vorbis_data_ReaderError.__name__ = true; -kha_audio2_ogg_vorbis_data_ReaderError.prototype = { - type: null - ,message: null - ,posInfos: null - ,__class__: kha_audio2_ogg_vorbis_data_ReaderError -}; -var kha_audio2_ogg_vorbis_data_ReaderErrorType = $hxClasses["kha.audio2.ogg.vorbis.data.ReaderErrorType"] = { __ename__ : true, __constructs__ : ["NEED_MORE_DATA","INVALID_API_MIXING","OUTOFMEM","FEATURE_NOT_SUPPORTED","TOO_MANY_CHANNELS","FILE_OPEN_FAILURE","SEEK_WITHOUT_LENGTH","UNEXPECTED_EOF","SEEK_INVALID","INVALID_SETUP","INVALID_STREAM","MISSING_CAPTURE_PATTERN","INVALID_STREAM_STRUCTURE_VERSION","CONTINUED_PACKET_FLAG_INVALID","INCORRECT_STREAM_SERIAL_NUMBER","INVALID_FIRST_PAGE","BAD_PACKET_TYPE","CANT_FIND_LAST_PAGE","SEEK_FAILED","OTHER"] }; -kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA = ["NEED_MORE_DATA",0]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING = ["INVALID_API_MIXING",1]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM = ["OUTOFMEM",2]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED = ["FEATURE_NOT_SUPPORTED",3]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS = ["TOO_MANY_CHANNELS",4]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE = ["FILE_OPEN_FAILURE",5]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH = ["SEEK_WITHOUT_LENGTH",6]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF = ["UNEXPECTED_EOF",7]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID = ["SEEK_INVALID",8]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP = ["INVALID_SETUP",9]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM = ["INVALID_STREAM",10]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN = ["MISSING_CAPTURE_PATTERN",11]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION = ["INVALID_STREAM_STRUCTURE_VERSION",12]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID = ["CONTINUED_PACKET_FLAG_INVALID",13]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER = ["INCORRECT_STREAM_SERIAL_NUMBER",14]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE = ["INVALID_FIRST_PAGE",15]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE = ["BAD_PACKET_TYPE",16]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE = ["CANT_FIND_LAST_PAGE",17]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED = ["SEEK_FAILED",18]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER = ["OTHER",19]; -kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER.toString = $estr; -kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER.__enum__ = kha_audio2_ogg_vorbis_data_ReaderErrorType; -var kha_audio2_ogg_vorbis_data_Residue = function() { -}; -$hxClasses["kha.audio2.ogg.vorbis.data.Residue"] = kha_audio2_ogg_vorbis_data_Residue; -kha_audio2_ogg_vorbis_data_Residue.__name__ = true; -kha_audio2_ogg_vorbis_data_Residue.read = function(decodeState,codebooks) { - var r = new kha_audio2_ogg_vorbis_data_Residue(); - var tmp; - if(decodeState.validBits < 0) { - tmp = 0; - } else if(decodeState.validBits < 16) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 16)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp = 0; - } else { - var z = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp = z; - } - } else { - var z1 = decodeState.acc & 65535; - decodeState.acc = decodeState.acc >>> 16; - decodeState.validBits -= 16; - tmp = z1; - } - r.type = tmp; - if(r.type > 2) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Residue.hx", lineNumber : 29, className : "kha.audio2.ogg.vorbis.data.Residue", methodName : "read"})); - } - var this1 = new Array(64); - var residueCascade = this1; - var tmp1; - if(decodeState.validBits < 0) { - tmp1 = 0; - } else if(decodeState.validBits < 24) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 24)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp1 = 0; - } else { - var z2 = decodeState.acc & 16777215; - decodeState.acc = decodeState.acc >>> 24; - decodeState.validBits -= 24; - tmp1 = z2; - } - } else { - var z3 = decodeState.acc & 16777215; - decodeState.acc = decodeState.acc >>> 24; - decodeState.validBits -= 24; - tmp1 = z3; - } - r.begin = tmp1; - var tmp2; - if(decodeState.validBits < 0) { - tmp2 = 0; - } else if(decodeState.validBits < 24) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 24)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp2 = 0; - } else { - var z4 = decodeState.acc & 16777215; - decodeState.acc = decodeState.acc >>> 24; - decodeState.validBits -= 24; - tmp2 = z4; - } - } else { - var z5 = decodeState.acc & 16777215; - decodeState.acc = decodeState.acc >>> 24; - decodeState.validBits -= 24; - tmp2 = z5; - } - r.end = tmp2; - var tmp3; - if(decodeState.validBits < 0) { - tmp3 = 0; - } else if(decodeState.validBits < 24) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 24)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp3 = 0; - } else { - var z6 = decodeState.acc & 16777215; - decodeState.acc = decodeState.acc >>> 24; - decodeState.validBits -= 24; - tmp3 = z6; - } - } else { - var z7 = decodeState.acc & 16777215; - decodeState.acc = decodeState.acc >>> 24; - decodeState.validBits -= 24; - tmp3 = z7; - } - r.partSize = tmp3 + 1; - var classifications; - if(decodeState.validBits < 0) { - classifications = 0; - } else if(decodeState.validBits < 6) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 6)) { - break; - } - } - if(decodeState.validBits < 0) { - classifications = 0; - } else { - var z8 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - classifications = z8; - } - } else { - var z9 = decodeState.acc & 63; - decodeState.acc = decodeState.acc >>> 6; - decodeState.validBits -= 6; - classifications = z9; - } - var classifications1 = r.classifications = classifications + 1; - var tmp4; - if(decodeState.validBits < 0) { - tmp4 = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp4 = 0; - } else { - var z10 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp4 = z10; - } - } else { - var z11 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - tmp4 = z11; - } - r.classbook = tmp4; - var _g1 = 0; - var _g = r.classifications; - while(_g1 < _g) { - var j = _g1++; - var highBits = 0; - var lowBits; - if(decodeState.validBits < 0) { - lowBits = 0; - } else if(decodeState.validBits < 3) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 3)) { - break; - } - } - if(decodeState.validBits < 0) { - lowBits = 0; - } else { - var z12 = decodeState.acc & 7; - decodeState.acc = decodeState.acc >>> 3; - decodeState.validBits -= 3; - lowBits = z12; - } - } else { - var z13 = decodeState.acc & 7; - decodeState.acc = decodeState.acc >>> 3; - decodeState.validBits -= 3; - lowBits = z13; - } - var tmp5; - if(decodeState.validBits < 0) { - tmp5 = 0; - } else if(decodeState.validBits < 1) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 1)) { - break; - } - } - if(decodeState.validBits < 0) { - tmp5 = 0; - } else { - var z14 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp5 = z14; - } - } else { - var z15 = decodeState.acc & 1; - decodeState.acc = decodeState.acc >>> 1; - decodeState.validBits -= 1; - tmp5 = z15; - } - if(tmp5 != 0) { - if(decodeState.validBits < 0) { - highBits = 0; - } else if(decodeState.validBits < 5) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 5)) { - break; - } - } - if(decodeState.validBits < 0) { - highBits = 0; - } else { - var z16 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - highBits = z16; - } - } else { - var z17 = decodeState.acc & 31; - decodeState.acc = decodeState.acc >>> 5; - decodeState.validBits -= 5; - highBits = z17; - } - } - residueCascade[j] = highBits * 8 + lowBits; - } - var length = r.classifications; - var this2 = new Array(length); - r.residueBooks = this2; - var _g11 = 0; - var _g2 = r.classifications; - while(_g11 < _g2) { - var j1 = _g11++; - var this3 = r.residueBooks; - var this4 = new Array(8); - this3[j1] = this4; - var _g21 = 0; - while(_g21 < 8) { - var k = _g21++; - if((residueCascade[j1] & 1 << k) != 0) { - var this5 = r.residueBooks[j1]; - var val; - if(decodeState.validBits < 0) { - val = 0; - } else if(decodeState.validBits < 8) { - if(decodeState.validBits == 0) { - decodeState.acc = 0; - } - while(true) { - if(decodeState.bytesInSeg == 0 && (decodeState.lastSeg || decodeState.next() == 0)) { - decodeState.validBits = -1; - break; - } else { - decodeState.bytesInSeg--; - decodeState.inputPosition += 1; - decodeState.acc = decodeState.acc + (decodeState.input.readByte() << decodeState.validBits); - decodeState.validBits += 8; - } - if(!(decodeState.validBits < 8)) { - break; - } - } - if(decodeState.validBits < 0) { - val = 0; - } else { - var z18 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val = z18; - } - } else { - var z19 = decodeState.acc & 255; - decodeState.acc = decodeState.acc >>> 8; - decodeState.validBits -= 8; - val = z19; - } - this5[k] = val; - if(r.residueBooks[j1][k] >= codebooks.length) { - throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{ fileName : "Residue.hx", lineNumber : 55, className : "kha.audio2.ogg.vorbis.data.Residue", methodName : "read"})); - } - } else { - r.residueBooks[j1][k] = -1; - } - } - } - var el = codebooks[r.classbook].entries; - var classwords = codebooks[r.classbook].dimensions; - var this6 = new Array(el); - r.classdata = this6; - var _g12 = 0; - var _g3 = el; - while(_g12 < _g3) { - var j2 = _g12++; - var temp = j2; - var k1 = classwords; - var this7 = r.classdata; - var this8 = new Array(classwords); - var cd = this7[j2] = this8; - while(--k1 >= 0) { - cd[k1] = temp % classifications1; - temp = temp / classifications1 | 0; - } - } - return r; -}; -kha_audio2_ogg_vorbis_data_Residue.prototype = { - begin: null - ,end: null - ,partSize: null - ,classifications: null - ,classbook: null - ,classdata: null - ,residueBooks: null - ,type: null - ,decode: function(decodeState,header,residueBuffers,ch,n,doNotDecode,channelBuffers) { - var codebooks = header.codebooks; - var classwords = codebooks[this.classbook].dimensions; - var nRead = this.end - this.begin; - var partSize = this.partSize; - var partRead = _$UInt_UInt_$Impl_$.toFloat(nRead) / _$UInt_UInt_$Impl_$.toFloat(partSize) | 0; - var length = header.channel * partRead + 1; - var this1 = new Array(length); - var classifications = this1; - var _g1 = 0; - var _g = ch; - while(_g1 < _g) { - var i = _g1++; - if(!doNotDecode[i]) { - var buffer = residueBuffers[i]; - var _g3 = 0; - var _g2 = buffer.length; - while(_g3 < _g2) { - var j = _g3++; - buffer[j] = 0; - } - } - } - if(this.type == 2 && ch != 1) { - var _g11 = 0; - var _g4 = ch; - while(_g11 < _g4) { - var j1 = _g11++; - if(!doNotDecode[j1]) { - break; - } else if(j1 == ch - 1) { - return; - } - } - var _g5 = 0; - while(_g5 < 8) { - var pass = _g5++; - var pcount = 0; - var classSet = 0; - if(ch == 2) { - while(pcount < partRead) { - var z = this.begin + pcount * partSize; - var cInter = z & 1; - var pInter = z >>> 1; - if(pass == 0) { - var c = codebooks[this.classbook]; - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i1 = c.fastHuffman[decodeState.acc & 1023]; - var val; - if(i1 >= 0) { - var l = c.codewordLengths[i1]; - decodeState.acc = decodeState.acc >>> l; - decodeState.validBits -= l; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val = -1; - } else { - val = i1; - } - } else { - val = decodeState.decodeScalarRaw(c); - } - if(c.sparse) { - val = c.sortedValues[val]; - } - var q = val; - if(q == -1) { - return; - } - var i2 = classwords; - while(--i2 >= 0) { - classifications[i2 + pcount] = q % this.classifications; - q = q / this.classifications | 0; - } - } - var _g21 = 0; - var _g12 = classwords; - while(_g21 < _g12) { - var i3 = _g21++; - if(pcount >= partRead) { - break; - } - var z1 = this.begin + pcount * partSize; - var c1 = classifications[pcount]; - var b = this.residueBooks[c1][pass]; - if(b >= 0) { - var book = codebooks[b]; - var result = book.decodeDeinterleaveRepeat(decodeState,residueBuffers,ch,cInter,pInter,n,partSize); - if(result == null) { - return; - } else { - cInter = result.cInter; - pInter = result.pInter; - } - } else { - z1 = z1 + partSize; - cInter = z1 & 1; - pInter = z1 >>> 1; - } - ++pcount; - } - } - } else if(ch == 1) { - while(pcount < partRead) { - var z2 = this.begin + pcount * partSize; - var cInter1 = 0; - var pInter1 = z2; - if(pass == 0) { - var c2 = codebooks[this.classbook]; - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i4 = c2.fastHuffman[decodeState.acc & 1023]; - var val1; - if(i4 >= 0) { - var l1 = c2.codewordLengths[i4]; - decodeState.acc = decodeState.acc >>> l1; - decodeState.validBits -= l1; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val1 = -1; - } else { - val1 = i4; - } - } else { - val1 = decodeState.decodeScalarRaw(c2); - } - if(c2.sparse) { - val1 = c2.sortedValues[val1]; - } - var q1 = val1; - if(q1 == -1) { - return; - } - var i5 = classwords; - while(--i5 >= 0) { - classifications[i5 + pcount] = q1 % this.classifications; - q1 = q1 / this.classifications | 0; - } - } - var _g22 = 0; - var _g13 = classwords; - while(_g22 < _g13) { - var i6 = _g22++; - if(pcount >= partRead) { - break; - } - var z3 = this.begin + pcount * partSize; - var b1 = this.residueBooks[classifications[pcount]][pass]; - if(b1 >= 0) { - var book1 = codebooks[b1]; - var result1 = book1.decodeDeinterleaveRepeat(decodeState,residueBuffers,ch,cInter1,pInter1,n,partSize); - if(result1 == null) { - return; - } else { - cInter1 = result1.cInter; - pInter1 = result1.pInter; - } - } else { - z3 = z3 + partSize; - cInter1 = 0; - pInter1 = z3; - } - ++pcount; - } - } - } else { - while(pcount < partRead) { - var z4 = this.begin + pcount * partSize; - var cInter2 = _$UInt_UInt_$Impl_$.toFloat(z4) % _$UInt_UInt_$Impl_$.toFloat(ch) | 0; - var pInter2 = _$UInt_UInt_$Impl_$.toFloat(z4) / _$UInt_UInt_$Impl_$.toFloat(ch) | 0; - if(pass == 0) { - var c3 = codebooks[this.classbook]; - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i7 = c3.fastHuffman[decodeState.acc & 1023]; - var val2; - if(i7 >= 0) { - var l2 = c3.codewordLengths[i7]; - decodeState.acc = decodeState.acc >>> l2; - decodeState.validBits -= l2; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val2 = -1; - } else { - val2 = i7; - } - } else { - val2 = decodeState.decodeScalarRaw(c3); - } - if(c3.sparse) { - val2 = c3.sortedValues[val2]; - } - var q2 = val2; - if(q2 == -1) { - return; - } - var i8 = classwords; - while(--i8 >= 0) { - classifications[i8 + pcount] = q2 % this.classifications; - q2 = q2 / this.classifications | 0; - } - } - var _g23 = 0; - var _g14 = classwords; - while(_g23 < _g14) { - var i9 = _g23++; - if(pcount >= partRead) { - break; - } - var z5 = this.begin + pcount * partSize; - var b2 = this.residueBooks[classifications[pcount]][pass]; - if(b2 >= 0) { - var book2 = codebooks[b2]; - var result2 = book2.decodeDeinterleaveRepeat(decodeState,residueBuffers,ch,cInter2,pInter2,n,partSize); - if(result2 == null) { - return; - } else { - cInter2 = result2.cInter; - pInter2 = result2.pInter; - } - } else { - z5 = z5 + partSize; - cInter2 = _$UInt_UInt_$Impl_$.toFloat(z5) % _$UInt_UInt_$Impl_$.toFloat(ch) | 0; - pInter2 = _$UInt_UInt_$Impl_$.toFloat(z5) / _$UInt_UInt_$Impl_$.toFloat(ch) | 0; - } - ++pcount; - } - } - } - } - return; - } - var _g6 = 0; - while(_g6 < 8) { - var pass1 = _g6++; - var pcount1 = 0; - var classSet1 = 0; - while(pcount1 < partRead) { - if(pass1 == 0) { - var _g24 = 0; - var _g15 = ch; - while(_g24 < _g15) { - var j2 = _g24++; - if(!doNotDecode[j2]) { - var c4 = codebooks[this.classbook]; - if(decodeState.validBits < 10) { - decodeState.prepHuffman(); - } - var i10 = c4.fastHuffman[decodeState.acc & 1023]; - var val3; - if(i10 >= 0) { - var l3 = c4.codewordLengths[i10]; - decodeState.acc = decodeState.acc >>> l3; - decodeState.validBits -= l3; - if(decodeState.validBits < 0) { - decodeState.validBits = 0; - val3 = -1; - } else { - val3 = i10; - } - } else { - val3 = decodeState.decodeScalarRaw(c4); - } - if(c4.sparse) { - val3 = c4.sortedValues[val3]; - } - var temp = val3; - if(temp == -1) { - return; - } - var i11 = classwords; - while(--i11 >= 0) { - classifications[j2 * partRead + i11 + pcount1] = temp % this.classifications; - temp = temp / this.classifications | 0; - } - } - } - } - var _g25 = 0; - var _g16 = classwords; - while(_g25 < _g16) { - var i12 = _g25++; - if(pcount1 >= partRead) { - break; - } - var _g41 = 0; - var _g31 = ch; - while(_g41 < _g31) { - var j3 = _g41++; - if(!doNotDecode[j3]) { - var c5 = classifications[j3 * partRead + pcount1]; - var b3 = this.residueBooks[c5][pass1]; - if(b3 >= 0) { - var target = residueBuffers[j3]; - var offset = this.begin + pcount1 * partSize; - var n1 = partSize; - var book3 = codebooks[b3]; - if(!book3.residueDecode(decodeState,target,offset,n1,this.type)) { - return; - } - } - } - } - ++pcount1; - } - } - } - } - ,__class__: kha_audio2_ogg_vorbis_data_Residue -}; -var kha_audio2_ogg_vorbis_data_Setting = function() { }; -$hxClasses["kha.audio2.ogg.vorbis.data.Setting"] = kha_audio2_ogg_vorbis_data_Setting; -kha_audio2_ogg_vorbis_data_Setting.__name__ = true; -var kha_graphics1_Graphics = function() { }; -$hxClasses["kha.graphics1.Graphics"] = kha_graphics1_Graphics; -kha_graphics1_Graphics.__name__ = true; -kha_graphics1_Graphics.prototype = { - begin: null - ,end: null - ,setPixel: null - ,__class__: kha_graphics1_Graphics -}; -var kha_graphics2_Graphics = function() { - this.transformations = []; - this.transformations.push(new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1)); - this.opacities = []; - this.opacities.push(1); - this.myFontSize = 12; - this.myFontGlyphs = []; - var _g = 32; - while(_g < 256) { - var i = _g++; - this.myFontGlyphs.push(i); - } - this.pipe = null; -}; -$hxClasses["kha.graphics2.Graphics"] = kha_graphics2_Graphics; -kha_graphics2_Graphics.__name__ = true; -kha_graphics2_Graphics.prototype = { - begin: function(clear,clearColor) { - if(clear == null) { - clear = true; - } - } - ,end: function() { - } - ,flush: function() { - } - ,clear: function(color) { - } - ,drawImage: function(img,x,y) { - this.drawSubImage(img,x,y,0,0,img.get_width(),img.get_height()); - } - ,drawSubImage: function(img,x,y,sx,sy,sw,sh) { - this.drawScaledSubImage(img,sx,sy,sw,sh,x,y,sw,sh); - } - ,drawScaledImage: function(img,dx,dy,dw,dh) { - this.drawScaledSubImage(img,0,0,img.get_width(),img.get_height(),dx,dy,dw,dh); - } - ,drawScaledSubImage: function(image,sx,sy,sw,sh,dx,dy,dw,dh) { - } - ,drawRect: function(x,y,width,height,strength) { - if(strength == null) { - strength = 1.0; - } - } - ,fillRect: function(x,y,width,height) { - } - ,drawString: function(text,x,y) { - } - ,drawLine: function(x1,y1,x2,y2,strength) { - if(strength == null) { - strength = 1.0; - } - } - ,drawVideo: function(video,x,y,width,height) { - } - ,fillTriangle: function(x1,y1,x2,y2,x3,y3) { - } - ,get_imageScaleQuality: function() { - return kha_graphics2_ImageScaleQuality.Low; - } - ,set_imageScaleQuality: function(value) { - return kha_graphics2_ImageScaleQuality.High; - } - ,get_mipmapScaleQuality: function() { - return kha_graphics2_ImageScaleQuality.Low; - } - ,set_mipmapScaleQuality: function(value) { - return kha_graphics2_ImageScaleQuality.High; - } - ,get_color: function() { - return -16777216; - } - ,set_color: function(color) { - return -16777216; - } - ,get_font: function() { - return null; - } - ,set_font: function(font) { - return null; - } - ,get_fontSize: function() { - return this.myFontSize; - } - ,set_fontSize: function(value) { - return this.myFontSize = value; - } - ,get_fontGlyphs: function() { - return this.myFontGlyphs; - } - ,set_fontGlyphs: function(value) { - return this.myFontGlyphs = value; - } - ,pushTransformation: function(transformation) { - var trans = new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1); - trans._00 = transformation._00; - trans._10 = transformation._10; - trans._20 = transformation._20; - trans._01 = transformation._01; - trans._11 = transformation._11; - trans._21 = transformation._21; - trans._02 = transformation._02; - trans._12 = transformation._12; - trans._22 = transformation._22; - this.setTransformation(trans); - this.transformations.push(trans); - } - ,popTransformation: function() { - var ret = this.transformations.pop(); - this.setTransformation(this.transformations[this.transformations.length - 1]); - return ret; - } - ,get_transformation: function() { - return this.transformations[this.transformations.length - 1]; - } - ,set_transformation: function(transformation) { - this.setTransformation(transformation); - var _this = this.transformations[this.transformations.length - 1]; - _this._00 = transformation._00; - _this._10 = transformation._10; - _this._20 = transformation._20; - _this._01 = transformation._01; - _this._11 = transformation._11; - _this._21 = transformation._21; - _this._02 = transformation._02; - _this._12 = transformation._12; - _this._22 = transformation._22; - return transformation; - } - ,translation: function(tx,ty) { - var _this__22; - var _this__21; - var _this__20; - var _this__12; - var _this__11; - var _this__10; - var _this__02; - var _this__01; - var _this__00 = 1; - _this__10 = 0; - _this__20 = tx; - _this__01 = 0; - _this__11 = 1; - _this__21 = ty; - _this__02 = 0; - _this__12 = 0; - _this__22 = 1; - var m = this.transformations[this.transformations.length - 1]; - return new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22); - } - ,translate: function(tx,ty) { - var _this__22; - var _this__21; - var _this__20; - var _this__12; - var _this__11; - var _this__10; - var _this__02; - var _this__01; - var _this__00 = 1; - _this__10 = 0; - _this__20 = tx; - _this__01 = 0; - _this__11 = 1; - _this__21 = ty; - _this__02 = 0; - _this__12 = 0; - _this__22 = 1; - var m = this.transformations[this.transformations.length - 1]; - var transformation = new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22); - this.setTransformation(transformation); - var _this = this.transformations[this.transformations.length - 1]; - _this._00 = transformation._00; - _this._10 = transformation._10; - _this._20 = transformation._20; - _this._01 = transformation._01; - _this._11 = transformation._11; - _this._21 = transformation._21; - _this._02 = transformation._02; - _this._12 = transformation._12; - _this._22 = transformation._22; - } - ,pushTranslation: function(tx,ty) { - var _this__22; - var _this__21; - var _this__20; - var _this__12; - var _this__11; - var _this__10; - var _this__02; - var _this__01; - var _this__00 = 1; - _this__10 = 0; - _this__20 = tx; - _this__01 = 0; - _this__11 = 1; - _this__21 = ty; - _this__02 = 0; - _this__12 = 0; - _this__22 = 1; - var m = this.transformations[this.transformations.length - 1]; - this.pushTransformation(new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22)); - } - ,rotation: function(angle,centerx,centery) { - var _this__22; - var _this__21; - var _this__20; - var _this__12; - var _this__11; - var _this__10; - var _this__02; - var _this__01; - var _this__00; - var _this__221; - var _this__211; - var _this__201; - var _this__121; - var _this__111; - var _this__101; - var _this__021; - var _this__011; - var _this__001; - var _this__222; - var _this__212; - var _this__202; - var _this__122; - var _this__112; - var _this__102; - var _this__022; - var _this__012; - var _this__002 = 1; - _this__102 = 0; - _this__202 = centerx; - _this__012 = 0; - _this__112 = 1; - _this__212 = centery; - _this__022 = 0; - _this__122 = 0; - _this__222 = 1; - var m__22; - var m__21; - var m__20; - var m__12; - var m__11; - var m__10; - var m__02; - var m__01; - var m__00 = Math.cos(angle); - m__10 = -Math.sin(angle); - m__20 = 0; - m__01 = Math.sin(angle); - m__11 = Math.cos(angle); - m__21 = 0; - m__02 = 0; - m__12 = 0; - m__22 = 1; - _this__001 = _this__002 * m__00 + _this__102 * m__01 + _this__202 * m__02; - _this__101 = _this__002 * m__10 + _this__102 * m__11 + _this__202 * m__12; - _this__201 = _this__002 * m__20 + _this__102 * m__21 + _this__202 * m__22; - _this__011 = _this__012 * m__00 + _this__112 * m__01 + _this__212 * m__02; - _this__111 = _this__012 * m__10 + _this__112 * m__11 + _this__212 * m__12; - _this__211 = _this__012 * m__20 + _this__112 * m__21 + _this__212 * m__22; - _this__021 = _this__022 * m__00 + _this__122 * m__01 + _this__222 * m__02; - _this__121 = _this__022 * m__10 + _this__122 * m__11 + _this__222 * m__12; - _this__221 = _this__022 * m__20 + _this__122 * m__21 + _this__222 * m__22; - var m__221; - var m__211; - var m__201; - var m__121; - var m__111; - var m__101; - var m__021; - var m__011; - var m__001 = 1; - m__101 = 0; - m__201 = -centerx; - m__011 = 0; - m__111 = 1; - m__211 = -centery; - m__021 = 0; - m__121 = 0; - m__221 = 1; - _this__00 = _this__001 * m__001 + _this__101 * m__011 + _this__201 * m__021; - _this__10 = _this__001 * m__101 + _this__101 * m__111 + _this__201 * m__121; - _this__20 = _this__001 * m__201 + _this__101 * m__211 + _this__201 * m__221; - _this__01 = _this__011 * m__001 + _this__111 * m__011 + _this__211 * m__021; - _this__11 = _this__011 * m__101 + _this__111 * m__111 + _this__211 * m__121; - _this__21 = _this__011 * m__201 + _this__111 * m__211 + _this__211 * m__221; - _this__02 = _this__021 * m__001 + _this__121 * m__011 + _this__221 * m__021; - _this__12 = _this__021 * m__101 + _this__121 * m__111 + _this__221 * m__121; - _this__22 = _this__021 * m__201 + _this__121 * m__211 + _this__221 * m__221; - var m = this.transformations[this.transformations.length - 1]; - return new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22); - } - ,rotate: function(angle,centerx,centery) { - var temp__22; - var temp__21; - var temp__20; - var temp__12; - var temp__11; - var temp__10; - var temp__02; - var temp__01; - var temp__00; - var _this__22; - var _this__21; - var _this__20; - var _this__12; - var _this__11; - var _this__10; - var _this__02; - var _this__01; - var _this__00; - var _this__221; - var _this__211; - var _this__201; - var _this__121; - var _this__111; - var _this__101; - var _this__021; - var _this__011; - var _this__001; - var _this__222; - var _this__212; - var _this__202; - var _this__122; - var _this__112; - var _this__102; - var _this__022; - var _this__012; - var _this__002 = 1; - _this__102 = 0; - _this__202 = centerx; - _this__012 = 0; - _this__112 = 1; - _this__212 = centery; - _this__022 = 0; - _this__122 = 0; - _this__222 = 1; - var m__22; - var m__21; - var m__20; - var m__12; - var m__11; - var m__10; - var m__02; - var m__01; - var m__00 = Math.cos(angle); - m__10 = -Math.sin(angle); - m__20 = 0; - m__01 = Math.sin(angle); - m__11 = Math.cos(angle); - m__21 = 0; - m__02 = 0; - m__12 = 0; - m__22 = 1; - _this__001 = _this__002 * m__00 + _this__102 * m__01 + _this__202 * m__02; - _this__101 = _this__002 * m__10 + _this__102 * m__11 + _this__202 * m__12; - _this__201 = _this__002 * m__20 + _this__102 * m__21 + _this__202 * m__22; - _this__011 = _this__012 * m__00 + _this__112 * m__01 + _this__212 * m__02; - _this__111 = _this__012 * m__10 + _this__112 * m__11 + _this__212 * m__12; - _this__211 = _this__012 * m__20 + _this__112 * m__21 + _this__212 * m__22; - _this__021 = _this__022 * m__00 + _this__122 * m__01 + _this__222 * m__02; - _this__121 = _this__022 * m__10 + _this__122 * m__11 + _this__222 * m__12; - _this__221 = _this__022 * m__20 + _this__122 * m__21 + _this__222 * m__22; - var m__221; - var m__211; - var m__201; - var m__121; - var m__111; - var m__101; - var m__021; - var m__011; - var m__001 = 1; - m__101 = 0; - m__201 = -centerx; - m__011 = 0; - m__111 = 1; - m__211 = -centery; - m__021 = 0; - m__121 = 0; - m__221 = 1; - _this__00 = _this__001 * m__001 + _this__101 * m__011 + _this__201 * m__021; - _this__10 = _this__001 * m__101 + _this__101 * m__111 + _this__201 * m__121; - _this__20 = _this__001 * m__201 + _this__101 * m__211 + _this__201 * m__221; - _this__01 = _this__011 * m__001 + _this__111 * m__011 + _this__211 * m__021; - _this__11 = _this__011 * m__101 + _this__111 * m__111 + _this__211 * m__121; - _this__21 = _this__011 * m__201 + _this__111 * m__211 + _this__211 * m__221; - _this__02 = _this__021 * m__001 + _this__121 * m__011 + _this__221 * m__021; - _this__12 = _this__021 * m__101 + _this__121 * m__111 + _this__221 * m__121; - _this__22 = _this__021 * m__201 + _this__121 * m__211 + _this__221 * m__221; - var m = this.transformations[this.transformations.length - 1]; - temp__00 = _this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02; - temp__10 = _this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12; - temp__20 = _this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22; - temp__01 = _this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02; - temp__11 = _this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12; - temp__21 = _this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22; - temp__02 = _this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02; - temp__12 = _this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12; - temp__22 = _this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22; - this.transformations[this.transformations.length - 1]._00 = temp__00; - this.transformations[this.transformations.length - 1]._01 = temp__01; - this.transformations[this.transformations.length - 1]._02 = temp__02; - this.transformations[this.transformations.length - 1]._10 = temp__10; - this.transformations[this.transformations.length - 1]._11 = temp__11; - this.transformations[this.transformations.length - 1]._12 = temp__12; - this.transformations[this.transformations.length - 1]._20 = temp__20; - this.transformations[this.transformations.length - 1]._21 = temp__21; - this.transformations[this.transformations.length - 1]._22 = temp__22; - } - ,pushRotation: function(angle,centerx,centery) { - var _this__22; - var _this__21; - var _this__20; - var _this__12; - var _this__11; - var _this__10; - var _this__02; - var _this__01; - var _this__00; - var _this__221; - var _this__211; - var _this__201; - var _this__121; - var _this__111; - var _this__101; - var _this__021; - var _this__011; - var _this__001; - var _this__222; - var _this__212; - var _this__202; - var _this__122; - var _this__112; - var _this__102; - var _this__022; - var _this__012; - var _this__002 = 1; - _this__102 = 0; - _this__202 = centerx; - _this__012 = 0; - _this__112 = 1; - _this__212 = centery; - _this__022 = 0; - _this__122 = 0; - _this__222 = 1; - var m__22; - var m__21; - var m__20; - var m__12; - var m__11; - var m__10; - var m__02; - var m__01; - var m__00 = Math.cos(angle); - m__10 = -Math.sin(angle); - m__20 = 0; - m__01 = Math.sin(angle); - m__11 = Math.cos(angle); - m__21 = 0; - m__02 = 0; - m__12 = 0; - m__22 = 1; - _this__001 = _this__002 * m__00 + _this__102 * m__01 + _this__202 * m__02; - _this__101 = _this__002 * m__10 + _this__102 * m__11 + _this__202 * m__12; - _this__201 = _this__002 * m__20 + _this__102 * m__21 + _this__202 * m__22; - _this__011 = _this__012 * m__00 + _this__112 * m__01 + _this__212 * m__02; - _this__111 = _this__012 * m__10 + _this__112 * m__11 + _this__212 * m__12; - _this__211 = _this__012 * m__20 + _this__112 * m__21 + _this__212 * m__22; - _this__021 = _this__022 * m__00 + _this__122 * m__01 + _this__222 * m__02; - _this__121 = _this__022 * m__10 + _this__122 * m__11 + _this__222 * m__12; - _this__221 = _this__022 * m__20 + _this__122 * m__21 + _this__222 * m__22; - var m__221; - var m__211; - var m__201; - var m__121; - var m__111; - var m__101; - var m__021; - var m__011; - var m__001 = 1; - m__101 = 0; - m__201 = -centerx; - m__011 = 0; - m__111 = 1; - m__211 = -centery; - m__021 = 0; - m__121 = 0; - m__221 = 1; - _this__00 = _this__001 * m__001 + _this__101 * m__011 + _this__201 * m__021; - _this__10 = _this__001 * m__101 + _this__101 * m__111 + _this__201 * m__121; - _this__20 = _this__001 * m__201 + _this__101 * m__211 + _this__201 * m__221; - _this__01 = _this__011 * m__001 + _this__111 * m__011 + _this__211 * m__021; - _this__11 = _this__011 * m__101 + _this__111 * m__111 + _this__211 * m__121; - _this__21 = _this__011 * m__201 + _this__111 * m__211 + _this__211 * m__221; - _this__02 = _this__021 * m__001 + _this__121 * m__011 + _this__221 * m__021; - _this__12 = _this__021 * m__101 + _this__121 * m__111 + _this__221 * m__121; - _this__22 = _this__021 * m__201 + _this__121 * m__211 + _this__221 * m__221; - var m = this.transformations[this.transformations.length - 1]; - this.pushTransformation(new kha_math_FastMatrix3(_this__00 * m._00 + _this__10 * m._01 + _this__20 * m._02,_this__00 * m._10 + _this__10 * m._11 + _this__20 * m._12,_this__00 * m._20 + _this__10 * m._21 + _this__20 * m._22,_this__01 * m._00 + _this__11 * m._01 + _this__21 * m._02,_this__01 * m._10 + _this__11 * m._11 + _this__21 * m._12,_this__01 * m._20 + _this__11 * m._21 + _this__21 * m._22,_this__02 * m._00 + _this__12 * m._01 + _this__22 * m._02,_this__02 * m._10 + _this__12 * m._11 + _this__22 * m._12,_this__02 * m._20 + _this__12 * m._21 + _this__22 * m._22)); - } - ,pushOpacity: function(opacity) { - this.setOpacity(opacity); - this.opacities.push(opacity); - } - ,popOpacity: function() { - var ret = this.opacities.pop(); - this.setOpacity(this.get_opacity()); - return ret; - } - ,get_opacity: function() { - return this.opacities[this.opacities.length - 1]; - } - ,set_opacity: function(opacity) { - this.setOpacity(opacity); - return this.opacities[this.opacities.length - 1] = opacity; - } - ,scissor: function(x,y,width,height) { - } - ,disableScissor: function() { - } - ,pipe: null - ,get_pipeline: function() { - return this.pipe; - } - ,set_pipeline: function(pipeline) { - this.setPipeline(pipeline); - return this.pipe = pipeline; - } - ,transformations: null - ,opacities: null - ,myFontSize: null - ,myFontGlyphs: null - ,setTransformation: function(transformation) { - } - ,setOpacity: function(opacity) { - } - ,setPipeline: function(pipeline) { - } - ,__class__: kha_graphics2_Graphics -}; -var kha_graphics2_Graphics1 = function(canvas) { - this.canvas = canvas; -}; -$hxClasses["kha.graphics2.Graphics1"] = kha_graphics2_Graphics1; -kha_graphics2_Graphics1.__name__ = true; -kha_graphics2_Graphics1.__interfaces__ = [kha_graphics1_Graphics]; -kha_graphics2_Graphics1.prototype = { - canvas: null - ,texture: null - ,pixels: null - ,begin: function() { - if(this.texture == null) { - this.texture = kha_Image.create(this.canvas.get_width(),this.canvas.get_height(),kha_graphics4_TextureFormat.RGBA32,kha_graphics4_Usage.ReadableUsage); - } - this.pixels = this.texture.lock(); - } - ,end: function() { - this.texture.unlock(); - this.canvas.get_g2().begin(); - this.canvas.get_g2().drawImage(this.texture,0,0); - this.canvas.get_g2().end(); - } - ,setPixel: function(x,y,color) { - this.pixels.setInt32(y * this.texture.get_realWidth() * 4 + x * 4,kha__$Color_Color_$Impl_$.fromBytes(color & 255,(color & 65280) >>> 8,(color & 16711680) >>> 16,color >>> 24)); - } - ,__class__: kha_graphics2_Graphics1 -}; -var kha_graphics2_ImageScaleQuality = $hxClasses["kha.graphics2.ImageScaleQuality"] = { __ename__ : true, __constructs__ : ["Low","High"] }; -kha_graphics2_ImageScaleQuality.Low = ["Low",0]; -kha_graphics2_ImageScaleQuality.Low.toString = $estr; -kha_graphics2_ImageScaleQuality.Low.__enum__ = kha_graphics2_ImageScaleQuality; -kha_graphics2_ImageScaleQuality.High = ["High",1]; -kha_graphics2_ImageScaleQuality.High.toString = $estr; -kha_graphics2_ImageScaleQuality.High.__enum__ = kha_graphics2_ImageScaleQuality; -var kha_graphics2_truetype_VectorOfIntPointer = function() { -}; -$hxClasses["kha.graphics2.truetype.VectorOfIntPointer"] = kha_graphics2_truetype_VectorOfIntPointer; -kha_graphics2_truetype_VectorOfIntPointer.__name__ = true; -kha_graphics2_truetype_VectorOfIntPointer.prototype = { - value: null - ,__class__: kha_graphics2_truetype_VectorOfIntPointer -}; -var kha_graphics2_truetype_Stbtt_$temp_$rect = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt_temp_rect"] = kha_graphics2_truetype_Stbtt_$temp_$rect; -kha_graphics2_truetype_Stbtt_$temp_$rect.__name__ = true; -kha_graphics2_truetype_Stbtt_$temp_$rect.prototype = { - x0: null - ,y0: null - ,x1: null - ,y1: null - ,__class__: kha_graphics2_truetype_Stbtt_$temp_$rect -}; -var kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt_temp_glyph_h_metrics"] = kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics; -kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics.__name__ = true; -kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics.prototype = { - advanceWidth: null - ,leftSideBearing: null - ,__class__: kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics -}; -var kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt_temp_font_v_metrics"] = kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics; -kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics.__name__ = true; -kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics.prototype = { - ascent: null - ,descent: null - ,lineGap: null - ,__class__: kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics -}; -var kha_graphics2_truetype_Stbtt_$temp_$region = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt_temp_region"] = kha_graphics2_truetype_Stbtt_$temp_$region; -kha_graphics2_truetype_Stbtt_$temp_$region.__name__ = true; -kha_graphics2_truetype_Stbtt_$temp_$region.prototype = { - width: null - ,height: null - ,xoff: null - ,yoff: null - ,__class__: kha_graphics2_truetype_Stbtt_$temp_$region -}; -var kha_graphics2_truetype_Stbtt_$bakedchar = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt_bakedchar"] = kha_graphics2_truetype_Stbtt_$bakedchar; -kha_graphics2_truetype_Stbtt_$bakedchar.__name__ = true; -kha_graphics2_truetype_Stbtt_$bakedchar.prototype = { - x0: null - ,y0: null - ,x1: null - ,y1: null - ,xoff: null - ,yoff: null - ,xadvance: null - ,__class__: kha_graphics2_truetype_Stbtt_$bakedchar -}; -var kha_graphics2_truetype_Stbtt_$aligned_$quad = function() { }; -$hxClasses["kha.graphics2.truetype.Stbtt_aligned_quad"] = kha_graphics2_truetype_Stbtt_$aligned_$quad; -kha_graphics2_truetype_Stbtt_$aligned_$quad.__name__ = true; -kha_graphics2_truetype_Stbtt_$aligned_$quad.prototype = { - x0: null - ,y0: null - ,s0: null - ,t0: null - ,x1: null - ,y1: null - ,s1: null - ,t1: null - ,__class__: kha_graphics2_truetype_Stbtt_$aligned_$quad -}; -var kha_graphics2_truetype_Stbtt_$packedchar = function() { }; -$hxClasses["kha.graphics2.truetype.Stbtt_packedchar"] = kha_graphics2_truetype_Stbtt_$packedchar; -kha_graphics2_truetype_Stbtt_$packedchar.__name__ = true; -kha_graphics2_truetype_Stbtt_$packedchar.prototype = { - x0: null - ,y0: null - ,x1: null - ,y1: null - ,xoff: null - ,yoff: null - ,xadvance: null - ,xoff2: null - ,yoff2: null - ,__class__: kha_graphics2_truetype_Stbtt_$packedchar -}; -var kha_graphics2_truetype_Stbtt_$pack_$range = function() { }; -$hxClasses["kha.graphics2.truetype.Stbtt_pack_range"] = kha_graphics2_truetype_Stbtt_$pack_$range; -kha_graphics2_truetype_Stbtt_$pack_$range.__name__ = true; -kha_graphics2_truetype_Stbtt_$pack_$range.prototype = { - font_size: null - ,first_unicode_codepoint_in_range: null - ,array_of_unicode_codepoints: null - ,num_chars: null - ,chardata_for_range: null - ,h_oversample: null - ,v_oversample: null - ,__class__: kha_graphics2_truetype_Stbtt_$pack_$range -}; -var kha_graphics2_truetype_Stbtt_$pack_$context = function() { }; -$hxClasses["kha.graphics2.truetype.Stbtt_pack_context"] = kha_graphics2_truetype_Stbtt_$pack_$context; -kha_graphics2_truetype_Stbtt_$pack_$context.__name__ = true; -kha_graphics2_truetype_Stbtt_$pack_$context.prototype = { - width: null - ,height: null - ,stride_in_bytes: null - ,padding: null - ,h_oversample: null - ,v_oversample: null - ,pixels: null - ,__class__: kha_graphics2_truetype_Stbtt_$pack_$context -}; -var kha_graphics2_truetype_Stbtt_$fontinfo = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt_fontinfo"] = kha_graphics2_truetype_Stbtt_$fontinfo; -kha_graphics2_truetype_Stbtt_$fontinfo.__name__ = true; -kha_graphics2_truetype_Stbtt_$fontinfo.prototype = { - data: null - ,fontstart: null - ,numGlyphs: null - ,loca: null - ,head: null - ,glyf: null - ,hhea: null - ,hmtx: null - ,kern: null - ,index_map: null - ,indexToLocFormat: null - ,__class__: kha_graphics2_truetype_Stbtt_$fontinfo -}; -var kha_graphics2_truetype_Stbtt_$vertex = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt_vertex"] = kha_graphics2_truetype_Stbtt_$vertex; -kha_graphics2_truetype_Stbtt_$vertex.__name__ = true; -kha_graphics2_truetype_Stbtt_$vertex.prototype = { - x: null - ,y: null - ,cx: null - ,cy: null - ,type: null - ,padding: null - ,__class__: kha_graphics2_truetype_Stbtt_$vertex -}; -var kha_graphics2_truetype_Stbtt_$_$bitmap = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt__bitmap"] = kha_graphics2_truetype_Stbtt_$_$bitmap; -kha_graphics2_truetype_Stbtt_$_$bitmap.__name__ = true; -kha_graphics2_truetype_Stbtt_$_$bitmap.prototype = { - w: null - ,h: null - ,stride: null - ,pixels: null - ,pixels_offset: null - ,__class__: kha_graphics2_truetype_Stbtt_$_$bitmap -}; -var kha_graphics2_truetype_Stbtt_$_$edge = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt__edge"] = kha_graphics2_truetype_Stbtt_$_$edge; -kha_graphics2_truetype_Stbtt_$_$edge.__name__ = true; -kha_graphics2_truetype_Stbtt_$_$edge.prototype = { - x0: null - ,y0: null - ,x1: null - ,y1: null - ,invert: null - ,__class__: kha_graphics2_truetype_Stbtt_$_$edge -}; -var kha_graphics2_truetype_Stbtt_$_$active_$edge = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt__active_edge"] = kha_graphics2_truetype_Stbtt_$_$active_$edge; -kha_graphics2_truetype_Stbtt_$_$active_$edge.__name__ = true; -kha_graphics2_truetype_Stbtt_$_$active_$edge.prototype = { - next: null - ,fx: null - ,fdx: null - ,fdy: null - ,direction: null - ,sy: null - ,ey: null - ,__class__: kha_graphics2_truetype_Stbtt_$_$active_$edge -}; -var kha_graphics2_truetype_Stbtt_$_$point = function() { -}; -$hxClasses["kha.graphics2.truetype.Stbtt__point"] = kha_graphics2_truetype_Stbtt_$_$point; -kha_graphics2_truetype_Stbtt_$_$point.__name__ = true; -kha_graphics2_truetype_Stbtt_$_$point.prototype = { - x: null - ,y: null - ,__class__: kha_graphics2_truetype_Stbtt_$_$point -}; -var kha_graphics2_truetype_StbTruetype = function() { }; -$hxClasses["kha.graphics2.truetype.StbTruetype"] = kha_graphics2_truetype_StbTruetype; -kha_graphics2_truetype_StbTruetype.__name__ = true; -kha_graphics2_truetype_StbTruetype.STBTT_assert = function(value) { - if(!value) { - throw new js__$Boot_HaxeError("Error"); - } -}; -kha_graphics2_truetype_StbTruetype.STBTT_POINT_SIZE = function(x) { - return -x; -}; -kha_graphics2_truetype_StbTruetype.ttBYTE = function(p,pos) { - if(pos == null) { - pos = 0; - } - return p.readU8(pos); -}; -kha_graphics2_truetype_StbTruetype.ttCHAR = function(p,pos) { - if(pos == null) { - pos = 0; - } - var n = p.readU8(pos); - if(n >= 128) { - return n - 256; - } - return n; -}; -kha_graphics2_truetype_StbTruetype.ttUSHORT = function(p,pos) { - if(pos == null) { - pos = 0; - } - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - return ch2 | ch1 << 8; -}; -kha_graphics2_truetype_StbTruetype.ttSHORT = function(p,pos) { - if(pos == null) { - pos = 0; - } - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var n = ch2 | ch1 << 8; - if((n & 32768) != 0) { - return n - 65536; - } - return n; -}; -kha_graphics2_truetype_StbTruetype.ttULONG = function(p,pos) { - if(pos == null) { - pos = 0; - } - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var ch3 = p.readU8(pos + 2); - var ch4 = p.readU8(pos + 3); - return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; -}; -kha_graphics2_truetype_StbTruetype.ttLONG = function(p,pos) { - if(pos == null) { - pos = 0; - } - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var ch3 = p.readU8(pos + 2); - var ch4 = p.readU8(pos + 3); - return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; -}; -kha_graphics2_truetype_StbTruetype.ttFixed = function(p,pos) { - if(pos == null) { - pos = 0; - } - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var ch3 = p.readU8(pos + 2); - var ch4 = p.readU8(pos + 3); - return ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24; -}; -kha_graphics2_truetype_StbTruetype.stbtt_tag4 = function(p,pos,c0,c1,c2,c3) { - if(p.readU8(pos) == c0 && p.readU8(pos + 1) == c1 && p.readU8(pos + 2) == c2) { - return p.readU8(pos + 3) == c3; - } else { - return false; - } -}; -kha_graphics2_truetype_StbTruetype.stbtt_tag = function(p,pos,str) { - var c0 = HxOverrides.cca(str,0); - var c1 = HxOverrides.cca(str,1); - var c2 = HxOverrides.cca(str,2); - var c3 = HxOverrides.cca(str,3); - if(p.readU8(pos) == c0 && p.readU8(pos + 1) == c1 && p.readU8(pos + 2) == c2) { - return p.readU8(pos + 3) == c3; - } else { - return false; - } -}; -kha_graphics2_truetype_StbTruetype.stbtt__isfont = function(font) { - var c0 = HxOverrides.cca("1",0); - if(font.readU8(0) == c0 && font.readU8(1) == 0 && font.readU8(2) == 0 && font.readU8(3) == 0) { - return true; - } - var c01 = HxOverrides.cca("typ1",0); - var c1 = HxOverrides.cca("typ1",1); - var c2 = HxOverrides.cca("typ1",2); - var c3 = HxOverrides.cca("typ1",3); - if(font.readU8(0) == c01 && font.readU8(1) == c1 && font.readU8(2) == c2 && font.readU8(3) == c3) { - return true; - } - var c02 = HxOverrides.cca("OTTO",0); - var c11 = HxOverrides.cca("OTTO",1); - var c21 = HxOverrides.cca("OTTO",2); - var c31 = HxOverrides.cca("OTTO",3); - if(font.readU8(0) == c02 && font.readU8(1) == c11 && font.readU8(2) == c21 && font.readU8(3) == c31) { - return true; - } - if(font.readU8(0) == 0 && font.readU8(1) == 1 && font.readU8(2) == 0 && font.readU8(3) == 0) { - return true; - } - return false; -}; -kha_graphics2_truetype_StbTruetype.stbtt__find_table = function(data,fontstart,tag) { - var pos = fontstart + 4; - var ch1 = data.readU8(pos); - var ch2 = data.readU8(pos + 1); - var num_tables = ch2 | ch1 << 8; - var tabledir = fontstart + 12; - var _g1 = 0; - var _g = num_tables; - while(_g1 < _g) { - var i = _g1++; - var loc = tabledir + 16 * i; - var c0 = HxOverrides.cca(tag,0); - var c1 = HxOverrides.cca(tag,1); - var c2 = HxOverrides.cca(tag,2); - var c3 = HxOverrides.cca(tag,3); - if(data.readU8(loc) == c0 && data.readU8(loc + 1) == c1 && data.readU8(loc + 2) == c2 && data.readU8(loc + 3) == c3) { - var pos1 = loc + 8; - var ch11 = data.readU8(pos1); - var ch21 = data.readU8(pos1 + 1); - var ch3 = data.readU8(pos1 + 2); - var ch4 = data.readU8(pos1 + 3); - return ch4 | ch3 << 8 | ch21 << 16 | ch11 << 24; - } - } - return 0; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetFontOffsetForIndex = function(font_collection,index) { - if(kha_graphics2_truetype_StbTruetype.stbtt__isfont(font_collection)) { - if(index == 0) { - return 0; - } else { - return -1; - } - } - var c0 = HxOverrides.cca("ttcf",0); - var c1 = HxOverrides.cca("ttcf",1); - var c2 = HxOverrides.cca("ttcf",2); - var c3 = HxOverrides.cca("ttcf",3); - if(font_collection.readU8(0) == c0 && font_collection.readU8(1) == c1 && font_collection.readU8(2) == c2 && font_collection.readU8(3) == c3) { - var tmp; - var ch1 = font_collection.readU8(4); - var ch2 = font_collection.readU8(5); - var ch3 = font_collection.readU8(6); - var ch4 = font_collection.readU8(7); - if((ch4 | ch3 << 8 | ch2 << 16 | ch1 << 24) != 65536) { - var ch11 = font_collection.readU8(4); - var ch21 = font_collection.readU8(5); - var ch31 = font_collection.readU8(6); - var ch41 = font_collection.readU8(7); - tmp = (ch41 | ch31 << 8 | ch21 << 16 | ch11 << 24) == 131072; - } else { - tmp = true; - } - if(tmp) { - var ch12 = font_collection.readU8(8); - var ch22 = font_collection.readU8(9); - var ch32 = font_collection.readU8(10); - var ch42 = font_collection.readU8(11); - var n = ch42 | ch32 << 8 | ch22 << 16 | ch12 << 24; - if(index >= n) { - return -1; - } - var pos = 12 + index * 4; - var ch13 = font_collection.readU8(pos); - var ch23 = font_collection.readU8(pos + 1); - var ch33 = font_collection.readU8(pos + 2); - var ch43 = font_collection.readU8(pos + 3); - return ch43 | ch33 << 8 | ch23 << 16 | ch13 << 24; - } - } - return -1; -}; -kha_graphics2_truetype_StbTruetype.stbtt_InitFont = function(info,data,fontstart) { - var cmap; - var t; - var numTables; - info.data = data; - info.fontstart = fontstart; - cmap = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"cmap"); - info.loca = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"loca"); - info.head = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"head"); - info.glyf = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"glyf"); - info.hhea = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"hhea"); - info.hmtx = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"hmtx"); - info.kern = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"kern"); - if(cmap == 0 || info.loca == 0 || info.head == 0 || info.glyf == 0 || info.hhea == 0 || info.hmtx == 0) { - return false; - } - t = kha_graphics2_truetype_StbTruetype.stbtt__find_table(data,fontstart,"maxp"); - if(t != 0) { - var pos = t + 4; - var ch1 = data.readU8(pos); - var ch2 = data.readU8(pos + 1); - info.numGlyphs = ch2 | ch1 << 8; - } else { - info.numGlyphs = 65535; - } - var pos1 = cmap + 2; - var ch11 = data.readU8(pos1); - var ch21 = data.readU8(pos1 + 1); - numTables = ch21 | ch11 << 8; - info.index_map = 0; - var _g1 = 0; - var _g = numTables; - while(_g1 < _g) { - var i = _g1++; - var encoding_record = cmap + 4 + 8 * i; - var ch12 = data.readU8(encoding_record); - var ch22 = data.readU8(encoding_record + 1); - var _g2 = ch22 | ch12 << 8; - switch(_g2) { - case 0: - var pos2 = encoding_record + 4; - var ch13 = data.readU8(pos2); - var ch23 = data.readU8(pos2 + 1); - var ch3 = data.readU8(pos2 + 2); - var ch4 = data.readU8(pos2 + 3); - info.index_map = cmap + (ch4 | ch3 << 8 | ch23 << 16 | ch13 << 24); - break; - case 3: - var pos3 = encoding_record + 2; - var ch14 = data.readU8(pos3); - var ch24 = data.readU8(pos3 + 1); - var _g21 = ch24 | ch14 << 8; - switch(_g21) { - case 1:case 10: - var pos4 = encoding_record + 4; - var ch15 = data.readU8(pos4); - var ch25 = data.readU8(pos4 + 1); - var ch31 = data.readU8(pos4 + 2); - var ch41 = data.readU8(pos4 + 3); - info.index_map = cmap + (ch41 | ch31 << 8 | ch25 << 16 | ch15 << 24); - break; - } - break; - } - } - if(info.index_map == 0) { - return false; - } - var pos5 = info.head + 50; - var ch16 = data.readU8(pos5); - var ch26 = data.readU8(pos5 + 1); - info.indexToLocFormat = ch26 | ch16 << 8; - return true; -}; -kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex = function(info,unicode_codepoint) { - var data = info.data; - var index_map = info.index_map; - var ch1 = data.readU8(index_map); - var ch2 = data.readU8(index_map + 1); - var format = ch2 | ch1 << 8; - if(format == 0) { - var pos = index_map + 2; - var ch11 = data.readU8(pos); - var ch21 = data.readU8(pos + 1); - var bytes = ch21 | ch11 << 8; - if(unicode_codepoint < bytes - 6) { - return data.readU8(index_map + 6 + unicode_codepoint); - } - return 0; - } else if(format == 6) { - var pos1 = index_map + 6; - var ch12 = data.readU8(pos1); - var ch22 = data.readU8(pos1 + 1); - var first = ch22 | ch12 << 8; - var pos2 = index_map + 8; - var ch13 = data.readU8(pos2); - var ch23 = data.readU8(pos2 + 1); - var count = ch23 | ch13 << 8; - if(unicode_codepoint >= first && unicode_codepoint < first + count) { - var pos3 = index_map + 10 + (unicode_codepoint - first) * 2; - var ch14 = data.readU8(pos3); - var ch24 = data.readU8(pos3 + 1); - return ch24 | ch14 << 8; - } - return 0; - } else if(format == 2) { - throw new js__$Boot_HaxeError("Error"); - } else if(format == 4) { - var pos4 = index_map + 6; - var ch15 = data.readU8(pos4); - var ch25 = data.readU8(pos4 + 1); - var segcount = (ch25 | ch15 << 8) >> 1; - var pos5 = index_map + 8; - var ch16 = data.readU8(pos5); - var ch26 = data.readU8(pos5 + 1); - var searchRange = (ch26 | ch16 << 8) >> 1; - var pos6 = index_map + 10; - var ch17 = data.readU8(pos6); - var ch27 = data.readU8(pos6 + 1); - var entrySelector = ch27 | ch17 << 8; - var pos7 = index_map + 12; - var ch18 = data.readU8(pos7); - var ch28 = data.readU8(pos7 + 1); - var rangeShift = (ch28 | ch18 << 8) >> 1; - var endCount = index_map + 14; - var search = endCount; - if(unicode_codepoint > 65535) { - return 0; - } - var pos8 = search + rangeShift * 2; - var ch19 = data.readU8(pos8); - var ch29 = data.readU8(pos8 + 1); - if(unicode_codepoint >= (ch29 | ch19 << 8)) { - search += rangeShift * 2; - } - search -= 2; - while(entrySelector != 0) { - var end; - searchRange >>= 1; - var pos9 = search + searchRange * 2; - var ch110 = data.readU8(pos9); - var ch210 = data.readU8(pos9 + 1); - end = ch210 | ch110 << 8; - if(unicode_codepoint > end) { - search += searchRange * 2; - } - --entrySelector; - } - search += 2; - var offset; - var start; - var item = search - endCount >> 1; - var pos10 = endCount + 2 * item; - var ch111 = data.readU8(pos10); - var ch211 = data.readU8(pos10 + 1); - if(unicode_codepoint > (ch211 | ch111 << 8)) { - throw new js__$Boot_HaxeError("Error"); - } - var pos11 = index_map + 14 + segcount * 2 + 2 + 2 * item; - var ch112 = data.readU8(pos11); - var ch212 = data.readU8(pos11 + 1); - start = ch212 | ch112 << 8; - if(unicode_codepoint < start) { - return 0; - } - var pos12 = index_map + 14 + segcount * 6 + 2 + 2 * item; - var ch113 = data.readU8(pos12); - var ch213 = data.readU8(pos12 + 1); - offset = ch213 | ch113 << 8; - if(offset == 0) { - var pos13 = index_map + 14 + segcount * 4 + 2 + 2 * item; - var ch114 = data.readU8(pos13); - var ch214 = data.readU8(pos13 + 1); - var n = ch214 | ch114 << 8; - return unicode_codepoint + ((n & 32768) != 0 ? n - 65536 : n); - } - var pos14 = offset + (unicode_codepoint - start) * 2 + index_map + 14 + segcount * 6 + 2 + 2 * item; - var ch115 = data.readU8(pos14); - var ch215 = data.readU8(pos14 + 1); - return ch215 | ch115 << 8; - } else if(format == 12 || format == 13) { - var pos15 = index_map + 12; - var ch116 = data.readU8(pos15); - var ch216 = data.readU8(pos15 + 1); - var ch3 = data.readU8(pos15 + 2); - var ch4 = data.readU8(pos15 + 3); - var ngroups = ch4 | ch3 << 8 | ch216 << 16 | ch116 << 24; - var low; - var high; - low = 0; - high = ngroups; - while(low < high) { - var mid = low + (high - low >> 1); - var pos16 = index_map + 16 + mid * 12; - var ch117 = data.readU8(pos16); - var ch217 = data.readU8(pos16 + 1); - var ch31 = data.readU8(pos16 + 2); - var ch41 = data.readU8(pos16 + 3); - var start_char = ch41 | ch31 << 8 | ch217 << 16 | ch117 << 24; - var pos17 = index_map + 16 + mid * 12 + 4; - var ch118 = data.readU8(pos17); - var ch218 = data.readU8(pos17 + 1); - var ch32 = data.readU8(pos17 + 2); - var ch42 = data.readU8(pos17 + 3); - var end_char = ch42 | ch32 << 8 | ch218 << 16 | ch118 << 24; - if(unicode_codepoint < start_char) { - high = mid; - } else if(unicode_codepoint > end_char) { - low = mid + 1; - } else { - var pos18 = index_map + 16 + mid * 12 + 8; - var ch119 = data.readU8(pos18); - var ch219 = data.readU8(pos18 + 1); - var ch33 = data.readU8(pos18 + 2); - var ch43 = data.readU8(pos18 + 3); - var start_glyph = ch43 | ch33 << 8 | ch219 << 16 | ch119 << 24; - if(format == 12) { - return start_glyph + unicode_codepoint - start_char; - } else { - return start_glyph; - } - } - } - return 0; - } - throw new js__$Boot_HaxeError("Error"); -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointShape = function(info,unicode_codepoint) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,unicode_codepoint)); -}; -kha_graphics2_truetype_StbTruetype.stbtt_setvertex = function(v,type,x,y,cx,cy) { - v.type = type; - v.x = x; - v.y = y; - v.cx = cx; - v.cy = cy; -}; -kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset = function(info,glyph_index) { - var g1; - var g2; - if(glyph_index >= info.numGlyphs) { - return -1; - } - if(info.indexToLocFormat >= 2) { - return -1; - } - if(info.indexToLocFormat == 0) { - var info1 = info.glyf; - var p = info.data; - var pos = info.loca + glyph_index * 2; - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - g1 = info1 + (ch2 | ch1 << 8) * 2; - var info2 = info.glyf; - var p1 = info.data; - var pos1 = info.loca + glyph_index * 2 + 2; - var ch11 = p1.readU8(pos1); - var ch21 = p1.readU8(pos1 + 1); - g2 = info2 + (ch21 | ch11 << 8) * 2; - } else { - var info3 = info.glyf; - var p2 = info.data; - var pos2 = info.loca + glyph_index * 4; - var ch12 = p2.readU8(pos2); - var ch22 = p2.readU8(pos2 + 1); - var ch3 = p2.readU8(pos2 + 2); - var ch4 = p2.readU8(pos2 + 3); - g1 = info3 + (ch4 | ch3 << 8 | ch22 << 16 | ch12 << 24); - var info4 = info.glyf; - var p3 = info.data; - var pos3 = info.loca + glyph_index * 4 + 4; - var ch13 = p3.readU8(pos3); - var ch23 = p3.readU8(pos3 + 1); - var ch31 = p3.readU8(pos3 + 2); - var ch41 = p3.readU8(pos3 + 3); - g2 = info4 + (ch41 | ch31 << 8 | ch23 << 16 | ch13 << 24); - } - if(g1 == g2) { - return -1; - } else { - return g1; - } -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox = function(info,glyph_index,rect) { - var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index); - if(g < 0) { - return false; - } - var p = info.data; - var pos = g + 2; - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var n = ch2 | ch1 << 8; - rect.x0 = (n & 32768) != 0 ? n - 65536 : n; - var p1 = info.data; - var pos1 = g + 4; - var ch11 = p1.readU8(pos1); - var ch21 = p1.readU8(pos1 + 1); - var n1 = ch21 | ch11 << 8; - rect.y0 = (n1 & 32768) != 0 ? n1 - 65536 : n1; - var p2 = info.data; - var pos2 = g + 6; - var ch12 = p2.readU8(pos2); - var ch22 = p2.readU8(pos2 + 1); - var n2 = ch22 | ch12 << 8; - rect.x1 = (n2 & 32768) != 0 ? n2 - 65536 : n2; - var p3 = info.data; - var pos3 = g + 8; - var ch13 = p3.readU8(pos3); - var ch23 = p3.readU8(pos3 + 1); - var n3 = ch23 | ch13 << 8; - rect.y1 = (n3 & 32768) != 0 ? n3 - 65536 : n3; - return true; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBox = function(info,codepoint,rect) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint),rect); -}; -kha_graphics2_truetype_StbTruetype.stbtt_IsGlyphEmpty = function(info,glyph_index) { - var numberOfContours; - var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index); - if(g < 0) { - return true; - } - var p = info.data; - var ch1 = p.readU8(g); - var ch2 = p.readU8(g + 1); - var n = ch2 | ch1 << 8; - if((n & 32768) != 0) { - numberOfContours = n - 65536; - } else { - numberOfContours = n; - } - return numberOfContours == 0; -}; -kha_graphics2_truetype_StbTruetype.stbtt__close_shape = function(vertices,num_vertices,was_off,start_off,sx,sy,scx,scy,cx,cy) { - if(start_off) { - if(was_off) { - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,cx + scx >> 1,cy + scy >> 1,cx,cy); - } - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,sx,sy,scx,scy); - } else if(was_off) { - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,sx,sy,cx,cy); - } else { - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],2,sx,sy,0,0); - } - return num_vertices; -}; -kha_graphics2_truetype_StbTruetype.copyVertices = function(from,to,offset,count) { - var _g1 = 0; - var _g = count; - while(_g1 < _g) { - var i = _g1++; - to[offset + i] = from[i]; - } -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape = function(info,glyph_index) { - var numberOfContours; - var endPtsOfContours; - var data = info.data; - var vertices = null; - var num_vertices = 0; - var g = kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(info,glyph_index); - if(g < 0) { - return null; - } - var ch1 = data.readU8(g); - var ch2 = data.readU8(g + 1); - var n = ch2 | ch1 << 8; - if((n & 32768) != 0) { - numberOfContours = n - 65536; - } else { - numberOfContours = n; - } - if(numberOfContours > 0) { - var flags = 0; - var flagcount; - var ins; - var j = 0; - var m; - var n1; - var next_move = 0; - var off = 0; - var was_off = false; - var start_off = false; - var x; - var y; - var cx; - var cy; - var sx; - var sy; - var scx; - var scy; - var points; - var pointsIndex = 0; - endPtsOfContours = data.sub(g + 10,data.get_length() - (g + 10)); - var pos = g + 10 + numberOfContours * 2; - var ch11 = data.readU8(pos); - var ch21 = data.readU8(pos + 1); - ins = ch21 | ch11 << 8; - points = data.sub(g + 10 + numberOfContours * 2 + 2 + ins,data.get_length() - (g + 10 + numberOfContours * 2 + 2 + ins)); - var pos1 = numberOfContours * 2 - 2; - var ch12 = endPtsOfContours.readU8(pos1); - var ch22 = endPtsOfContours.readU8(pos1 + 1); - n1 = 1 + (ch22 | ch12 << 8); - m = n1 + 2 * numberOfContours; - var this1 = new Array(m); - vertices = this1; - if(vertices == null) { - return null; - } else { - var _g1 = 0; - var _g = vertices.length; - while(_g1 < _g) { - var i = _g1++; - vertices[i] = new kha_graphics2_truetype_Stbtt_$vertex(); - } - } - next_move = 0; - flagcount = 0; - off = m - n1; - var _g11 = 0; - var _g2 = n1; - while(_g11 < _g2) { - var i1 = _g11++; - if(flagcount == 0) { - flags = points.readU8(pointsIndex++); - if((flags & 8) != 0) { - flagcount = points.readU8(pointsIndex++); - } - } else { - --flagcount; - } - vertices[off + i1].type = flags; - } - x = 0; - var _g12 = 0; - var _g3 = n1; - while(_g12 < _g3) { - var i2 = _g12++; - flags = vertices[off + i2].type; - if((flags & 2) != 0) { - var dx = points.readU8(pointsIndex++); - x += (flags & 16) != 0 ? dx : -dx; - } else if((flags & 16) == 0) { - var value; - var ch13 = points.readU8(pointsIndex); - var ch23 = points.readU8(pointsIndex + 1); - var n2 = ch23 | ch13 << 8; - if((n2 & 32768) != 0) { - value = n2 - 65536; - } else { - value = n2; - } - x += value; - pointsIndex += 2; - } - vertices[off + i2].x = x; - } - y = 0; - var _g13 = 0; - var _g4 = n1; - while(_g13 < _g4) { - var i3 = _g13++; - flags = vertices[off + i3].type; - if((flags & 4) != 0) { - var dy = points.readU8(pointsIndex++); - y += (flags & 32) != 0 ? dy : -dy; - } else if((flags & 32) == 0) { - var value1; - var ch14 = points.readU8(pointsIndex); - var ch24 = points.readU8(pointsIndex + 1); - var n3 = ch24 | ch14 << 8; - if((n3 & 32768) != 0) { - value1 = n3 - 65536; - } else { - value1 = n3; - } - y += value1; - pointsIndex += 2; - } - vertices[off + i3].y = y; - } - num_vertices = 0; - scy = 0; - scx = scy; - cy = scx; - cx = cy; - sy = cx; - sx = sy; - var i4 = 0; - while(i4 < n1) { - flags = vertices[off + i4].type; - x = vertices[off + i4].x; - y = vertices[off + i4].y; - if(next_move == i4) { - if(i4 != 0) { - num_vertices = kha_graphics2_truetype_StbTruetype.stbtt__close_shape(vertices,num_vertices,was_off,start_off,sx,sy,scx,scy,cx,cy); - } - start_off = (flags & 1) == 0; - if(start_off) { - scx = x; - scy = y; - if((vertices[off + i4 + 1].type & 1) == 0) { - sx = x + vertices[off + i4 + 1].x >> 1; - sy = y + vertices[off + i4 + 1].y >> 1; - } else { - sx = vertices[off + i4 + 1].x; - sy = vertices[off + i4 + 1].y; - ++i4; - } - } else { - sx = x; - sy = y; - } - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],1,sx,sy,0,0); - was_off = false; - var pos2 = j * 2; - var ch15 = endPtsOfContours.readU8(pos2); - var ch25 = endPtsOfContours.readU8(pos2 + 1); - next_move = 1 + (ch25 | ch15 << 8); - ++j; - } else if((flags & 1) == 0) { - if(was_off) { - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,cx + x >> 1,cy + y >> 1,cx,cy); - } - cx = x; - cy = y; - was_off = true; - } else { - if(was_off) { - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],3,x,y,cx,cy); - } else { - kha_graphics2_truetype_StbTruetype.stbtt_setvertex(vertices[num_vertices++],2,x,y,0,0); - } - was_off = false; - } - ++i4; - } - num_vertices = kha_graphics2_truetype_StbTruetype.stbtt__close_shape(vertices,num_vertices,was_off,start_off,sx,sy,scx,scy,cx,cy); - } else if(numberOfContours == -1) { - var more = 1; - var comp = data.sub(g + 10,data.get_length() - (g + 10)); - var compIndex = 0; - num_vertices = 0; - vertices = null; - while(more != 0) { - var flags1; - var gidx; - var comp_num_verts = 0; - var i5; - var comp_verts = null; - var tmp = null; - var mtx0 = 1; - var mtx1 = 0; - var mtx2 = 0; - var mtx3 = 1; - var mtx4 = 0; - var mtx5 = 0; - var m1; - var n4; - var ch16 = comp.readU8(compIndex); - var ch26 = comp.readU8(compIndex + 1); - var n5 = ch26 | ch16 << 8; - if((n5 & 32768) != 0) { - flags1 = n5 - 65536; - } else { - flags1 = n5; - } - compIndex += 2; - var ch17 = comp.readU8(compIndex); - var ch27 = comp.readU8(compIndex + 1); - var n6 = ch27 | ch17 << 8; - if((n6 & 32768) != 0) { - gidx = n6 - 65536; - } else { - gidx = n6; - } - compIndex += 2; - if((flags1 & 2) != 0) { - if((flags1 & 1) != 0) { - var ch18 = comp.readU8(compIndex); - var ch28 = comp.readU8(compIndex + 1); - var n7 = ch28 | ch18 << 8; - if((n7 & 32768) != 0) { - mtx4 = n7 - 65536; - } else { - mtx4 = n7; - } - compIndex += 2; - var ch19 = comp.readU8(compIndex); - var ch29 = comp.readU8(compIndex + 1); - var n8 = ch29 | ch19 << 8; - if((n8 & 32768) != 0) { - mtx5 = n8 - 65536; - } else { - mtx5 = n8; - } - compIndex += 2; - } else { - var n9 = comp.readU8(compIndex); - if(n9 >= 128) { - mtx4 = n9 - 256; - } else { - mtx4 = n9; - } - ++compIndex; - var n10 = comp.readU8(compIndex); - if(n10 >= 128) { - mtx5 = n10 - 256; - } else { - mtx5 = n10; - } - ++compIndex; - } - } else { - throw new js__$Boot_HaxeError("Error"); - } - if((flags1 & 8) != 0) { - var ch110 = comp.readU8(compIndex); - var ch210 = comp.readU8(compIndex + 1); - var n11 = ch210 | ch110 << 8; - mtx3 = ((n11 & 32768) != 0 ? n11 - 65536 : n11) / 16384.0; - mtx0 = mtx3; - compIndex += 2; - mtx2 = 0; - mtx1 = mtx2; - } else if((flags1 & 64) != 0) { - var ch111 = comp.readU8(compIndex); - var ch211 = comp.readU8(compIndex + 1); - var n12 = ch211 | ch111 << 8; - mtx0 = ((n12 & 32768) != 0 ? n12 - 65536 : n12) / 16384.0; - compIndex += 2; - mtx2 = 0; - mtx1 = mtx2; - var ch112 = comp.readU8(compIndex); - var ch212 = comp.readU8(compIndex + 1); - var n13 = ch212 | ch112 << 8; - mtx3 = ((n13 & 32768) != 0 ? n13 - 65536 : n13) / 16384.0; - compIndex += 2; - } else if((flags1 & 128) != 0) { - var ch113 = comp.readU8(compIndex); - var ch213 = comp.readU8(compIndex + 1); - var n14 = ch213 | ch113 << 8; - mtx0 = ((n14 & 32768) != 0 ? n14 - 65536 : n14) / 16384.0; - compIndex += 2; - var ch114 = comp.readU8(compIndex); - var ch214 = comp.readU8(compIndex + 1); - var n15 = ch214 | ch114 << 8; - mtx1 = ((n15 & 32768) != 0 ? n15 - 65536 : n15) / 16384.0; - compIndex += 2; - var ch115 = comp.readU8(compIndex); - var ch215 = comp.readU8(compIndex + 1); - var n16 = ch215 | ch115 << 8; - mtx2 = ((n16 & 32768) != 0 ? n16 - 65536 : n16) / 16384.0; - compIndex += 2; - var ch116 = comp.readU8(compIndex); - var ch216 = comp.readU8(compIndex + 1); - var n17 = ch216 | ch116 << 8; - mtx3 = ((n17 & 32768) != 0 ? n17 - 65536 : n17) / 16384.0; - compIndex += 2; - } - m1 = Math.sqrt(mtx0 * mtx0 + mtx1 * mtx1); - n4 = Math.sqrt(mtx2 * mtx2 + mtx3 * mtx3); - comp_verts = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,gidx); - if(comp_verts == null) { - comp_num_verts = 0; - } else { - comp_num_verts = comp_verts.length; - } - if(comp_num_verts > 0) { - var _g14 = 0; - var _g5 = comp_num_verts; - while(_g14 < _g5) { - var i6 = _g14++; - var v = comp_verts[i6]; - var x1; - var y1; - x1 = v.x; - y1 = v.y; - v.x = m1 * (mtx0 * x1 + mtx2 * y1 + mtx4) | 0; - v.y = n4 * (mtx1 * x1 + mtx3 * y1 + mtx5) | 0; - x1 = v.cx; - y1 = v.cy; - v.cx = m1 * (mtx0 * x1 + mtx2 * y1 + mtx4) | 0; - v.cy = n4 * (mtx1 * x1 + mtx3 * y1 + mtx5) | 0; - } - var this2 = new Array(num_vertices + comp_num_verts); - tmp = this2; - if(tmp == null) { - return null; - } - if(num_vertices > 0) { - kha_graphics2_truetype_StbTruetype.copyVertices(vertices,tmp,0,num_vertices); - } - kha_graphics2_truetype_StbTruetype.copyVertices(comp_verts,tmp,num_vertices,comp_num_verts); - vertices = tmp; - num_vertices += comp_num_verts; - } - more = flags1 & 32; - } - } else if(numberOfContours < 0) { - throw new js__$Boot_HaxeError("Error"); - } - if(vertices == null) { - return null; - } - if(vertices.length < num_vertices) { - throw new js__$Boot_HaxeError("Error"); - } - if(num_vertices < vertices.length) { - var this3 = new Array(num_vertices); - var tmp1 = this3; - kha_graphics2_truetype_StbTruetype.copyVertices(vertices,tmp1,0,num_vertices); - return tmp1; - } else { - return vertices; - } -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics = function(info,glyph_index) { - var p = info.data; - var pos = info.hhea + 34; - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var numOfLongHorMetrics = ch2 | ch1 << 8; - var metrics = new kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics(); - if(glyph_index < numOfLongHorMetrics) { - var p1 = info.data; - var pos1 = info.hmtx + 4 * glyph_index; - var ch11 = p1.readU8(pos1); - var ch21 = p1.readU8(pos1 + 1); - var n = ch21 | ch11 << 8; - metrics.advanceWidth = (n & 32768) != 0 ? n - 65536 : n; - var p2 = info.data; - var pos2 = info.hmtx + 4 * glyph_index + 2; - var ch12 = p2.readU8(pos2); - var ch22 = p2.readU8(pos2 + 1); - var n1 = ch22 | ch12 << 8; - metrics.leftSideBearing = (n1 & 32768) != 0 ? n1 - 65536 : n1; - } else { - var p3 = info.data; - var pos3 = info.hmtx + 4 * (numOfLongHorMetrics - 1); - var ch13 = p3.readU8(pos3); - var ch23 = p3.readU8(pos3 + 1); - var n2 = ch23 | ch13 << 8; - metrics.advanceWidth = (n2 & 32768) != 0 ? n2 - 65536 : n2; - var p4 = info.data; - var pos4 = info.hmtx + 4 * numOfLongHorMetrics + 2 * (glyph_index - numOfLongHorMetrics); - var ch14 = p4.readU8(pos4); - var ch24 = p4.readU8(pos4 + 1); - var n3 = ch24 | ch14 << 8; - metrics.leftSideBearing = (n3 & 32768) != 0 ? n3 - 65536 : n3; - } - return metrics; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphKernAdvance = function(info,glyph1,glyph2) { - var data = info.data.sub(info.kern,info.data.get_length() - info.kern); - var needle; - var straw; - var l; - var r; - var m; - if(info.kern == 0) { - return 0; - } - var ch1 = data.readU8(2); - var ch2 = data.readU8(3); - if((ch2 | ch1 << 8) < 1) { - return 0; - } - var ch11 = data.readU8(8); - var ch21 = data.readU8(9); - if((ch21 | ch11 << 8) != 1) { - return 0; - } - l = 0; - var ch12 = data.readU8(10); - var ch22 = data.readU8(11); - r = (ch22 | ch12 << 8) - 1; - needle = glyph1 << 16 | glyph2; - while(l <= r) { - m = l + r >> 1; - var pos = 18 + m * 6; - var ch13 = data.readU8(pos); - var ch23 = data.readU8(pos + 1); - var ch3 = data.readU8(pos + 2); - var ch4 = data.readU8(pos + 3); - straw = ch4 | ch3 << 8 | ch23 << 16 | ch13 << 24; - if(needle < straw) { - r = m - 1; - } else if(needle > straw) { - l = m + 1; - } else { - var pos1 = 22 + m * 6; - var ch14 = data.readU8(pos1); - var ch24 = data.readU8(pos1 + 1); - var n = ch24 | ch14 << 8; - if((n & 32768) != 0) { - return n - 65536; - } else { - return n; - } - } - } - return 0; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointKernAdvance = function(info,ch1,ch2) { - if(info.kern == 0) { - return 0; - } - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphKernAdvance(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,ch1),kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,ch2)); -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointHMetrics = function(info,codepoint) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics(info,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint)); -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetFontVMetrics = function(info) { - var metrics = new kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics(); - var p = info.data; - var pos = info.hhea + 4; - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var n = ch2 | ch1 << 8; - metrics.ascent = (n & 32768) != 0 ? n - 65536 : n; - var p1 = info.data; - var pos1 = info.hhea + 6; - var ch11 = p1.readU8(pos1); - var ch21 = p1.readU8(pos1 + 1); - var n1 = ch21 | ch11 << 8; - metrics.descent = (n1 & 32768) != 0 ? n1 - 65536 : n1; - var p2 = info.data; - var pos2 = info.hhea + 8; - var ch12 = p2.readU8(pos2); - var ch22 = p2.readU8(pos2 + 1); - var n2 = ch22 | ch12 << 8; - metrics.lineGap = (n2 & 32768) != 0 ? n2 - 65536 : n2; - return metrics; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetFontBoundingBox = function(info) { - var rect = new kha_graphics2_truetype_Stbtt_$temp_$rect(); - var p = info.data; - var pos = info.head + 36; - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var n = ch2 | ch1 << 8; - rect.x0 = (n & 32768) != 0 ? n - 65536 : n; - var p1 = info.data; - var pos1 = info.head + 38; - var ch11 = p1.readU8(pos1); - var ch21 = p1.readU8(pos1 + 1); - var n1 = ch21 | ch11 << 8; - rect.y0 = (n1 & 32768) != 0 ? n1 - 65536 : n1; - var p2 = info.data; - var pos2 = info.head + 40; - var ch12 = p2.readU8(pos2); - var ch22 = p2.readU8(pos2 + 1); - var n2 = ch22 | ch12 << 8; - rect.x1 = (n2 & 32768) != 0 ? n2 - 65536 : n2; - var p3 = info.data; - var pos3 = info.head + 42; - var ch13 = p3.readU8(pos3); - var ch23 = p3.readU8(pos3 + 1); - var n3 = ch23 | ch13 << 8; - rect.y1 = (n3 & 32768) != 0 ? n3 - 65536 : n3; - return rect; -}; -kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight = function(info,height) { - var p = info.data; - var pos = info.hhea + 4; - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var n = ch2 | ch1 << 8; - var p1 = info.data; - var pos1 = info.hhea + 6; - var ch11 = p1.readU8(pos1); - var ch21 = p1.readU8(pos1 + 1); - var n1 = ch21 | ch11 << 8; - var fheight = ((n & 32768) != 0 ? n - 65536 : n) - ((n1 & 32768) != 0 ? n1 - 65536 : n1); - return height / fheight; -}; -kha_graphics2_truetype_StbTruetype.stbtt_ScaleForMappingEmToPixels = function(info,pixels) { - var p = info.data; - var pos = info.head + 18; - var ch1 = p.readU8(pos); - var ch2 = p.readU8(pos + 1); - var unitsPerEm = ch2 | ch1 << 8; - return pixels / unitsPerEm; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel = function(font,glyph,scale_x,scale_y,shift_x,shift_y) { - var rect = new kha_graphics2_truetype_Stbtt_$temp_$rect(); - if(!kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox(font,glyph,rect)) { - rect.x0 = 0; - rect.y0 = 0; - rect.x1 = 0; - rect.y1 = 0; - } else { - var x0 = rect.x0; - var x1 = rect.x1; - var y0 = rect.y0; - var y1 = rect.y1; - rect.x0 = Math.floor(x0 * scale_x + shift_x); - rect.y0 = Math.floor(-y1 * scale_y + shift_y); - rect.x1 = Math.ceil(x1 * scale_x + shift_x); - rect.y1 = Math.ceil(-y0 * scale_y + shift_y); - } - return rect; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBox = function(font,glyph,scale_x,scale_y) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(font,glyph,scale_x,scale_y,0.0,0.0); -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBoxSubpixel = function(font,codepoint,scale_x,scale_y,shift_x,shift_y) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(font,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(font,codepoint),scale_x,scale_y,shift_x,shift_y); -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBox = function(font,codepoint,scale_x,scale_y) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBoxSubpixel(font,codepoint,scale_x,scale_y,0.0,0.0); -}; -kha_graphics2_truetype_StbTruetype.stbtt__new_active = function(e,eIndex,off_x,start_point) { - var z = new kha_graphics2_truetype_Stbtt_$_$active_$edge(); - var dxdy = (e[eIndex].x1 - e[eIndex].x0) / (e[eIndex].y1 - e[eIndex].y0); - if(z == null) { - return z; - } - z.fdx = dxdy; - z.fdy = dxdy != 0.0 ? 1.0 / dxdy : 0.0; - z.fx = e[eIndex].x0 + dxdy * (start_point - e[eIndex].y0); - z.fx -= off_x; - z.direction = e[eIndex].invert ? 1.0 : -1.0; - z.sy = e[eIndex].y0; - z.ey = e[eIndex].y1; - z.next = null; - return z; -}; -kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge = function(scanline,scanlineIndex,x,e,x0,y0,x1,y1) { - if(y0 == y1) { - return; - } - if(!(y0 < y1)) { - throw new js__$Boot_HaxeError("Error"); - } - if(!(e.sy <= e.ey)) { - throw new js__$Boot_HaxeError("Error"); - } - if(y0 > e.ey) { - return; - } - if(y1 < e.sy) { - return; - } - if(y0 < e.sy) { - x0 += (x1 - x0) * (e.sy - y0) / (y1 - y0); - y0 = e.sy; - } - if(y1 > e.ey) { - x1 += (x1 - x0) * (e.ey - y1) / (y1 - y0); - y1 = e.ey; - } - if(x0 == x) { - if(!(x1 <= x + 1)) { - throw new js__$Boot_HaxeError("Error"); - } - } else if(x0 == x + 1) { - if(!(x1 >= x)) { - throw new js__$Boot_HaxeError("Error"); - } - } else if(x0 <= x) { - if(!(x1 <= x)) { - throw new js__$Boot_HaxeError("Error"); - } - } else if(x0 >= x + 1) { - if(!(x1 >= x + 1)) { - throw new js__$Boot_HaxeError("Error"); - } - } else if(!(x1 >= x && x1 <= x + 1)) { - throw new js__$Boot_HaxeError("Error"); - } - if(x0 <= x && x1 <= x) { - var _g = scanlineIndex + x; - var _g1 = scanline; - _g1[_g] = _g1[_g] + e.direction * (y1 - y0); - } else if(!(x0 >= x + 1 && x1 >= x + 1)) { - if(!(x0 >= x && x0 <= x + 1 && x1 >= x && x1 <= x + 1)) { - throw new js__$Boot_HaxeError("Error"); - } - var _g2 = scanlineIndex + x; - var _g11 = scanline; - _g11[_g2] = _g11[_g2] + e.direction * (y1 - y0) * (1 - (x0 - x + (x1 - x)) / 2); - } -}; -kha_graphics2_truetype_StbTruetype.stbtt__fill_active_edges_new = function(scanline,scanline_fill,scanline_fillIndex,len,e,y_top) { - var y_bottom = y_top + 1; - while(e != null) { - if(!(e.ey >= y_top)) { - throw new js__$Boot_HaxeError("Error"); - } - if(e.fdx == 0) { - var x0 = e.fx; - if(x0 < len) { - if(x0 >= 0) { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x0 | 0,e,x0,y_top,x0,y_bottom); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline_fill,scanline_fillIndex - 1,x0 + 1 | 0,e,x0,y_top,x0,y_bottom); - } else { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline_fill,scanline_fillIndex - 1,0,e,x0,y_top,x0,y_bottom); - } - } - } else { - var x01 = e.fx; - var dx = e.fdx; - var xb = x01 + dx; - var x_top; - var x_bottom; - var sy0; - var sy1; - var dy = e.fdy; - if(!(e.sy <= y_bottom && e.ey >= y_top)) { - throw new js__$Boot_HaxeError("Error"); - } - if(e.sy > y_top) { - x_top = x01 + dx * (e.sy - y_top); - sy0 = e.sy; - } else { - x_top = x01; - sy0 = y_top; - } - if(e.ey < y_bottom) { - x_bottom = x01 + dx * (e.ey - y_top); - sy1 = e.ey; - } else { - x_bottom = xb; - sy1 = y_bottom; - } - if(x_top >= 0 && x_bottom >= 0 && x_top < len && x_bottom < len) { - if((x_top | 0) == (x_bottom | 0)) { - var height; - var x = x_top | 0; - height = sy1 - sy0; - if(!(x >= 0 && x < len)) { - throw new js__$Boot_HaxeError("Error"); - } - var _g = x; - var _g1 = scanline; - _g1[_g] = _g1[_g] + e.direction * (1 - (x_top - x + (x_bottom - x)) / 2) * height; - var _g2 = scanline_fillIndex + x; - var _g11 = scanline_fill; - _g11[_g2] = _g11[_g2] + e.direction * height; - } else { - var x1; - var x11; - var x2; - var y_crossing; - var step; - var sign; - var area; - if(x_top > x_bottom) { - var t; - sy0 = y_bottom - (sy0 - y_top); - sy1 = y_bottom - (sy1 - y_top); - t = sy0; - sy0 = sy1; - sy1 = t; - t = x_bottom; - x_bottom = x_top; - x_top = t; - dx = -dx; - dy = -dy; - t = x01; - x01 = xb; - xb = t; - } - x11 = x_top | 0; - x2 = x_bottom | 0; - y_crossing = (x11 + 1 - x01) * dy + y_top; - sign = e.direction; - area = sign * (y_crossing - sy0); - var _g3 = x11; - var _g12 = scanline; - _g12[_g3] = _g12[_g3] + area * (1 - (x_top - x11 + (x11 + 1 - x11)) / 2); - step = sign * dy; - var _g13 = x11 + 1; - var _g4 = x2; - while(_g13 < _g4) { - var x3 = _g13++; - var _g21 = x3; - var _g31 = scanline; - _g31[_g21] = _g31[_g21] + (area + step / 2); - area += step; - } - y_crossing += dy * (x2 - (x11 + 1)); - if(!(Math.abs(area) <= 1.01)) { - throw new js__$Boot_HaxeError("Error"); - } - var _g5 = x2; - var _g14 = scanline; - _g14[_g5] = _g14[_g5] + (area + sign * (1 - (x2 - x2 + (x_bottom - x2)) / 2) * (sy1 - y_crossing)); - var _g6 = scanline_fillIndex + x2; - var _g15 = scanline_fill; - _g15[_g6] = _g15[_g6] + sign * (sy1 - sy0); - } - } else { - var _g16 = 0; - var _g7 = len; - while(_g16 < _g7) { - var x4 = _g16++; - var y0 = y_top; - var x12 = x4; - var x21 = x4 + 1; - var x31 = xb; - var y3 = y_bottom; - var y1; - var y2; - y1 = (x4 - x01) / dx + y_top; - y2 = (x4 + 1 - x01) / dx + y_top; - if(x01 < x12 && x31 > x21) { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x12,y1); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x21,y2); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x31,y3); - } else if(x31 < x12 && x01 > x21) { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x21,y2); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x12,y1); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x31,y3); - } else if(x01 < x12 && x31 > x12) { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x12,y1); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x31,y3); - } else if(x31 < x12 && x01 > x12) { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x12,y1); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x12,y1,x31,y3); - } else if(x01 < x21 && x31 > x21) { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x21,y2); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x31,y3); - } else if(x31 < x21 && x01 > x21) { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x21,y2); - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x21,y2,x31,y3); - } else { - kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(scanline,0,x4,e,x01,y0,x31,y3); - } - } - } - } - e = e.next; - } -}; -kha_graphics2_truetype_StbTruetype.stbtt__rasterize_sorted_edges = function(result,e,n,vsubsample,off_x,off_y) { - var active = null; - var y; - var j = 0; - var i; - var scanline; - var scanline2; - var scanline2Index = 0; - var eIndex = 0; - if(result.w > 64) { - var length = result.w * 2 + 1; - var this1 = new Array(length); - scanline = this1; - } else { - var this2 = new Array(129); - scanline = this2; - } - scanline2 = scanline; - scanline2Index = result.w; - y = off_y; - e[eIndex + n].y0 = off_y + result.h + 1; - while(j < result.h) { - var scan_y_top = y + 0.0; - var scan_y_bottom = y + 1.0; - var step_value; - var step_parent; - step_value = active; - step_parent = null; - var _g1 = 0; - var _g = result.w; - while(_g1 < _g) { - var i1 = _g1++; - scanline[i1] = 0; - } - var _g11 = 0; - var _g2 = result.w + 1; - while(_g11 < _g2) { - var i2 = _g11++; - scanline2[scanline2Index + i2] = 0; - } - while(step_value != null) { - var z = step_value; - if(z.ey <= scan_y_top) { - if(step_parent == null) { - active = z.next; - step_value = z.next; - } else { - step_parent.next = z.next; - step_value = z.next; - } - if(z.direction == 0) { - throw new js__$Boot_HaxeError("Error"); - } - z.direction = 0; - } else { - step_parent = step_value; - step_value = step_value.next; - } - } - while(e[eIndex].y0 <= scan_y_bottom) { - if(e[eIndex].y0 != e[eIndex].y1) { - var z1 = kha_graphics2_truetype_StbTruetype.stbtt__new_active(e,eIndex,off_x,scan_y_top); - if(!(z1.ey >= scan_y_top)) { - throw new js__$Boot_HaxeError("Error"); - } - z1.next = active; - active = z1; - } - ++eIndex; - } - if(active != null) { - kha_graphics2_truetype_StbTruetype.stbtt__fill_active_edges_new(scanline,scanline2,scanline2Index + 1,result.w,active,scan_y_top); - } - var sum = 0; - var _g12 = 0; - var _g3 = result.w; - while(_g12 < _g3) { - var i3 = _g12++; - var k; - var m; - sum += scanline2[scanline2Index + i3]; - k = scanline[i3] + sum; - k = Math.abs(k) * 255.0 + 0.5; - m = k | 0; - if(m > 255) { - m = 255; - } - result.pixels.writeU8(result.pixels_offset + j * result.stride + i3,m); - } - step_parent = null; - step_value = active; - while(step_value != null) { - var z2 = step_value; - z2.fx += z2.fdx; - step_parent = step_value; - step_value = step_value.next; - } - ++y; - ++j; - } -}; -kha_graphics2_truetype_StbTruetype.STBTT__COMPARE = function(a,b) { - return a.y0 < b.y0; -}; -kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_ins_sort = function(p,n) { - var i; - var j; - var _g1 = 1; - var _g = n; - while(_g1 < _g) { - var i1 = _g1++; - var t = p[i1]; - var a = t; - j = i1; - while(j > 0) { - var b = p[j - 1]; - var c = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(a,b); - if(!c) { - break; - } - p[j] = p[j - 1]; - --j; - } - if(i1 != j) { - p[j] = t; - } - } -}; -kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort = function(p,pIndex,n) { - while(n > 12) { - var t; - var c01; - var c12; - var c; - var m; - var i; - var j; - m = n >> 1; - c01 = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + m]); - c12 = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex + m],p[pIndex + n - 1]); - if(c01 != c12) { - var z; - c = kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + n - 1]); - if(c == c12) { - z = 0; - } else { - z = n - 1; - } - t = p[pIndex + z]; - p[pIndex + z] = p[pIndex + m]; - p[pIndex + m] = t; - } - t = p[pIndex]; - p[pIndex] = p[pIndex + m]; - p[pIndex + m] = t; - i = 1; - j = n - 1; - while(true) { - while(kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex + i],p[pIndex])) ++i; - while(kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(p[pIndex],p[pIndex + j])) --j; - if(i >= j) { - break; - } - t = p[pIndex + i]; - p[pIndex + i] = p[pIndex + j]; - p[pIndex + j] = t; - ++i; - --j; - } - if(j < n - i) { - kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort(p,pIndex,j); - pIndex += i; - n -= i; - } else { - kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort(p,pIndex + i,n - i); - n = j; - } - } -}; -kha_graphics2_truetype_StbTruetype.stbtt__sort_edges = function(p,n) { - kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort(p,0,n); - kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_ins_sort(p,n); -}; -kha_graphics2_truetype_StbTruetype.stbtt__rasterize = function(result,pts,wcount,windings,scale_x,scale_y,shift_x,shift_y,off_x,off_y,invert) { - var y_scale_inv = invert ? -scale_y : scale_y; - var e; - var n; - var i; - var j; - var k; - var m; - var vsubsample = 1; - var ptsIndex = 0; - n = 0; - var _g1 = 0; - var _g = windings; - while(_g1 < _g) { - var i1 = _g1++; - n += wcount[i1]; - } - var this1 = new Array(n + 1); - e = this1; - if(e == null) { - return; - } else { - var _g11 = 0; - var _g2 = e.length; - while(_g11 < _g2) { - var i2 = _g11++; - e[i2] = new kha_graphics2_truetype_Stbtt_$_$edge(); - } - } - n = 0; - m = 0; - var _g12 = 0; - var _g3 = windings; - while(_g12 < _g3) { - var i3 = _g12++; - var p = pts; - var pIndex = ptsIndex + m; - m += wcount[i3]; - j = wcount[i3] - 1; - var _g31 = 0; - var _g21 = wcount[i3]; - while(_g31 < _g21) { - var k1 = _g31++; - var a = k1; - var b = j; - if(p[pIndex + j].y == p[pIndex + k1].y) { - j = k1; - continue; - } - e[n].invert = false; - if(invert ? p[pIndex + j].y > p[pIndex + k1].y : p[pIndex + j].y < p[pIndex + k1].y) { - e[n].invert = true; - a = j; - b = k1; - } - e[n].x0 = p[pIndex + a].x * scale_x + shift_x; - e[n].y0 = (p[pIndex + a].y * y_scale_inv + shift_y) * vsubsample; - e[n].x1 = p[pIndex + b].x * scale_x + shift_x; - e[n].y1 = (p[pIndex + b].y * y_scale_inv + shift_y) * vsubsample; - ++n; - j = k1; - } - } - kha_graphics2_truetype_StbTruetype.stbtt__sort_edges(e,n); - kha_graphics2_truetype_StbTruetype.stbtt__rasterize_sorted_edges(result,e,n,vsubsample,off_x,off_y); -}; -kha_graphics2_truetype_StbTruetype.stbtt__add_point = function(points,n,x,y) { - if(points == null) { - return; - } - points[n].x = x; - points[n].y = y; -}; -kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve = function(points,num_points,x0,y0,x1,y1,x2,y2,objspace_flatness_squared,n) { - var mx = (x0 + 2 * x1 + x2) / 4; - var my = (y0 + 2 * y1 + y2) / 4; - var dx = (x0 + x2) / 2 - mx; - var dy = (y0 + y2) / 2 - my; - if(n > 16) { - return 1; - } - if(dx * dx + dy * dy > objspace_flatness_squared) { - kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(points,num_points,x0,y0,(x0 + x1) / 2.0,(y0 + y1) / 2.0,mx,my,objspace_flatness_squared,n + 1); - kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(points,num_points,mx,my,(x1 + x2) / 2.0,(y1 + y2) / 2.0,x2,y2,objspace_flatness_squared,n + 1); - } else { - kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points.value,x2,y2); - num_points.value += 1; - } - return 1; -}; -kha_graphics2_truetype_StbTruetype.stbtt_FlattenCurves = function(vertices,num_verts,objspace_flatness,contour_lengths,num_contours) { - var points = null; - var num_points = 0; - var objspace_flatness_squared = objspace_flatness * objspace_flatness; - var i; - var n = 0; - var start = 0; - var pass; - var _g1 = 0; - var _g = num_verts; - while(_g1 < _g) { - var i1 = _g1++; - if(vertices[i1].type == 1) { - ++n; - } - } - num_contours.value = n; - if(n == 0) { - return null; - } - var this1 = new Array(n); - contour_lengths.value = this1; - if(contour_lengths.value == null) { - num_contours.value = 0; - return null; - } - var _g2 = 0; - while(_g2 < 2) { - var pass1 = _g2++; - var x = 0; - var y = 0; - if(pass1 == 1) { - var this2 = new Array(num_points); - points = this2; - if(points == null) { - contour_lengths.value = null; - num_contours.value = 0; - return null; - } else { - var _g21 = 0; - var _g11 = points.length; - while(_g21 < _g11) { - var i2 = _g21++; - points[i2] = new kha_graphics2_truetype_Stbtt_$_$point(); - } - } - } - num_points = 0; - n = -1; - var _g22 = 0; - var _g12 = num_verts; - while(_g22 < _g12) { - var i3 = _g22++; - var _g3 = vertices[i3].type; - switch(_g3) { - case 1: - if(n >= 0) { - contour_lengths.value[n] = num_points - start; - } - ++n; - start = num_points; - x = vertices[i3].x; - y = vertices[i3].y; - kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points++,x,y); - break; - case 2: - x = vertices[i3].x; - y = vertices[i3].y; - kha_graphics2_truetype_StbTruetype.stbtt__add_point(points,num_points++,x,y); - break; - case 3: - var num_points_reference = { value : num_points}; - kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(points,num_points_reference,x,y,vertices[i3].cx,vertices[i3].cy,vertices[i3].x,vertices[i3].y,objspace_flatness_squared,0); - num_points = num_points_reference.value; - x = vertices[i3].x; - y = vertices[i3].y; - break; - } - } - contour_lengths.value[n] = num_points - start; - } - return points; -}; -kha_graphics2_truetype_StbTruetype.stbtt_Rasterize = function(result,flatness_in_pixels,vertices,num_verts,scale_x,scale_y,shift_x,shift_y,x_off,y_off,invert) { - var scale = scale_x > scale_y ? scale_y : scale_x; - var winding_count = 0; - var winding_lengths = null; - var winding_count_reference = { value : winding_count}; - var winding_lengths_reference = new kha_graphics2_truetype_VectorOfIntPointer(); - var windings = kha_graphics2_truetype_StbTruetype.stbtt_FlattenCurves(vertices,num_verts,flatness_in_pixels / scale,winding_lengths_reference,winding_count_reference); - winding_count = winding_count_reference.value; - winding_lengths = winding_lengths_reference.value; - if(windings != null) { - kha_graphics2_truetype_StbTruetype.stbtt__rasterize(result,windings,winding_lengths,winding_count,scale_x,scale_y,shift_x,shift_y,x_off,y_off,invert); - } -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel = function(info,scale_x,scale_y,shift_x,shift_y,glyph,region) { - var ix0; - var iy0; - var ix1; - var iy1; - var gbm = new kha_graphics2_truetype_Stbtt_$_$bitmap(); - var vertices = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,glyph); - var num_verts = vertices.length; - if(scale_x == 0) { - scale_x = scale_y; - } - if(scale_y == 0) { - if(scale_x == 0) { - return null; - } - scale_y = scale_x; - } - var rect = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(info,glyph,scale_x,scale_y,shift_x,shift_y); - ix0 = rect.x0; - iy0 = rect.y0; - ix1 = rect.x1; - iy1 = rect.y1; - gbm.w = ix1 - ix0; - gbm.h = iy1 - iy0; - gbm.pixels = null; - region.width = gbm.w; - region.height = gbm.h; - region.xoff = ix0; - region.yoff = iy0; - if(gbm.w != 0 && gbm.h != 0) { - gbm.pixels = kha_internal_BytesBlob.alloc(gbm.w * gbm.h); - if(gbm.pixels != null) { - gbm.stride = gbm.w; - kha_graphics2_truetype_StbTruetype.stbtt_Rasterize(gbm,0.35,vertices,num_verts,scale_x,scale_y,shift_x,shift_y,ix0,iy0,true); - } - } - return gbm.pixels; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmap = function(info,scale_x,scale_y,glyph,region) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel(info,scale_x,scale_y,0.0,0.0,glyph,region); -}; -kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,shift_x,shift_y,glyph) { - var ix0 = 0; - var iy0 = 0; - var vertices = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(info,glyph); - var num_verts = vertices == null ? 0 : vertices.length; - var gbm = new kha_graphics2_truetype_Stbtt_$_$bitmap(); - var rect = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(info,glyph,scale_x,scale_y,shift_x,shift_y); - ix0 = rect.x0; - iy0 = rect.y0; - gbm.pixels = output; - gbm.pixels_offset = output_offset; - gbm.w = out_w; - gbm.h = out_h; - gbm.stride = out_stride; - if(gbm.w != 0 && gbm.h != 0) { - kha_graphics2_truetype_StbTruetype.stbtt_Rasterize(gbm,0.35,vertices,num_verts,scale_x,scale_y,shift_x,shift_y,ix0,iy0,true); - } -}; -kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmap = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,glyph) { - kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,0.0,0.0,glyph); -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapSubpixel = function(info,scale_x,scale_y,shift_x,shift_y,codepoint,region) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel(info,scale_x,scale_y,shift_x,shift_y,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint),region); -}; -kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmapSubpixel = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,shift_x,shift_y,codepoint) { - kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,shift_x,shift_y,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(info,codepoint)); -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmap = function(info,scale_x,scale_y,codepoint,region) { - return kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapSubpixel(info,scale_x,scale_y,0.0,0.0,codepoint,region); -}; -kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmap = function(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,codepoint) { - kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmapSubpixel(info,output,output_offset,out_w,out_h,out_stride,scale_x,scale_y,0.0,0.0,codepoint); -}; -kha_graphics2_truetype_StbTruetype.stbtt_BakeFontBitmap = function(data,offset,pixel_height,pixels,pw,ph,chars,chardata) { - var scale; - var x; - var y; - var bottom_y; - var f = new kha_graphics2_truetype_Stbtt_$fontinfo(); - if(!kha_graphics2_truetype_StbTruetype.stbtt_InitFont(f,data,offset)) { - return -1; - } - var _g1 = 0; - var _g = pw * ph; - while(_g1 < _g) { - var i = _g1++; - pixels.writeU8(i,0); - } - y = 1; - x = y; - bottom_y = 1; - scale = kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight(f,pixel_height); - var i1 = 0; - var _g2 = 0; - while(_g2 < chars.length) { - var index = chars[_g2]; - ++_g2; - var advance; - var lsb; - var x0; - var y0; - var x1; - var y1; - var gw; - var gh; - var g = kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(f,index); - var metrics = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics(f,g); - advance = metrics.advanceWidth; - lsb = metrics.leftSideBearing; - var rect = kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBox(f,g,scale,scale); - x0 = rect.x0; - y0 = rect.y0; - x1 = rect.x1; - y1 = rect.y1; - gw = x1 - x0; - gh = y1 - y0; - if(x + gw + 1 >= pw) { - y = bottom_y; - x = 1; - } - if(y + gh + 1 >= ph) { - return -i1; - } - if(x + gw >= pw) { - throw new js__$Boot_HaxeError("Error"); - } - if(y + gh >= ph) { - throw new js__$Boot_HaxeError("Error"); - } - kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmap(f,pixels,x + y * pw,gw,gh,pw,scale,scale,g); - chardata[i1].x0 = x; - chardata[i1].y0 = y; - chardata[i1].x1 = x + gw; - chardata[i1].y1 = y + gh; - chardata[i1].xadvance = scale * advance; - chardata[i1].xoff = x0; - chardata[i1].yoff = y0; - x = x + gw + 1; - if(y + gh + 1 > bottom_y) { - bottom_y = y + gh + 1; - } - ++i1; - } - return bottom_y; -}; -kha_graphics2_truetype_StbTruetype.stbtt_GetBakedQuad = function(chardata,pw,ph,char_index,xpos,ypos,q,opengl_fillrule) { - var d3d_bias = opengl_fillrule ? 0 : -0.5; - var ipw = 1.0 / pw; - var iph = 1.0 / ph; - var b = chardata[char_index]; - var round_x = Math.floor(xpos.value + b.xoff + 0.5); - var round_y = Math.floor(ypos.value + b.yoff + 0.5); - q.x0 = round_x + d3d_bias; - q.y0 = round_y + d3d_bias; - q.x1 = round_x + b.x1 - b.x0 + d3d_bias; - q.y1 = round_y + b.y1 - b.y0 + d3d_bias; - q.s0 = b.x0 * ipw; - q.t0 = b.y0 * iph; - q.s1 = b.x1 * ipw; - q.t1 = b.y1 * iph; - xpos.value += b.xadvance; -}; -var kha_graphics4_BlendingFactor = $hxClasses["kha.graphics4.BlendingFactor"] = { __ename__ : true, __constructs__ : ["Undefined","BlendOne","BlendZero","SourceAlpha","DestinationAlpha","InverseSourceAlpha","InverseDestinationAlpha","SourceColor","DestinationColor","InverseSourceColor","InverseDestinationColor"] }; -kha_graphics4_BlendingFactor.Undefined = ["Undefined",0]; -kha_graphics4_BlendingFactor.Undefined.toString = $estr; -kha_graphics4_BlendingFactor.Undefined.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.BlendOne = ["BlendOne",1]; -kha_graphics4_BlendingFactor.BlendOne.toString = $estr; -kha_graphics4_BlendingFactor.BlendOne.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.BlendZero = ["BlendZero",2]; -kha_graphics4_BlendingFactor.BlendZero.toString = $estr; -kha_graphics4_BlendingFactor.BlendZero.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.SourceAlpha = ["SourceAlpha",3]; -kha_graphics4_BlendingFactor.SourceAlpha.toString = $estr; -kha_graphics4_BlendingFactor.SourceAlpha.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.DestinationAlpha = ["DestinationAlpha",4]; -kha_graphics4_BlendingFactor.DestinationAlpha.toString = $estr; -kha_graphics4_BlendingFactor.DestinationAlpha.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.InverseSourceAlpha = ["InverseSourceAlpha",5]; -kha_graphics4_BlendingFactor.InverseSourceAlpha.toString = $estr; -kha_graphics4_BlendingFactor.InverseSourceAlpha.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.InverseDestinationAlpha = ["InverseDestinationAlpha",6]; -kha_graphics4_BlendingFactor.InverseDestinationAlpha.toString = $estr; -kha_graphics4_BlendingFactor.InverseDestinationAlpha.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.SourceColor = ["SourceColor",7]; -kha_graphics4_BlendingFactor.SourceColor.toString = $estr; -kha_graphics4_BlendingFactor.SourceColor.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.DestinationColor = ["DestinationColor",8]; -kha_graphics4_BlendingFactor.DestinationColor.toString = $estr; -kha_graphics4_BlendingFactor.DestinationColor.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.InverseSourceColor = ["InverseSourceColor",9]; -kha_graphics4_BlendingFactor.InverseSourceColor.toString = $estr; -kha_graphics4_BlendingFactor.InverseSourceColor.__enum__ = kha_graphics4_BlendingFactor; -kha_graphics4_BlendingFactor.InverseDestinationColor = ["InverseDestinationColor",10]; -kha_graphics4_BlendingFactor.InverseDestinationColor.toString = $estr; -kha_graphics4_BlendingFactor.InverseDestinationColor.__enum__ = kha_graphics4_BlendingFactor; -var kha_graphics4_BlendingOperation = $hxClasses["kha.graphics4.BlendingOperation"] = { __ename__ : true, __constructs__ : ["Add","Subtract","ReverseSubtract","Min","Max"] }; -kha_graphics4_BlendingOperation.Add = ["Add",0]; -kha_graphics4_BlendingOperation.Add.toString = $estr; -kha_graphics4_BlendingOperation.Add.__enum__ = kha_graphics4_BlendingOperation; -kha_graphics4_BlendingOperation.Subtract = ["Subtract",1]; -kha_graphics4_BlendingOperation.Subtract.toString = $estr; -kha_graphics4_BlendingOperation.Subtract.__enum__ = kha_graphics4_BlendingOperation; -kha_graphics4_BlendingOperation.ReverseSubtract = ["ReverseSubtract",2]; -kha_graphics4_BlendingOperation.ReverseSubtract.toString = $estr; -kha_graphics4_BlendingOperation.ReverseSubtract.__enum__ = kha_graphics4_BlendingOperation; -kha_graphics4_BlendingOperation.Min = ["Min",3]; -kha_graphics4_BlendingOperation.Min.toString = $estr; -kha_graphics4_BlendingOperation.Min.__enum__ = kha_graphics4_BlendingOperation; -kha_graphics4_BlendingOperation.Max = ["Max",4]; -kha_graphics4_BlendingOperation.Max.toString = $estr; -kha_graphics4_BlendingOperation.Max.__enum__ = kha_graphics4_BlendingOperation; -var kha_graphics4_CompareMode = $hxClasses["kha.graphics4.CompareMode"] = { __ename__ : true, __constructs__ : ["Always","Never","Equal","NotEqual","Less","LessEqual","Greater","GreaterEqual"] }; -kha_graphics4_CompareMode.Always = ["Always",0]; -kha_graphics4_CompareMode.Always.toString = $estr; -kha_graphics4_CompareMode.Always.__enum__ = kha_graphics4_CompareMode; -kha_graphics4_CompareMode.Never = ["Never",1]; -kha_graphics4_CompareMode.Never.toString = $estr; -kha_graphics4_CompareMode.Never.__enum__ = kha_graphics4_CompareMode; -kha_graphics4_CompareMode.Equal = ["Equal",2]; -kha_graphics4_CompareMode.Equal.toString = $estr; -kha_graphics4_CompareMode.Equal.__enum__ = kha_graphics4_CompareMode; -kha_graphics4_CompareMode.NotEqual = ["NotEqual",3]; -kha_graphics4_CompareMode.NotEqual.toString = $estr; -kha_graphics4_CompareMode.NotEqual.__enum__ = kha_graphics4_CompareMode; -kha_graphics4_CompareMode.Less = ["Less",4]; -kha_graphics4_CompareMode.Less.toString = $estr; -kha_graphics4_CompareMode.Less.__enum__ = kha_graphics4_CompareMode; -kha_graphics4_CompareMode.LessEqual = ["LessEqual",5]; -kha_graphics4_CompareMode.LessEqual.toString = $estr; -kha_graphics4_CompareMode.LessEqual.__enum__ = kha_graphics4_CompareMode; -kha_graphics4_CompareMode.Greater = ["Greater",6]; -kha_graphics4_CompareMode.Greater.toString = $estr; -kha_graphics4_CompareMode.Greater.__enum__ = kha_graphics4_CompareMode; -kha_graphics4_CompareMode.GreaterEqual = ["GreaterEqual",7]; -kha_graphics4_CompareMode.GreaterEqual.toString = $estr; -kha_graphics4_CompareMode.GreaterEqual.__enum__ = kha_graphics4_CompareMode; -var kha_graphics4_ConstantLocation = function() { }; -$hxClasses["kha.graphics4.ConstantLocation"] = kha_graphics4_ConstantLocation; -kha_graphics4_ConstantLocation.__name__ = true; -var kha_graphics4_CubeMap = function(size,format,renderTarget,depthStencilFormat) { - this.isDepthAttachment = false; - this.depthTexture = null; - this.texture = null; - this.frameBuffer = null; - this.myWidth = size; - this.myHeight = size; - this.format = format; - this.renderTarget = renderTarget; - this.depthStencilFormat = depthStencilFormat; - if(renderTarget) { - this.createTexture(); - } -}; -$hxClasses["kha.graphics4.CubeMap"] = kha_graphics4_CubeMap; -kha_graphics4_CubeMap.__name__ = true; -kha_graphics4_CubeMap.__interfaces__ = [kha_Resource,kha_Canvas]; -kha_graphics4_CubeMap.createRenderTarget = function(size,format,depthStencil,contextId) { - if(contextId == null) { - contextId = 0; - } - if(format == null) { - format = kha_graphics4_TextureFormat.RGBA32; - } - if(depthStencil == null) { - depthStencil = 0; - } - return new kha_graphics4_CubeMap(size,format,true,depthStencil); -}; -kha_graphics4_CubeMap.prototype = { - myWidth: null - ,myHeight: null - ,format: null - ,renderTarget: null - ,depthStencilFormat: null - ,graphics4: null - ,frameBuffer: null - ,texture: null - ,depthTexture: null - ,isDepthAttachment: null - ,createTexture: function() { - if(kha_SystemImpl.gl == null) { - return; - } - this.texture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(34067,this.texture); - kha_SystemImpl.gl.texParameteri(34067,10240,9729); - kha_SystemImpl.gl.texParameteri(34067,10241,9729); - kha_SystemImpl.gl.texParameteri(34067,10242,33071); - kha_SystemImpl.gl.texParameteri(34067,10243,33071); - if(this.renderTarget) { - this.frameBuffer = kha_SystemImpl.gl.createFramebuffer(); - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - var _g = this.format; - switch(_g[1]) { - case 0: - var _g1 = 0; - while(_g1 < 6) { - var i = _g1++; - kha_SystemImpl.gl.texImage2D(34069 + i,0,6408,this.myWidth,this.myHeight,0,6408,5121,null); - } - break; - case 2: - var _g2 = 0; - while(_g2 < 6) { - var i1 = _g2++; - kha_SystemImpl.gl.texImage2D(34069 + i1,0,kha_SystemImpl.gl2 ? 34836 : 6408,this.myWidth,this.myHeight,0,6408,5126,null); - } - break; - case 3: - var _g3 = 0; - while(_g3 < 6) { - var i2 = _g3++; - kha_SystemImpl.gl.texImage2D(34069 + i2,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.myWidth,this.myHeight,0,6402,5123,null); - } - break; - case 4: - var _g4 = 0; - while(_g4 < 6) { - var i3 = _g4++; - kha_SystemImpl.gl.texImage2D(34069 + i3,0,kha_SystemImpl.gl2 ? 34842 : 6408,this.myWidth,this.myHeight,0,6408,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null); - } - break; - case 5: - var _g5 = 0; - while(_g5 < 6) { - var i4 = _g5++; - kha_SystemImpl.gl.texImage2D(34069 + i4,0,kha_SystemImpl.gl2 ? 33326 : 6406,this.myWidth,this.myHeight,0,6406,5126,null); - } - break; - case 6: - var _g6 = 0; - while(_g6 < 6) { - var i5 = _g6++; - kha_SystemImpl.gl.texImage2D(34069 + i5,0,kha_SystemImpl.gl2 ? 33325 : 6406,this.myWidth,this.myHeight,0,6406,kha_SystemImpl.halfFloat.HALF_FLOAT_OES,null); - } - break; - default: - var _g7 = 0; - while(_g7 < 6) { - var i6 = _g7++; - kha_SystemImpl.gl.texImage2D(34069 + i6,0,6408,this.myWidth,this.myHeight,0,6408,5121,null); - } - } - if(this.format == kha_graphics4_TextureFormat.DEPTH16) { - kha_SystemImpl.gl.texParameteri(34067,10240,9728); - kha_SystemImpl.gl.texParameteri(34067,10241,9728); - this.isDepthAttachment = true; - if(navigator.appVersion.indexOf("Win") == -1) { - var colortex = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(34067,colortex); - var _g11 = 0; - while(_g11 < 6) { - var i7 = _g11++; - kha_SystemImpl.gl.texImage2D(34069 + i7,0,6408,this.myWidth,this.myHeight,0,6408,5121,null); - kha_SystemImpl.gl.framebufferTexture2D(36160,36064,34069 + i7,colortex,0); - } - kha_SystemImpl.gl.bindTexture(34067,this.texture); - } - } - this.initDepthStencilBuffer(this.depthStencilFormat); - kha_SystemImpl.gl.bindFramebuffer(36160,null); - } - kha_SystemImpl.gl.bindTexture(34067,null); - } - ,initDepthStencilBuffer: function(depthStencilFormat) { - switch(depthStencilFormat) { - case 0: - break; - case 1:case 5: - this.depthTexture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(34067,this.depthTexture); - if(depthStencilFormat == 1) { - kha_SystemImpl.gl.texImage2D(34067,0,kha_SystemImpl.gl2 ? 33190 : 6402,this.myWidth,this.myHeight,0,6402,5125,null); - } else { - kha_SystemImpl.gl.texImage2D(34067,0,kha_SystemImpl.gl2 ? 33189 : 6402,this.myWidth,this.myHeight,0,6402,5123,null); - } - kha_SystemImpl.gl.texParameteri(34067,10240,9728); - kha_SystemImpl.gl.texParameteri(34067,10241,9728); - kha_SystemImpl.gl.texParameteri(34067,10242,33071); - kha_SystemImpl.gl.texParameteri(34067,10243,33071); - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - kha_SystemImpl.gl.framebufferTexture2D(36160,36096,34067,this.depthTexture,0); - break; - case 2:case 3:case 4: - this.depthTexture = kha_SystemImpl.gl.createTexture(); - kha_SystemImpl.gl.bindTexture(34067,this.depthTexture); - kha_SystemImpl.gl.texImage2D(34067,0,kha_SystemImpl.gl2 ? 35056 : 34041,this.myWidth,this.myHeight,0,34041,kha_SystemImpl.depthTexture.UNSIGNED_INT_24_8_WEBGL,null); - kha_SystemImpl.gl.texParameteri(34067,10240,9728); - kha_SystemImpl.gl.texParameteri(34067,10241,9728); - kha_SystemImpl.gl.texParameteri(34067,10242,33071); - kha_SystemImpl.gl.texParameteri(34067,10243,33071); - kha_SystemImpl.gl.bindFramebuffer(36160,this.frameBuffer); - kha_SystemImpl.gl.framebufferTexture2D(36160,33306,34067,this.depthTexture,0); - break; - } - } - ,set: function(stage) { - kha_SystemImpl.gl.activeTexture(33984 + stage); - kha_SystemImpl.gl.bindTexture(34067,this.texture); - } - ,setDepth: function(stage) { - kha_SystemImpl.gl.activeTexture(33984 + stage); - kha_SystemImpl.gl.bindTexture(34067,this.depthTexture); - } - ,unload: function() { - } - ,lock: function(level) { - if(level == null) { - level = 0; - } - return null; - } - ,unlock: function() { - } - ,width: null - ,get_width: function() { - return this.myWidth; - } - ,height: null - ,get_height: function() { - return this.myHeight; - } - ,g1: null - ,get_g1: function() { - return null; - } - ,g2: null - ,get_g2: function() { - return null; - } - ,g4: null - ,get_g4: function() { - if(this.graphics4 == null) { - this.graphics4 = new kha_js_graphics4_Graphics(this); - } - return this.graphics4; - } - ,__class__: kha_graphics4_CubeMap -}; -var kha_graphics4_CullMode = $hxClasses["kha.graphics4.CullMode"] = { __ename__ : true, __constructs__ : ["Clockwise","CounterClockwise","None"] }; -kha_graphics4_CullMode.Clockwise = ["Clockwise",0]; -kha_graphics4_CullMode.Clockwise.toString = $estr; -kha_graphics4_CullMode.Clockwise.__enum__ = kha_graphics4_CullMode; -kha_graphics4_CullMode.CounterClockwise = ["CounterClockwise",1]; -kha_graphics4_CullMode.CounterClockwise.toString = $estr; -kha_graphics4_CullMode.CounterClockwise.__enum__ = kha_graphics4_CullMode; -kha_graphics4_CullMode.None = ["None",2]; -kha_graphics4_CullMode.None.toString = $estr; -kha_graphics4_CullMode.None.__enum__ = kha_graphics4_CullMode; -var kha_graphics4_FragmentShader = function(sources,files) { - this.sources = []; - var _g = 0; - while(_g < sources.length) { - var source = sources[_g]; - ++_g; - this.sources.push(source.toString()); - } - this.type = 35632; - this.shader = null; - this.files = files; -}; -$hxClasses["kha.graphics4.FragmentShader"] = kha_graphics4_FragmentShader; -kha_graphics4_FragmentShader.__name__ = true; -kha_graphics4_FragmentShader.fromSource = function(source) { - var shader = new kha_graphics4_FragmentShader([],["runtime-string"]); - shader.sources.push(source); - return shader; -}; -kha_graphics4_FragmentShader.prototype = { - sources: null - ,type: null - ,shader: null - ,files: null - ,'delete': function() { - kha_SystemImpl.gl.deleteShader(this.shader); - this.shader = null; - this.sources = null; - } - ,__class__: kha_graphics4_FragmentShader -}; -var kha_graphics4_GeometryShader = function(source) { -}; -$hxClasses["kha.graphics4.GeometryShader"] = kha_graphics4_GeometryShader; -kha_graphics4_GeometryShader.__name__ = true; -kha_graphics4_GeometryShader.prototype = { - 'delete': function() { - } - ,__class__: kha_graphics4_GeometryShader -}; -var kha_graphics4_Graphics = function() { }; -$hxClasses["kha.graphics4.Graphics"] = kha_graphics4_Graphics; -kha_graphics4_Graphics.__name__ = true; -kha_graphics4_Graphics.prototype = { - begin: null - ,beginFace: null - ,beginEye: null - ,end: null - ,vsynced: null - ,refreshRate: null - ,clear: null - ,viewport: null - ,scissor: null - ,disableScissor: null - ,setVertexBuffer: null - ,setVertexBuffers: null - ,setIndexBuffer: null - ,setTexture: null - ,setTextureDepth: null - ,setVideoTexture: null - ,setImageTexture: null - ,setTextureParameters: null - ,setTexture3DParameters: null - ,setCubeMap: null - ,setCubeMapDepth: null - ,renderTargetsInvertedY: null - ,instancedRenderingAvailable: null - ,setPipeline: null - ,setBool: null - ,setInt: null - ,setFloat: null - ,setFloat2: null - ,setFloat3: null - ,setFloat4: null - ,setFloats: null - ,setVector2: null - ,setVector3: null - ,setVector4: null - ,setMatrix: null - ,setMatrix3: null - ,drawIndexedVertices: null - ,drawIndexedVerticesInstanced: null - ,flush: null - ,__class__: kha_graphics4_Graphics -}; -var kha_graphics4_ImageShaderPainter = function(g4) { - this.destinationBlend = kha_graphics4_BlendingFactor.Undefined; - this.sourceBlend = kha_graphics4_BlendingFactor.Undefined; - this.myPipeline = null; - this.bilinearMipmaps = false; - this.bilinear = false; - this.g = g4; - this.bufferIndex = 0; - kha_graphics4_ImageShaderPainter.initShaders(); - this.initBuffers(); - this.projectionLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"); - this.textureLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getTextureUnit("tex"); -}; -$hxClasses["kha.graphics4.ImageShaderPainter"] = kha_graphics4_ImageShaderPainter; -kha_graphics4_ImageShaderPainter.__name__ = true; -kha_graphics4_ImageShaderPainter.initShaders = function() { - if(kha_graphics4_ImageShaderPainter.shaderPipeline != null) { - return; - } - kha_graphics4_ImageShaderPainter.shaderPipeline = new kha_graphics4_PipelineState(); - kha_graphics4_ImageShaderPainter.shaderPipeline.fragmentShader = kha_Shaders.painter_image_frag; - kha_graphics4_ImageShaderPainter.shaderPipeline.vertexShader = kha_Shaders.painter_image_vert; - kha_graphics4_ImageShaderPainter.structure = new kha_graphics4_VertexStructure(); - kha_graphics4_ImageShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3); - kha_graphics4_ImageShaderPainter.structure.add("texPosition",kha_graphics4_VertexData.Float2); - kha_graphics4_ImageShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4); - kha_graphics4_ImageShaderPainter.shaderPipeline.inputLayout = [kha_graphics4_ImageShaderPainter.structure]; - kha_graphics4_ImageShaderPainter.shaderPipeline.blendSource = kha_graphics4_BlendingFactor.BlendOne; - kha_graphics4_ImageShaderPainter.shaderPipeline.blendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha; - kha_graphics4_ImageShaderPainter.shaderPipeline.alphaBlendSource = kha_graphics4_BlendingFactor.SourceAlpha; - kha_graphics4_ImageShaderPainter.shaderPipeline.alphaBlendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha; - kha_graphics4_ImageShaderPainter.shaderPipeline.compile(); -}; -kha_graphics4_ImageShaderPainter.prototype = { - projectionMatrix: null - ,projectionLocation: null - ,textureLocation: null - ,bufferIndex: null - ,rectVertexBuffer: null - ,rectVertices: null - ,indexBuffer: null - ,lastTexture: null - ,bilinear: null - ,bilinearMipmaps: null - ,g: null - ,myPipeline: null - ,sourceBlend: null - ,destinationBlend: null - ,get_pipeline: function() { - return this.myPipeline; - } - ,set_pipeline: function(pipe) { - if(pipe == null) { - this.projectionLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"); - this.textureLocation = kha_graphics4_ImageShaderPainter.shaderPipeline.getTextureUnit("tex"); - } else { - this.projectionLocation = pipe.getConstantLocation("projectionMatrix"); - this.textureLocation = pipe.getTextureUnit("tex"); - } - return this.myPipeline = pipe; - } - ,setProjection: function(projectionMatrix) { - this.projectionMatrix = projectionMatrix; - } - ,initBuffers: function() { - this.rectVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_ImageShaderPainter.bufferSize * 4,kha_graphics4_ImageShaderPainter.structure,kha_graphics4_Usage.DynamicUsage); - this.rectVertices = this.rectVertexBuffer.lock(); - this.indexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_ImageShaderPainter.bufferSize * 3 * 2,kha_graphics4_Usage.StaticUsage); - var indices = this.indexBuffer.lock(); - var _g1 = 0; - var _g = kha_graphics4_ImageShaderPainter.bufferSize; - while(_g1 < _g) { - var i = _g1++; - indices[i * 3 * 2] = i * 4; - indices[i * 3 * 2 + 1] = i * 4 + 1; - indices[i * 3 * 2 + 2] = i * 4 + 2; - indices[i * 3 * 2 + 3] = i * 4; - indices[i * 3 * 2 + 4] = i * 4 + 2; - indices[i * 3 * 2 + 5] = i * 4 + 3; - } - this.indexBuffer.unlock(); - } - ,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { - var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex] = bottomleftx; - this.rectVertices[baseIndex + 1] = bottomlefty; - this.rectVertices[baseIndex + 2] = -5.0; - this.rectVertices[baseIndex + 9] = topleftx; - this.rectVertices[baseIndex + 10] = toplefty; - this.rectVertices[baseIndex + 11] = -5.0; - this.rectVertices[baseIndex + 18] = toprightx; - this.rectVertices[baseIndex + 19] = toprighty; - this.rectVertices[baseIndex + 20] = -5.0; - this.rectVertices[baseIndex + 27] = bottomrightx; - this.rectVertices[baseIndex + 28] = bottomrighty; - this.rectVertices[baseIndex + 29] = -5.0; - } - ,setRectTexCoords: function(left,top,right,bottom) { - var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex + 3] = left; - this.rectVertices[baseIndex + 4] = bottom; - this.rectVertices[baseIndex + 12] = left; - this.rectVertices[baseIndex + 13] = top; - this.rectVertices[baseIndex + 21] = right; - this.rectVertices[baseIndex + 22] = top; - this.rectVertices[baseIndex + 30] = right; - this.rectVertices[baseIndex + 31] = bottom; - } - ,setRectColor: function(r,g,b,a) { - var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex + 5] = r; - this.rectVertices[baseIndex + 6] = g; - this.rectVertices[baseIndex + 7] = b; - this.rectVertices[baseIndex + 8] = a; - this.rectVertices[baseIndex + 14] = r; - this.rectVertices[baseIndex + 15] = g; - this.rectVertices[baseIndex + 16] = b; - this.rectVertices[baseIndex + 17] = a; - this.rectVertices[baseIndex + 23] = r; - this.rectVertices[baseIndex + 24] = g; - this.rectVertices[baseIndex + 25] = b; - this.rectVertices[baseIndex + 26] = a; - this.rectVertices[baseIndex + 32] = r; - this.rectVertices[baseIndex + 33] = g; - this.rectVertices[baseIndex + 34] = b; - this.rectVertices[baseIndex + 35] = a; - } - ,drawBuffer: function() { - this.rectVertexBuffer.unlock(); - this.g.setVertexBuffer(this.rectVertexBuffer); - this.g.setIndexBuffer(this.indexBuffer); - this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_ImageShaderPainter.shaderPipeline : this.get_pipeline()); - this.g.setTexture(this.textureLocation,this.lastTexture); - this.g.setTextureParameters(this.textureLocation,kha_graphics4_TextureAddressing.Clamp,kha_graphics4_TextureAddressing.Clamp,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,this.bilinearMipmaps ? kha_graphics4_MipMapFilter.LinearMipFilter : kha_graphics4_MipMapFilter.NoMipFilter); - this.g.setMatrix(this.projectionLocation,this.projectionMatrix); - this.g.drawIndexedVertices(0,this.bufferIndex * 2 * 3); - this.g.setTexture(this.textureLocation,null); - this.bufferIndex = 0; - this.rectVertices = this.rectVertexBuffer.lock(); - } - ,setBilinearFilter: function(bilinear) { - this.end(); - this.bilinear = bilinear; - } - ,setBilinearMipmapFilter: function(bilinear) { - this.end(); - this.bilinearMipmaps = bilinear; - } - ,drawImage: function(img,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty,opacity,color) { - var tex = img; - if(this.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || this.lastTexture != null && tex != this.lastTexture) { - this.drawBuffer(); - } - var r = ((color & 16711680) >>> 16) * 0.00392156862745098; - var g = ((color & 65280) >>> 8) * 0.00392156862745098; - var b = (color & 255) * 0.00392156862745098; - var a = (color >>> 24) * 0.00392156862745098 * opacity; - var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex + 5] = r; - this.rectVertices[baseIndex + 6] = g; - this.rectVertices[baseIndex + 7] = b; - this.rectVertices[baseIndex + 8] = a; - this.rectVertices[baseIndex + 14] = r; - this.rectVertices[baseIndex + 15] = g; - this.rectVertices[baseIndex + 16] = b; - this.rectVertices[baseIndex + 17] = a; - this.rectVertices[baseIndex + 23] = r; - this.rectVertices[baseIndex + 24] = g; - this.rectVertices[baseIndex + 25] = b; - this.rectVertices[baseIndex + 26] = a; - this.rectVertices[baseIndex + 32] = r; - this.rectVertices[baseIndex + 33] = g; - this.rectVertices[baseIndex + 34] = b; - this.rectVertices[baseIndex + 35] = a; - var right = tex.get_width() / tex.get_realWidth(); - var bottom = tex.get_height() / tex.get_realHeight(); - var baseIndex1 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex1 + 3] = 0; - this.rectVertices[baseIndex1 + 4] = bottom; - this.rectVertices[baseIndex1 + 12] = 0; - this.rectVertices[baseIndex1 + 13] = 0; - this.rectVertices[baseIndex1 + 21] = right; - this.rectVertices[baseIndex1 + 22] = 0; - this.rectVertices[baseIndex1 + 30] = right; - this.rectVertices[baseIndex1 + 31] = bottom; - var baseIndex2 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex2] = bottomleftx; - this.rectVertices[baseIndex2 + 1] = bottomlefty; - this.rectVertices[baseIndex2 + 2] = -5.0; - this.rectVertices[baseIndex2 + 9] = topleftx; - this.rectVertices[baseIndex2 + 10] = toplefty; - this.rectVertices[baseIndex2 + 11] = -5.0; - this.rectVertices[baseIndex2 + 18] = toprightx; - this.rectVertices[baseIndex2 + 19] = toprighty; - this.rectVertices[baseIndex2 + 20] = -5.0; - this.rectVertices[baseIndex2 + 27] = bottomrightx; - this.rectVertices[baseIndex2 + 28] = bottomrighty; - this.rectVertices[baseIndex2 + 29] = -5.0; - ++this.bufferIndex; - this.lastTexture = tex; - } - ,drawImage2: function(img,sx,sy,sw,sh,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty,opacity,color) { - var tex = img; - if(this.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || this.lastTexture != null && tex != this.lastTexture) { - this.drawBuffer(); - } - var left = sx / tex.get_realWidth(); - var top = sy / tex.get_realHeight(); - var right = (sx + sw) / tex.get_realWidth(); - var bottom = (sy + sh) / tex.get_realHeight(); - var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex + 3] = left; - this.rectVertices[baseIndex + 4] = bottom; - this.rectVertices[baseIndex + 12] = left; - this.rectVertices[baseIndex + 13] = top; - this.rectVertices[baseIndex + 21] = right; - this.rectVertices[baseIndex + 22] = top; - this.rectVertices[baseIndex + 30] = right; - this.rectVertices[baseIndex + 31] = bottom; - var r = ((color & 16711680) >>> 16) * 0.00392156862745098; - var g = ((color & 65280) >>> 8) * 0.00392156862745098; - var b = (color & 255) * 0.00392156862745098; - var a = (color >>> 24) * 0.00392156862745098 * opacity; - var baseIndex1 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex1 + 5] = r; - this.rectVertices[baseIndex1 + 6] = g; - this.rectVertices[baseIndex1 + 7] = b; - this.rectVertices[baseIndex1 + 8] = a; - this.rectVertices[baseIndex1 + 14] = r; - this.rectVertices[baseIndex1 + 15] = g; - this.rectVertices[baseIndex1 + 16] = b; - this.rectVertices[baseIndex1 + 17] = a; - this.rectVertices[baseIndex1 + 23] = r; - this.rectVertices[baseIndex1 + 24] = g; - this.rectVertices[baseIndex1 + 25] = b; - this.rectVertices[baseIndex1 + 26] = a; - this.rectVertices[baseIndex1 + 32] = r; - this.rectVertices[baseIndex1 + 33] = g; - this.rectVertices[baseIndex1 + 34] = b; - this.rectVertices[baseIndex1 + 35] = a; - var baseIndex2 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex2] = bottomleftx; - this.rectVertices[baseIndex2 + 1] = bottomlefty; - this.rectVertices[baseIndex2 + 2] = -5.0; - this.rectVertices[baseIndex2 + 9] = topleftx; - this.rectVertices[baseIndex2 + 10] = toplefty; - this.rectVertices[baseIndex2 + 11] = -5.0; - this.rectVertices[baseIndex2 + 18] = toprightx; - this.rectVertices[baseIndex2 + 19] = toprighty; - this.rectVertices[baseIndex2 + 20] = -5.0; - this.rectVertices[baseIndex2 + 27] = bottomrightx; - this.rectVertices[baseIndex2 + 28] = bottomrighty; - this.rectVertices[baseIndex2 + 29] = -5.0; - ++this.bufferIndex; - this.lastTexture = tex; - } - ,drawImageScale: function(img,sx,sy,sw,sh,left,top,right,bottom,opacity,color) { - var tex = img; - if(this.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || this.lastTexture != null && tex != this.lastTexture) { - this.drawBuffer(); - } - var left1 = sx / tex.get_realWidth(); - var top1 = sy / tex.get_realHeight(); - var right1 = (sx + sw) / tex.get_realWidth(); - var bottom1 = (sy + sh) / tex.get_realHeight(); - var baseIndex = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex + 3] = left1; - this.rectVertices[baseIndex + 4] = bottom1; - this.rectVertices[baseIndex + 12] = left1; - this.rectVertices[baseIndex + 13] = top1; - this.rectVertices[baseIndex + 21] = right1; - this.rectVertices[baseIndex + 22] = top1; - this.rectVertices[baseIndex + 30] = right1; - this.rectVertices[baseIndex + 31] = bottom1; - var r = ((color & 16711680) >>> 16) * 0.00392156862745098; - var g = ((color & 65280) >>> 8) * 0.00392156862745098; - var b = (color & 255) * 0.00392156862745098; - var baseIndex1 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex1 + 5] = r; - this.rectVertices[baseIndex1 + 6] = g; - this.rectVertices[baseIndex1 + 7] = b; - this.rectVertices[baseIndex1 + 8] = opacity; - this.rectVertices[baseIndex1 + 14] = r; - this.rectVertices[baseIndex1 + 15] = g; - this.rectVertices[baseIndex1 + 16] = b; - this.rectVertices[baseIndex1 + 17] = opacity; - this.rectVertices[baseIndex1 + 23] = r; - this.rectVertices[baseIndex1 + 24] = g; - this.rectVertices[baseIndex1 + 25] = b; - this.rectVertices[baseIndex1 + 26] = opacity; - this.rectVertices[baseIndex1 + 32] = r; - this.rectVertices[baseIndex1 + 33] = g; - this.rectVertices[baseIndex1 + 34] = b; - this.rectVertices[baseIndex1 + 35] = opacity; - var baseIndex2 = this.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - this.rectVertices[baseIndex2] = left; - this.rectVertices[baseIndex2 + 1] = bottom; - this.rectVertices[baseIndex2 + 2] = -5.0; - this.rectVertices[baseIndex2 + 9] = left; - this.rectVertices[baseIndex2 + 10] = top; - this.rectVertices[baseIndex2 + 11] = -5.0; - this.rectVertices[baseIndex2 + 18] = right; - this.rectVertices[baseIndex2 + 19] = top; - this.rectVertices[baseIndex2 + 20] = -5.0; - this.rectVertices[baseIndex2 + 27] = right; - this.rectVertices[baseIndex2 + 28] = bottom; - this.rectVertices[baseIndex2 + 29] = -5.0; - ++this.bufferIndex; - this.lastTexture = tex; - } - ,end: function() { - if(this.bufferIndex > 0) { - this.drawBuffer(); - } - this.lastTexture = null; - } - ,__class__: kha_graphics4_ImageShaderPainter -}; -var kha_graphics4_ColoredShaderPainter = function(g4) { - this.destinationBlend = kha_graphics4_BlendingFactor.Undefined; - this.sourceBlend = kha_graphics4_BlendingFactor.Undefined; - this.myPipeline = null; - this.g = g4; - this.bufferIndex = 0; - this.triangleBufferIndex = 0; - kha_graphics4_ColoredShaderPainter.initShaders(); - this.initBuffers(); - this.projectionLocation = kha_graphics4_ColoredShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"); -}; -$hxClasses["kha.graphics4.ColoredShaderPainter"] = kha_graphics4_ColoredShaderPainter; -kha_graphics4_ColoredShaderPainter.__name__ = true; -kha_graphics4_ColoredShaderPainter.initShaders = function() { - if(kha_graphics4_ColoredShaderPainter.shaderPipeline != null) { - return; - } - kha_graphics4_ColoredShaderPainter.shaderPipeline = new kha_graphics4_PipelineState(); - kha_graphics4_ColoredShaderPainter.shaderPipeline.fragmentShader = kha_Shaders.painter_colored_frag; - kha_graphics4_ColoredShaderPainter.shaderPipeline.vertexShader = kha_Shaders.painter_colored_vert; - kha_graphics4_ColoredShaderPainter.structure = new kha_graphics4_VertexStructure(); - kha_graphics4_ColoredShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3); - kha_graphics4_ColoredShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4); - kha_graphics4_ColoredShaderPainter.shaderPipeline.inputLayout = [kha_graphics4_ColoredShaderPainter.structure]; - kha_graphics4_ColoredShaderPainter.shaderPipeline.blendSource = kha_graphics4_BlendingFactor.SourceAlpha; - kha_graphics4_ColoredShaderPainter.shaderPipeline.blendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha; - kha_graphics4_ColoredShaderPainter.shaderPipeline.alphaBlendSource = kha_graphics4_BlendingFactor.SourceAlpha; - kha_graphics4_ColoredShaderPainter.shaderPipeline.alphaBlendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha; - kha_graphics4_ColoredShaderPainter.shaderPipeline.compile(); -}; -kha_graphics4_ColoredShaderPainter.prototype = { - projectionMatrix: null - ,projectionLocation: null - ,bufferIndex: null - ,rectVertexBuffer: null - ,rectVertices: null - ,indexBuffer: null - ,triangleBufferIndex: null - ,triangleVertexBuffer: null - ,triangleVertices: null - ,triangleIndexBuffer: null - ,g: null - ,myPipeline: null - ,sourceBlend: null - ,destinationBlend: null - ,get_pipeline: function() { - return this.myPipeline; - } - ,set_pipeline: function(pipe) { - if(pipe == null) { - this.projectionLocation = kha_graphics4_ColoredShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"); - } else { - this.projectionLocation = pipe.getConstantLocation("projectionMatrix"); - } - return this.myPipeline = pipe; - } - ,setProjection: function(projectionMatrix) { - this.projectionMatrix = projectionMatrix; - } - ,initBuffers: function() { - this.rectVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_ColoredShaderPainter.bufferSize * 4,kha_graphics4_ColoredShaderPainter.structure,kha_graphics4_Usage.DynamicUsage); - this.rectVertices = this.rectVertexBuffer.lock(); - this.indexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_ColoredShaderPainter.bufferSize * 3 * 2,kha_graphics4_Usage.StaticUsage); - var indices = this.indexBuffer.lock(); - var _g1 = 0; - var _g = kha_graphics4_ColoredShaderPainter.bufferSize; - while(_g1 < _g) { - var i = _g1++; - indices[i * 3 * 2] = i * 4; - indices[i * 3 * 2 + 1] = i * 4 + 1; - indices[i * 3 * 2 + 2] = i * 4 + 2; - indices[i * 3 * 2 + 3] = i * 4; - indices[i * 3 * 2 + 4] = i * 4 + 2; - indices[i * 3 * 2 + 5] = i * 4 + 3; - } - this.indexBuffer.unlock(); - this.triangleVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_ColoredShaderPainter.triangleBufferSize * 3,kha_graphics4_ColoredShaderPainter.structure,kha_graphics4_Usage.DynamicUsage); - this.triangleVertices = this.triangleVertexBuffer.lock(); - this.triangleIndexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_ColoredShaderPainter.triangleBufferSize * 3,kha_graphics4_Usage.StaticUsage); - var triIndices = this.triangleIndexBuffer.lock(); - var _g11 = 0; - var _g2 = kha_graphics4_ColoredShaderPainter.bufferSize; - while(_g11 < _g2) { - var i1 = _g11++; - triIndices[i1 * 3] = i1 * 3; - triIndices[i1 * 3 + 1] = i1 * 3 + 1; - triIndices[i1 * 3 + 2] = i1 * 3 + 2; - } - this.triangleIndexBuffer.unlock(); - } - ,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { - var baseIndex = this.bufferIndex * 7 * 4; - this.rectVertices[baseIndex] = bottomleftx; - this.rectVertices[baseIndex + 1] = bottomlefty; - this.rectVertices[baseIndex + 2] = -5.0; - this.rectVertices[baseIndex + 7] = topleftx; - this.rectVertices[baseIndex + 8] = toplefty; - this.rectVertices[baseIndex + 9] = -5.0; - this.rectVertices[baseIndex + 14] = toprightx; - this.rectVertices[baseIndex + 15] = toprighty; - this.rectVertices[baseIndex + 16] = -5.0; - this.rectVertices[baseIndex + 21] = bottomrightx; - this.rectVertices[baseIndex + 22] = bottomrighty; - this.rectVertices[baseIndex + 23] = -5.0; - } - ,setRectColors: function(opacity,color) { - var baseIndex = this.bufferIndex * 7 * 4; - var a = opacity * ((color >>> 24) * 0.00392156862745098); - this.rectVertices[baseIndex + 3] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 4] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 5] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 6] = a; - this.rectVertices[baseIndex + 10] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 11] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 12] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 13] = a; - this.rectVertices[baseIndex + 17] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 18] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 19] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 20] = a; - this.rectVertices[baseIndex + 24] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 25] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 26] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 27] = a; - } - ,setTriVertices: function(x1,y1,x2,y2,x3,y3) { - var baseIndex = this.triangleBufferIndex * 7 * 3; - this.triangleVertices[baseIndex] = x1; - this.triangleVertices[baseIndex + 1] = y1; - this.triangleVertices[baseIndex + 2] = -5.0; - this.triangleVertices[baseIndex + 7] = x2; - this.triangleVertices[baseIndex + 8] = y2; - this.triangleVertices[baseIndex + 9] = -5.0; - this.triangleVertices[baseIndex + 14] = x3; - this.triangleVertices[baseIndex + 15] = y3; - this.triangleVertices[baseIndex + 16] = -5.0; - } - ,setTriColors: function(opacity,color) { - var baseIndex = this.triangleBufferIndex * 7 * 3; - var a = opacity * ((color >>> 24) * 0.00392156862745098); - this.triangleVertices[baseIndex + 3] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.triangleVertices[baseIndex + 4] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.triangleVertices[baseIndex + 5] = (color & 255) * 0.00392156862745098; - this.triangleVertices[baseIndex + 6] = a; - this.triangleVertices[baseIndex + 10] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.triangleVertices[baseIndex + 11] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.triangleVertices[baseIndex + 12] = (color & 255) * 0.00392156862745098; - this.triangleVertices[baseIndex + 13] = a; - this.triangleVertices[baseIndex + 17] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.triangleVertices[baseIndex + 18] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.triangleVertices[baseIndex + 19] = (color & 255) * 0.00392156862745098; - this.triangleVertices[baseIndex + 20] = a; - } - ,drawBuffer: function(trisDone) { - if(!trisDone) { - if(this.triangleBufferIndex > 0) { - this.drawTriBuffer(true); - } - } - this.rectVertexBuffer.unlock(); - this.g.setVertexBuffer(this.rectVertexBuffer); - this.g.setIndexBuffer(this.indexBuffer); - this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_ColoredShaderPainter.shaderPipeline : this.get_pipeline()); - this.g.setMatrix(this.projectionLocation,this.projectionMatrix); - this.g.drawIndexedVertices(0,this.bufferIndex * 2 * 3); - this.bufferIndex = 0; - this.rectVertices = this.rectVertexBuffer.lock(); - } - ,drawTriBuffer: function(rectsDone) { - if(!rectsDone) { - if(this.bufferIndex > 0) { - this.drawBuffer(true); - } - } - this.triangleVertexBuffer.unlock(); - this.g.setVertexBuffer(this.triangleVertexBuffer); - this.g.setIndexBuffer(this.triangleIndexBuffer); - this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_ColoredShaderPainter.shaderPipeline : this.get_pipeline()); - this.g.setMatrix(this.projectionLocation,this.projectionMatrix); - this.g.drawIndexedVertices(0,this.triangleBufferIndex * 3); - this.triangleBufferIndex = 0; - this.triangleVertices = this.triangleVertexBuffer.lock(); - } - ,fillRect: function(opacity,color,bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { - if(this.triangleBufferIndex > 0) { - this.drawTriBuffer(true); - } - if(this.bufferIndex + 1 >= kha_graphics4_ColoredShaderPainter.bufferSize) { - this.drawBuffer(false); - } - this.setRectColors(opacity,color); - this.setRectVertices(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty); - ++this.bufferIndex; - } - ,fillTriangle: function(opacity,color,x1,y1,x2,y2,x3,y3) { - if(this.bufferIndex > 0) { - this.drawBuffer(true); - } - if(this.triangleBufferIndex + 1 >= kha_graphics4_ColoredShaderPainter.triangleBufferSize) { - this.drawTriBuffer(false); - } - this.setTriColors(opacity,color); - this.setTriVertices(x1,y1,x2,y2,x3,y3); - ++this.triangleBufferIndex; - } - ,endTris: function(rectsDone) { - if(this.triangleBufferIndex > 0) { - this.drawTriBuffer(rectsDone); - } - } - ,endRects: function(trisDone) { - if(this.bufferIndex > 0) { - this.drawBuffer(trisDone); - } - } - ,end: function() { - if(this.triangleBufferIndex > 0) { - this.drawTriBuffer(false); - } - if(this.bufferIndex > 0) { - this.drawBuffer(false); - } - } - ,__class__: kha_graphics4_ColoredShaderPainter -}; -var kha_graphics4_TextShaderPainter = function(g4) { - this.destinationBlend = kha_graphics4_BlendingFactor.Undefined; - this.sourceBlend = kha_graphics4_BlendingFactor.Undefined; - this.bilinear = false; - this.myPipeline = null; - this.g = g4; - this.bufferIndex = 0; - kha_graphics4_TextShaderPainter.initShaders(); - this.initBuffers(); - this.projectionLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"); - this.textureLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getTextureUnit("tex"); -}; -$hxClasses["kha.graphics4.TextShaderPainter"] = kha_graphics4_TextShaderPainter; -kha_graphics4_TextShaderPainter.__name__ = true; -kha_graphics4_TextShaderPainter.initShaders = function() { - if(kha_graphics4_TextShaderPainter.shaderPipeline != null) { - return; - } - kha_graphics4_TextShaderPainter.shaderPipeline = new kha_graphics4_PipelineState(); - kha_graphics4_TextShaderPainter.shaderPipeline.fragmentShader = kha_Shaders.painter_text_frag; - kha_graphics4_TextShaderPainter.shaderPipeline.vertexShader = kha_Shaders.painter_text_vert; - kha_graphics4_TextShaderPainter.structure = new kha_graphics4_VertexStructure(); - kha_graphics4_TextShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3); - kha_graphics4_TextShaderPainter.structure.add("texPosition",kha_graphics4_VertexData.Float2); - kha_graphics4_TextShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4); - kha_graphics4_TextShaderPainter.shaderPipeline.inputLayout = [kha_graphics4_TextShaderPainter.structure]; - kha_graphics4_TextShaderPainter.shaderPipeline.blendSource = kha_graphics4_BlendingFactor.SourceAlpha; - kha_graphics4_TextShaderPainter.shaderPipeline.blendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha; - kha_graphics4_TextShaderPainter.shaderPipeline.alphaBlendSource = kha_graphics4_BlendingFactor.SourceAlpha; - kha_graphics4_TextShaderPainter.shaderPipeline.alphaBlendDestination = kha_graphics4_BlendingFactor.InverseSourceAlpha; - kha_graphics4_TextShaderPainter.shaderPipeline.compile(); -}; -kha_graphics4_TextShaderPainter.findIndex = function(charcode,fontGlyphs) { - var _g1 = 0; - var _g = fontGlyphs.length; - while(_g1 < _g) { - var i = _g1++; - if(fontGlyphs[i] == charcode) { - return i; - } - } - return 0; -}; -kha_graphics4_TextShaderPainter.prototype = { - projectionMatrix: null - ,projectionLocation: null - ,textureLocation: null - ,bufferIndex: null - ,rectVertexBuffer: null - ,rectVertices: null - ,indexBuffer: null - ,font: null - ,lastTexture: null - ,g: null - ,myPipeline: null - ,fontSize: null - ,bilinear: null - ,sourceBlend: null - ,destinationBlend: null - ,get_pipeline: function() { - return this.myPipeline; - } - ,set_pipeline: function(pipe) { - if(pipe == null) { - this.projectionLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"); - this.textureLocation = kha_graphics4_TextShaderPainter.shaderPipeline.getTextureUnit("tex"); - } else { - this.projectionLocation = pipe.getConstantLocation("projectionMatrix"); - this.textureLocation = pipe.getTextureUnit("tex"); - } - return this.myPipeline = pipe; - } - ,setProjection: function(projectionMatrix) { - this.projectionMatrix = projectionMatrix; - } - ,initBuffers: function() { - this.rectVertexBuffer = new kha_graphics4_VertexBuffer(kha_graphics4_TextShaderPainter.bufferSize * 4,kha_graphics4_TextShaderPainter.structure,kha_graphics4_Usage.DynamicUsage); - this.rectVertices = this.rectVertexBuffer.lock(); - this.indexBuffer = new kha_graphics4_IndexBuffer(kha_graphics4_TextShaderPainter.bufferSize * 3 * 2,kha_graphics4_Usage.StaticUsage); - var indices = this.indexBuffer.lock(); - var _g1 = 0; - var _g = kha_graphics4_TextShaderPainter.bufferSize; - while(_g1 < _g) { - var i = _g1++; - indices[i * 3 * 2] = i * 4; - indices[i * 3 * 2 + 1] = i * 4 + 1; - indices[i * 3 * 2 + 2] = i * 4 + 2; - indices[i * 3 * 2 + 3] = i * 4; - indices[i * 3 * 2 + 4] = i * 4 + 2; - indices[i * 3 * 2 + 5] = i * 4 + 3; - } - this.indexBuffer.unlock(); - } - ,setRectVertices: function(bottomleftx,bottomlefty,topleftx,toplefty,toprightx,toprighty,bottomrightx,bottomrighty) { - var baseIndex = this.bufferIndex * 9 * 4; - this.rectVertices[baseIndex] = bottomleftx; - this.rectVertices[baseIndex + 1] = bottomlefty; - this.rectVertices[baseIndex + 2] = -5.0; - this.rectVertices[baseIndex + 9] = topleftx; - this.rectVertices[baseIndex + 10] = toplefty; - this.rectVertices[baseIndex + 11] = -5.0; - this.rectVertices[baseIndex + 18] = toprightx; - this.rectVertices[baseIndex + 19] = toprighty; - this.rectVertices[baseIndex + 20] = -5.0; - this.rectVertices[baseIndex + 27] = bottomrightx; - this.rectVertices[baseIndex + 28] = bottomrighty; - this.rectVertices[baseIndex + 29] = -5.0; - } - ,setRectTexCoords: function(left,top,right,bottom) { - var baseIndex = this.bufferIndex * 9 * 4; - this.rectVertices[baseIndex + 3] = left; - this.rectVertices[baseIndex + 4] = bottom; - this.rectVertices[baseIndex + 12] = left; - this.rectVertices[baseIndex + 13] = top; - this.rectVertices[baseIndex + 21] = right; - this.rectVertices[baseIndex + 22] = top; - this.rectVertices[baseIndex + 30] = right; - this.rectVertices[baseIndex + 31] = bottom; - } - ,setRectColors: function(opacity,color) { - var baseIndex = this.bufferIndex * 9 * 4; - var a = opacity * ((color >>> 24) * 0.00392156862745098); - this.rectVertices[baseIndex + 5] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 6] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 7] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 8] = a; - this.rectVertices[baseIndex + 14] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 15] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 16] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 17] = a; - this.rectVertices[baseIndex + 23] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 24] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 25] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 26] = a; - this.rectVertices[baseIndex + 32] = ((color & 16711680) >>> 16) * 0.00392156862745098; - this.rectVertices[baseIndex + 33] = ((color & 65280) >>> 8) * 0.00392156862745098; - this.rectVertices[baseIndex + 34] = (color & 255) * 0.00392156862745098; - this.rectVertices[baseIndex + 35] = a; - } - ,drawBuffer: function() { - this.rectVertexBuffer.unlock(); - this.g.setVertexBuffer(this.rectVertexBuffer); - this.g.setIndexBuffer(this.indexBuffer); - this.g.setPipeline(this.get_pipeline() == null ? kha_graphics4_TextShaderPainter.shaderPipeline : this.get_pipeline()); - this.g.setTexture(this.textureLocation,this.lastTexture); - this.g.setMatrix(this.projectionLocation,this.projectionMatrix); - this.g.setTextureParameters(this.textureLocation,kha_graphics4_TextureAddressing.Clamp,kha_graphics4_TextureAddressing.Clamp,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,this.bilinear ? kha_graphics4_TextureFilter.LinearFilter : kha_graphics4_TextureFilter.PointFilter,kha_graphics4_MipMapFilter.NoMipFilter); - this.g.drawIndexedVertices(0,this.bufferIndex * 2 * 3); - this.g.setTexture(this.textureLocation,null); - this.bufferIndex = 0; - this.rectVertices = this.rectVertexBuffer.lock(); - } - ,setBilinearFilter: function(bilinear) { - this.end(); - this.bilinear = bilinear; - } - ,setFont: function(font) { - this.font = js_Boot.__cast(font , kha_Kravur); - } - ,text: null - ,startString: function(text) { - this.text = text; - } - ,charCodeAt: function(position) { - return HxOverrides.cca(this.text,position); - } - ,stringLength: function() { - return this.text.length; - } - ,endString: function() { - this.text = null; - } - ,drawString: function(text,opacity,color,x,y,transformation,fontGlyphs) { - var font = this.font._get(this.fontSize,fontGlyphs); - var tex = font.getTexture(); - if(this.lastTexture != null && tex != this.lastTexture) { - this.drawBuffer(); - } - this.lastTexture = tex; - var xpos = x; - var ypos = y; - this.startString(text); - var _g1 = 0; - var _g = this.stringLength(); - while(_g1 < _g) { - var i = _g1++; - var q = font.getBakedQuad(kha_graphics4_TextShaderPainter.findIndex(this.charCodeAt(i),fontGlyphs),xpos,ypos); - if(q != null) { - if(this.bufferIndex + 1 >= kha_graphics4_TextShaderPainter.bufferSize) { - this.drawBuffer(); - } - this.setRectColors(opacity,color); - this.setRectTexCoords(q.s0 * tex.get_width() / tex.get_realWidth(),q.t0 * tex.get_height() / tex.get_realHeight(),q.s1 * tex.get_width() / tex.get_realWidth(),q.t1 * tex.get_height() / tex.get_realHeight()); - var p0_y; - var p0_x; - var value_y; - var value_x = q.x0; - value_y = q.y1; - var w = transformation._02 * value_x + transformation._12 * value_y + transformation._22; - var x1 = (transformation._00 * value_x + transformation._10 * value_y + transformation._20) / w; - var y1 = (transformation._01 * value_x + transformation._11 * value_y + transformation._21) / w; - p0_x = x1; - p0_y = y1; - var p1_y; - var p1_x; - var value_y1; - var value_x1 = q.x0; - value_y1 = q.y0; - var w1 = transformation._02 * value_x1 + transformation._12 * value_y1 + transformation._22; - var x2 = (transformation._00 * value_x1 + transformation._10 * value_y1 + transformation._20) / w1; - var y2 = (transformation._01 * value_x1 + transformation._11 * value_y1 + transformation._21) / w1; - p1_x = x2; - p1_y = y2; - var p2_y; - var p2_x; - var value_y2; - var value_x2 = q.x1; - value_y2 = q.y0; - var w2 = transformation._02 * value_x2 + transformation._12 * value_y2 + transformation._22; - var x3 = (transformation._00 * value_x2 + transformation._10 * value_y2 + transformation._20) / w2; - var y3 = (transformation._01 * value_x2 + transformation._11 * value_y2 + transformation._21) / w2; - p2_x = x3; - p2_y = y3; - var p3_y; - var p3_x; - var value_y3; - var value_x3 = q.x1; - value_y3 = q.y1; - var w3 = transformation._02 * value_x3 + transformation._12 * value_y3 + transformation._22; - var x4 = (transformation._00 * value_x3 + transformation._10 * value_y3 + transformation._20) / w3; - var y4 = (transformation._01 * value_x3 + transformation._11 * value_y3 + transformation._21) / w3; - p3_x = x4; - p3_y = y4; - this.setRectVertices(p0_x,p0_y,p1_x,p1_y,p2_x,p2_y,p3_x,p3_y); - xpos += q.xadvance; - ++this.bufferIndex; - } - } - this.endString(); - } - ,end: function() { - if(this.bufferIndex > 0) { - this.drawBuffer(); - } - this.lastTexture = null; - } - ,__class__: kha_graphics4_TextShaderPainter -}; -var kha_graphics4_Graphics2 = function(canvas) { - this.myMipmapScaleQuality = kha_graphics2_ImageScaleQuality.High; - this.myImageScaleQuality = kha_graphics2_ImageScaleQuality.High; - kha_graphics2_Graphics.call(this); - this.set_color(-1); - this.canvas = canvas; - this.g = canvas.get_g4(); - this.imagePainter = new kha_graphics4_ImageShaderPainter(this.g); - this.coloredPainter = new kha_graphics4_ColoredShaderPainter(this.g); - this.textPainter = new kha_graphics4_TextShaderPainter(this.g); - this.textPainter.fontSize = this.get_fontSize(); - this.setProjection(); - if(kha_graphics4_Graphics2.videoPipeline == null) { - kha_graphics4_Graphics2.videoPipeline = new kha_graphics4_PipelineState(); - kha_graphics4_Graphics2.videoPipeline.fragmentShader = kha_Shaders.painter_video_frag; - kha_graphics4_Graphics2.videoPipeline.vertexShader = kha_Shaders.painter_video_vert; - var structure = new kha_graphics4_VertexStructure(); - structure.add("vertexPosition",kha_graphics4_VertexData.Float3); - structure.add("texPosition",kha_graphics4_VertexData.Float2); - structure.add("vertexColor",kha_graphics4_VertexData.Float4); - kha_graphics4_Graphics2.videoPipeline.inputLayout = [structure]; - kha_graphics4_Graphics2.videoPipeline.compile(); - } -}; -$hxClasses["kha.graphics4.Graphics2"] = kha_graphics4_Graphics2; -kha_graphics4_Graphics2.__name__ = true; -kha_graphics4_Graphics2.upperPowerOfTwo = function(v) { - --v; - v |= v >>> 1; - v |= v >>> 2; - v |= v >>> 4; - v |= v >>> 8; - v |= v >>> 16; - return ++v; -}; -kha_graphics4_Graphics2.__super__ = kha_graphics2_Graphics; -kha_graphics4_Graphics2.prototype = $extend(kha_graphics2_Graphics.prototype,{ - myColor: null - ,myFont: null - ,projectionMatrix: null - ,imagePainter: null - ,coloredPainter: null - ,textPainter: null - ,canvas: null - ,g: null - ,setProjection: function() { - var width = this.canvas.get_width(); - var height = this.canvas.get_height(); - if(js_Boot.__instanceof(this.canvas,kha_Framebuffer)) { - this.projectionMatrix = kha_math_FastMatrix4.orthogonalProjection(0,width,height,0,0.1,1000); - } else { - if(!kha_Image.get_nonPow2Supported()) { - width = kha_graphics4_Graphics2.upperPowerOfTwo(width); - height = kha_graphics4_Graphics2.upperPowerOfTwo(height); - } - if(this.g.renderTargetsInvertedY()) { - this.projectionMatrix = kha_math_FastMatrix4.orthogonalProjection(0,width,0,height,0.1,1000); - } else { - this.projectionMatrix = kha_math_FastMatrix4.orthogonalProjection(0,width,height,0,0.1,1000); - } - } - this.imagePainter.setProjection(this.projectionMatrix); - this.coloredPainter.setProjection(this.projectionMatrix); - this.textPainter.setProjection(this.projectionMatrix); - } - ,drawImage: function(img,x,y) { - var _this = this.coloredPainter; - if(_this.triangleBufferIndex > 0) { - _this.drawTriBuffer(false); - } - if(_this.bufferIndex > 0) { - _this.drawBuffer(false); - } - this.textPainter.end(); - var xw = x + img.get_width(); - var yh = y + img.get_height(); - var p1_y; - var p1_x; - var _this1 = this.transformations[this.transformations.length - 1]; - var value_y; - var value_x = x; - value_y = yh; - var w = _this1._02 * value_x + _this1._12 * value_y + _this1._22; - var x1 = (_this1._00 * value_x + _this1._10 * value_y + _this1._20) / w; - var y1 = (_this1._01 * value_x + _this1._11 * value_y + _this1._21) / w; - p1_x = x1; - p1_y = y1; - var p2_y; - var p2_x; - var _this2 = this.transformations[this.transformations.length - 1]; - var value_y1; - var value_x1 = x; - value_y1 = y; - var w1 = _this2._02 * value_x1 + _this2._12 * value_y1 + _this2._22; - var x2 = (_this2._00 * value_x1 + _this2._10 * value_y1 + _this2._20) / w1; - var y2 = (_this2._01 * value_x1 + _this2._11 * value_y1 + _this2._21) / w1; - p2_x = x2; - p2_y = y2; - var p3_y; - var p3_x; - var _this3 = this.transformations[this.transformations.length - 1]; - var value_y2; - var value_x2 = xw; - value_y2 = y; - var w2 = _this3._02 * value_x2 + _this3._12 * value_y2 + _this3._22; - var x3 = (_this3._00 * value_x2 + _this3._10 * value_y2 + _this3._20) / w2; - var y3 = (_this3._01 * value_x2 + _this3._11 * value_y2 + _this3._21) / w2; - p3_x = x3; - p3_y = y3; - var p4_y; - var p4_x; - var _this4 = this.transformations[this.transformations.length - 1]; - var value_y3; - var value_x3 = xw; - value_y3 = yh; - var w3 = _this4._02 * value_x3 + _this4._12 * value_y3 + _this4._22; - var x4 = (_this4._00 * value_x3 + _this4._10 * value_y3 + _this4._20) / w3; - var y4 = (_this4._01 * value_x3 + _this4._11 * value_y3 + _this4._21) / w3; - p4_x = x4; - p4_y = y4; - var _this5 = this.imagePainter; - var opacity = this.get_opacity(); - var color = this.get_color(); - var tex = img; - if(_this5.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || _this5.lastTexture != null && tex != _this5.lastTexture) { - _this5.drawBuffer(); - } - var r = ((color & 16711680) >>> 16) * 0.00392156862745098; - var g = ((color & 65280) >>> 8) * 0.00392156862745098; - var b = (color & 255) * 0.00392156862745098; - var a = (color >>> 24) * 0.00392156862745098 * opacity; - var baseIndex = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - _this5.rectVertices[baseIndex + 5] = r; - _this5.rectVertices[baseIndex + 6] = g; - _this5.rectVertices[baseIndex + 7] = b; - _this5.rectVertices[baseIndex + 8] = a; - _this5.rectVertices[baseIndex + 14] = r; - _this5.rectVertices[baseIndex + 15] = g; - _this5.rectVertices[baseIndex + 16] = b; - _this5.rectVertices[baseIndex + 17] = a; - _this5.rectVertices[baseIndex + 23] = r; - _this5.rectVertices[baseIndex + 24] = g; - _this5.rectVertices[baseIndex + 25] = b; - _this5.rectVertices[baseIndex + 26] = a; - _this5.rectVertices[baseIndex + 32] = r; - _this5.rectVertices[baseIndex + 33] = g; - _this5.rectVertices[baseIndex + 34] = b; - _this5.rectVertices[baseIndex + 35] = a; - var right = tex.get_width() / tex.get_realWidth(); - var bottom = tex.get_height() / tex.get_realHeight(); - var baseIndex1 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - _this5.rectVertices[baseIndex1 + 3] = 0; - _this5.rectVertices[baseIndex1 + 4] = bottom; - _this5.rectVertices[baseIndex1 + 12] = 0; - _this5.rectVertices[baseIndex1 + 13] = 0; - _this5.rectVertices[baseIndex1 + 21] = right; - _this5.rectVertices[baseIndex1 + 22] = 0; - _this5.rectVertices[baseIndex1 + 30] = right; - _this5.rectVertices[baseIndex1 + 31] = bottom; - var baseIndex2 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - _this5.rectVertices[baseIndex2] = p1_x; - _this5.rectVertices[baseIndex2 + 1] = p1_y; - _this5.rectVertices[baseIndex2 + 2] = -5.0; - _this5.rectVertices[baseIndex2 + 9] = p2_x; - _this5.rectVertices[baseIndex2 + 10] = p2_y; - _this5.rectVertices[baseIndex2 + 11] = -5.0; - _this5.rectVertices[baseIndex2 + 18] = p3_x; - _this5.rectVertices[baseIndex2 + 19] = p3_y; - _this5.rectVertices[baseIndex2 + 20] = -5.0; - _this5.rectVertices[baseIndex2 + 27] = p4_x; - _this5.rectVertices[baseIndex2 + 28] = p4_y; - _this5.rectVertices[baseIndex2 + 29] = -5.0; - ++_this5.bufferIndex; - _this5.lastTexture = tex; - } - ,drawScaledSubImage: function(img,sx,sy,sw,sh,dx,dy,dw,dh) { - var _this = this.coloredPainter; - if(_this.triangleBufferIndex > 0) { - _this.drawTriBuffer(false); - } - if(_this.bufferIndex > 0) { - _this.drawBuffer(false); - } - this.textPainter.end(); - var p1_y; - var p1_x; - var _this1 = this.transformations[this.transformations.length - 1]; - var value_y; - var value_x = dx; - value_y = dy + dh; - var w = _this1._02 * value_x + _this1._12 * value_y + _this1._22; - var x = (_this1._00 * value_x + _this1._10 * value_y + _this1._20) / w; - var y = (_this1._01 * value_x + _this1._11 * value_y + _this1._21) / w; - p1_x = x; - p1_y = y; - var p2_y; - var p2_x; - var _this2 = this.transformations[this.transformations.length - 1]; - var value_y1; - var value_x1 = dx; - value_y1 = dy; - var w1 = _this2._02 * value_x1 + _this2._12 * value_y1 + _this2._22; - var x1 = (_this2._00 * value_x1 + _this2._10 * value_y1 + _this2._20) / w1; - var y1 = (_this2._01 * value_x1 + _this2._11 * value_y1 + _this2._21) / w1; - p2_x = x1; - p2_y = y1; - var p3_y; - var p3_x; - var _this3 = this.transformations[this.transformations.length - 1]; - var value_y2; - var value_x2 = dx + dw; - value_y2 = dy; - var w2 = _this3._02 * value_x2 + _this3._12 * value_y2 + _this3._22; - var x2 = (_this3._00 * value_x2 + _this3._10 * value_y2 + _this3._20) / w2; - var y2 = (_this3._01 * value_x2 + _this3._11 * value_y2 + _this3._21) / w2; - p3_x = x2; - p3_y = y2; - var p4_y; - var p4_x; - var _this4 = this.transformations[this.transformations.length - 1]; - var value_y3; - var value_x3 = dx + dw; - value_y3 = dy + dh; - var w3 = _this4._02 * value_x3 + _this4._12 * value_y3 + _this4._22; - var x3 = (_this4._00 * value_x3 + _this4._10 * value_y3 + _this4._20) / w3; - var y3 = (_this4._01 * value_x3 + _this4._11 * value_y3 + _this4._21) / w3; - p4_x = x3; - p4_y = y3; - var _this5 = this.imagePainter; - var opacity = this.get_opacity(); - var color = this.get_color(); - var tex = img; - if(_this5.bufferIndex + 1 >= kha_graphics4_ImageShaderPainter.bufferSize || _this5.lastTexture != null && tex != _this5.lastTexture) { - _this5.drawBuffer(); - } - var left = sx / tex.get_realWidth(); - var top = sy / tex.get_realHeight(); - var right = (sx + sw) / tex.get_realWidth(); - var bottom = (sy + sh) / tex.get_realHeight(); - var baseIndex = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - _this5.rectVertices[baseIndex + 3] = left; - _this5.rectVertices[baseIndex + 4] = bottom; - _this5.rectVertices[baseIndex + 12] = left; - _this5.rectVertices[baseIndex + 13] = top; - _this5.rectVertices[baseIndex + 21] = right; - _this5.rectVertices[baseIndex + 22] = top; - _this5.rectVertices[baseIndex + 30] = right; - _this5.rectVertices[baseIndex + 31] = bottom; - var r = ((color & 16711680) >>> 16) * 0.00392156862745098; - var g = ((color & 65280) >>> 8) * 0.00392156862745098; - var b = (color & 255) * 0.00392156862745098; - var a = (color >>> 24) * 0.00392156862745098 * opacity; - var baseIndex1 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - _this5.rectVertices[baseIndex1 + 5] = r; - _this5.rectVertices[baseIndex1 + 6] = g; - _this5.rectVertices[baseIndex1 + 7] = b; - _this5.rectVertices[baseIndex1 + 8] = a; - _this5.rectVertices[baseIndex1 + 14] = r; - _this5.rectVertices[baseIndex1 + 15] = g; - _this5.rectVertices[baseIndex1 + 16] = b; - _this5.rectVertices[baseIndex1 + 17] = a; - _this5.rectVertices[baseIndex1 + 23] = r; - _this5.rectVertices[baseIndex1 + 24] = g; - _this5.rectVertices[baseIndex1 + 25] = b; - _this5.rectVertices[baseIndex1 + 26] = a; - _this5.rectVertices[baseIndex1 + 32] = r; - _this5.rectVertices[baseIndex1 + 33] = g; - _this5.rectVertices[baseIndex1 + 34] = b; - _this5.rectVertices[baseIndex1 + 35] = a; - var baseIndex2 = _this5.bufferIndex * kha_graphics4_ImageShaderPainter.vertexSize * 4; - _this5.rectVertices[baseIndex2] = p1_x; - _this5.rectVertices[baseIndex2 + 1] = p1_y; - _this5.rectVertices[baseIndex2 + 2] = -5.0; - _this5.rectVertices[baseIndex2 + 9] = p2_x; - _this5.rectVertices[baseIndex2 + 10] = p2_y; - _this5.rectVertices[baseIndex2 + 11] = -5.0; - _this5.rectVertices[baseIndex2 + 18] = p3_x; - _this5.rectVertices[baseIndex2 + 19] = p3_y; - _this5.rectVertices[baseIndex2 + 20] = -5.0; - _this5.rectVertices[baseIndex2 + 27] = p4_x; - _this5.rectVertices[baseIndex2 + 28] = p4_y; - _this5.rectVertices[baseIndex2 + 29] = -5.0; - ++_this5.bufferIndex; - _this5.lastTexture = tex; - } - ,get_color: function() { - return this.myColor; - } - ,set_color: function(color) { - return this.myColor = color; - } - ,drawRect: function(x,y,width,height,strength) { - if(strength == null) { - strength = 1.0; - } - this.imagePainter.end(); - this.textPainter.end(); - var _this = this.transformations[this.transformations.length - 1]; - var value_y; - var value_x = x - strength / 2; - value_y = y + strength / 2; - var w = _this._02 * value_x + _this._12 * value_y + _this._22; - var x1 = (_this._00 * value_x + _this._10 * value_y + _this._20) / w; - var y1 = (_this._01 * value_x + _this._11 * value_y + _this._21) / w; - var p1 = new kha_math_FastVector2(x1,y1); - var _this1 = this.transformations[this.transformations.length - 1]; - var value_y1; - var value_x1 = x - strength / 2; - value_y1 = y - strength / 2; - var w1 = _this1._02 * value_x1 + _this1._12 * value_y1 + _this1._22; - var x2 = (_this1._00 * value_x1 + _this1._10 * value_y1 + _this1._20) / w1; - var y2 = (_this1._01 * value_x1 + _this1._11 * value_y1 + _this1._21) / w1; - var p2 = new kha_math_FastVector2(x2,y2); - var _this2 = this.transformations[this.transformations.length - 1]; - var value_y2; - var value_x2 = x + width + strength / 2; - value_y2 = y - strength / 2; - var w2 = _this2._02 * value_x2 + _this2._12 * value_y2 + _this2._22; - var x3 = (_this2._00 * value_x2 + _this2._10 * value_y2 + _this2._20) / w2; - var y3 = (_this2._01 * value_x2 + _this2._11 * value_y2 + _this2._21) / w2; - var p3 = new kha_math_FastVector2(x3,y3); - var _this3 = this.transformations[this.transformations.length - 1]; - var value_y3; - var value_x3 = x + width + strength / 2; - value_y3 = y + strength / 2; - var w3 = _this3._02 * value_x3 + _this3._12 * value_y3 + _this3._22; - var x4 = (_this3._00 * value_x3 + _this3._10 * value_y3 + _this3._20) / w3; - var y4 = (_this3._01 * value_x3 + _this3._11 * value_y3 + _this3._21) / w3; - var p4 = new kha_math_FastVector2(x4,y4); - this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y); - var _this4 = this.transformations[this.transformations.length - 1]; - var value_y4; - var value_x4 = x - strength / 2; - value_y4 = y + height + strength / 2; - var w4 = _this4._02 * value_x4 + _this4._12 * value_y4 + _this4._22; - var x5 = (_this4._00 * value_x4 + _this4._10 * value_y4 + _this4._20) / w4; - var y5 = (_this4._01 * value_x4 + _this4._11 * value_y4 + _this4._21) / w4; - p1 = new kha_math_FastVector2(x5,y5); - var _this5 = this.transformations[this.transformations.length - 1]; - var value_y5; - var value_x5 = x + strength / 2; - value_y5 = y - strength / 2; - var w5 = _this5._02 * value_x5 + _this5._12 * value_y5 + _this5._22; - var x6 = (_this5._00 * value_x5 + _this5._10 * value_y5 + _this5._20) / w5; - var y6 = (_this5._01 * value_x5 + _this5._11 * value_y5 + _this5._21) / w5; - p3 = new kha_math_FastVector2(x6,y6); - var _this6 = this.transformations[this.transformations.length - 1]; - var value_y6; - var value_x6 = x + strength / 2; - value_y6 = y + height + strength / 2; - var w6 = _this6._02 * value_x6 + _this6._12 * value_y6 + _this6._22; - var x7 = (_this6._00 * value_x6 + _this6._10 * value_y6 + _this6._20) / w6; - var y7 = (_this6._01 * value_x6 + _this6._11 * value_y6 + _this6._21) / w6; - p4 = new kha_math_FastVector2(x7,y7); - this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y); - var _this7 = this.transformations[this.transformations.length - 1]; - var value_y7; - var value_x7 = x - strength / 2; - value_y7 = y + height - strength / 2; - var w7 = _this7._02 * value_x7 + _this7._12 * value_y7 + _this7._22; - var x8 = (_this7._00 * value_x7 + _this7._10 * value_y7 + _this7._20) / w7; - var y8 = (_this7._01 * value_x7 + _this7._11 * value_y7 + _this7._21) / w7; - p2 = new kha_math_FastVector2(x8,y8); - var _this8 = this.transformations[this.transformations.length - 1]; - var value_y8; - var value_x8 = x + width + strength / 2; - value_y8 = y + height - strength / 2; - var w8 = _this8._02 * value_x8 + _this8._12 * value_y8 + _this8._22; - var x9 = (_this8._00 * value_x8 + _this8._10 * value_y8 + _this8._20) / w8; - var y9 = (_this8._01 * value_x8 + _this8._11 * value_y8 + _this8._21) / w8; - p3 = new kha_math_FastVector2(x9,y9); - var _this9 = this.transformations[this.transformations.length - 1]; - var value_y9; - var value_x9 = x + width + strength / 2; - value_y9 = y + height + strength / 2; - var w9 = _this9._02 * value_x9 + _this9._12 * value_y9 + _this9._22; - var x10 = (_this9._00 * value_x9 + _this9._10 * value_y9 + _this9._20) / w9; - var y10 = (_this9._01 * value_x9 + _this9._11 * value_y9 + _this9._21) / w9; - p4 = new kha_math_FastVector2(x10,y10); - this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y); - var _this10 = this.transformations[this.transformations.length - 1]; - var value_y10; - var value_x10 = x + width - strength / 2; - value_y10 = y + height + strength / 2; - var w10 = _this10._02 * value_x10 + _this10._12 * value_y10 + _this10._22; - var x11 = (_this10._00 * value_x10 + _this10._10 * value_y10 + _this10._20) / w10; - var y11 = (_this10._01 * value_x10 + _this10._11 * value_y10 + _this10._21) / w10; - p1 = new kha_math_FastVector2(x11,y11); - var _this11 = this.transformations[this.transformations.length - 1]; - var value_y11; - var value_x11 = x + width - strength / 2; - value_y11 = y - strength / 2; - var w11 = _this11._02 * value_x11 + _this11._12 * value_y11 + _this11._22; - var x12 = (_this11._00 * value_x11 + _this11._10 * value_y11 + _this11._20) / w11; - var y12 = (_this11._01 * value_x11 + _this11._11 * value_y11 + _this11._21) / w11; - p2 = new kha_math_FastVector2(x12,y12); - var _this12 = this.transformations[this.transformations.length - 1]; - var value_y12; - var value_x12 = x + width + strength / 2; - value_y12 = y - strength / 2; - var w12 = _this12._02 * value_x12 + _this12._12 * value_y12 + _this12._22; - var x13 = (_this12._00 * value_x12 + _this12._10 * value_y12 + _this12._20) / w12; - var y13 = (_this12._01 * value_x12 + _this12._11 * value_y12 + _this12._21) / w12; - p3 = new kha_math_FastVector2(x13,y13); - var _this13 = this.transformations[this.transformations.length - 1]; - var value_y13; - var value_x13 = x + width + strength / 2; - value_y13 = y + height + strength / 2; - var w13 = _this13._02 * value_x13 + _this13._12 * value_y13 + _this13._22; - var x14 = (_this13._00 * value_x13 + _this13._10 * value_y13 + _this13._20) / w13; - var y14 = (_this13._01 * value_x13 + _this13._11 * value_y13 + _this13._21) / w13; - p4 = new kha_math_FastVector2(x14,y14); - this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y,p4.x,p4.y); - } - ,fillRect: function(x,y,width,height) { - this.imagePainter.end(); - this.textPainter.end(); - var p1_y; - var p1_x; - var _this = this.transformations[this.transformations.length - 1]; - var value_y; - var value_x = x; - value_y = y + height; - var w = _this._02 * value_x + _this._12 * value_y + _this._22; - var x1 = (_this._00 * value_x + _this._10 * value_y + _this._20) / w; - var y1 = (_this._01 * value_x + _this._11 * value_y + _this._21) / w; - p1_x = x1; - p1_y = y1; - var p2_y; - var p2_x; - var _this1 = this.transformations[this.transformations.length - 1]; - var value_y1; - var value_x1 = x; - value_y1 = y; - var w1 = _this1._02 * value_x1 + _this1._12 * value_y1 + _this1._22; - var x2 = (_this1._00 * value_x1 + _this1._10 * value_y1 + _this1._20) / w1; - var y2 = (_this1._01 * value_x1 + _this1._11 * value_y1 + _this1._21) / w1; - p2_x = x2; - p2_y = y2; - var p3_y; - var p3_x; - var _this2 = this.transformations[this.transformations.length - 1]; - var value_y2; - var value_x2 = x + width; - value_y2 = y; - var w2 = _this2._02 * value_x2 + _this2._12 * value_y2 + _this2._22; - var x3 = (_this2._00 * value_x2 + _this2._10 * value_y2 + _this2._20) / w2; - var y3 = (_this2._01 * value_x2 + _this2._11 * value_y2 + _this2._21) / w2; - p3_x = x3; - p3_y = y3; - var p4_y; - var p4_x; - var _this3 = this.transformations[this.transformations.length - 1]; - var value_y3; - var value_x3 = x + width; - value_y3 = y + height; - var w3 = _this3._02 * value_x3 + _this3._12 * value_y3 + _this3._22; - var x4 = (_this3._00 * value_x3 + _this3._10 * value_y3 + _this3._20) / w3; - var y4 = (_this3._01 * value_x3 + _this3._11 * value_y3 + _this3._21) / w3; - p4_x = x4; - p4_y = y4; - this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),p1_x,p1_y,p2_x,p2_y,p3_x,p3_y,p4_x,p4_y); - } - ,drawString: function(text,x,y) { - this.imagePainter.end(); - var _this = this.coloredPainter; - if(_this.triangleBufferIndex > 0) { - _this.drawTriBuffer(false); - } - if(_this.bufferIndex > 0) { - _this.drawBuffer(false); - } - this.textPainter.drawString(text,this.get_opacity(),this.get_color(),x,y,this.transformations[this.transformations.length - 1],this.get_fontGlyphs()); - } - ,get_font: function() { - return this.myFont; - } - ,set_font: function(font) { - this.textPainter.setFont(font); - return this.myFont = font; - } - ,set_fontSize: function(value) { - return kha_graphics2_Graphics.prototype.set_fontSize.call(this,this.textPainter.fontSize = value); - } - ,drawLine: function(x1,y1,x2,y2,strength) { - if(strength == null) { - strength = 1.0; - } - this.imagePainter.end(); - this.textPainter.end(); - var vec; - if(y2 == y1) { - vec = new kha_math_FastVector2(0,-1); - } else { - vec = new kha_math_FastVector2(1,-(x2 - x1) / (y2 - y1)); - } - vec.set_length(strength); - var p1 = new kha_math_FastVector2(x1 + 0.5 * vec.x,y1 + 0.5 * vec.y); - var p2 = new kha_math_FastVector2(x2 + 0.5 * vec.x,y2 + 0.5 * vec.y); - var p3 = new kha_math_FastVector2(p1.x - vec.x,p1.y - vec.y); - var p4 = new kha_math_FastVector2(p2.x - vec.x,p2.y - vec.y); - var _this = this.transformations[this.transformations.length - 1]; - var w = _this._02 * p1.x + _this._12 * p1.y + _this._22; - var x = (_this._00 * p1.x + _this._10 * p1.y + _this._20) / w; - var y = (_this._01 * p1.x + _this._11 * p1.y + _this._21) / w; - p1 = new kha_math_FastVector2(x,y); - var _this1 = this.transformations[this.transformations.length - 1]; - var w1 = _this1._02 * p2.x + _this1._12 * p2.y + _this1._22; - var x3 = (_this1._00 * p2.x + _this1._10 * p2.y + _this1._20) / w1; - var y3 = (_this1._01 * p2.x + _this1._11 * p2.y + _this1._21) / w1; - p2 = new kha_math_FastVector2(x3,y3); - var _this2 = this.transformations[this.transformations.length - 1]; - var w2 = _this2._02 * p3.x + _this2._12 * p3.y + _this2._22; - var x4 = (_this2._00 * p3.x + _this2._10 * p3.y + _this2._20) / w2; - var y4 = (_this2._01 * p3.x + _this2._11 * p3.y + _this2._21) / w2; - p3 = new kha_math_FastVector2(x4,y4); - var _this3 = this.transformations[this.transformations.length - 1]; - var w3 = _this3._02 * p4.x + _this3._12 * p4.y + _this3._22; - var x5 = (_this3._00 * p4.x + _this3._10 * p4.y + _this3._20) / w3; - var y5 = (_this3._01 * p4.x + _this3._11 * p4.y + _this3._21) / w3; - p4 = new kha_math_FastVector2(x5,y5); - this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),p1.x,p1.y,p2.x,p2.y,p3.x,p3.y); - this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),p3.x,p3.y,p2.x,p2.y,p4.x,p4.y); - } - ,fillTriangle: function(x1,y1,x2,y2,x3,y3) { - this.imagePainter.end(); - this.textPainter.end(); - var p1_y; - var p1_x; - var _this = this.transformations[this.transformations.length - 1]; - var value_y; - var value_x = x1; - value_y = y1; - var w = _this._02 * value_x + _this._12 * value_y + _this._22; - var x = (_this._00 * value_x + _this._10 * value_y + _this._20) / w; - var y = (_this._01 * value_x + _this._11 * value_y + _this._21) / w; - p1_x = x; - p1_y = y; - var p2_y; - var p2_x; - var _this1 = this.transformations[this.transformations.length - 1]; - var value_y1; - var value_x1 = x2; - value_y1 = y2; - var w1 = _this1._02 * value_x1 + _this1._12 * value_y1 + _this1._22; - var x4 = (_this1._00 * value_x1 + _this1._10 * value_y1 + _this1._20) / w1; - var y4 = (_this1._01 * value_x1 + _this1._11 * value_y1 + _this1._21) / w1; - p2_x = x4; - p2_y = y4; - var p3_y; - var p3_x; - var _this2 = this.transformations[this.transformations.length - 1]; - var value_y2; - var value_x2 = x3; - value_y2 = y3; - var w2 = _this2._02 * value_x2 + _this2._12 * value_y2 + _this2._22; - var x5 = (_this2._00 * value_x2 + _this2._10 * value_y2 + _this2._20) / w2; - var y5 = (_this2._01 * value_x2 + _this2._11 * value_y2 + _this2._21) / w2; - p3_x = x5; - p3_y = y5; - this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),p1_x,p1_y,p2_x,p2_y,p3_x,p3_y); - } - ,myImageScaleQuality: null - ,get_imageScaleQuality: function() { - return this.myImageScaleQuality; - } - ,set_imageScaleQuality: function(value) { - this.imagePainter.setBilinearFilter(value == kha_graphics2_ImageScaleQuality.High); - this.textPainter.setBilinearFilter(value == kha_graphics2_ImageScaleQuality.High); - return this.myImageScaleQuality = value; - } - ,myMipmapScaleQuality: null - ,get_mipmapScaleQuality: function() { - return this.myMipmapScaleQuality; - } - ,set_mipmapScaleQuality: function(value) { - this.imagePainter.setBilinearMipmapFilter(value == kha_graphics2_ImageScaleQuality.High); - return this.myMipmapScaleQuality = value; - } - ,setPipeline: function(pipeline) { - this.flush(); - this.imagePainter.set_pipeline(pipeline); - this.coloredPainter.set_pipeline(pipeline); - this.textPainter.set_pipeline(pipeline); - if(pipeline != null) { - this.g.setPipeline(pipeline); - } - } - ,scissor: function(x,y,width,height) { - this.flush(); - this.g.scissor(x,y,width,height); - } - ,disableScissor: function() { - this.flush(); - this.g.disableScissor(); - } - ,begin: function(clear,clearColor) { - if(clear == null) { - clear = true; - } - this.g.begin(); - if(clear) { - this.clear(clearColor); - } - this.setProjection(); - } - ,clear: function(color) { - this.flush(); - this.g.clear(color == null ? -16777216 : color); - } - ,flush: function() { - this.imagePainter.end(); - this.textPainter.end(); - var _this = this.coloredPainter; - if(_this.triangleBufferIndex > 0) { - _this.drawTriBuffer(false); - } - if(_this.bufferIndex > 0) { - _this.drawBuffer(false); - } - } - ,end: function() { - this.flush(); - this.g.end(); - } - ,drawVideoInternal: function(video,x,y,width,height) { - } - ,drawVideo: function(video,x,y,width,height) { - this.setPipeline(kha_graphics4_Graphics2.videoPipeline); - this.drawVideoInternal(video,x,y,width,height); - this.setPipeline(null); - } - ,__class__: kha_graphics4_Graphics2 -}); -var kha_graphics4_IndexBuffer = function(indexCount,usage,canRead) { - if(canRead == null) { - canRead = false; - } - this.usage = usage; - this.mySize = indexCount; - this.buffer = kha_SystemImpl.gl.createBuffer(); - var this1 = new Uint32Array(indexCount); - this._data = this1; -}; -$hxClasses["kha.graphics4.IndexBuffer"] = kha_graphics4_IndexBuffer; -kha_graphics4_IndexBuffer.__name__ = true; -kha_graphics4_IndexBuffer.prototype = { - buffer: null - ,_data: null - ,mySize: null - ,usage: null - ,'delete': function() { - this._data = null; - kha_SystemImpl.gl.deleteBuffer(this.buffer); - } - ,lock: function(start,count) { - if(start == null) { - start = 0; - } - if(count == null) { - count = this.mySize; - } - return this._data.subarray(start,start + count); - } - ,unlock: function() { - kha_SystemImpl.gl.bindBuffer(34963,this.buffer); - var glData = kha_SystemImpl.elementIndexUint == null ? new Uint16Array(this._data) : this._data; - kha_SystemImpl.gl.bufferData(34963,glData,this.usage == kha_graphics4_Usage.DynamicUsage ? 35048 : 35044); - } - ,set: function() { - kha_SystemImpl.gl.bindBuffer(34963,this.buffer); - } - ,count: function() { - return this.mySize; - } - ,__class__: kha_graphics4_IndexBuffer -}; -var kha_graphics4_MipMapFilter = $hxClasses["kha.graphics4.MipMapFilter"] = { __ename__ : true, __constructs__ : ["NoMipFilter","PointMipFilter","LinearMipFilter"] }; -kha_graphics4_MipMapFilter.NoMipFilter = ["NoMipFilter",0]; -kha_graphics4_MipMapFilter.NoMipFilter.toString = $estr; -kha_graphics4_MipMapFilter.NoMipFilter.__enum__ = kha_graphics4_MipMapFilter; -kha_graphics4_MipMapFilter.PointMipFilter = ["PointMipFilter",1]; -kha_graphics4_MipMapFilter.PointMipFilter.toString = $estr; -kha_graphics4_MipMapFilter.PointMipFilter.__enum__ = kha_graphics4_MipMapFilter; -kha_graphics4_MipMapFilter.LinearMipFilter = ["LinearMipFilter",2]; -kha_graphics4_MipMapFilter.LinearMipFilter.toString = $estr; -kha_graphics4_MipMapFilter.LinearMipFilter.__enum__ = kha_graphics4_MipMapFilter; -var kha_graphics4_PipelineStateBase = function() { - this.inputLayout = null; - this.vertexShader = null; - this.fragmentShader = null; - this.geometryShader = null; - this.tessellationControlShader = null; - this.tessellationEvaluationShader = null; - this.cullMode = kha_graphics4_CullMode.None; - this.depthWrite = false; - this.depthMode = kha_graphics4_CompareMode.Always; - this.stencilMode = kha_graphics4_CompareMode.Always; - this.stencilBothPass = kha_graphics4_StencilAction.Keep; - this.stencilDepthFail = kha_graphics4_StencilAction.Keep; - this.stencilFail = kha_graphics4_StencilAction.Keep; - this.stencilReferenceValue = 0; - this.stencilReadMask = 255; - this.stencilWriteMask = 255; - this.blendSource = kha_graphics4_BlendingFactor.BlendOne; - this.blendDestination = kha_graphics4_BlendingFactor.BlendZero; - this.blendOperation = kha_graphics4_BlendingOperation.Add; - this.alphaBlendSource = kha_graphics4_BlendingFactor.BlendOne; - this.alphaBlendDestination = kha_graphics4_BlendingFactor.BlendZero; - this.alphaBlendOperation = kha_graphics4_BlendingOperation.Add; - this.colorWriteMaskRed = this.colorWriteMaskBlue = this.colorWriteMaskGreen = this.colorWriteMaskAlpha = true; - this.conservativeRasterization = false; -}; -$hxClasses["kha.graphics4.PipelineStateBase"] = kha_graphics4_PipelineStateBase; -kha_graphics4_PipelineStateBase.__name__ = true; -kha_graphics4_PipelineStateBase.prototype = { - inputLayout: null - ,vertexShader: null - ,fragmentShader: null - ,geometryShader: null - ,tessellationControlShader: null - ,tessellationEvaluationShader: null - ,cullMode: null - ,depthWrite: null - ,depthMode: null - ,stencilMode: null - ,stencilBothPass: null - ,stencilDepthFail: null - ,stencilFail: null - ,stencilReferenceValue: null - ,stencilReadMask: null - ,stencilWriteMask: null - ,blendSource: null - ,blendDestination: null - ,blendOperation: null - ,alphaBlendSource: null - ,alphaBlendDestination: null - ,alphaBlendOperation: null - ,colorWriteMaskRed: null - ,colorWriteMaskGreen: null - ,colorWriteMaskBlue: null - ,colorWriteMaskAlpha: null - ,set_colorWriteMask: function(value) { - return this.colorWriteMaskRed = this.colorWriteMaskBlue = this.colorWriteMaskGreen = this.colorWriteMaskAlpha = value; - } - ,conservativeRasterization: null - ,__class__: kha_graphics4_PipelineStateBase -}; -var kha_graphics4_PipelineState = function() { - kha_graphics4_PipelineStateBase.call(this); - this.program = kha_SystemImpl.gl.createProgram(); - this.textures = []; - this.textureValues = []; -}; -$hxClasses["kha.graphics4.PipelineState"] = kha_graphics4_PipelineState; -kha_graphics4_PipelineState.__name__ = true; -kha_graphics4_PipelineState.__super__ = kha_graphics4_PipelineStateBase; -kha_graphics4_PipelineState.prototype = $extend(kha_graphics4_PipelineStateBase.prototype,{ - program: null - ,textures: null - ,textureValues: null - ,'delete': function() { - kha_SystemImpl.gl.deleteProgram(this.program); - } - ,compile: function() { - this.compileShader(this.vertexShader); - this.compileShader(this.fragmentShader); - kha_SystemImpl.gl.attachShader(this.program,this.vertexShader.shader); - kha_SystemImpl.gl.attachShader(this.program,this.fragmentShader.shader); - var index = 0; - var _g = 0; - var _g1 = this.inputLayout; - while(_g < _g1.length) { - var structure = _g1[_g]; - ++_g; - var _g2 = 0; - var _g3 = structure.elements; - while(_g2 < _g3.length) { - var element = _g3[_g2]; - ++_g2; - kha_SystemImpl.gl.bindAttribLocation(this.program,index,element.name); - if(element.data == kha_graphics4_VertexData.Float4x4) { - index += 4; - } else { - ++index; - } - } - } - kha_SystemImpl.gl.linkProgram(this.program); - if(!kha_SystemImpl.gl.getProgramParameter(this.program,35714)) { - throw new js__$Boot_HaxeError("Could not link the shader program:\n" + kha_SystemImpl.gl.getProgramInfoLog(this.program)); - } - } - ,set: function() { - kha_SystemImpl.gl.useProgram(this.program); - var _g1 = 0; - var _g = this.textureValues.length; - while(_g1 < _g) { - var index = _g1++; - kha_SystemImpl.gl.uniform1i(this.textureValues[index],index); - } - kha_SystemImpl.gl.colorMask(this.colorWriteMaskRed,this.colorWriteMaskGreen,this.colorWriteMaskBlue,this.colorWriteMaskAlpha); - } - ,compileShader: function(shader) { - if(shader.shader != null) { - return; - } - var s = kha_SystemImpl.gl.createShader(shader.type); - var highp = kha_SystemImpl.gl.getShaderPrecisionFormat(35632,36338); - var highpSupported = highp.precision != 0; - var files = shader.files; - var _g1 = 0; - var _g = files.length; - while(_g1 < _g) { - var i = _g1++; - if(kha_SystemImpl.gl2) { - if(files[i].indexOf("-webgl2") >= 0 || files[i].indexOf("runtime-string") >= 0) { - kha_SystemImpl.gl.shaderSource(s,shader.sources[i]); - break; - } - } else { - if(!highpSupported && files[i].indexOf("-relaxed") >= 0) { - kha_SystemImpl.gl.shaderSource(s,shader.sources[i]); - break; - } - if(highpSupported && files[i].indexOf("-relaxed") < 0) { - kha_SystemImpl.gl.shaderSource(s,shader.sources[i]); - break; - } - } - } - kha_SystemImpl.gl.compileShader(s); - if(!kha_SystemImpl.gl.getShaderParameter(s,35713)) { - throw new js__$Boot_HaxeError("Could not compile shader:\n" + kha_SystemImpl.gl.getShaderInfoLog(s)); - } - shader.shader = s; - } - ,getConstantLocation: function(name) { - var location = kha_SystemImpl.gl.getUniformLocation(this.program,name); - var type = 5126; - var count = kha_SystemImpl.gl.getProgramParameter(this.program,35718); - var _g1 = 0; - var _g = count; - while(_g1 < _g) { - var i = _g1++; - var info = kha_SystemImpl.gl.getActiveUniform(this.program,i); - if(info.name == name || info.name == name + "[0]") { - type = info.type; - break; - } - } - return new kha_js_graphics4_ConstantLocation(location,type); - } - ,getTextureUnit: function(name) { - var index = this.findTexture(name); - if(index < 0) { - var location = kha_SystemImpl.gl.getUniformLocation(this.program,name); - index = this.textures.length; - this.textureValues.push(location); - this.textures.push(name); - } - return new kha_js_graphics4_TextureUnit(index); - } - ,findTexture: function(name) { - var _g1 = 0; - var _g = this.textures.length; - while(_g1 < _g) { - var index = _g1++; - if(this.textures[index] == name) { - return index; - } - } - return -1; - } - ,__class__: kha_graphics4_PipelineState -}); -var kha_graphics4_StencilAction = $hxClasses["kha.graphics4.StencilAction"] = { __ename__ : true, __constructs__ : ["Keep","Zero","Replace","Increment","IncrementWrap","Decrement","DecrementWrap","Invert"] }; -kha_graphics4_StencilAction.Keep = ["Keep",0]; -kha_graphics4_StencilAction.Keep.toString = $estr; -kha_graphics4_StencilAction.Keep.__enum__ = kha_graphics4_StencilAction; -kha_graphics4_StencilAction.Zero = ["Zero",1]; -kha_graphics4_StencilAction.Zero.toString = $estr; -kha_graphics4_StencilAction.Zero.__enum__ = kha_graphics4_StencilAction; -kha_graphics4_StencilAction.Replace = ["Replace",2]; -kha_graphics4_StencilAction.Replace.toString = $estr; -kha_graphics4_StencilAction.Replace.__enum__ = kha_graphics4_StencilAction; -kha_graphics4_StencilAction.Increment = ["Increment",3]; -kha_graphics4_StencilAction.Increment.toString = $estr; -kha_graphics4_StencilAction.Increment.__enum__ = kha_graphics4_StencilAction; -kha_graphics4_StencilAction.IncrementWrap = ["IncrementWrap",4]; -kha_graphics4_StencilAction.IncrementWrap.toString = $estr; -kha_graphics4_StencilAction.IncrementWrap.__enum__ = kha_graphics4_StencilAction; -kha_graphics4_StencilAction.Decrement = ["Decrement",5]; -kha_graphics4_StencilAction.Decrement.toString = $estr; -kha_graphics4_StencilAction.Decrement.__enum__ = kha_graphics4_StencilAction; -kha_graphics4_StencilAction.DecrementWrap = ["DecrementWrap",6]; -kha_graphics4_StencilAction.DecrementWrap.toString = $estr; -kha_graphics4_StencilAction.DecrementWrap.__enum__ = kha_graphics4_StencilAction; -kha_graphics4_StencilAction.Invert = ["Invert",7]; -kha_graphics4_StencilAction.Invert.toString = $estr; -kha_graphics4_StencilAction.Invert.__enum__ = kha_graphics4_StencilAction; -var kha_graphics4_TessellationControlShader = function(source,file) { -}; -$hxClasses["kha.graphics4.TessellationControlShader"] = kha_graphics4_TessellationControlShader; -kha_graphics4_TessellationControlShader.__name__ = true; -kha_graphics4_TessellationControlShader.prototype = { - 'delete': function() { - } - ,__class__: kha_graphics4_TessellationControlShader -}; -var kha_graphics4_TessellationEvaluationShader = function(source,file) { -}; -$hxClasses["kha.graphics4.TessellationEvaluationShader"] = kha_graphics4_TessellationEvaluationShader; -kha_graphics4_TessellationEvaluationShader.__name__ = true; -kha_graphics4_TessellationEvaluationShader.prototype = { - 'delete': function() { - } - ,__class__: kha_graphics4_TessellationEvaluationShader -}; -var kha_graphics4_TexDir = $hxClasses["kha.graphics4.TexDir"] = { __ename__ : true, __constructs__ : ["U","V"] }; -kha_graphics4_TexDir.U = ["U",0]; -kha_graphics4_TexDir.U.toString = $estr; -kha_graphics4_TexDir.U.__enum__ = kha_graphics4_TexDir; -kha_graphics4_TexDir.V = ["V",1]; -kha_graphics4_TexDir.V.toString = $estr; -kha_graphics4_TexDir.V.__enum__ = kha_graphics4_TexDir; -var kha_graphics4_TextureAddressing = $hxClasses["kha.graphics4.TextureAddressing"] = { __ename__ : true, __constructs__ : ["Repeat","Mirror","Clamp"] }; -kha_graphics4_TextureAddressing.Repeat = ["Repeat",0]; -kha_graphics4_TextureAddressing.Repeat.toString = $estr; -kha_graphics4_TextureAddressing.Repeat.__enum__ = kha_graphics4_TextureAddressing; -kha_graphics4_TextureAddressing.Mirror = ["Mirror",1]; -kha_graphics4_TextureAddressing.Mirror.toString = $estr; -kha_graphics4_TextureAddressing.Mirror.__enum__ = kha_graphics4_TextureAddressing; -kha_graphics4_TextureAddressing.Clamp = ["Clamp",2]; -kha_graphics4_TextureAddressing.Clamp.toString = $estr; -kha_graphics4_TextureAddressing.Clamp.__enum__ = kha_graphics4_TextureAddressing; -var kha_graphics4_TextureFilter = $hxClasses["kha.graphics4.TextureFilter"] = { __ename__ : true, __constructs__ : ["PointFilter","LinearFilter","AnisotropicFilter"] }; -kha_graphics4_TextureFilter.PointFilter = ["PointFilter",0]; -kha_graphics4_TextureFilter.PointFilter.toString = $estr; -kha_graphics4_TextureFilter.PointFilter.__enum__ = kha_graphics4_TextureFilter; -kha_graphics4_TextureFilter.LinearFilter = ["LinearFilter",1]; -kha_graphics4_TextureFilter.LinearFilter.toString = $estr; -kha_graphics4_TextureFilter.LinearFilter.__enum__ = kha_graphics4_TextureFilter; -kha_graphics4_TextureFilter.AnisotropicFilter = ["AnisotropicFilter",2]; -kha_graphics4_TextureFilter.AnisotropicFilter.toString = $estr; -kha_graphics4_TextureFilter.AnisotropicFilter.__enum__ = kha_graphics4_TextureFilter; -var kha_graphics4_TextureFormat = $hxClasses["kha.graphics4.TextureFormat"] = { __ename__ : true, __constructs__ : ["RGBA32","L8","RGBA128","DEPTH16","RGBA64","A32","A16"] }; -kha_graphics4_TextureFormat.RGBA32 = ["RGBA32",0]; -kha_graphics4_TextureFormat.RGBA32.toString = $estr; -kha_graphics4_TextureFormat.RGBA32.__enum__ = kha_graphics4_TextureFormat; -kha_graphics4_TextureFormat.L8 = ["L8",1]; -kha_graphics4_TextureFormat.L8.toString = $estr; -kha_graphics4_TextureFormat.L8.__enum__ = kha_graphics4_TextureFormat; -kha_graphics4_TextureFormat.RGBA128 = ["RGBA128",2]; -kha_graphics4_TextureFormat.RGBA128.toString = $estr; -kha_graphics4_TextureFormat.RGBA128.__enum__ = kha_graphics4_TextureFormat; -kha_graphics4_TextureFormat.DEPTH16 = ["DEPTH16",3]; -kha_graphics4_TextureFormat.DEPTH16.toString = $estr; -kha_graphics4_TextureFormat.DEPTH16.__enum__ = kha_graphics4_TextureFormat; -kha_graphics4_TextureFormat.RGBA64 = ["RGBA64",4]; -kha_graphics4_TextureFormat.RGBA64.toString = $estr; -kha_graphics4_TextureFormat.RGBA64.__enum__ = kha_graphics4_TextureFormat; -kha_graphics4_TextureFormat.A32 = ["A32",5]; -kha_graphics4_TextureFormat.A32.toString = $estr; -kha_graphics4_TextureFormat.A32.__enum__ = kha_graphics4_TextureFormat; -kha_graphics4_TextureFormat.A16 = ["A16",6]; -kha_graphics4_TextureFormat.A16.toString = $estr; -kha_graphics4_TextureFormat.A16.__enum__ = kha_graphics4_TextureFormat; -var kha_graphics4_TextureUnit = function() { }; -$hxClasses["kha.graphics4.TextureUnit"] = kha_graphics4_TextureUnit; -kha_graphics4_TextureUnit.__name__ = true; -var kha_graphics4_Usage = $hxClasses["kha.graphics4.Usage"] = { __ename__ : true, __constructs__ : ["StaticUsage","DynamicUsage","ReadableUsage"] }; -kha_graphics4_Usage.StaticUsage = ["StaticUsage",0]; -kha_graphics4_Usage.StaticUsage.toString = $estr; -kha_graphics4_Usage.StaticUsage.__enum__ = kha_graphics4_Usage; -kha_graphics4_Usage.DynamicUsage = ["DynamicUsage",1]; -kha_graphics4_Usage.DynamicUsage.toString = $estr; -kha_graphics4_Usage.DynamicUsage.__enum__ = kha_graphics4_Usage; -kha_graphics4_Usage.ReadableUsage = ["ReadableUsage",2]; -kha_graphics4_Usage.ReadableUsage.toString = $estr; -kha_graphics4_Usage.ReadableUsage.__enum__ = kha_graphics4_Usage; -var kha_graphics4_VertexBuffer = function(vertexCount,structure,usage,instanceDataStepRate,canRead) { - if(canRead == null) { - canRead = false; - } - if(instanceDataStepRate == null) { - instanceDataStepRate = 0; - } - this.usage = usage; - this.instanceDataStepRate = instanceDataStepRate; - this.mySize = vertexCount; - this.myStride = 0; - var _g = 0; - var _g1 = structure.elements; - while(_g < _g1.length) { - var element = _g1[_g]; - ++_g; - var _g2 = element.data; - switch(_g2[1]) { - case 0: - this.myStride += 4; - break; - case 1: - this.myStride += 8; - break; - case 2: - this.myStride += 12; - break; - case 3: - this.myStride += 16; - break; - case 4: - this.myStride += 64; - break; - } - } - this.buffer = kha_SystemImpl.gl.createBuffer(); - var this1 = new Float32Array(vertexCount * this.myStride / 4 | 0); - this._data = this1; - this.sizes = []; - this.offsets = []; - this.sizes[structure.elements.length - 1] = 0; - this.offsets[structure.elements.length - 1] = 0; - var offset = 0; - var index = 0; - var _g3 = 0; - var _g11 = structure.elements; - while(_g3 < _g11.length) { - var element1 = _g11[_g3]; - ++_g3; - var size; - var _g21 = element1.data; - switch(_g21[1]) { - case 0: - size = 1; - break; - case 1: - size = 2; - break; - case 2: - size = 3; - break; - case 3: - size = 4; - break; - case 4: - size = 16; - break; - } - this.sizes[index] = size; - this.offsets[index] = offset; - var _g31 = element1.data; - switch(_g31[1]) { - case 0: - offset += 4; - break; - case 1: - offset += 8; - break; - case 2: - offset += 12; - break; - case 3: - offset += 16; - break; - case 4: - offset += 64; - break; - } - ++index; - } -}; -$hxClasses["kha.graphics4.VertexBuffer"] = kha_graphics4_VertexBuffer; -kha_graphics4_VertexBuffer.__name__ = true; -kha_graphics4_VertexBuffer.prototype = { - buffer: null - ,_data: null - ,mySize: null - ,myStride: null - ,sizes: null - ,offsets: null - ,usage: null - ,instanceDataStepRate: null - ,'delete': function() { - this._data = null; - kha_SystemImpl.gl.deleteBuffer(this.buffer); - } - ,lock: function(start,count) { - if(start == null) { - start = 0; - } - if(count == null) { - count = this.mySize; - } - return this._data.subarray(start * this.stride(),(start + count) * this.stride()); - } - ,unlock: function() { - kha_SystemImpl.gl.bindBuffer(34962,this.buffer); - kha_SystemImpl.gl.bufferData(34962,this._data,this.usage == kha_graphics4_Usage.DynamicUsage ? 35048 : 35044); - } - ,stride: function() { - return this.myStride; - } - ,count: function() { - return this.mySize; - } - ,set: function(offset) { - var ext = kha_SystemImpl.gl2 ? true : kha_SystemImpl.gl.getExtension("ANGLE_instanced_arrays"); - kha_SystemImpl.gl.bindBuffer(34962,this.buffer); - var attributesOffset = 0; - var _g1 = 0; - var _g = this.sizes.length; - while(_g1 < _g) { - var i = _g1++; - if(this.sizes[i] > 4) { - var size = this.sizes[i]; - var addonOffset = 0; - while(size > 0) { - kha_SystemImpl.gl.enableVertexAttribArray(offset + attributesOffset); - kha_SystemImpl.gl.vertexAttribPointer(offset + attributesOffset,4,5126,false,this.myStride,this.offsets[i] + addonOffset); - if(ext) { - if(kha_SystemImpl.gl2) { - kha_SystemImpl.gl.vertexAttribDivisor(offset + attributesOffset,this.instanceDataStepRate); - } else { - ext.vertexAttribDivisorANGLE(offset + attributesOffset,this.instanceDataStepRate); - } - } - size -= 4; - addonOffset += 16; - ++attributesOffset; - } - } else { - kha_SystemImpl.gl.enableVertexAttribArray(offset + attributesOffset); - kha_SystemImpl.gl.vertexAttribPointer(offset + attributesOffset,this.sizes[i],5126,false,this.myStride,this.offsets[i]); - if(ext) { - if(kha_SystemImpl.gl2) { - kha_SystemImpl.gl.vertexAttribDivisor(offset + attributesOffset,this.instanceDataStepRate); - } else { - ext.vertexAttribDivisorANGLE(offset + attributesOffset,this.instanceDataStepRate); - } - } - ++attributesOffset; - } - } - return attributesOffset; - } - ,__class__: kha_graphics4_VertexBuffer -}; -var kha_graphics4_VertexData = $hxClasses["kha.graphics4.VertexData"] = { __ename__ : true, __constructs__ : ["Float1","Float2","Float3","Float4","Float4x4"] }; -kha_graphics4_VertexData.Float1 = ["Float1",0]; -kha_graphics4_VertexData.Float1.toString = $estr; -kha_graphics4_VertexData.Float1.__enum__ = kha_graphics4_VertexData; -kha_graphics4_VertexData.Float2 = ["Float2",1]; -kha_graphics4_VertexData.Float2.toString = $estr; -kha_graphics4_VertexData.Float2.__enum__ = kha_graphics4_VertexData; -kha_graphics4_VertexData.Float3 = ["Float3",2]; -kha_graphics4_VertexData.Float3.toString = $estr; -kha_graphics4_VertexData.Float3.__enum__ = kha_graphics4_VertexData; -kha_graphics4_VertexData.Float4 = ["Float4",3]; -kha_graphics4_VertexData.Float4.toString = $estr; -kha_graphics4_VertexData.Float4.__enum__ = kha_graphics4_VertexData; -kha_graphics4_VertexData.Float4x4 = ["Float4x4",4]; -kha_graphics4_VertexData.Float4x4.toString = $estr; -kha_graphics4_VertexData.Float4x4.__enum__ = kha_graphics4_VertexData; -var kha_graphics4_VertexElement = function(name,data) { - this.name = name; - this.data = data; -}; -$hxClasses["kha.graphics4.VertexElement"] = kha_graphics4_VertexElement; -kha_graphics4_VertexElement.__name__ = true; -kha_graphics4_VertexElement.prototype = { - name: null - ,data: null - ,__class__: kha_graphics4_VertexElement -}; -var kha_graphics4_VertexShader = function(sources,files) { - this.sources = []; - var _g = 0; - while(_g < sources.length) { - var source = sources[_g]; - ++_g; - this.sources.push(source.toString()); - } - this.type = 35633; - this.shader = null; - this.files = files; -}; -$hxClasses["kha.graphics4.VertexShader"] = kha_graphics4_VertexShader; -kha_graphics4_VertexShader.__name__ = true; -kha_graphics4_VertexShader.fromSource = function(source) { - var shader = new kha_graphics4_VertexShader([],["runtime-string"]); - shader.sources.push(source); - return shader; -}; -kha_graphics4_VertexShader.prototype = { - sources: null - ,type: null - ,shader: null - ,files: null - ,'delete': function() { - kha_SystemImpl.gl.deleteShader(this.shader); - this.shader = null; - this.sources = null; - } - ,__class__: kha_graphics4_VertexShader -}; -var kha_graphics4_VertexStructure = function() { - this.elements = []; -}; -$hxClasses["kha.graphics4.VertexStructure"] = kha_graphics4_VertexStructure; -kha_graphics4_VertexStructure.__name__ = true; -kha_graphics4_VertexStructure.prototype = { - elements: null - ,add: function(name,data) { - this.elements.push(new kha_graphics4_VertexElement(name,data)); - } - ,size: function() { - return this.elements.length; - } - ,byteSize: function() { - var byteSize = 0; - var _g1 = 0; - var _g = this.elements.length; - while(_g1 < _g) { - var i = _g1++; - byteSize += this.dataByteSize(this.elements[i].data); - } - return byteSize; - } - ,dataByteSize: function(data) { - switch(data[1]) { - case 0: - return 4; - case 1: - return 8; - case 2: - return 12; - case 3: - return 16; - case 4: - return 64; - } - } - ,get: function(index) { - return this.elements[index]; - } - ,__class__: kha_graphics4_VertexStructure -}; -var kha_input_Gamepad = $hx_exports["kha"]["input"]["Gamepad"] = function(index,id) { - if(id == null) { - id = "unknown"; - } - if(index == null) { - index = 0; - } - this.index = index; - this.axisListeners = []; - this.buttonListeners = []; - kha_input_Gamepad.instances[index] = this; -}; -$hxClasses["kha.input.Gamepad"] = kha_input_Gamepad; -kha_input_Gamepad.__name__ = true; -kha_input_Gamepad.get = function(index) { - if(index == null) { - index = 0; - } - if(index >= kha_input_Gamepad.instances.length) { - return null; - } - return kha_input_Gamepad.instances[index]; -}; -kha_input_Gamepad.prototype = { - index: null - ,notify: function(axisListener,buttonListener) { - if(axisListener != null) { - this.axisListeners.push(axisListener); - } - if(buttonListener != null) { - this.buttonListeners.push(buttonListener); - } - } - ,remove: function(axisListener,buttonListener) { - if(axisListener != null) { - HxOverrides.remove(this.axisListeners,axisListener); - } - if(buttonListener != null) { - HxOverrides.remove(this.buttonListeners,buttonListener); - } - } - ,axisListeners: null - ,buttonListeners: null - ,id: null - ,get_id: function() { - return kha_SystemImpl.getGamepadId(this.index); - } - ,sendAxisEvent: function(axis,value) { - var _g = 0; - var _g1 = this.axisListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(axis,value); - } - } - ,sendButtonEvent: function(button,value) { - var _g = 0; - var _g1 = this.buttonListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(button,value); - } - } - ,__class__: kha_input_Gamepad -}; -var kha_network_Controller = function() { - this.__id = kha_network_ControllerBuilder.nextId++; - this._inputBuffer = new haxe_io_Bytes(new ArrayBuffer(1)); -}; -$hxClasses["kha.network.Controller"] = kha_network_Controller; -kha_network_Controller.__name__ = true; -kha_network_Controller.prototype = { - __id: null - ,_inputBufferIndex: null - ,_inputBuffer: null - ,_id: function() { - return this.__id; - } - ,_receive: function(bytes) { - } - ,__class__: kha_network_Controller -}; -var kha_input_Keyboard = $hx_exports["kha"]["input"]["Keyboard"] = function() { - kha_network_Controller.call(this); - this.downListeners = []; - this.upListeners = []; - kha_input_Keyboard.instance = this; -}; -$hxClasses["kha.input.Keyboard"] = kha_input_Keyboard; -kha_input_Keyboard.__name__ = true; -kha_input_Keyboard.get = function(num) { - if(num == null) { - num = 0; - } - return kha_SystemImpl.getKeyboard(num); -}; -kha_input_Keyboard.__super__ = kha_network_Controller; -kha_input_Keyboard.prototype = $extend(kha_network_Controller.prototype,{ - notify: function(downListener,upListener) { - if(downListener != null) { - this.downListeners.push(downListener); - } - if(upListener != null) { - this.upListeners.push(upListener); - } - } - ,remove: function(downListener,upListener) { - if(downListener != null) { - HxOverrides.remove(this.downListeners,downListener); - } - if(upListener != null) { - HxOverrides.remove(this.upListeners,upListener); - } - } - ,show: function() { - } - ,hide: function() { - } - ,downListeners: null - ,upListeners: null - ,sendDownEvent: function(key,$char) { - if(kha_network_Session.the() != null) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(6)); - bytes.setInt32(0,0); - bytes.b[4] = key[1] & 255; - var v = HxOverrides.cca($char,0); - bytes.b[5] = v & 255; - kha_network_Session.the().sendControllerUpdate(this._id(),bytes); - } - var _g = 0; - var _g1 = this.downListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(key,$char); - } - } - ,sendUpEvent: function(key,$char) { - if(kha_network_Session.the() != null) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(6)); - bytes.setInt32(0,1); - bytes.b[4] = key[1] & 255; - var v = HxOverrides.cca($char,0); - bytes.b[5] = v & 255; - kha_network_Session.the().sendControllerUpdate(this._id(),bytes); - } - var _g = 0; - var _g1 = this.upListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(key,$char); - } - } - ,_receive: function(bytes) { - var funcindex = bytes.getInt32(0); - if(funcindex == 0) { - var input0 = Type.createEnumIndex(kha_Key,bytes.b[4],null); - var input1 = String.fromCharCode(bytes.b[5]); - this.sendDownEvent(input0,input1); - return; - } - if(funcindex == 1) { - var input01 = Type.createEnumIndex(kha_Key,bytes.b[4],null); - var input11 = String.fromCharCode(bytes.b[5]); - this.sendUpEvent(input01,input11); - return; - } - } - ,__class__: kha_input_Keyboard -}); -var kha_input_Mouse = $hx_exports["kha"]["input"]["Mouse"] = function() { - kha_network_Controller.call(this); - kha_input_Mouse.instance = this; -}; -$hxClasses["kha.input.Mouse"] = kha_input_Mouse; -kha_input_Mouse.__name__ = true; -kha_input_Mouse.get = function(num) { - if(num == null) { - num = 0; - } - return kha_SystemImpl.getMouse(num); -}; -kha_input_Mouse.__super__ = kha_network_Controller; -kha_input_Mouse.prototype = $extend(kha_network_Controller.prototype,{ - notify: function(downListener,upListener,moveListener,wheelListener,leaveListener) { - this.notifyWindowed(0,downListener,upListener,moveListener,wheelListener,leaveListener); - } - ,remove: function(downListener,upListener,moveListener,wheelListener,leaveListener) { - this.removeWindowed(0,downListener,upListener,moveListener,wheelListener,leaveListener); - } - ,notifyWindowed: function(windowId,downListener,upListener,moveListener,wheelListener,leaveListener) { - if(downListener != null) { - if(this.windowDownListeners == null) { - this.windowDownListeners = []; - } - while(this.windowDownListeners.length <= windowId) this.windowDownListeners.push([]); - this.windowDownListeners[windowId].push(downListener); - } - if(upListener != null) { - if(this.windowUpListeners == null) { - this.windowUpListeners = []; - } - while(this.windowUpListeners.length <= windowId) this.windowUpListeners.push([]); - this.windowUpListeners[windowId].push(upListener); - } - if(moveListener != null) { - if(this.windowMoveListeners == null) { - this.windowMoveListeners = []; - } - while(this.windowMoveListeners.length <= windowId) this.windowMoveListeners.push([]); - this.windowMoveListeners[windowId].push(moveListener); - } - if(wheelListener != null) { - if(this.windowWheelListeners == null) { - this.windowWheelListeners = []; - } - while(this.windowWheelListeners.length <= windowId) this.windowWheelListeners.push([]); - this.windowWheelListeners[windowId].push(wheelListener); - } - if(leaveListener != null) { - if(this.windowLeaveListeners == null) { - this.windowLeaveListeners = []; - } - while(this.windowLeaveListeners.length <= windowId) this.windowLeaveListeners.push([]); - this.windowLeaveListeners[windowId].push(leaveListener); - } - } - ,removeWindowed: function(windowId,downListener,upListener,moveListener,wheelListener,leaveListener) { - if(downListener != null) { - if(this.windowDownListeners != null) { - if(windowId < this.windowDownListeners.length) { - HxOverrides.remove(this.windowDownListeners[windowId],downListener); - } else { - haxe_Log.trace("no downListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 88, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } else { - haxe_Log.trace("no downListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 91, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } - if(upListener != null) { - if(this.windowUpListeners != null) { - if(windowId < this.windowUpListeners.length) { - HxOverrides.remove(this.windowUpListeners[windowId],upListener); - } else { - haxe_Log.trace("no upListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 100, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } else { - haxe_Log.trace("no upListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 103, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } - if(moveListener != null) { - if(this.windowMoveListeners != null) { - if(windowId < this.windowMoveListeners.length) { - HxOverrides.remove(this.windowMoveListeners[windowId],moveListener); - } else { - haxe_Log.trace("no moveListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 112, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } else { - haxe_Log.trace("no moveListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 115, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } - if(wheelListener != null) { - if(this.windowWheelListeners != null) { - if(windowId < this.windowWheelListeners.length) { - HxOverrides.remove(this.windowWheelListeners[windowId],wheelListener); - } else { - haxe_Log.trace("no wheelListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 124, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } else { - haxe_Log.trace("no wheelListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 127, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } - if(leaveListener != null) { - if(this.windowLeaveListeners != null) { - if(windowId < this.windowLeaveListeners.length) { - HxOverrides.remove(this.windowLeaveListeners[windowId],leaveListener); - } else { - haxe_Log.trace("no leaveListeners for window \"" + windowId + "\" are registered",{ fileName : "Mouse.hx", lineNumber : 136, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } else { - haxe_Log.trace("no leaveListeners were ever registered",{ fileName : "Mouse.hx", lineNumber : 139, className : "kha.input.Mouse", methodName : "removeWindowed"}); - } - } - } - ,lock: function() { - } - ,unlock: function() { - } - ,canLock: function() { - return false; - } - ,isLocked: function() { - return false; - } - ,notifyOnLockChange: function(func,error) { - } - ,removeFromLockChange: function(func,error) { - } - ,hideSystemCursor: function() { - } - ,showSystemCursor: function() { - } - ,windowDownListeners: null - ,windowUpListeners: null - ,windowMoveListeners: null - ,windowWheelListeners: null - ,windowLeaveListeners: null - ,sendLeaveEvent: function(windowId) { - if(kha_network_Session.the() != null) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(8)); - bytes.setInt32(0,0); - bytes.setInt32(4,windowId); - kha_network_Session.the().sendControllerUpdate(this._id(),bytes); - } - if(this.windowLeaveListeners != null) { - var _g = 0; - var _g1 = this.windowLeaveListeners[windowId]; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(); - } - } - } - ,sendDownEvent: function(windowId,button,x,y) { - if(kha_network_Session.the() != null) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(20)); - bytes.setInt32(0,1); - bytes.setInt32(4,windowId); - bytes.setInt32(8,button); - bytes.setInt32(12,x); - bytes.setInt32(16,y); - kha_network_Session.the().sendControllerUpdate(this._id(),bytes); - } - if(this.windowDownListeners != null) { - var _g = 0; - var _g1 = this.windowDownListeners[windowId]; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(button,x,y); - } - } - } - ,sendUpEvent: function(windowId,button,x,y) { - if(kha_network_Session.the() != null) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(20)); - bytes.setInt32(0,2); - bytes.setInt32(4,windowId); - bytes.setInt32(8,button); - bytes.setInt32(12,x); - bytes.setInt32(16,y); - kha_network_Session.the().sendControllerUpdate(this._id(),bytes); - } - if(this.windowUpListeners != null) { - var _g = 0; - var _g1 = this.windowUpListeners[windowId]; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(button,x,y); - } - } - } - ,sendMoveEvent: function(windowId,x,y,movementX,movementY) { - if(kha_network_Session.the() != null) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(24)); - bytes.setInt32(0,3); - bytes.setInt32(4,windowId); - bytes.setInt32(8,x); - bytes.setInt32(12,y); - bytes.setInt32(16,movementX); - bytes.setInt32(20,movementY); - kha_network_Session.the().sendControllerUpdate(this._id(),bytes); - } - if(this.windowMoveListeners != null) { - var _g = 0; - var _g1 = this.windowMoveListeners[windowId]; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(x,y,movementX,movementY); - } - } - } - ,sendWheelEvent: function(windowId,delta) { - if(kha_network_Session.the() != null) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(12)); - bytes.setInt32(0,4); - bytes.setInt32(4,windowId); - bytes.setInt32(8,delta); - kha_network_Session.the().sendControllerUpdate(this._id(),bytes); - } - if(this.windowWheelListeners != null) { - var _g = 0; - var _g1 = this.windowWheelListeners[windowId]; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(delta); - } - } - } - ,_receive: function(bytes) { - var funcindex = bytes.getInt32(0); - if(funcindex == 0) { - var input0 = bytes.getInt32(4); - this.sendLeaveEvent(input0); - return; - } - if(funcindex == 1) { - var input01 = bytes.getInt32(4); - var input1 = bytes.getInt32(8); - var input2 = bytes.getInt32(12); - var input3 = bytes.getInt32(16); - this.sendDownEvent(input01,input1,input2,input3); - return; - } - if(funcindex == 2) { - var input02 = bytes.getInt32(4); - var input11 = bytes.getInt32(8); - var input21 = bytes.getInt32(12); - var input31 = bytes.getInt32(16); - this.sendUpEvent(input02,input11,input21,input31); - return; - } - if(funcindex == 3) { - var input03 = bytes.getInt32(4); - var input12 = bytes.getInt32(8); - var input22 = bytes.getInt32(12); - var input32 = bytes.getInt32(16); - var input4 = bytes.getInt32(20); - this.sendMoveEvent(input03,input12,input22,input32,input4); - return; - } - if(funcindex == 4) { - var input04 = bytes.getInt32(4); - var input13 = bytes.getInt32(8); - this.sendWheelEvent(input04,input13); - return; - } - } - ,__class__: kha_input_Mouse -}); -var kha_input_MouseImpl = function() { - kha_input_Mouse.call(this); -}; -$hxClasses["kha.input.MouseImpl"] = kha_input_MouseImpl; -kha_input_MouseImpl.__name__ = true; -kha_input_MouseImpl.__super__ = kha_input_Mouse; -kha_input_MouseImpl.prototype = $extend(kha_input_Mouse.prototype,{ - hideSystemCursor: function() { - kha_SystemImpl.khanvas.style.cursor = "none"; - } - ,showSystemCursor: function() { - kha_SystemImpl.khanvas.style.cursor = "default"; - } - ,_receive: function(bytes) { - var funcindex = bytes.getInt32(0); - } - ,__class__: kha_input_MouseImpl -}); -var kha_input_Surface = $hx_exports["kha"]["input"]["Surface"] = function() { - this.touchStartListeners = []; - this.touchEndListeners = []; - this.moveListeners = []; - kha_input_Surface.instance = this; -}; -$hxClasses["kha.input.Surface"] = kha_input_Surface; -kha_input_Surface.__name__ = true; -kha_input_Surface.get = function(num) { - if(num == null) { - num = 0; - } - if(num != 0) { - return null; - } - return kha_input_Surface.instance; -}; -kha_input_Surface.prototype = { - notify: function(touchStartListener,touchEndListener,moveListener) { - if(touchStartListener != null) { - this.touchStartListeners.push(touchStartListener); - } - if(touchEndListener != null) { - this.touchEndListeners.push(touchEndListener); - } - if(moveListener != null) { - this.moveListeners.push(moveListener); - } - } - ,remove: function(touchStartListener,touchEndListener,moveListener) { - if(touchStartListener != null) { - HxOverrides.remove(this.touchStartListeners,touchStartListener); - } - if(touchEndListener != null) { - HxOverrides.remove(this.touchEndListeners,touchEndListener); - } - if(moveListener != null) { - this.moveListeners.push(moveListener); - } - } - ,touchStartListeners: null - ,touchEndListeners: null - ,moveListeners: null - ,sendTouchStartEvent: function(index,x,y) { - var _g = 0; - var _g1 = this.touchStartListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(index,x,y); - } - } - ,sendTouchEndEvent: function(index,x,y) { - var _g = 0; - var _g1 = this.touchEndListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(index,x,y); - } - } - ,sendMoveEvent: function(index,x,y) { - var _g = 0; - var _g1 = this.moveListeners; - while(_g < _g1.length) { - var listener = _g1[_g]; - ++_g; - listener(index,x,y); - } - } - ,__class__: kha_input_Surface -}; -var kha_internal_BytesBlob = function(bytes) { - this.myFirstLine = true; - this.bytes = bytes; - this.buffer = []; -}; -$hxClasses["kha.internal.BytesBlob"] = kha_internal_BytesBlob; -kha_internal_BytesBlob.__name__ = true; -kha_internal_BytesBlob.__interfaces__ = [kha_Resource]; -kha_internal_BytesBlob.fromBytes = function(bytes) { - return new kha_internal_BytesBlob(bytes); -}; -kha_internal_BytesBlob.alloc = function(size) { - return new kha_internal_BytesBlob(new haxe_io_Bytes(new ArrayBuffer(size))); -}; -kha_internal_BytesBlob.readF32 = function(i) { - var sign = (i & -2147483648) == 0 ? 1 : -1; - var exp = i >> 23 & 255; - var man = i & 8388607; - switch(exp) { - case 0: - return 0.0; - case 255: - if(man != 0) { - return NaN; - } else if(sign > 0) { - return Infinity; - } else { - return -Infinity; - } - break; - default: - return sign * ((man + 8388608) / 8388608.0) * Math.pow(2,exp - 127); - } -}; -kha_internal_BytesBlob.bit = function(value,position) { - var b = (value >>> position & 1) == 1; - if(b) { - var a = 3; - ++a; - return true; - } else { - var c = 4; - --c; - return false; - } -}; -kha_internal_BytesBlob.prototype = { - bytes: null - ,buffer: null - ,myFirstLine: null - ,sub: function(start,length) { - return new kha_internal_BytesBlob(this.bytes.sub(start,length)); - } - ,length: null - ,get_length: function() { - return this.bytes.length; - } - ,writeU8: function(position,value) { - this.bytes.b[position] = value & 255; - } - ,readU8: function(position) { - var $byte = this.bytes.b[position]; - ++position; - return $byte; - } - ,readS8: function(position) { - var $byte = this.bytes.b[position]; - ++position; - var sign = ($byte & 128) == 0 ? 1 : -1; - $byte &= 127; - return sign * $byte; - } - ,readU16BE: function(position) { - var first = this.bytes.b[position]; - var second = this.bytes.b[position + 1]; - position += 2; - return first * 256 + second; - } - ,readU16LE: function(position) { - var first = this.bytes.b[position]; - var second = this.bytes.b[position + 1]; - position += 2; - return second * 256 + first; - } - ,readU32LE: function(position) { - var fourth = this.bytes.b[position]; - var third = this.bytes.b[position + 1]; - var second = this.bytes.b[position + 2]; - var first = this.bytes.b[position + 3]; - position += 4; - return fourth + third * 256 + second * 256 * 256 + first * 256 * 256 * 256; - } - ,readU32BE: function(position) { - var fourth = this.bytes.b[position]; - var third = this.bytes.b[position + 1]; - var second = this.bytes.b[position + 2]; - var first = this.bytes.b[position + 3]; - position += 4; - return first + second * 256 + third * 256 * 256 + fourth * 256 * 256 * 256; - } - ,readS16BE: function(position) { - var first = this.bytes.b[position]; - var second = this.bytes.b[position + 1]; - position += 2; - var sign = (first & 128) == 0 ? 1 : -1; - first &= 127; - if(sign == -1) { - return -32767 + first * 256 + second; - } else { - return first * 256 + second; - } - } - ,readS16LE: function(position) { - var first = this.bytes.b[position]; - var second = this.bytes.b[position + 1]; - var sign = (second & 128) == 0 ? 1 : -1; - second &= 127; - position += 2; - if(sign == -1) { - return -32767 + second * 256 + first; - } else { - return second * 256 + first; - } - } - ,readS32LE: function(position) { - var fourth = this.bytes.b[position]; - var third = this.bytes.b[position + 1]; - var second = this.bytes.b[position + 2]; - var first = this.bytes.b[position + 3]; - var sign = (first & 128) == 0 ? 1 : -1; - first &= 127; - position += 4; - if(sign == -1) { - return -2147483647 + fourth + third * 256 + second * 256 * 256 + first * 256 * 256 * 256; - } else { - return fourth + third * 256 + second * 256 * 256 + first * 256 * 256 * 256; - } - } - ,readS32BE: function(position) { - var fourth = this.bytes.b[position]; - var third = this.bytes.b[position + 1]; - var second = this.bytes.b[position + 2]; - var first = this.bytes.b[position + 3]; - var sign = (fourth & 128) == 0 ? 1 : -1; - fourth &= 127; - position += 4; - if(sign == -1) { - return -2147483647 + first + second * 256 + third * 256 * 256 + fourth * 256 * 256 * 256; - } - return first + second * 256 + third * 256 * 256 + fourth * 256 * 256 * 256; - } - ,readF32LE: function(position) { - return kha_internal_BytesBlob.readF32(this.readS32LE(position)); - } - ,readF32BE: function(position) { - return kha_internal_BytesBlob.readF32(this.readS32BE(position)); - } - ,toString: function() { - return this.bytes.toString(); - } - ,readUtf8Char: function(position) { - if(position.value >= this.get_length()) { - return -1; - } - var c = this.readU8(position.value); - ++position.value; - var value = 0; - if(!kha_internal_BytesBlob.bit(c,7)) { - value = c; - } else if(kha_internal_BytesBlob.bit(c,7) && kha_internal_BytesBlob.bit(c,6) && !kha_internal_BytesBlob.bit(c,5)) { - var a = c & 31; - var c2 = this.readU8(position.value); - ++position.value; - var b = c2 & 63; - value = a << 6 | b; - } else if(kha_internal_BytesBlob.bit(c,7) && kha_internal_BytesBlob.bit(c,6) && kha_internal_BytesBlob.bit(c,5) && !kha_internal_BytesBlob.bit(c,4)) { - position.value += 2; - } else if(kha_internal_BytesBlob.bit(c,7) && kha_internal_BytesBlob.bit(c,6) && kha_internal_BytesBlob.bit(c,5) && kha_internal_BytesBlob.bit(c,4) && !kha_internal_BytesBlob.bit(c,3)) { - position.value += 3; - } - return value; - } - ,readUtf8Block: function(position) { - var bufferindex = 0; - if(position.value >= this.get_length()) { - return ""; - } - while(bufferindex < 2000) { - var c = this.readUtf8Char(position); - if(c < 0) { - break; - } - this.buffer[bufferindex] = c; - ++bufferindex; - } - if(this.myFirstLine) { - this.myFirstLine = false; - if(bufferindex > 2 && this.buffer[0] == 239 && this.buffer[1] == 187 && this.buffer[2] == 191) { - var chars = []; - var _g1 = 3; - var _g = bufferindex - 3; - while(_g1 < _g) { - var i = _g1++; - chars[i - 3] = this.buffer[i]; - } - return this.toText(chars,bufferindex - 3); - } - } - var chars1 = []; - var _g11 = 0; - var _g2 = bufferindex; - while(_g11 < _g2) { - var i1 = _g11++; - chars1[i1] = this.buffer[i1]; - } - return this.toText(chars1,bufferindex); - } - ,toText: function(chars,length) { - var value = ""; - var _g1 = 0; - var _g = length; - while(_g1 < _g) { - var i = _g1++; - value += String.fromCharCode(chars[i]); - } - return value; - } - ,readUtf8String: function() { - var text = ""; - var position = { value : 0}; - while(position.value < this.get_length()) text += this.readUtf8Block(position); - return text; - } - ,toBytes: function() { - return this.bytes; - } - ,unload: function() { - this.bytes = null; - } - ,__class__: kha_internal_BytesBlob -}; -var kha_internal_HdrFormat = function() { -}; -$hxClasses["kha.internal.HdrFormat"] = kha_internal_HdrFormat; -kha_internal_HdrFormat.__name__ = true; -kha_internal_HdrFormat.readBuf = function(buf) { - var bytesRead = 0; - while(true) { - buf[bytesRead++] = kha_internal_HdrFormat.buffer[kha_internal_HdrFormat.fileOffset] & 255; - if(!(++kha_internal_HdrFormat.fileOffset < kha_internal_HdrFormat.bufferLength && bytesRead < buf.length)) { - break; - } - } - return bytesRead; -}; -kha_internal_HdrFormat.readBufOffset = function(buf,offset,length) { - var bytesRead = 0; - while(true) { - buf[offset + bytesRead++] = kha_internal_HdrFormat.buffer[kha_internal_HdrFormat.fileOffset] & 255; - if(!(++kha_internal_HdrFormat.fileOffset < kha_internal_HdrFormat.bufferLength && bytesRead < length)) { - break; - } - } - return bytesRead; -}; -kha_internal_HdrFormat.readPixelsRaw = function(buffer,data,offset,numpixels) { - var numExpected = 4 * numpixels; - var numRead = kha_internal_HdrFormat.readBufOffset(data,offset,numExpected); - if(numRead < numExpected) { - haxe_Log.trace("Error reading raw pixels: got " + numRead + " bytes, expected " + numExpected,{ fileName : "HdrFormat.hx", lineNumber : 43, className : "kha.internal.HdrFormat", methodName : "readPixelsRaw"}); - return; - } -}; -kha_internal_HdrFormat.readPixelsRawRLE = function(buffer,data,offset,scanline_width,num_scanlines) { - var this1 = new Uint8Array(4); - var rgbe = this1; - var scanline_buffer = null; - var ptr; - var ptr_end; - var count; - var this2 = new Uint8Array(2); - var buf = this2; - var bufferLength = buffer.length; - while(num_scanlines > 0) { - if(kha_internal_HdrFormat.readBuf(rgbe) < rgbe.length) { - haxe_Log.trace("Error reading bytes: expected " + rgbe.length,{ fileName : "HdrFormat.hx", lineNumber : 59, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"}); - return; - } - if(rgbe[0] != 2 || rgbe[1] != 2 || (rgbe[2] & 128) != 0) { - data[offset++] = rgbe[0] & 255; - data[offset++] = rgbe[1] & 255; - data[offset++] = rgbe[2] & 255; - data[offset++] = rgbe[3] & 255; - kha_internal_HdrFormat.readPixelsRaw(buffer,data,offset,scanline_width * num_scanlines - 1); - return; - } - if(((rgbe[2] & 255) << 8 | rgbe[3] & 255) != scanline_width) { - haxe_Log.trace("Wrong scanline width " + ((rgbe[2] & 255) << 8 | rgbe[3] & 255) + ", expected " + scanline_width,{ fileName : "HdrFormat.hx", lineNumber : 74, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"}); - return; - } - if(scanline_buffer == null) { - var this3 = new Uint8Array(4 * scanline_width); - scanline_buffer = this3; - } - ptr = 0; - var _g = 0; - while(_g < 4) { - var i = _g++; - ptr_end = (i + 1) * scanline_width; - while(ptr < ptr_end) { - if(kha_internal_HdrFormat.readBuf(buf) < buf.length) { - haxe_Log.trace("Error reading 2-byte buffer",{ fileName : "HdrFormat.hx", lineNumber : 88, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"}); - return; - } - if((buf[0] & 255) > 128) { - count = (buf[0] & 255) - 128; - if(count == 0 || count > ptr_end - ptr) { - haxe_Log.trace("Bad scanline data",{ fileName : "HdrFormat.hx", lineNumber : 95, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"}); - return; - } - while(count-- > 0) scanline_buffer[ptr++] = buf[1] & 255; - } else { - count = buf[0] & 255; - if(count == 0 || count > ptr_end - ptr) { - haxe_Log.trace("Bad scanline data",{ fileName : "HdrFormat.hx", lineNumber : 106, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"}); - return; - } - scanline_buffer[ptr++] = buf[1] & 255; - if(--count > 0) { - if(kha_internal_HdrFormat.readBufOffset(scanline_buffer,ptr,count) < count) { - haxe_Log.trace("Error reading non-run data",{ fileName : "HdrFormat.hx", lineNumber : 112, className : "kha.internal.HdrFormat", methodName : "readPixelsRawRLE"}); - return; - } - ptr += count; - } - } - } - } - var _g1 = 0; - var _g2 = scanline_width; - while(_g1 < _g2) { - var i1 = _g1++; - data[offset] = scanline_buffer[i1] & 255; - data[offset + 1] = scanline_buffer[i1 + scanline_width] & 255; - data[offset + 2] = scanline_buffer[i1 + 2 * scanline_width] & 255; - data[offset + 3] = scanline_buffer[i1 + 3 * scanline_width] & 255; - offset += 4; - } - --num_scanlines; - } -}; -kha_internal_HdrFormat.readLine = function() { - var buf = ""; - while(true) { - var b = kha_internal_HdrFormat.buffer[kha_internal_HdrFormat.fileOffset]; - if(b == 10) { - ++kha_internal_HdrFormat.fileOffset; - break; - } - buf += String.fromCharCode(b); - if(!(++kha_internal_HdrFormat.fileOffset < kha_internal_HdrFormat.bufferLength)) { - break; - } - } - return buf; -}; -kha_internal_HdrFormat.parse = function(bytes) { - kha_internal_HdrFormat.buffer = haxe_io__$UInt8Array_UInt8Array_$Impl_$.fromBytes(bytes); - kha_internal_HdrFormat.bufferLength = kha_internal_HdrFormat.buffer.length; - kha_internal_HdrFormat.fileOffset = 0; - var width = 0; - var height = 0; - var exposure = 1.0; - var gamma = 1.0; - var rle = false; - var _g = 0; - while(_g < 20) { - var i = _g++; - var line = kha_internal_HdrFormat.readLine(); - if(kha_internal_HdrFormat.formatPattern.match(line)) { - rle = true; - } else if(kha_internal_HdrFormat.exposurePattern.match(line)) { - exposure = parseFloat(kha_internal_HdrFormat.exposurePattern.matched(1)); - } else if(kha_internal_HdrFormat.widthHeightPattern.match(line)) { - height = Std.parseInt(kha_internal_HdrFormat.widthHeightPattern.matched(1)); - width = Std.parseInt(kha_internal_HdrFormat.widthHeightPattern.matched(2)); - break; - } - } - if(!rle) { - haxe_Log.trace("File is not run length encoded!",{ fileName : "HdrFormat.hx", lineNumber : 175, className : "kha.internal.HdrFormat", methodName : "parse"}); - return null; - } - var this1 = new Uint8Array(width * height * 4); - var data = this1; - var scanline_width = width; - var num_scanlines = height; - kha_internal_HdrFormat.readPixelsRawRLE(kha_internal_HdrFormat.buffer,data,0,scanline_width,num_scanlines); - var this2 = new Float32Array(width * height * 4); - var floatData = this2; - var offset = 0; - while(offset < data.length) { - var r = data[offset] / 255; - var g = data[offset + 1] / 255; - var b = data[offset + 2] / 255; - var e = data[offset + 3]; - var f = Math.pow(2.0,e - 128.0); - r *= f; - g *= f; - b *= f; - floatData[offset] = r; - floatData[offset + 1] = g; - floatData[offset + 2] = b; - floatData[offset + 3] = 1.0; - offset += 4; - } - return { width : width, height : height, data : floatData}; -}; -kha_internal_HdrFormat.prototype = { - __class__: kha_internal_HdrFormat -}; -var kha_js_AEAudioChannel = function(element) { - this.stopped = false; - this.element = element; -}; -$hxClasses["kha.js.AEAudioChannel"] = kha_js_AEAudioChannel; -kha_js_AEAudioChannel.__name__ = true; -kha_js_AEAudioChannel.__interfaces__ = [kha_audio1_AudioChannel]; -kha_js_AEAudioChannel.prototype = { - element: null - ,stopped: null - ,play: function() { - this.stopped = false; - if(kha_SystemImpl.mobile) { - if(kha_SystemImpl.insideInputEvent) { - this.element.play(); - kha_SystemImpl.mobileAudioPlaying = true; - } else if(kha_SystemImpl.mobileAudioPlaying) { - this.element.play(); - } else { - kha_js_AEAudioChannel.todo.push(this); - } - } else { - this.element.play(); - } - } - ,pause: function() { - try { - this.element.pause(); - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - haxe_Log.trace(e,{ fileName : "AEAudioChannel.hx", lineNumber : 39, className : "kha.js.AEAudioChannel", methodName : "pause"}); - } - } - ,stop: function() { - try { - this.element.pause(); - this.element.currentTime = 0; - this.stopped = true; - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - haxe_Log.trace(e,{ fileName : "AEAudioChannel.hx", lineNumber : 50, className : "kha.js.AEAudioChannel", methodName : "stop"}); - } - } - ,length: null - ,get_length: function() { - if(isFinite(this.element.duration)) { - return this.element.duration; - } else { - return Infinity; - } - } - ,position: null - ,get_position: function() { - return this.element.currentTime; - } - ,get_volume: function() { - return this.element.volume; - } - ,set_volume: function(value) { - return this.element.volume = value; - } - ,finished: null - ,get_finished: function() { - if(!this.stopped) { - return this.get_position() >= this.get_length(); - } else { - return true; - } - } - ,__class__: kha_js_AEAudioChannel -}; -var kha_js_AudioElementAudio = function() { }; -$hxClasses["kha.js.AudioElementAudio"] = kha_js_AudioElementAudio; -kha_js_AudioElementAudio.__name__ = true; -kha_js_AudioElementAudio._compile = function() { -}; -kha_js_AudioElementAudio.play = function(sound,loop) { - if(loop == null) { - loop = false; - } - return kha_js_AudioElementAudio.stream(sound,loop); -}; -kha_js_AudioElementAudio.stream = function(sound,loop) { - if(loop == null) { - loop = false; - } - sound.element.loop = loop; - var channel = new kha_js_AEAudioChannel(sound.element); - channel.play(); - return channel; -}; -var kha_js_CanvasGraphics = function(canvas) { - kha_graphics2_Graphics.call(this); - this.canvas = canvas; - kha_js_CanvasGraphics.instance = this; - this.myColor = kha__$Color_Color_$Impl_$.fromBytes(0,0,0); - canvas.save(); -}; -$hxClasses["kha.js.CanvasGraphics"] = kha_js_CanvasGraphics; -kha_js_CanvasGraphics.__name__ = true; -kha_js_CanvasGraphics.stringWidth = function(font,text) { - if(kha_js_CanvasGraphics.instance == null) { - return 5 * text.length; - } else { - kha_js_CanvasGraphics.instance.set_font(font); - return kha_js_CanvasGraphics.instance.canvas.measureText(text).width; - } -}; -kha_js_CanvasGraphics.__super__ = kha_graphics2_Graphics; -kha_js_CanvasGraphics.prototype = $extend(kha_graphics2_Graphics.prototype,{ - canvas: null - ,webfont: null - ,myColor: null - ,scaleQuality: null - ,begin: function(clear,clearColor) { - if(clear == null) { - clear = true; - } - if(clear) { - this.clear(clearColor); - } - } - ,clear: function(color) { - if(color == null) { - color = 0; - } - this.canvas.strokeStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")"; - this.canvas.fillStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")"; - if((color >>> 24) * 0.00392156862745098 == 0) { - this.canvas.clearRect(0,0,this.canvas.canvas.width,this.canvas.canvas.height); - } else { - this.canvas.fillRect(0,0,this.canvas.canvas.width,this.canvas.canvas.height); - } - this.set_color(this.myColor); - } - ,end: function() { - } - ,drawImage: function(img,x,y) { - this.canvas.globalAlpha = this.get_opacity(); - this.canvas.drawImage((js_Boot.__cast(img , kha_CanvasImage)).image,x,y); - this.canvas.globalAlpha = 1; - } - ,drawScaledSubImage: function(image,sx,sy,sw,sh,dx,dy,dw,dh) { - this.canvas.globalAlpha = this.get_opacity(); - try { - if(dw < 0 || dh < 0) { - this.canvas.save(); - this.canvas.translate(dx,dy); - var x = 0.0; - var y = 0.0; - if(dw < 0) { - this.canvas.scale(-1,1); - x = -dw; - } - if(dh < 0) { - this.canvas.scale(1,-1); - y = -dh; - } - this.canvas.drawImage((js_Boot.__cast(image , kha_CanvasImage)).image,sx,sy,sw,sh,x,y,dw,dh); - this.canvas.restore(); - } else { - this.canvas.drawImage((js_Boot.__cast(image , kha_CanvasImage)).image,sx,sy,sw,sh,dx,dy,dw,dh); - } - } catch( ex ) { - } - this.canvas.globalAlpha = 1; - } - ,set_color: function(color) { - this.myColor = color; - this.canvas.strokeStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")"; - this.canvas.fillStyle = "rgba(" + ((color & 16711680) >>> 16) + "," + ((color & 65280) >>> 8) + "," + (color & 255) + "," + (color >>> 24) * 0.00392156862745098 + ")"; - return color; - } - ,get_color: function() { - return this.myColor; - } - ,get_imageScaleQuality: function() { - return this.scaleQuality; - } - ,set_imageScaleQuality: function(value) { - if(value == kha_graphics2_ImageScaleQuality.Low) { - this.canvas.mozImageSmoothingEnabled = false; - this.canvas.webkitImageSmoothingEnabled = false; - this.canvas.msImageSmoothingEnabled = false; - this.canvas.imageSmoothingEnabled = false; - } else { - this.canvas.mozImageSmoothingEnabled = true; - this.canvas.webkitImageSmoothingEnabled = true; - this.canvas.msImageSmoothingEnabled = true; - this.canvas.imageSmoothingEnabled = true; - } - return this.scaleQuality = value; - } - ,drawRect: function(x,y,width,height,strength) { - if(strength == null) { - strength = 1.0; - } - this.canvas.beginPath(); - var oldStrength = this.canvas.lineWidth; - this.canvas.lineWidth = Math.round(strength); - this.canvas.rect(x,y,width,height); - this.canvas.stroke(); - this.canvas.lineWidth = oldStrength; - } - ,fillRect: function(x,y,width,height) { - var tmp = this.get_opacity(); - this.canvas.globalAlpha = tmp * ((this.myColor >>> 24) * 0.00392156862745098); - this.canvas.fillRect(x,y,width,height); - this.canvas.globalAlpha = this.get_opacity(); - } - ,drawCircle: function(cx,cy,radius,strength) { - if(strength == null) { - strength = 1.0; - } - this.canvas.beginPath(); - var oldStrength = this.canvas.lineWidth; - this.canvas.lineWidth = Math.round(strength); - this.canvas.arc(cx,cy,radius,0,2 * Math.PI,false); - this.canvas.stroke(); - this.canvas.lineWidth = oldStrength; - } - ,fillCircle: function(cx,cy,radius) { - this.canvas.beginPath(); - this.canvas.arc(cx,cy,radius,0,2 * Math.PI,false); - this.canvas.fill(); - } - ,drawString: function(text,x,y) { - var image = this.webfont.getImage(this.get_fontSize(),this.myColor); - if(image.width > 0) { - var xpos = x; - var ypos = y; - var _g1 = 0; - var _g = text.length; - while(_g1 < _g) { - var i = _g1++; - var q = this.webfont.kravur._get(this.get_fontSize()).getBakedQuad(HxOverrides.cca(text,i) - 32,xpos,ypos); - if(q != null) { - if(q.s1 - q.s0 > 0 && q.t1 - q.t0 > 0 && q.x1 - q.x0 > 0 && q.y1 - q.y0 > 0) { - this.canvas.drawImage(image,q.s0 * image.width,q.t0 * image.height,(q.s1 - q.s0) * image.width,(q.t1 - q.t0) * image.height,q.x0,q.y0,q.x1 - q.x0,q.y1 - q.y0); - } - xpos += q.xadvance; - } - } - } - } - ,set_font: function(font) { - this.webfont = js_Boot.__cast(font , kha_js_Font); - return this.webfont; - } - ,get_font: function() { - return this.webfont; - } - ,drawLine: function(x1,y1,x2,y2,strength) { - if(strength == null) { - strength = 1.0; - } - this.canvas.beginPath(); - var oldWith = this.canvas.lineWidth; - this.canvas.lineWidth = Math.round(strength); - this.canvas.moveTo(x1,y1); - this.canvas.lineTo(x2,y2); - this.canvas.moveTo(0,0); - this.canvas.stroke(); - this.canvas.lineWidth = oldWith; - } - ,fillTriangle: function(x1,y1,x2,y2,x3,y3) { - this.canvas.beginPath(); - this.canvas.closePath(); - this.canvas.fill(); - } - ,scissor: function(x,y,width,height) { - this.canvas.beginPath(); - this.canvas.rect(x,y,width,height); - this.canvas.clip(); - } - ,disableScissor: function() { - this.canvas.restore(); - } - ,drawVideo: function(video,x,y,width,height) { - this.canvas.drawImage((js_Boot.__cast(video , kha_js_Video)).element,x,y,width,height); - } - ,setTransformation: function(transformation) { - this.canvas.setTransform(transformation._00,transformation._01,transformation._10,transformation._11,transformation._20,transformation._21); - } - ,__class__: kha_js_CanvasGraphics -}); -var kha_js_URLParser = function(url) { - this._parts = null; - this._parts = ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"]; - this.url = url; - var r = new EReg("^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?://)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)",""); - r.match(url); - var _g1 = 0; - var _g = this._parts.length; - while(_g1 < _g) { - var i = _g1++; - this[this._parts[i]] = r.matched(i); - } -}; -$hxClasses["kha.js.URLParser"] = kha_js_URLParser; -kha_js_URLParser.__name__ = true; -kha_js_URLParser.parse = function(url) { - return new kha_js_URLParser(url); -}; -kha_js_URLParser.prototype = { - url: null - ,source: null - ,protocol: null - ,authority: null - ,userInfo: null - ,user: null - ,password: null - ,host: null - ,port: null - ,relative: null - ,path: null - ,directory: null - ,file: null - ,query: null - ,anchor: null - ,_parts: null - ,toString: function() { - var s = "For Url -> " + this.url + "\n"; - var _g1 = 0; - var _g = this._parts.length; - while(_g1 < _g) { - var i = _g1++; - s += this._parts[i] + ": " + Std.string(Reflect.field(this,this._parts[i])) + (i == this._parts.length - 1 ? "" : "\n"); - } - return s; - } - ,__class__: kha_js_URLParser -}; -var kha_js_EnvironmentVariables = function() { - kha_EnvironmentVariables.call(this); -}; -$hxClasses["kha.js.EnvironmentVariables"] = kha_js_EnvironmentVariables; -kha_js_EnvironmentVariables.__name__ = true; -kha_js_EnvironmentVariables.__super__ = kha_EnvironmentVariables; -kha_js_EnvironmentVariables.prototype = $extend(kha_EnvironmentVariables.prototype,{ - getVariable: function(name) { - var parser = new kha_js_URLParser(window.location.href); - var query = parser.query; - var parts = query.split("&"); - var _g = 0; - while(_g < parts.length) { - var part = parts[_g]; - ++_g; - var subparts = part.split("="); - if(subparts[0] == name) { - return subparts[1]; - } - } - haxe_Log.trace("Environment variables requested.",{ fileName : "EnvironmentVariables.hx", lineNumber : 90, className : "kha.js.EnvironmentVariables", methodName : "getVariable"}); - return ""; - } - ,__class__: kha_js_EnvironmentVariables -}); -var kha_js_Font = function(kravur) { - this.images = new haxe_ds_IntMap(); - this.kravur = kravur; -}; -$hxClasses["kha.js.Font"] = kha_js_Font; -kha_js_Font.__name__ = true; -kha_js_Font.__interfaces__ = [kha_Font]; -kha_js_Font.prototype = { - kravur: null - ,images: null - ,height: function(fontSize) { - return this.kravur._get(fontSize).getHeight(); - } - ,width: function(fontSize,str) { - return this.kravur._get(fontSize).stringWidth(str); - } - ,baseline: function(fontSize) { - return this.kravur._get(fontSize).getBaselinePosition(); - } - ,getImage: function(fontSize,color) { - if(!this.images.h.hasOwnProperty(fontSize)) { - var this1 = this.images; - var v = new haxe_ds_IntMap(); - this1.h[fontSize] = v; - } - if(!this.images.h[fontSize].h.hasOwnProperty(color)) { - var kravur = this.kravur._get(fontSize); - var canvas = window.document.createElement("canvas"); - canvas.width = kravur.width; - canvas.height = kravur.height; - var ctx = canvas.getContext("2d"); - ctx.fillStyle = "black"; - ctx.fillRect(0,0,kravur.width,kravur.height); - var imageData = ctx.getImageData(0,0,kravur.width,kravur.height); - var bytes = (js_Boot.__cast(kravur.getTexture() , kha_CanvasImage)).bytes; - var _g1 = 0; - var _g = bytes.length; - while(_g1 < _g) { - var i = _g1++; - imageData.data[i * 4] = (color & 16711680) >>> 16; - imageData.data[i * 4 + 1] = (color & 65280) >>> 8; - imageData.data[i * 4 + 2] = color & 255; - imageData.data[i * 4 + 3] = bytes.b[i]; - } - ctx.putImageData(imageData,0,0); - var img = window.document.createElement("img"); - img.src = canvas.toDataURL("image/png"); - this.images.h[fontSize].h[color] = img; - return img; - } - return this.images.h[fontSize].h[color]; - } - ,unload: function() { - this.kravur = null; - this.images = null; - } - ,__class__: kha_js_Font -}; -var kha_js_MobileWebAudio = function() { }; -$hxClasses["kha.js.MobileWebAudio"] = kha_js_MobileWebAudio; -kha_js_MobileWebAudio.__name__ = true; -kha_js_MobileWebAudio._init = function() { - try { - kha_js_MobileWebAudio._context = new AudioContext(); - return; - } catch( e ) { - } - try { - this._context = new webkitAudioContext(); - return; - } catch( e1 ) { - } -}; -kha_js_MobileWebAudio.play = function(sound,loop) { - if(loop == null) { - loop = false; - } - var channel = new kha_js_MobileWebAudioChannel(sound,loop); - channel.play(); - return channel; -}; -kha_js_MobileWebAudio.stream = function(sound,loop) { - if(loop == null) { - loop = false; - } - return kha_js_MobileWebAudio.play(sound,loop); -}; -var kha_js_MobileWebAudioChannel = function(sound,loop) { - this.stopped = false; - this.paused = false; - this.buffer = sound._buffer; - this.loop = loop; - this.createSource(); -}; -$hxClasses["kha.js.MobileWebAudioChannel"] = kha_js_MobileWebAudioChannel; -kha_js_MobileWebAudioChannel.__name__ = true; -kha_js_MobileWebAudioChannel.__interfaces__ = [kha_audio1_AudioChannel]; -kha_js_MobileWebAudioChannel.prototype = { - buffer: null - ,loop: null - ,source: null - ,gain: null - ,startTime: null - ,pauseTime: null - ,paused: null - ,stopped: null - ,createSource: function() { - var _gthis = this; - this.source = kha_js_MobileWebAudio._context.createBufferSource(); - this.source.loop = this.loop; - this.source.buffer = this.buffer; - this.source.onended = function() { - _gthis.stopped = true; - }; - this.gain = kha_js_MobileWebAudio._context.createGain(); - this.source.connect(this.gain); - this.gain.connect(kha_js_MobileWebAudio._context.destination); - } - ,play: function() { - if(this.paused || this.stopped) { - this.createSource(); - } - this.stopped = false; - if(this.paused) { - this.paused = false; - this.startTime = kha_js_MobileWebAudio._context.currentTime - this.pauseTime; - this.source.start(0,this.pauseTime); - } else { - this.startTime = kha_js_MobileWebAudio._context.currentTime; - this.source.start(); - } - } - ,pause: function() { - this.pauseTime = kha_js_MobileWebAudio._context.currentTime - this.startTime; - this.paused = true; - this.source.stop(); - } - ,stop: function() { - this.paused = false; - this.stopped = true; - this.source.stop(); - } - ,length: null - ,get_length: function() { - return this.source.buffer.duration; - } - ,position: null - ,get_position: function() { - if(this.stopped) { - return this.get_length(); - } - if(this.paused) { - return this.pauseTime; - } else { - return kha_js_MobileWebAudio._context.currentTime - this.startTime; - } - } - ,get_volume: function() { - return this.gain.gain.value; - } - ,set_volume: function(value) { - return this.gain.gain.value = value; - } - ,finished: null - ,get_finished: function() { - return this.stopped; - } - ,__class__: kha_js_MobileWebAudioChannel -}; -var kha_js_MobileWebAudioSound = function(filename,done) { - var _gthis = this; - kha_Sound.call(this); - var request = new XMLHttpRequest(); - request.open("GET",filename,true); - request.responseType = "arraybuffer"; - request.onerror = function() { - haxe_Log.trace("Error loading " + filename,{ fileName : "MobileWebAudioSound.hx", lineNumber : 25, className : "kha.js.MobileWebAudioSound", methodName : "new"}); - }; - request.onload = function() { - _gthis.compressedData = haxe_io_Bytes.ofData(request.response); - _gthis.uncompressedData = null; - kha_js_MobileWebAudio._context.decodeAudioData(_gthis.compressedData.b.bufferValue,function(buffer) { - _gthis._buffer = buffer; - done(_gthis); - },function() { - throw new js__$Boot_HaxeError("Audio format not supported"); - }); - }; - request.send(null); -}; -$hxClasses["kha.js.MobileWebAudioSound"] = kha_js_MobileWebAudioSound; -kha_js_MobileWebAudioSound.__name__ = true; -kha_js_MobileWebAudioSound.__super__ = kha_Sound; -kha_js_MobileWebAudioSound.prototype = $extend(kha_Sound.prototype,{ - _buffer: null - ,uncompress: function(done) { - done(); - } - ,__class__: kha_js_MobileWebAudioSound -}); -var kha_js_Sound = function(filenames,done) { - kha_Sound.call(this); - this.done = done; - kha_js_Sound.loading.push(this); - this.element = window.document.createElement("audio"); - this.filenames = []; - var _g = 0; - while(_g < filenames.length) { - var filename = filenames[_g]; - ++_g; - if(this.element.canPlayType("audio/ogg") != "" && StringTools.endsWith(filename,".ogg")) { - this.filenames.push(filename); - } - if(this.element.canPlayType("audio/mp4") != "" && StringTools.endsWith(filename,".mp4")) { - this.filenames.push(filename); - } - } - this.element.addEventListener("error",$bind(this,this.errorListener),false); - this.element.addEventListener("canplay",$bind(this,this.canPlayThroughListener),false); - this.element.src = this.filenames[0]; - this.element.preload = "auto"; - this.element.load(); -}; -$hxClasses["kha.js.Sound"] = kha_js_Sound; -kha_js_Sound.__name__ = true; -kha_js_Sound.__super__ = kha_Sound; -kha_js_Sound.prototype = $extend(kha_Sound.prototype,{ - filenames: null - ,done: null - ,element: null - ,errorListener: function(eventInfo) { - if(this.element.error.code == 4) { - var _g1 = 0; - var _g = this.filenames.length - 1; - while(_g1 < _g) { - var i = _g1++; - if(this.element.src == this.filenames[i]) { - this.element.src = this.filenames[i + 1]; - return; - } - } - } - haxe_Log.trace("Error loading " + this.element.src,{ fileName : "Sound.hx", lineNumber : 108, className : "kha.js.Sound", methodName : "errorListener"}); - window.console.log("loadSound failed"); - this.finishAsset(); - } - ,canPlayThroughListener: function(eventInfo) { - this.finishAsset(); - } - ,finishAsset: function() { - this.element.removeEventListener("error",$bind(this,this.errorListener),false); - this.element.removeEventListener("canplaythrough",$bind(this,this.canPlayThroughListener),false); - this.done(this); - HxOverrides.remove(kha_js_Sound.loading,this); - } - ,uncompress: function(done) { - done(); - } - ,__class__: kha_js_Sound -}); -var kha_js_Video = function(filenames,done) { - kha_Video.call(this); - this.done = done; - kha_js_Video.loading.add(this); - this.element = window.document.createElement("video"); - this.filenames = []; - var _g = 0; - while(_g < filenames.length) { - var filename = filenames[_g]; - ++_g; - if(this.element.canPlayType("video/webm") != "" && StringTools.endsWith(filename,".webm")) { - this.filenames.push(filename); - } - if(this.element.canPlayType("video/mp4") != "" && StringTools.endsWith(filename,".mp4")) { - this.filenames.push(filename); - } - } - this.element.addEventListener("error",$bind(this,this.errorListener),false); - this.element.addEventListener("canplaythrough",$bind(this,this.canPlayThroughListener),false); - this.element.preload = "auto"; - this.element.src = this.filenames[0]; -}; -$hxClasses["kha.js.Video"] = kha_js_Video; -kha_js_Video.__name__ = true; -kha_js_Video.__super__ = kha_Video; -kha_js_Video.prototype = $extend(kha_Video.prototype,{ - filenames: null - ,element: null - ,done: null - ,texture: null - ,width: function() { - return this.element.videoWidth; - } - ,height: function() { - return this.element.videoHeight; - } - ,play: function(loop) { - if(loop == null) { - loop = false; - } - try { - this.element.loop = loop; - this.element.play(); - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - haxe_Log.trace(e,{ fileName : "Video.hx", lineNumber : 55, className : "kha.js.Video", methodName : "play"}); - } - } - ,pause: function() { - try { - this.element.pause(); - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - haxe_Log.trace(e,{ fileName : "Video.hx", lineNumber : 64, className : "kha.js.Video", methodName : "pause"}); - } - } - ,stop: function() { - try { - this.element.pause(); - this.element.currentTime = 0; - } catch( e ) { - if (e instanceof js__$Boot_HaxeError) e = e.val; - haxe_Log.trace(e,{ fileName : "Video.hx", lineNumber : 74, className : "kha.js.Video", methodName : "stop"}); - } - } - ,getCurrentPos: function() { - return Math.ceil(this.element.currentTime * 1000); - } - ,get_position: function() { - return Math.ceil(this.element.currentTime * 1000); - } - ,set_position: function(value) { - this.element.currentTime = value / 1000; - return value; - } - ,getLength: function() { - if(isFinite(this.element.duration)) { - return Math.floor(this.element.duration * 1000); - } else { - return -1; - } - } - ,errorListener: function(eventInfo) { - if(this.element.error.code == 4) { - var _g1 = 0; - var _g = this.filenames.length - 1; - while(_g1 < _g) { - var i = _g1++; - if(this.element.src == this.filenames[i]) { - this.element.src = this.filenames[i + 1]; - return; - } - } - } - haxe_Log.trace("Error loading " + this.element.src,{ fileName : "Video.hx", lineNumber : 111, className : "kha.js.Video", methodName : "errorListener"}); - this.finishAsset(); - } - ,canPlayThroughListener: function(eventInfo) { - this.finishAsset(); - } - ,finishAsset: function() { - this.element.removeEventListener("error",$bind(this,this.errorListener),false); - this.element.removeEventListener("canplaythrough",$bind(this,this.canPlayThroughListener),false); - if(kha_SystemImpl.gl != null) { - this.texture = kha_Image.fromVideo(this); - } - this.done(this); - kha_js_Video.loading.remove(this); - } - ,__class__: kha_js_Video -}); -var kha_js_WebAudioSound = function(filename,done) { - var _gthis = this; - kha_Sound.call(this); - var request = new XMLHttpRequest(); - request.open("GET",filename,true); - request.responseType = "arraybuffer"; - request.onerror = function() { - haxe_Log.trace("Error loading " + filename,{ fileName : "WebAudioSound.hx", lineNumber : 76, className : "kha.js.WebAudioSound", methodName : "new"}); - }; - request.onload = function() { - _gthis.compressedData = haxe_io_Bytes.ofData(request.response); - _gthis.uncompressedData = null; - done(_gthis); - }; - request.send(null); -}; -$hxClasses["kha.js.WebAudioSound"] = kha_js_WebAudioSound; -kha_js_WebAudioSound.__name__ = true; -kha_js_WebAudioSound.__super__ = kha_Sound; -kha_js_WebAudioSound.prototype = $extend(kha_Sound.prototype,{ - superUncompress: function(done) { - kha_Sound.prototype.uncompress.call(this,done); - } - ,uncompress: function(done) { - var _gthis = this; - kha_audio2_Audio._context.decodeAudioData(this.compressedData.b.bufferValue,function(buffer) { - var length = buffer.getChannelData(0).length * 2; - var this1 = new Array(length); - _gthis.uncompressedData = this1; - if(buffer.numberOfChannels == 1) { - var _g1 = 0; - var _g = buffer.getChannelData(0).length; - while(_g1 < _g) { - var i = _g1++; - _gthis.uncompressedData[i * 2] = buffer.getChannelData(0)[i]; - _gthis.uncompressedData[i * 2 + 1] = buffer.getChannelData(0)[i]; - } - } else { - var _g11 = 0; - var _g2 = buffer.getChannelData(0).length; - while(_g11 < _g2) { - var i1 = _g11++; - _gthis.uncompressedData[i1 * 2] = buffer.getChannelData(0)[i1]; - _gthis.uncompressedData[i1 * 2 + 1] = buffer.getChannelData(1)[i1]; - } - } - _gthis.compressedData = null; - done(); - },function() { - _gthis.superUncompress(done); - }); - } - ,__class__: kha_js_WebAudioSound -}); -var kha_js_graphics4_ConstantLocation = function(value,type) { - this.value = value; - this.type = type; -}; -$hxClasses["kha.js.graphics4.ConstantLocation"] = kha_js_graphics4_ConstantLocation; -kha_js_graphics4_ConstantLocation.__name__ = true; -kha_js_graphics4_ConstantLocation.__interfaces__ = [kha_graphics4_ConstantLocation]; -kha_js_graphics4_ConstantLocation.prototype = { - value: null - ,type: null - ,__class__: kha_js_graphics4_ConstantLocation -}; -var kha_js_graphics4_Graphics = function(renderTarget) { - var this1 = new Array(9); - this.matrix3Cache = this1; - var this11 = new Array(16); - this.matrixCache = this11; - this.isDepthAttachment = false; - this.isCubeMap = false; - this.colorMaskAlpha = true; - this.colorMaskBlue = true; - this.colorMaskGreen = true; - this.colorMaskRed = true; - this.depthMask = false; - this.depthTest = false; - this.renderTarget = renderTarget; - this.init(); - if(kha_SystemImpl.gl2) { - this.instancedExtension = true; - } else { - this.instancedExtension = kha_SystemImpl.gl.getExtension("ANGLE_instanced_arrays"); - this.blendMinMaxExtension = kha_SystemImpl.gl.getExtension("EXT_blend_minmax"); - } -}; -$hxClasses["kha.js.graphics4.Graphics"] = kha_js_graphics4_Graphics; -kha_js_graphics4_Graphics.__name__ = true; -kha_js_graphics4_Graphics.__interfaces__ = [kha_graphics4_Graphics]; -kha_js_graphics4_Graphics.getBlendFunc = function(factor) { - switch(factor[1]) { - case 0:case 2: - return 0; - case 1: - return 1; - case 3: - return 770; - case 4: - return 772; - case 5: - return 771; - case 6: - return 773; - case 7: - return 768; - case 8: - return 774; - case 9: - return 769; - case 10: - return 775; - } -}; -kha_js_graphics4_Graphics.getBlendOp = function(op) { - switch(op[1]) { - case 0: - return 32774; - case 1: - return 32778; - case 2: - return 32779; - case 3: - return 32775; - case 4: - return 32776; - } -}; -kha_js_graphics4_Graphics.prototype = { - depthTest: null - ,depthMask: null - ,colorMaskRed: null - ,colorMaskGreen: null - ,colorMaskBlue: null - ,colorMaskAlpha: null - ,indicesCount: null - ,renderTarget: null - ,renderTargetFrameBuffer: null - ,renderTargetTexture: null - ,isCubeMap: null - ,isDepthAttachment: null - ,instancedExtension: null - ,blendMinMaxExtension: null - ,init: function() { - if(this.renderTarget == null) { - return; - } - this.isCubeMap = js_Boot.__instanceof(this.renderTarget,kha_graphics4_CubeMap); - if(this.isCubeMap) { - var cubeMap = js_Boot.__cast(this.renderTarget , kha_graphics4_CubeMap); - this.renderTargetFrameBuffer = cubeMap.frameBuffer; - this.renderTargetTexture = cubeMap.texture; - this.isDepthAttachment = cubeMap.isDepthAttachment; - } else { - var image = js_Boot.__cast(this.renderTarget , kha_WebGLImage); - this.renderTargetFrameBuffer = image.frameBuffer; - this.renderTargetTexture = image.texture; - } - } - ,begin: function(additionalRenderTargets) { - kha_SystemImpl.gl.enable(3042); - kha_SystemImpl.gl.blendFunc(770,771); - if(this.renderTarget == null) { - kha_SystemImpl.gl.bindFramebuffer(36160,null); - kha_SystemImpl.gl.viewport(0,0,kha_System.windowWidth(),kha_System.windowHeight()); - } else { - kha_SystemImpl.gl.bindFramebuffer(36160,this.renderTargetFrameBuffer); - kha_SystemImpl.gl.viewport(0,0,this.renderTarget.get_width(),this.renderTarget.get_height()); - if(additionalRenderTargets != null) { - kha_SystemImpl.gl.framebufferTexture2D(36160,kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL,3553,this.renderTargetTexture,0); - var _g1 = 0; - var _g = additionalRenderTargets.length; - while(_g1 < _g) { - var i = _g1++; - kha_SystemImpl.gl.framebufferTexture2D(36160,kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL + i + 1,3553,(js_Boot.__cast(additionalRenderTargets[i] , kha_WebGLImage)).texture,0); - } - var attachments = [kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL]; - var _g11 = 0; - var _g2 = additionalRenderTargets.length; - while(_g11 < _g2) { - var i1 = _g11++; - attachments.push(kha_SystemImpl.drawBuffers.COLOR_ATTACHMENT0_WEBGL + i1 + 1); - } - if(kha_SystemImpl.gl2) { - kha_SystemImpl.gl.drawBuffers(attachments); - } else { - kha_SystemImpl.drawBuffers.drawBuffersWEBGL(attachments); - } - } - } - } - ,beginFace: function(face) { - kha_SystemImpl.gl.enable(3042); - kha_SystemImpl.gl.blendFunc(770,771); - kha_SystemImpl.gl.bindFramebuffer(36160,this.renderTargetFrameBuffer); - kha_SystemImpl.gl.framebufferTexture2D(36160,this.isDepthAttachment ? 36096 : 36064,34069 + face,this.renderTargetTexture,0); - kha_SystemImpl.gl.viewport(0,0,this.renderTarget.get_width(),this.renderTarget.get_height()); - } - ,beginEye: function(eye) { - kha_SystemImpl.gl.enable(3042); - kha_SystemImpl.gl.blendFunc(770,771); - kha_SystemImpl.gl.bindFramebuffer(36160,null); - if(eye == 0) { - kha_SystemImpl.gl.viewport(0,0,kha_System.windowWidth() * 0.5 | 0,kha_System.windowHeight()); - } else { - kha_SystemImpl.gl.viewport(kha_System.windowWidth() * 0.5 | 0,0,kha_System.windowWidth() * 0.5 | 0,kha_System.windowHeight()); - } - } - ,end: function() { - var error = kha_SystemImpl.gl.getError(); - switch(error) { - case 0: - break; - case 1280: - haxe_Log.trace("WebGL error: Invalid enum",{ fileName : "Graphics.hx", lineNumber : 130, className : "kha.js.graphics4.Graphics", methodName : "end"}); - break; - case 1281: - haxe_Log.trace("WebGL error: Invalid value",{ fileName : "Graphics.hx", lineNumber : 132, className : "kha.js.graphics4.Graphics", methodName : "end"}); - break; - case 1282: - haxe_Log.trace("WebGL error: Invalid operation",{ fileName : "Graphics.hx", lineNumber : 134, className : "kha.js.graphics4.Graphics", methodName : "end"}); - break; - case 1285: - haxe_Log.trace("WebGL error: Out of memory",{ fileName : "Graphics.hx", lineNumber : 138, className : "kha.js.graphics4.Graphics", methodName : "end"}); - break; - case 1286: - haxe_Log.trace("WebGL error: Invalid framebuffer operation",{ fileName : "Graphics.hx", lineNumber : 136, className : "kha.js.graphics4.Graphics", methodName : "end"}); - break; - case 37442: - haxe_Log.trace("WebGL error: Context lost",{ fileName : "Graphics.hx", lineNumber : 140, className : "kha.js.graphics4.Graphics", methodName : "end"}); - break; - default: - haxe_Log.trace("Unknown WebGL error",{ fileName : "Graphics.hx", lineNumber : 142, className : "kha.js.graphics4.Graphics", methodName : "end"}); - } - } - ,flush: function() { - } - ,vsynced: function() { - return true; - } - ,refreshRate: function() { - return 60; - } - ,clear: function(color,depth,stencil) { - var clearMask = 0; - if(color != null) { - clearMask |= 16384; - kha_SystemImpl.gl.colorMask(true,true,true,true); - kha_SystemImpl.gl.clearColor(((color & 16711680) >>> 16) * 0.00392156862745098,((color & 65280) >>> 8) * 0.00392156862745098,(color & 255) * 0.00392156862745098,(color >>> 24) * 0.00392156862745098); - } - if(depth != null) { - clearMask |= 256; - kha_SystemImpl.gl.enable(2929); - kha_SystemImpl.gl.depthMask(true); - kha_SystemImpl.gl.clearDepth(depth); - } - if(stencil != null) { - clearMask |= 1024; - kha_SystemImpl.gl.enable(2960); - kha_SystemImpl.gl.stencilMask(255); - kha_SystemImpl.gl.clearStencil(stencil); - } - kha_SystemImpl.gl.clear(clearMask); - kha_SystemImpl.gl.colorMask(this.colorMaskRed,this.colorMaskGreen,this.colorMaskBlue,this.colorMaskAlpha); - if(this.depthTest) { - kha_SystemImpl.gl.enable(2929); - } else { - kha_SystemImpl.gl.disable(2929); - } - kha_SystemImpl.gl.depthMask(this.depthMask); - } - ,viewport: function(x,y,width,height) { - var h = this.renderTarget == null ? kha_System.windowHeight(0) : this.renderTarget.get_height(); - kha_SystemImpl.gl.viewport(x,h - y - height,width,height); - } - ,setDepthMode: function(write,mode) { - switch(mode[1]) { - case 0: - if(write) { - kha_SystemImpl.gl.enable(2929); - } else { - kha_SystemImpl.gl.disable(2929); - } - this.depthTest = write; - kha_SystemImpl.gl.depthFunc(519); - break; - case 1: - kha_SystemImpl.gl.enable(2929); - this.depthTest = true; - kha_SystemImpl.gl.depthFunc(512); - break; - case 2: - kha_SystemImpl.gl.enable(2929); - this.depthTest = true; - kha_SystemImpl.gl.depthFunc(514); - break; - case 3: - kha_SystemImpl.gl.enable(2929); - this.depthTest = true; - kha_SystemImpl.gl.depthFunc(517); - break; - case 4: - kha_SystemImpl.gl.enable(2929); - this.depthTest = true; - kha_SystemImpl.gl.depthFunc(513); - break; - case 5: - kha_SystemImpl.gl.enable(2929); - this.depthTest = true; - kha_SystemImpl.gl.depthFunc(515); - break; - case 6: - kha_SystemImpl.gl.enable(2929); - this.depthTest = true; - kha_SystemImpl.gl.depthFunc(516); - break; - case 7: - kha_SystemImpl.gl.enable(2929); - this.depthTest = true; - kha_SystemImpl.gl.depthFunc(518); - break; - } - kha_SystemImpl.gl.depthMask(write); - this.depthMask = write; - } - ,setBlendingMode: function(source,destination,operation,alphaSource,alphaDestination,alphaOperation) { - if(source == kha_graphics4_BlendingFactor.BlendOne && destination == kha_graphics4_BlendingFactor.BlendZero) { - kha_SystemImpl.gl.disable(3042); - } else { - kha_SystemImpl.gl.enable(3042); - kha_SystemImpl.gl.blendFuncSeparate(kha_js_graphics4_Graphics.getBlendFunc(source),kha_js_graphics4_Graphics.getBlendFunc(destination),kha_js_graphics4_Graphics.getBlendFunc(alphaSource),kha_js_graphics4_Graphics.getBlendFunc(alphaDestination)); - kha_SystemImpl.gl.blendEquationSeparate(kha_js_graphics4_Graphics.getBlendOp(operation),kha_js_graphics4_Graphics.getBlendOp(alphaOperation)); - } - } - ,createVertexBuffer: function(vertexCount,structure,usage,canRead) { - if(canRead == null) { - canRead = false; - } - return new kha_graphics4_VertexBuffer(vertexCount,structure,usage); - } - ,setVertexBuffer: function(vertexBuffer) { - (js_Boot.__cast(vertexBuffer , kha_graphics4_VertexBuffer)).set(0); - } - ,setVertexBuffers: function(vertexBuffers) { - var offset = 0; - var _g = 0; - while(_g < vertexBuffers.length) { - var vertexBuffer = vertexBuffers[_g]; - ++_g; - offset += (js_Boot.__cast(vertexBuffer , kha_graphics4_VertexBuffer)).set(offset); - } - } - ,createIndexBuffer: function(indexCount,usage,canRead) { - if(canRead == null) { - canRead = false; - } - return new kha_graphics4_IndexBuffer(indexCount,usage); - } - ,setIndexBuffer: function(indexBuffer) { - this.indicesCount = indexBuffer.count(); - (js_Boot.__cast(indexBuffer , kha_graphics4_IndexBuffer)).set(); - } - ,setTexture: function(stage,texture) { - if(texture == null) { - kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value); - kha_SystemImpl.gl.bindTexture(3553,null); - } else { - (js_Boot.__cast(texture , kha_WebGLImage)).set((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value); - } - } - ,setTextureDepth: function(stage,texture) { - (js_Boot.__cast(texture , kha_WebGLImage)).setDepth((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value); - } - ,setVideoTexture: function(unit,texture) { - if(texture == null) { - kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(unit , kha_js_graphics4_TextureUnit)).value); - kha_SystemImpl.gl.bindTexture(3553,null); - } else { - (js_Boot.__cast((js_Boot.__cast(texture , kha_js_Video)).texture , kha_WebGLImage)).set((js_Boot.__cast(unit , kha_js_graphics4_TextureUnit)).value); - } - } - ,setImageTexture: function(unit,texture) { - } - ,setTextureParameters: function(texunit,uAddressing,vAddressing,minificationFilter,magnificationFilter,mipmapFilter) { - kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(texunit , kha_js_graphics4_TextureUnit)).value); - switch(uAddressing[1]) { - case 0: - kha_SystemImpl.gl.texParameteri(3553,10242,10497); - break; - case 1: - kha_SystemImpl.gl.texParameteri(3553,10242,33648); - break; - case 2: - kha_SystemImpl.gl.texParameteri(3553,10242,33071); - break; - } - switch(vAddressing[1]) { - case 0: - kha_SystemImpl.gl.texParameteri(3553,10243,10497); - break; - case 1: - kha_SystemImpl.gl.texParameteri(3553,10243,33648); - break; - case 2: - kha_SystemImpl.gl.texParameteri(3553,10243,33071); - break; - } - switch(minificationFilter[1]) { - case 0: - switch(mipmapFilter[1]) { - case 0: - kha_SystemImpl.gl.texParameteri(3553,10241,9728); - break; - case 1: - kha_SystemImpl.gl.texParameteri(3553,10241,9984); - break; - case 2: - kha_SystemImpl.gl.texParameteri(3553,10241,9986); - break; - } - break; - case 1:case 2: - switch(mipmapFilter[1]) { - case 0: - kha_SystemImpl.gl.texParameteri(3553,10241,9729); - break; - case 1: - kha_SystemImpl.gl.texParameteri(3553,10241,9985); - break; - case 2: - kha_SystemImpl.gl.texParameteri(3553,10241,9987); - break; - } - if(minificationFilter == kha_graphics4_TextureFilter.AnisotropicFilter) { - kha_SystemImpl.gl.texParameteri(3553,kha_SystemImpl.anisotropicFilter.TEXTURE_MAX_ANISOTROPY_EXT,4); - } - break; - } - switch(magnificationFilter[1]) { - case 0: - kha_SystemImpl.gl.texParameteri(3553,10240,9728); - break; - case 1:case 2: - kha_SystemImpl.gl.texParameteri(3553,10240,9729); - break; - } - } - ,setTexture3DParameters: function(texunit,uAddressing,vAddressing,wAddressing,minificationFilter,magnificationFilter,mipmapFilter) { - } - ,setCubeMap: function(stage,cubeMap) { - if(cubeMap == null) { - kha_SystemImpl.gl.activeTexture(33984 + (js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value); - kha_SystemImpl.gl.bindTexture(34067,null); - } else { - cubeMap.set((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value); - } - } - ,setCubeMapDepth: function(stage,cubeMap) { - cubeMap.setDepth((js_Boot.__cast(stage , kha_js_graphics4_TextureUnit)).value); - } - ,setCullMode: function(mode) { - switch(mode[1]) { - case 0: - kha_SystemImpl.gl.enable(2884); - kha_SystemImpl.gl.cullFace(1029); - break; - case 1: - kha_SystemImpl.gl.enable(2884); - kha_SystemImpl.gl.cullFace(1028); - break; - case 2: - kha_SystemImpl.gl.disable(2884); - break; - } - } - ,setPipeline: function(pipe) { - this.setCullMode(pipe.cullMode); - this.setDepthMode(pipe.depthWrite,pipe.depthMode); - this.setStencilParameters(pipe.stencilMode,pipe.stencilBothPass,pipe.stencilDepthFail,pipe.stencilFail,pipe.stencilReferenceValue,pipe.stencilReadMask,pipe.stencilWriteMask); - this.setBlendingMode(pipe.blendSource,pipe.blendDestination,pipe.blendOperation,pipe.alphaBlendSource,pipe.alphaBlendDestination,pipe.alphaBlendOperation); - pipe.set(); - this.colorMaskRed = pipe.colorWriteMaskRed; - this.colorMaskGreen = pipe.colorWriteMaskGreen; - this.colorMaskBlue = pipe.colorWriteMaskBlue; - this.colorMaskAlpha = pipe.colorWriteMaskAlpha; - } - ,setBool: function(location,value) { - kha_SystemImpl.gl.uniform1i((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value ? 1 : 0); - } - ,setInt: function(location,value) { - kha_SystemImpl.gl.uniform1i((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value); - } - ,setFloat: function(location,value) { - kha_SystemImpl.gl.uniform1f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value); - } - ,setFloat2: function(location,value1,value2) { - kha_SystemImpl.gl.uniform2f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value1,value2); - } - ,setFloat3: function(location,value1,value2,value3) { - kha_SystemImpl.gl.uniform3f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value1,value2,value3); - } - ,setFloat4: function(location,value1,value2,value3,value4) { - kha_SystemImpl.gl.uniform4f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value1,value2,value3,value4); - } - ,setFloats: function(location,values) { - var webglLocation = js_Boot.__cast(location , kha_js_graphics4_ConstantLocation); - var _g = webglLocation.type; - switch(_g) { - case 35664: - kha_SystemImpl.gl.uniform2fv(webglLocation.value,values); - break; - case 35665: - kha_SystemImpl.gl.uniform3fv(webglLocation.value,values); - break; - case 35666: - kha_SystemImpl.gl.uniform4fv(webglLocation.value,values); - break; - default: - kha_SystemImpl.gl.uniform1fv(webglLocation.value,values); - } - } - ,setVector2: function(location,value) { - kha_SystemImpl.gl.uniform2f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value.x,value.y); - } - ,setVector3: function(location,value) { - kha_SystemImpl.gl.uniform3f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value.x,value.y,value.z); - } - ,setVector4: function(location,value) { - kha_SystemImpl.gl.uniform4f((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,value.x,value.y,value.z,value.w); - } - ,matrixCache: null - ,setMatrix: function(location,matrix) { - this.matrixCache[0] = matrix._00; - this.matrixCache[1] = matrix._01; - this.matrixCache[2] = matrix._02; - this.matrixCache[3] = matrix._03; - this.matrixCache[4] = matrix._10; - this.matrixCache[5] = matrix._11; - this.matrixCache[6] = matrix._12; - this.matrixCache[7] = matrix._13; - this.matrixCache[8] = matrix._20; - this.matrixCache[9] = matrix._21; - this.matrixCache[10] = matrix._22; - this.matrixCache[11] = matrix._23; - this.matrixCache[12] = matrix._30; - this.matrixCache[13] = matrix._31; - this.matrixCache[14] = matrix._32; - this.matrixCache[15] = matrix._33; - kha_SystemImpl.gl.uniformMatrix4fv((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,false,this.matrixCache); - } - ,matrix3Cache: null - ,setMatrix3: function(location,matrix) { - this.matrix3Cache[0] = matrix._00; - this.matrix3Cache[1] = matrix._01; - this.matrix3Cache[2] = matrix._02; - this.matrix3Cache[3] = matrix._10; - this.matrix3Cache[4] = matrix._11; - this.matrix3Cache[5] = matrix._12; - this.matrix3Cache[6] = matrix._20; - this.matrix3Cache[7] = matrix._21; - this.matrix3Cache[8] = matrix._22; - kha_SystemImpl.gl.uniformMatrix3fv((js_Boot.__cast(location , kha_js_graphics4_ConstantLocation)).value,false,this.matrix3Cache); - } - ,drawIndexedVertices: function(start,count) { - if(count == null) { - count = -1; - } - if(start == null) { - start = 0; - } - var type = kha_SystemImpl.elementIndexUint == null ? 5123 : 5125; - var size = type == 5123 ? 2 : 4; - kha_SystemImpl.gl.drawElements(4,count == -1 ? this.indicesCount : count,type,start * size); - } - ,convertStencilAction: function(action) { - switch(action[1]) { - case 0: - return 7680; - case 1: - return 0; - case 2: - return 7681; - case 3: - return 7682; - case 4: - return 34055; - case 5: - return 7683; - case 6: - return 34056; - case 7: - return 5386; - } - } - ,setStencilParameters: function(compareMode,bothPass,depthFail,stencilFail,referenceValue,readMask,writeMask) { - if(writeMask == null) { - writeMask = 255; - } - if(readMask == null) { - readMask = 255; - } - if(compareMode == kha_graphics4_CompareMode.Always && bothPass == kha_graphics4_StencilAction.Keep && depthFail == kha_graphics4_StencilAction.Keep && stencilFail == kha_graphics4_StencilAction.Keep) { - kha_SystemImpl.gl.disable(2960); - } else { - kha_SystemImpl.gl.enable(2960); - var stencilFunc = 0; - switch(compareMode[1]) { - case 0: - stencilFunc = 519; - break; - case 1: - stencilFunc = 512; - break; - case 2: - stencilFunc = 514; - break; - case 3: - stencilFunc = 517; - break; - case 4: - stencilFunc = 513; - break; - case 5: - stencilFunc = 515; - break; - case 6: - stencilFunc = 516; - break; - case 7: - stencilFunc = 518; - break; - } - kha_SystemImpl.gl.stencilMask(writeMask); - kha_SystemImpl.gl.stencilOp(this.convertStencilAction(stencilFail),this.convertStencilAction(depthFail),this.convertStencilAction(bothPass)); - kha_SystemImpl.gl.stencilFunc(stencilFunc,referenceValue,readMask); - } - } - ,scissor: function(x,y,width,height) { - kha_SystemImpl.gl.enable(3089); - if(this.renderTarget == null) { - kha_SystemImpl.gl.scissor(x,kha_System.windowHeight(0) - y - height,width,height); - } else { - kha_SystemImpl.gl.scissor(x,y,width,height); - } - } - ,disableScissor: function() { - kha_SystemImpl.gl.disable(3089); - } - ,renderTargetsInvertedY: function() { - return true; - } - ,drawIndexedVerticesInstanced: function(instanceCount,start,count) { - if(count == null) { - count = -1; - } - if(start == null) { - start = 0; - } - if(this.instancedRenderingAvailable()) { - var type = kha_SystemImpl.elementIndexUint == null ? 5123 : 5125; - var typeSize = kha_SystemImpl.elementIndexUint == null ? 2 : 4; - if(kha_SystemImpl.gl2) { - kha_SystemImpl.gl.drawElementsInstanced(4,count == -1 ? this.indicesCount : count,type,start * typeSize,instanceCount); - } else { - this.instancedExtension.drawElementsInstancedANGLE(4,count == -1 ? this.indicesCount : count,type,start * typeSize,instanceCount); - } - } - } - ,instancedRenderingAvailable: function() { - return this.instancedExtension; - } - ,__class__: kha_js_graphics4_Graphics -}; -var kha_js_graphics4_Graphics2 = function(canvas) { - kha_graphics4_Graphics2.call(this,canvas); -}; -$hxClasses["kha.js.graphics4.Graphics2"] = kha_js_graphics4_Graphics2; -kha_js_graphics4_Graphics2.__name__ = true; -kha_js_graphics4_Graphics2.__super__ = kha_graphics4_Graphics2; -kha_js_graphics4_Graphics2.prototype = $extend(kha_graphics4_Graphics2.prototype,{ - drawVideoInternal: function(video,x,y,width,height) { - var v = js_Boot.__cast(video , kha_js_Video); - this.drawScaledSubImage(v.texture,0,0,v.texture.get_width(),v.texture.get_height(),x,y,width,height); - } - ,begin: function(clear,clearColor) { - if(clear == null) { - clear = true; - } - kha_SystemImpl.gl.colorMask(true,true,true,true); - kha_SystemImpl.gl.disable(2929); - kha_SystemImpl.gl.depthFunc(519); - kha_graphics4_Graphics2.prototype.begin.call(this,clear,clearColor); - } - ,__class__: kha_js_graphics4_Graphics2 -}); -var kha_js_graphics4_TextureUnit = function(value) { - this.value = value; -}; -$hxClasses["kha.js.graphics4.TextureUnit"] = kha_js_graphics4_TextureUnit; -kha_js_graphics4_TextureUnit.__name__ = true; -kha_js_graphics4_TextureUnit.__interfaces__ = [kha_graphics4_TextureUnit]; -kha_js_graphics4_TextureUnit.prototype = { - value: null - ,__class__: kha_js_graphics4_TextureUnit -}; -var kha_vr_VrInterface = function() { -}; -$hxClasses["kha.vr.VrInterface"] = kha_vr_VrInterface; -kha_vr_VrInterface.__name__ = true; -kha_vr_VrInterface.prototype = { - GetSensorState: function() { - return null; - } - ,GetPredictedSensorState: function(time) { - return null; - } - ,WarpSwapBlack: function() { - return; - } - ,WarpSwapLoadingIcon: function() { - return; - } - ,WarpSwap: function(parms) { - return; - } - ,IsPresenting: function() { - return false; - } - ,IsVrEnabled: function() { - return false; - } - ,GetTimeInSeconds: function() { - return 0.0; - } - ,GetProjectionMatrix: function(eye) { - return null; - } - ,GetViewMatrix: function(eye) { - return null; - } - ,onVRRequestPresent: function() { - return; - } - ,onVRExitPresent: function() { - return; - } - ,onResetPose: function() { - return; - } - ,__class__: kha_vr_VrInterface -}; -var kha_js_vr_VrInterface = function() { - this.vrHeight = 0; - this.vrWidth = 0; - this.height = 0; - this.width = 0; - this.rightViewMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); - this.leftViewMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); - this.rightProjectionMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); - this.leftProjectionMatrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); - this.vrEnabled = false; - kha_vr_VrInterface.call(this); - var displayEnabled = navigator.getVRDisplays; - if(displayEnabled) { - this.vrEnabled = true; - this.getVRDisplays(); - haxe_Log.trace("Display enabled.",{ fileName : "VrInterface.hx", lineNumber : 36, className : "kha.js.vr.VrInterface", methodName : "new"}); - } -}; -$hxClasses["kha.js.vr.VrInterface"] = kha_js_vr_VrInterface; -kha_js_vr_VrInterface.__name__ = true; -kha_js_vr_VrInterface.__super__ = kha_vr_VrInterface; -kha_js_vr_VrInterface.prototype = $extend(kha_vr_VrInterface.prototype,{ - vrEnabled: null - ,vrDisplay: null - ,frameData: null - ,leftProjectionMatrix: null - ,rightProjectionMatrix: null - ,leftViewMatrix: null - ,rightViewMatrix: null - ,width: null - ,height: null - ,vrWidth: null - ,vrHeight: null - ,getVRDisplays: function() { - var _gthis = this; - var vrDisplayInstance = navigator.getVRDisplays(); - vrDisplayInstance.then(function(displays) { - if(displays.length > 0) { - _gthis.frameData = new VRFrameData(); - _gthis.vrDisplay = displays[0]; - _gthis.vrDisplay.depthNear = 0.1; - _gthis.vrDisplay.depthFar = 1024.0; - var leftEye = _gthis.vrDisplay.getEyeParameters("left"); - var rightEye = _gthis.vrDisplay.getEyeParameters("right"); - _gthis.width = kha_SystemImpl.khanvas.width; - _gthis.height = kha_SystemImpl.khanvas.height; - _gthis.vrWidth = Math.max(leftEye.renderWidth,rightEye.renderWidth) * 2 | 0; - _gthis.vrHeight = Math.max(leftEye.renderHeight,rightEye.renderHeight) | 0; - } else { - haxe_Log.trace("There are no VR displays connected.",{ fileName : "VrInterface.hx", lineNumber : 56, className : "kha.js.vr.VrInterface", methodName : "getVRDisplays"}); - } - }); - } - ,onVRRequestPresent: function() { - var _gthis = this; - try { - this.vrDisplay.requestPresent([{ source : kha_SystemImpl.khanvas}]).then(function() { - _gthis.onResize(); - _gthis.vrDisplay.requestAnimationFrame($bind(_gthis,_gthis.onAnimationFrame)); - }); - } catch( err ) { - if (err instanceof js__$Boot_HaxeError) err = err.val; - haxe_Log.trace("Failed to requestPresent.",{ fileName : "VrInterface.hx", lineNumber : 68, className : "kha.js.vr.VrInterface", methodName : "onVRRequestPresent"}); - haxe_Log.trace(err,{ fileName : "VrInterface.hx", lineNumber : 69, className : "kha.js.vr.VrInterface", methodName : "onVRRequestPresent"}); - } - } - ,onVRExitPresent: function() { - var _gthis = this; - try { - this.vrDisplay.exitPresent([{ source : kha_SystemImpl.khanvas}]).then(function() { - _gthis.onResize(); - }); - } catch( err ) { - if (err instanceof js__$Boot_HaxeError) err = err.val; - haxe_Log.trace("Failed to exitPresent.",{ fileName : "VrInterface.hx", lineNumber : 79, className : "kha.js.vr.VrInterface", methodName : "onVRExitPresent"}); - haxe_Log.trace(err,{ fileName : "VrInterface.hx", lineNumber : 80, className : "kha.js.vr.VrInterface", methodName : "onVRExitPresent"}); - } - } - ,onResetPose: function() { - try { - this.vrDisplay.resetPose(); - } catch( err ) { - if (err instanceof js__$Boot_HaxeError) err = err.val; - haxe_Log.trace("Failed to resetPose",{ fileName : "VrInterface.hx", lineNumber : 88, className : "kha.js.vr.VrInterface", methodName : "onResetPose"}); - haxe_Log.trace(err,{ fileName : "VrInterface.hx", lineNumber : 89, className : "kha.js.vr.VrInterface", methodName : "onResetPose"}); - } - } - ,onAnimationFrame: function(timestamp) { - if(this.vrDisplay != null && this.vrDisplay.isPresenting) { - this.vrDisplay.requestAnimationFrame($bind(this,this.onAnimationFrame)); - this.vrDisplay.getFrameData(this.frameData); - this.leftProjectionMatrix = this.createMatrixFromArray(this.frameData.leftProjectionMatrix); - this.leftViewMatrix = this.createMatrixFromArray(this.frameData.leftViewMatrix); - this.rightProjectionMatrix = this.createMatrixFromArray(this.frameData.rightProjectionMatrix); - this.rightViewMatrix = this.createMatrixFromArray(this.frameData.rightViewMatrix); - this.vrDisplay.submitFrame(); - } - } - ,onResize: function() { - if(this.vrDisplay != null && this.vrDisplay.isPresenting) { - kha_SystemImpl.khanvas.width = this.vrWidth; - kha_SystemImpl.khanvas.height = this.vrHeight; - } else { - kha_SystemImpl.khanvas.width = this.width; - kha_SystemImpl.khanvas.height = this.height; - } - } - ,GetSensorState: function() { - return this.GetPredictedSensorState(0.0); - } - ,GetPredictedSensorState: function(time) { - var result = new kha_vr_SensorState(); - result.Predicted = new kha_vr_PoseState(); - result.Recorded = result.Predicted; - result.Predicted.AngularAcceleration = new kha_math_Vector3(); - result.Predicted.AngularVelocity = new kha_math_Vector3(); - result.Predicted.LinearAcceleration = new kha_math_Vector3(); - result.Predicted.LinearVelocity = new kha_math_Vector3(); - result.Predicted.TimeInSeconds = time; - result.Predicted.Pose = new kha_vr_Pose(); - result.Predicted.Pose.Orientation = new kha_math_Quaternion(); - result.Predicted.Pose.Position = new kha_math_Vector3(); - var mPose = this.frameData.pose; - if(mPose != null) { - result.Predicted.AngularVelocity = this.createVectorFromArray(mPose.angularVelocity); - result.Predicted.AngularAcceleration = this.createVectorFromArray(mPose.angularAcceleration); - result.Predicted.LinearVelocity = this.createVectorFromArray(mPose.linearVelocity); - result.Predicted.LinearAcceleration = this.createVectorFromArray(mPose.linearAcceleration); - result.Predicted.Pose.Orientation = this.createQuaternion(mPose.orientation); - result.Predicted.Pose.Position = this.createVectorFromArray(mPose.position); - } - return result; - } - ,WarpSwapBlack: function() { - } - ,WarpSwapLoadingIcon: function() { - } - ,WarpSwap: function(parms) { - } - ,IsPresenting: function() { - if(this.vrDisplay != null) { - return this.vrDisplay.isPresenting; - } - return false; - } - ,IsVrEnabled: function() { - return this.vrEnabled; - } - ,GetTimeInSeconds: function() { - return kha_Scheduler.time(); - } - ,GetProjectionMatrix: function(eye) { - if(eye == 0) { - return this.leftProjectionMatrix; - } else { - return this.rightProjectionMatrix; - } - } - ,GetViewMatrix: function(eye) { - if(eye == 0) { - return this.leftViewMatrix; - } else { - return this.rightViewMatrix; - } - } - ,createMatrixFromArray: function(array) { - var matrix = new kha_math_FastMatrix4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); - matrix._00 = array[0]; - matrix._01 = array[1]; - matrix._02 = array[2]; - matrix._03 = array[3]; - matrix._10 = array[4]; - matrix._11 = array[5]; - matrix._12 = array[6]; - matrix._13 = array[7]; - matrix._20 = array[8]; - matrix._21 = array[9]; - matrix._22 = array[10]; - matrix._23 = array[11]; - matrix._30 = array[12]; - matrix._31 = array[13]; - matrix._32 = array[14]; - matrix._33 = array[15]; - return matrix; - } - ,createVectorFromArray: function(array) { - var vector = new kha_math_Vector3(0,0,0); - if(array != null) { - vector.x = array[0]; - vector.y = array[1]; - vector.z = array[2]; - } - return vector; - } - ,createQuaternion: function(array) { - var quaternion = new kha_math_Quaternion(0,0,0,0); - if(array != null) { - quaternion.set_x(array[0]); - quaternion.set_y(array[1]); - quaternion.set_z(array[2]); - quaternion.set_w(array[3]); - } - return quaternion; - } - ,__class__: kha_js_vr_VrInterface -}); -var kha_math_FastMatrix3 = function(_00,_10,_20,_01,_11,_21,_02,_12,_22) { - this._00 = _00; - this._10 = _10; - this._20 = _20; - this._01 = _01; - this._11 = _11; - this._21 = _21; - this._02 = _02; - this._12 = _12; - this._22 = _22; -}; -$hxClasses["kha.math.FastMatrix3"] = kha_math_FastMatrix3; -kha_math_FastMatrix3.__name__ = true; -kha_math_FastMatrix3.fromMatrix3 = function(m) { - return new kha_math_FastMatrix3(m._00,m._10,m._20,m._01,m._11,m._21,m._02,m._12,m._22); -}; -kha_math_FastMatrix3.prototype = { - _00: null - ,_10: null - ,_20: null - ,_01: null - ,_11: null - ,_21: null - ,_02: null - ,_12: null - ,_22: null - ,__class__: kha_math_FastMatrix3 -}; -var kha_math_FastMatrix4 = function(_00,_10,_20,_30,_01,_11,_21,_31,_02,_12,_22,_32,_03,_13,_23,_33) { - this._00 = _00; - this._10 = _10; - this._20 = _20; - this._30 = _30; - this._01 = _01; - this._11 = _11; - this._21 = _21; - this._31 = _31; - this._02 = _02; - this._12 = _12; - this._22 = _22; - this._32 = _32; - this._03 = _03; - this._13 = _13; - this._23 = _23; - this._33 = _33; -}; -$hxClasses["kha.math.FastMatrix4"] = kha_math_FastMatrix4; -kha_math_FastMatrix4.__name__ = true; -kha_math_FastMatrix4.fromMatrix4 = function(m) { - return new kha_math_FastMatrix4(m._00,m._10,m._20,m._30,m._01,m._11,m._21,m._31,m._02,m._12,m._22,m._32,m._03,m._13,m._23,m._33); -}; -kha_math_FastMatrix4.orthogonalProjection = function(left,right,bottom,top,zn,zf) { - var tx = -(right + left) / (right - left); - var ty = -(top + bottom) / (top - bottom); - var tz = -(zf + zn) / (zf - zn); - return new kha_math_FastMatrix4(2 / (right - left),0,0,tx,0,2 / (top - bottom),0,ty,0,0,-2 / (zf - zn),tz,0,0,0,1); -}; -kha_math_FastMatrix4.perspectiveProjection = function(fovY,aspect,zn,zf) { - var uh = 1.0 / Math.tan(fovY / 2); - var uw = uh / aspect; - return new kha_math_FastMatrix4(uw,0,0,0,0,uh,0,0,0,0,(zf + zn) / (zn - zf),2 * zf * zn / (zn - zf),0,0,-1,0); -}; -kha_math_FastMatrix4.lookAt = function(eye,at,up) { - var zaxis = new kha_math_FastVector3(at.x - eye.x,at.y - eye.y,at.z - eye.z); - zaxis.set_length(1); - var _x = zaxis.y * up.z - zaxis.z * up.y; - var _y = zaxis.z * up.x - zaxis.x * up.z; - var _z = zaxis.x * up.y - zaxis.y * up.x; - var xaxis = new kha_math_FastVector3(_x,_y,_z); - xaxis.set_length(1); - var yaxis_z; - var yaxis_y; - var yaxis_x; - var _x1 = xaxis.y * zaxis.z - xaxis.z * zaxis.y; - var _y1 = xaxis.z * zaxis.x - xaxis.x * zaxis.z; - var _z1 = xaxis.x * zaxis.y - xaxis.y * zaxis.x; - yaxis_x = _x1; - yaxis_y = _y1; - yaxis_z = _z1; - return new kha_math_FastMatrix4(xaxis.x,xaxis.y,xaxis.z,-(xaxis.x * eye.x + xaxis.y * eye.y + xaxis.z * eye.z),yaxis_x,yaxis_y,yaxis_z,-(yaxis_x * eye.x + yaxis_y * eye.y + yaxis_z * eye.z),-zaxis.x,-zaxis.y,-zaxis.z,zaxis.x * eye.x + zaxis.y * eye.y + zaxis.z * eye.z,0,0,0,1); -}; -kha_math_FastMatrix4.prototype = { - _00: null - ,_10: null - ,_20: null - ,_30: null - ,_01: null - ,_11: null - ,_21: null - ,_31: null - ,_02: null - ,_12: null - ,_22: null - ,_32: null - ,_03: null - ,_13: null - ,_23: null - ,_33: null - ,__class__: kha_math_FastMatrix4 -}; -var kha_math_FastVector2 = function(x,y) { - if(y == null) { - y = 0; - } - if(x == null) { - x = 0; - } - this.x = x; - this.y = y; -}; -$hxClasses["kha.math.FastVector2"] = kha_math_FastVector2; -kha_math_FastVector2.__name__ = true; -kha_math_FastVector2.fromVector2 = function(v) { - return new kha_math_FastVector2(v.x,v.y); -}; -kha_math_FastVector2.prototype = { - x: null - ,y: null - ,get_length: function() { - return Math.sqrt(this.x * this.x + this.y * this.y); - } - ,set_length: function(length) { - var currentLength = this.get_length(); - if(currentLength == 0) { - return 0; - } - var mul = length / currentLength; - this.x *= mul; - this.y *= mul; - return length; - } - ,toString: function() { - return "FastVector2(" + this.x + ", " + this.y + ")"; - } - ,__class__: kha_math_FastVector2 -}; -var kha_math_FastVector3 = function(x,y,z) { - if(z == null) { - z = 0; - } - if(y == null) { - y = 0; - } - if(x == null) { - x = 0; - } - this.x = x; - this.y = y; - this.z = z; -}; -$hxClasses["kha.math.FastVector3"] = kha_math_FastVector3; -kha_math_FastVector3.__name__ = true; -kha_math_FastVector3.fromVector3 = function(v) { - return new kha_math_FastVector3(v.x,v.y,v.z); -}; -kha_math_FastVector3.prototype = { - x: null - ,y: null - ,z: null - ,get_length: function() { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - } - ,set_length: function(length) { - var currentLength = this.get_length(); - if(currentLength == 0) { - return 0; - } - var mul = length / currentLength; - this.x *= mul; - this.y *= mul; - this.z *= mul; - return length; - } - ,toString: function() { - return "FastVector3(" + this.x + ", " + this.y + ", " + this.z + ")"; - } - ,__class__: kha_math_FastVector3 -}; -var kha_math_FastVector4 = function(x,y,z,w) { - if(w == null) { - w = 1; - } - if(z == null) { - z = 0; - } - if(y == null) { - y = 0; - } - if(x == null) { - x = 0; - } - this.x = x; - this.y = y; - this.z = z; - this.w = w; -}; -$hxClasses["kha.math.FastVector4"] = kha_math_FastVector4; -kha_math_FastVector4.__name__ = true; -kha_math_FastVector4.fromVector4 = function(v) { - return new kha_math_FastVector4(v.x,v.y,v.z,v.w); -}; -kha_math_FastVector4.prototype = { - x: null - ,y: null - ,z: null - ,w: null - ,get_length: function() { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); - } - ,set_length: function(length) { - var currentLength = this.get_length(); - if(currentLength == 0) { - return 0; - } - var mul = length / currentLength; - this.x *= mul; - this.y *= mul; - this.z *= mul; - this.w *= mul; - return length; - } - ,toString: function() { - return "FastVector4(" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + ")"; - } - ,__class__: kha_math_FastVector4 -}; -var kha_math_Matrix3 = function(_00,_10,_20,_01,_11,_21,_02,_12,_22) { - this._00 = _00; - this._10 = _10; - this._20 = _20; - this._01 = _01; - this._11 = _11; - this._21 = _21; - this._02 = _02; - this._12 = _12; - this._22 = _22; -}; -$hxClasses["kha.math.Matrix3"] = kha_math_Matrix3; -kha_math_Matrix3.__name__ = true; -kha_math_Matrix3.prototype = { - _00: null - ,_10: null - ,_20: null - ,_01: null - ,_11: null - ,_21: null - ,_02: null - ,_12: null - ,_22: null - ,__class__: kha_math_Matrix3 -}; -var kha_math_Matrix4 = function(_00,_10,_20,_30,_01,_11,_21,_31,_02,_12,_22,_32,_03,_13,_23,_33) { - this._00 = _00; - this._10 = _10; - this._20 = _20; - this._30 = _30; - this._01 = _01; - this._11 = _11; - this._21 = _21; - this._31 = _31; - this._02 = _02; - this._12 = _12; - this._22 = _22; - this._32 = _32; - this._03 = _03; - this._13 = _13; - this._23 = _23; - this._33 = _33; -}; -$hxClasses["kha.math.Matrix4"] = kha_math_Matrix4; -kha_math_Matrix4.__name__ = true; -kha_math_Matrix4.orthogonalProjection = function(left,right,bottom,top,zn,zf) { - var tx = -(right + left) / (right - left); - var ty = -(top + bottom) / (top - bottom); - var tz = -(zf + zn) / (zf - zn); - return new kha_math_Matrix4(2 / (right - left),0,0,tx,0,2 / (top - bottom),0,ty,0,0,-2 / (zf - zn),tz,0,0,0,1); -}; -kha_math_Matrix4.perspectiveProjection = function(fovY,aspect,zn,zf) { - var uh = 1.0 / Math.tan(fovY / 2); - var uw = uh / aspect; - return new kha_math_Matrix4(uw,0,0,0,0,uh,0,0,0,0,(zf + zn) / (zn - zf),2 * zf * zn / (zn - zf),0,0,-1,0); -}; -kha_math_Matrix4.lookAt = function(eye,at,up) { - var zaxis = new kha_math_Vector3(at.x - eye.x,at.y - eye.y,at.z - eye.z); - zaxis.set_length(1); - var _x = zaxis.y * up.z - zaxis.z * up.y; - var _y = zaxis.z * up.x - zaxis.x * up.z; - var _z = zaxis.x * up.y - zaxis.y * up.x; - var xaxis = new kha_math_Vector3(_x,_y,_z); - xaxis.set_length(1); - var yaxis_z; - var yaxis_y; - var yaxis_x; - var _x1 = xaxis.y * zaxis.z - xaxis.z * zaxis.y; - var _y1 = xaxis.z * zaxis.x - xaxis.x * zaxis.z; - var _z1 = xaxis.x * zaxis.y - xaxis.y * zaxis.x; - yaxis_x = _x1; - yaxis_y = _y1; - yaxis_z = _z1; - return new kha_math_Matrix4(xaxis.x,xaxis.y,xaxis.z,-(xaxis.x * eye.x + xaxis.y * eye.y + xaxis.z * eye.z),yaxis_x,yaxis_y,yaxis_z,-(yaxis_x * eye.x + yaxis_y * eye.y + yaxis_z * eye.z),-zaxis.x,-zaxis.y,-zaxis.z,zaxis.x * eye.x + zaxis.y * eye.y + zaxis.z * eye.z,0,0,0,1); -}; -kha_math_Matrix4.prototype = { - _00: null - ,_10: null - ,_20: null - ,_30: null - ,_01: null - ,_11: null - ,_21: null - ,_31: null - ,_02: null - ,_12: null - ,_22: null - ,_32: null - ,_03: null - ,_13: null - ,_23: null - ,_33: null - ,__class__: kha_math_Matrix4 -}; -var kha_math_Quaternion = function(x,y,z,w) { - if(w == null) { - w = 1; - } - if(z == null) { - z = 0; - } - if(y == null) { - y = 0; - } - if(x == null) { - x = 0; - } - this.values = []; - this.values.push(x); - this.values.push(y); - this.values.push(z); - this.values.push(w); -}; -$hxClasses["kha.math.Quaternion"] = kha_math_Quaternion; -kha_math_Quaternion.__name__ = true; -kha_math_Quaternion.fromAxisAngle = function(axis,radians) { - var q = new kha_math_Quaternion(); - q.set_w(Math.cos(radians / 2.0)); - q.set_x(q.set_y(q.set_z(Math.sin(radians / 2.0)))); - var _g = q; - _g.set_x(_g.get_x() * axis.x); - var _g1 = q; - _g1.set_y(_g1.get_y() * axis.y); - var _g2 = q; - _g2.set_z(_g2.get_z() * axis.z); - return q; -}; -kha_math_Quaternion.prototype = { - values: null - ,slerp: function(t,q) { - var epsilon = 0.0005; - var dot = this.dot(q); - if(dot > 1 - epsilon) { - var result = q.add(this.sub(q).scaled(t)); - result.normalize(); - return result; - } - if(dot < 0) { - dot = 0; - } - if(dot > 1) { - dot = 1; - } - var theta0 = Math.acos(dot); - var theta = theta0 * t; - var q2 = q.sub(this.scaled(dot)); - q2.normalize(); - var result1 = this.scaled(Math.cos(theta)).add(q2.scaled(Math.sin(theta))); - result1.normalize(); - return result1; - } - ,rotated: function(b) { - var q = new kha_math_Quaternion(); - q.set_w(this.get_w() * b.get_w() - this.get_x() * b.get_x() - this.get_y() * b.get_y() - this.get_z() * b.get_z()); - q.set_x(this.get_w() * b.get_x() + this.get_x() * b.get_w() + this.get_y() * b.get_z() - this.get_z() * b.get_y()); - q.set_y(this.get_w() * b.get_y() + this.get_y() * b.get_w() + this.get_z() * b.get_x() - this.get_x() * b.get_z()); - q.set_z(this.get_w() * b.get_z() + this.get_z() * b.get_w() + this.get_x() * b.get_y() - this.get_y() * b.get_x()); - q.normalize(); - return q; - } - ,scaled: function(scale) { - return new kha_math_Quaternion(this.get_x() * scale,this.get_y() * scale,this.get_z() * scale,this.get_w() * scale); - } - ,scale: function(scale) { - this.set_x(this.get_x() * scale); - this.set_y(this.get_y() * scale); - this.set_z(this.get_z() * scale); - this.set_w(this.get_w() * scale); - } - ,matrix: function() { - var s = 2.0; - var xs = this.get_x() * s; - var ys = this.get_y() * s; - var zs = this.get_z() * s; - var wx = this.get_w() * xs; - var wy = this.get_w() * ys; - var wz = this.get_w() * zs; - var xx = this.get_x() * xs; - var xy = this.get_x() * ys; - var xz = this.get_x() * zs; - var yy = this.get_y() * ys; - var yz = this.get_y() * zs; - var zz = this.get_z() * zs; - return new kha_math_Matrix4(1 - (yy + zz),xy - wz,xz + wy,0,xy + wz,1 - (xx + zz),yz - wx,0,xz - wy,yz + wx,1 - (xx + yy),0,0,0,0,1); - } - ,get: function(index) { - return this.values[index]; - } - ,set: function(index,value) { - this.values[index] = value; - } - ,get_x: function() { - return this.values[0]; - } - ,set_x: function(value) { - return this.values[0] = value; - } - ,get_y: function() { - return this.values[1]; - } - ,set_y: function(value) { - return this.values[1] = value; - } - ,get_z: function() { - return this.values[2]; - } - ,set_z: function(value) { - return this.values[2] = value; - } - ,get_w: function() { - return this.values[3]; - } - ,set_w: function(value) { - return this.values[3] = value; - } - ,get_length: function() { - return Math.sqrt(this.get_x() * this.get_x() + this.get_y() * this.get_y() + this.get_z() * this.get_z() + this.get_w() * this.get_w()); - } - ,set_length: function(length) { - if(this.get_length() == 0) { - return 0; - } - var mul = length / this.get_length(); - var _g = this; - _g.set_x(_g.get_x() * mul); - var _g1 = this; - _g1.set_y(_g1.get_y() * mul); - var _g2 = this; - _g2.set_z(_g2.get_z() * mul); - return length; - } - ,addVector: function(vec) { - var result = new kha_math_Quaternion(this.get_x(),this.get_y(),this.get_z(),this.get_w()); - var q1 = new kha_math_Quaternion(0,vec.x,vec.y,vec.z); - q1 = q1.mult(result); - var _g = result; - _g.set_x(_g.get_x() + q1.get_x() * 0.5); - var _g1 = result; - _g1.set_y(_g1.get_y() + q1.get_y() * 0.5); - var _g2 = result; - _g2.set_z(_g2.get_z() + q1.get_z() * 0.5); - var _g3 = result; - _g3.set_w(_g3.get_w() + q1.get_w() * 0.5); - return result; - } - ,add: function(q) { - return new kha_math_Quaternion(this.get_x() + q.get_x(),this.get_y() + q.get_y(),this.get_z() + q.get_z(),this.get_w() + q.get_w()); - } - ,sub: function(q) { - return new kha_math_Quaternion(this.get_x() - q.get_x(),this.get_y() - q.get_y(),this.get_z() - q.get_z(),this.get_w() - q.get_w()); - } - ,mult: function(r) { - var q = new kha_math_Quaternion(); - q.set_x(this.get_w() * r.get_x() + this.get_x() * r.get_w() + this.get_y() * r.get_z() - this.get_z() * r.get_y()); - q.set_y(this.get_w() * r.get_y() - this.get_x() * r.get_z() + this.get_y() * r.get_w() + this.get_z() * r.get_x()); - q.set_z(this.get_w() * r.get_z() + this.get_x() * r.get_y() - this.get_y() * r.get_x() + this.get_z() * r.get_w()); - q.set_w(this.get_w() * r.get_w() - this.get_x() * r.get_x() - this.get_y() * r.get_y() - this.get_z() * r.get_z()); - return q; - } - ,normalize: function() { - this.scale(1.0 / this.get_length()); - } - ,dot: function(q) { - return this.get_x() * q.get_x() + this.get_y() * q.get_y() + this.get_z() * q.get_z() + this.get_w() * q.get_w(); - } - ,getEulerAngles: function(A1,A2,A3,S,D) { - if(D == null) { - D = 1; - } - if(S == null) { - S = 1; - } - var result = new kha_math_Vector3(); - var Q = []; - Q[0] = this.get_x(); - Q[1] = this.get_y(); - Q[2] = this.get_z(); - var ww = this.get_w() * this.get_w(); - var Q11 = Q[A1] * Q[A1]; - var Q22 = Q[A2] * Q[A2]; - var Q33 = Q[A3] * Q[A3]; - var psign = -1; - var SingularityRadius = 0.0000001; - var PiOver2 = Math.PI / 2.0; - if((A1 + 1) % 3 == A2 && (A2 + 1) % 3 == A3) { - psign = 1; - } - var s2 = psign * 2.0 * (psign * this.get_w() * Q[A2] + Q[A1] * Q[A3]); - if(s2 < -1 + SingularityRadius) { - result.x = 0; - result.y = -S * D * PiOver2; - result.z = S * D * Math.atan2(2 * (psign * Q[A1] * Q[A2] + this.get_w() * Q[A3]),ww + Q22 - Q11 - Q33); - } else if(s2 > 1 - SingularityRadius) { - result.x = 0; - result.y = S * D * PiOver2; - result.z = S * D * Math.atan2(2 * (psign * Q[A1] * Q[A2] + this.get_w() * Q[A3]),ww + Q22 - Q11 - Q33); - } else { - result.x = -S * D * Math.atan2(-2 * (this.get_w() * Q[A1] - psign * Q[A2] * Q[A3]),ww + Q33 - Q11 - Q22); - result.y = S * D * Math.asin(s2); - result.z = S * D * Math.atan2(2 * (this.get_w() * Q[A3] - psign * Q[A1] * Q[A2]),ww + Q11 - Q22 - Q33); - } - return result; - } - ,__class__: kha_math_Quaternion -}; -var kha_math_Vector2 = function(x,y) { - if(y == null) { - y = 0; - } - if(x == null) { - x = 0; - } - this.x = x; - this.y = y; -}; -$hxClasses["kha.math.Vector2"] = kha_math_Vector2; -kha_math_Vector2.__name__ = true; -kha_math_Vector2.prototype = { - x: null - ,y: null - ,get_length: function() { - return Math.sqrt(this.x * this.x + this.y * this.y); - } - ,set_length: function(length) { - var currentLength = this.get_length(); - if(currentLength == 0) { - return 0; - } - var mul = length / currentLength; - this.x *= mul; - this.y *= mul; - return length; - } - ,__class__: kha_math_Vector2 -}; -var kha_math_Vector3 = function(x,y,z) { - if(z == null) { - z = 0; - } - if(y == null) { - y = 0; - } - if(x == null) { - x = 0; - } - this.x = x; - this.y = y; - this.z = z; -}; -$hxClasses["kha.math.Vector3"] = kha_math_Vector3; -kha_math_Vector3.__name__ = true; -kha_math_Vector3.prototype = { - x: null - ,y: null - ,z: null - ,get_length: function() { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - } - ,set_length: function(length) { - var currentLength = this.get_length(); - if(currentLength == 0) { - return 0; - } - var mul = length / currentLength; - this.x *= mul; - this.y *= mul; - this.z *= mul; - return length; - } - ,__class__: kha_math_Vector3 -}; -var kha_math_Vector4 = function(x,y,z,w) { - if(w == null) { - w = 1; - } - if(z == null) { - z = 0; - } - if(y == null) { - y = 0; - } - if(x == null) { - x = 0; - } - this.x = x; - this.y = y; - this.z = z; - this.w = w; -}; -$hxClasses["kha.math.Vector4"] = kha_math_Vector4; -kha_math_Vector4.__name__ = true; -kha_math_Vector4.prototype = { - x: null - ,y: null - ,z: null - ,w: null - ,get_length: function() { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); - } - ,set_length: function(length) { - var currentLength = this.get_length(); - if(currentLength == 0) { - return 0; - } - var mul = length / currentLength; - this.x *= mul; - this.y *= mul; - this.z *= mul; - this.w *= mul; - return length; - } - ,__class__: kha_math_Vector4 -}; -var kha_network_Client = function() { }; -$hxClasses["kha.network.Client"] = kha_network_Client; -kha_network_Client.__name__ = true; -kha_network_Client.prototype = { - get_id: null - ,id: null - ,send: null - ,receive: null - ,onClose: null - ,__class__: kha_network_Client -}; -var kha_network_ControllerBuilder = function() { }; -$hxClasses["kha.network.ControllerBuilder"] = kha_network_ControllerBuilder; -kha_network_ControllerBuilder.__name__ = true; -var kha_network_Entity = function() { }; -$hxClasses["kha.network.Entity"] = kha_network_Entity; -kha_network_Entity.__name__ = true; -kha_network_Entity.prototype = { - _id: null - ,_size: null - ,_send: null - ,_receive: null - ,__class__: kha_network_Entity -}; -var kha_network_LocalClient = function(id) { - this.myId = id; -}; -$hxClasses["kha.network.LocalClient"] = kha_network_LocalClient; -kha_network_LocalClient.__name__ = true; -kha_network_LocalClient.__interfaces__ = [kha_network_Client]; -kha_network_LocalClient.prototype = { - myId: null - ,send: function(bytes,mandatory) { - } - ,receive: function(receiver) { - } - ,onClose: function(close) { - } - ,controllers: null - ,get_controllers: function() { - return null; - } - ,id: null - ,get_id: function() { - return this.myId; - } - ,__class__: kha_network_LocalClient -}; -var kha_network_Network = function(url,port,errorCallback,closeCallback) { - this.open = false; - var _gthis = this; - this.socket = new WebSocket("ws://" + url + ":" + port); - this.socket.onerror = function(error) { - haxe_Log.trace("Network error: " + error,{ fileName : "Network.hx", lineNumber : 14, className : "kha.network.Network", methodName : "new"}); - errorCallback(); - }; - this.socket.binaryType = "arraybuffer"; - this.socket.onopen = function() { - _gthis.open = true; - }; - this.socket.onclose = function(event) { - haxe_Log.trace("Network connection closed",{ fileName : "Network.hx", lineNumber : 22, className : "kha.network.Network", methodName : "new"}); - closeCallback(); - }; -}; -$hxClasses["kha.network.Network"] = kha_network_Network; -kha_network_Network.__name__ = true; -kha_network_Network.prototype = { - socket: null - ,open: null - ,send: function(bytes,mandatory) { - if(this.open) { - this.socket.send(bytes.b.bufferValue); - } - } - ,listen: function(listener) { - this.socket.onmessage = function(message) { - var tmp = haxe_io_Bytes.ofData(message.data); - listener(tmp); - }; - } - ,__class__: kha_network_Network -}; -var kha_network_State = function(time,data) { - this.time = time; - this.data = data; -}; -$hxClasses["kha.network.State"] = kha_network_State; -kha_network_State.__name__ = true; -kha_network_State.prototype = { - time: null - ,data: null - ,__class__: kha_network_State -}; -var kha_network_Session = function(maxPlayers,address,port) { - this.ping = 1; - this.currentPlayers = 0; - this.controllers = new haxe_ds_IntMap(); - this.entities = new haxe_ds_IntMap(); - kha_network_Session.instance = this; - this.maxPlayers = maxPlayers; - this.address = address; - this.port = port; -}; -$hxClasses["kha.network.Session"] = kha_network_Session; -kha_network_Session.__name__ = true; -kha_network_Session.the = function() { - return kha_network_Session.instance; -}; -kha_network_Session.prototype = { - entities: null - ,controllers: null - ,maxPlayers: null - ,currentPlayers: null - ,ping: null - ,address: null - ,port: null - ,startCallback: null - ,refusedCallback: null - ,resetCallback: null - ,localClient: null - ,network: null - ,updateTaskId: null - ,pingTaskId: null - ,me: null - ,get_me: function() { - return this.localClient; - } - ,addEntity: function(entity) { - var this1 = this.entities; - var key = entity._id(); - this1.h[key] = entity; - } - ,addController: function(controller) { - haxe_Log.trace("Adding controller id " + controller._id(),{ fileName : "Session.hx", lineNumber : 88, className : "kha.network.Session", methodName : "addController"}); - controller._inputBufferIndex = 0; - var this1 = this.controllers; - var key = controller._id(); - this1.h[key] = controller; - } - ,sendControllerUpdate: function(id,bytes) { - if(this.controllers.h.hasOwnProperty(id)) { - if(this.controllers.h[id]._inputBuffer.length < this.controllers.h[id]._inputBufferIndex + 4 + bytes.length) { - var newBuffer = new haxe_io_Bytes(new ArrayBuffer(this.controllers.h[id]._inputBufferIndex + 4 + bytes.length)); - newBuffer.blit(0,this.controllers.h[id]._inputBuffer,0,this.controllers.h[id]._inputBufferIndex); - this.controllers.h[id]._inputBuffer = newBuffer; - } - this.controllers.h[id]._inputBuffer.setInt32(this.controllers.h[id]._inputBufferIndex,bytes.length); - this.controllers.h[id]._inputBuffer.blit(this.controllers.h[id]._inputBufferIndex + 4,bytes,0,bytes.length); - this.controllers.h[id]._inputBufferIndex += 4 + bytes.length; - } - } - ,sendPing: function() { - var bytes = new haxe_io_Bytes(new ArrayBuffer(5)); - bytes.b[0] = 4; - bytes.setFloat(1,kha_Scheduler.realTime()); - this.sendToServer(bytes); - } - ,sendPlayerUpdate: function() { - } - ,receive: function(bytes,client) { - var _g = bytes.b[0]; - switch(_g) { - case 0: - var index = bytes.b[1]; - this.localClient = new kha_network_LocalClient(index); - kha_Scheduler.resetTime(); - this.startCallback(); - break; - case 1: - var time = bytes.getDouble(1); - var offset = 9; - var entity = this.entities.iterator(); - while(entity.hasNext()) { - var entity1 = entity.next(); - entity1._receive(offset,bytes); - offset += entity1._size(); - } - kha_Scheduler.back(time); - break; - case 3: - var _g1 = bytes.b[1]; - switch(_g1) { - case 0: - break; - case 1: - this.executeRPC(bytes); - break; - } - break; - case 4: - var sendTime = bytes.getFloat(1); - this.ping = kha_Scheduler.realTime() - sendTime; - break; - case 5: - this.refusedCallback(); - break; - case 6: - this.currentPlayers = bytes.getInt32(1); - break; - } - } - ,executeRPC: function(bytes) { - var args = []; - var syncId = bytes.getInt32(2); - var index = 6; - var classnamelength = bytes.getUInt16(index); - index += 2; - var classname = ""; - var _g1 = 0; - var _g = classnamelength; - while(_g1 < _g) { - var i = _g1++; - classname += String.fromCharCode(bytes.b[index]); - ++index; - } - var methodnamelength = bytes.getUInt16(index); - index += 2; - var methodname = ""; - var _g11 = 0; - var _g2 = methodnamelength; - while(_g11 < _g2) { - var i1 = _g11++; - methodname += String.fromCharCode(bytes.b[index]); - ++index; - } - while(index < bytes.length) { - var type = bytes.b[index]; - ++index; - switch(type) { - case 66: - var value = bytes.b[index] == 1; - ++index; - haxe_Log.trace("Bool: " + (value == null ? "null" : "" + value),{ fileName : "Session.hx", lineNumber : 288, className : "kha.network.Session", methodName : "executeRPC"}); - args.push(value); - break; - case 70: - var value1 = bytes.getDouble(index); - index += 8; - haxe_Log.trace("Float: " + value1,{ fileName : "Session.hx", lineNumber : 293, className : "kha.network.Session", methodName : "executeRPC"}); - args.push(value1); - break; - case 73: - var value2 = bytes.getInt32(index); - index += 4; - haxe_Log.trace("Int: " + value2,{ fileName : "Session.hx", lineNumber : 298, className : "kha.network.Session", methodName : "executeRPC"}); - args.push(value2); - break; - case 83: - var length = bytes.getUInt16(index); - index += 2; - var str = ""; - var _g12 = 0; - var _g3 = length; - while(_g12 < _g3) { - var i2 = _g12++; - str += String.fromCharCode(bytes.b[index]); - ++index; - } - haxe_Log.trace("String: " + str,{ fileName : "Session.hx", lineNumber : 308, className : "kha.network.Session", methodName : "executeRPC"}); - args.push(str); - break; - default: - haxe_Log.trace("Unknown argument type.",{ fileName : "Session.hx", lineNumber : 311, className : "kha.network.Session", methodName : "executeRPC"}); - } - } - if(syncId == -1) { - Reflect.field(Type.resolveClass(classname),methodname + "_remotely").apply(null,args); - } else { - var o = kha_network_SyncBuilder.objects[syncId]; - Reflect.field(kha_network_SyncBuilder.objects[syncId],methodname + "_remotely").apply(o,args); - } - } - ,waitForStart: function(callback,refuseCallback,errorCallback,closeCallback,resCallback) { - var _gthis = this; - this.startCallback = callback; - this.refusedCallback = refuseCallback; - this.resetCallback = resCallback; - this.network = new kha_network_Network(this.address,this.port,errorCallback,function() { - closeCallback(); - _gthis.reset(); - }); - this.network.listen(function(bytes) { - _gthis.receive(bytes); - }); - this.updateTaskId = kha_Scheduler.addFrameTask($bind(this,this.update),0); - this.ping = 1; - this.pingTaskId = kha_Scheduler.addTimeTask($bind(this,this.sendPing),0,1); - } - ,reset: function() { - kha_Scheduler.removeFrameTask(this.updateTaskId); - kha_Scheduler.removeTimeTask(this.pingTaskId); - this.currentPlayers = 0; - this.ping = 1; - this.controllers = new haxe_ds_IntMap(); - this.entities = new haxe_ds_IntMap(); - this.resetCallback(); - } - ,update: function() { - var controller = this.controllers.iterator(); - while(controller.hasNext()) { - var controller1 = controller.next(); - if(controller1._inputBufferIndex > 0) { - var bytes = new haxe_io_Bytes(new ArrayBuffer(22 + controller1._inputBufferIndex)); - bytes.b[0] = 2; - bytes.setInt32(1,controller1._id()); - bytes.setDouble(5,kha_Scheduler.realTime()); - bytes.setInt32(13,kha_System.windowWidth(0)); - bytes.setInt32(17,kha_System.windowHeight(0)); - var v = kha_System.get_screenRotation()[1]; - bytes.b[21] = v & 255; - bytes.blit(22,controller1._inputBuffer,0,controller1._inputBufferIndex); - this.sendToServer(bytes); - controller1._inputBufferIndex = 0; - } - } - } - ,sendToServer: function(bytes) { - this.network.send(bytes,false); - } - ,__class__: kha_network_Session -}; -var kha_network_SyncBuilder = function() { }; -$hxClasses["kha.network.SyncBuilder"] = kha_network_SyncBuilder; -kha_network_SyncBuilder.__name__ = true; -var kha_simd_Float32x4 = function(_0,_1,_2,_3) { - this._0 = _0; - this._1 = _1; - this._2 = _2; - this._3 = _3; -}; -$hxClasses["kha.simd.Float32x4"] = kha_simd_Float32x4; -kha_simd_Float32x4.__name__ = true; -kha_simd_Float32x4.create = function() { - return new kha_simd_Float32x4(0,0,0,0); -}; -kha_simd_Float32x4.loadAllFast = function(t) { - return new kha_simd_Float32x4(t,t,t,t); -}; -kha_simd_Float32x4.load = function(a,b,c,d) { - return new kha_simd_Float32x4(a,b,c,d); -}; -kha_simd_Float32x4.loadFast = function(a,b,c,d) { - return new kha_simd_Float32x4(a,b,c,d); -}; -kha_simd_Float32x4.get = function(t,index) { - var value = 0; - switch(index) { - case 0: - value = t._0; - break; - case 1: - value = t._1; - break; - case 2: - value = t._2; - break; - case 3: - value = t._3; - break; - } - return value; -}; -kha_simd_Float32x4.getFast = function(t,index) { - switch(index) { - case 0: - return t._0; - case 1: - return t._1; - case 2: - return t._2; - case 3: - return t._3; - } - return 0; -}; -kha_simd_Float32x4.abs = function(t) { - return new kha_simd_Float32x4(Math.abs(t._0),Math.abs(t._1),Math.abs(t._2),Math.abs(t._3)); -}; -kha_simd_Float32x4.add = function(a,b) { - return new kha_simd_Float32x4(a._0 + b._0,a._1 + b._1,a._2 + b._2,a._3 + b._3); -}; -kha_simd_Float32x4.div = function(a,b) { - return new kha_simd_Float32x4(a._0 / b._0,a._1 / b._1,a._2 / b._2,a._3 / b._3); -}; -kha_simd_Float32x4.mul = function(a,b) { - return new kha_simd_Float32x4(a._0 * b._0,a._1 * b._1,a._2 * b._2,a._3 * b._3); -}; -kha_simd_Float32x4.neg = function(t) { - return new kha_simd_Float32x4(-t._0,-t._1,-t._2,-t._3); -}; -kha_simd_Float32x4.reciprocalApproximation = function(t) { - return new kha_simd_Float32x4(0,0,0,0); -}; -kha_simd_Float32x4.reciprocalSqrtApproximation = function(t) { - return new kha_simd_Float32x4(0,0,0,0); -}; -kha_simd_Float32x4.sub = function(a,b) { - return new kha_simd_Float32x4(a._0 - b._0,a._1 - b._1,a._2 - b._2,a._3 - b._3); -}; -kha_simd_Float32x4.sqrt = function(t) { - return new kha_simd_Float32x4(Math.sqrt(t._0),Math.sqrt(t._1),Math.sqrt(t._2),Math.sqrt(t._3)); -}; -kha_simd_Float32x4.prototype = { - _0: null - ,_1: null - ,_2: null - ,_3: null - ,__class__: kha_simd_Float32x4 -}; -var kha_vr_Pose = function() { - this.Orientation = new kha_math_Quaternion(); - this.Position = new kha_math_Vector3(); -}; -$hxClasses["kha.vr.Pose"] = kha_vr_Pose; -kha_vr_Pose.__name__ = true; -kha_vr_Pose.prototype = { - Orientation: null - ,Position: null - ,__class__: kha_vr_Pose -}; -var kha_vr_PoseState = function() { -}; -$hxClasses["kha.vr.PoseState"] = kha_vr_PoseState; -kha_vr_PoseState.__name__ = true; -kha_vr_PoseState.prototype = { - Pose: null - ,AngularVelocity: null - ,LinearVelocity: null - ,AngularAcceleration: null - ,LinearAcceleration: null - ,TimeInSeconds: null - ,__class__: kha_vr_PoseState -}; -var kha_vr_SensorState = function() { -}; -$hxClasses["kha.vr.SensorState"] = kha_vr_SensorState; -kha_vr_SensorState.__name__ = true; -kha_vr_SensorState.prototype = { - Predicted: null - ,Recorded: null - ,Temperature: null - ,Status: null - ,__class__: kha_vr_SensorState -}; -var kha_vr_TimeWarpImage = function() { -}; -$hxClasses["kha.vr.TimeWarpImage"] = kha_vr_TimeWarpImage; -kha_vr_TimeWarpImage.__name__ = true; -kha_vr_TimeWarpImage.prototype = { - Image: null - ,TexCoordsFromTanAngles: null - ,Pose: null - ,__class__: kha_vr_TimeWarpImage -}; -var kha_vr_TimeWarpParms = function() { -}; -$hxClasses["kha.vr.TimeWarpParms"] = kha_vr_TimeWarpParms; -kha_vr_TimeWarpParms.__name__ = true; -kha_vr_TimeWarpParms.prototype = { - LeftImage: null - ,RightImage: null - ,LeftOverlay: null - ,RightOverlay: null - ,__class__: kha_vr_TimeWarpParms -}; -var zui_Canvas = function() { }; -$hxClasses["zui.Canvas"] = zui_Canvas; -zui_Canvas.__name__ = true; -zui_Canvas.draw = function(ui,canvas,g) { - ui.begin(g); - ui.g = g; - var _g = 0; - var _g1 = canvas.elements; - while(_g < _g1.length) { - var elem = _g1[_g]; - ++_g; - zui_Canvas.drawElement(ui,canvas,elem); - } - ui.end(); -}; -zui_Canvas.getAsset = function(canvas,asset) { - var _g = 0; - var _g1 = canvas.assets; - while(_g < _g1.length) { - var a = _g1[_g]; - ++_g; - if(a.name == asset) { - return a.image; - } - } - return null; -}; -zui_Canvas.drawElement = function(ui,canvas,element) { - ui._x = canvas.x + element.x; - ui._y = canvas.y + element.y; - ui._w = element.width; - var _g = element.type; - switch(_g) { - case 0: - var size = ui.fontSmallSize; - ui.fontSmallSize = element.height; - ui.text(element.text); - ui.fontSmallSize = size; - break; - case 1: - if(element.image == null) { - element.image = zui_Canvas.getAsset(canvas,element.asset); - } - if(element.image != null) { - ui.image(element.image); - } - break; - case 2: - ui.button(element.text); - break; - } - if(element.children != null) { - var _g1 = 0; - var _g2 = element.children; - while(_g1 < _g2.length) { - var c = _g2[_g1]; - ++_g1; - zui_Canvas.drawElement(ui,canvas,c); - } - } -}; -var zui_Id = function() { }; -$hxClasses["zui.Id"] = zui_Id; -zui_Id.__name__ = true; -var zui_Themes = function() { }; -$hxClasses["zui.Themes"] = zui_Themes; -zui_Themes.__name__ = true; -var zui_Zui = function(ops) { - this.textToSubmit = ""; - this.submitTextHandle = null; - this.textSelectedHandle = null; - this.scrollEnabled = true; - this.scrollingHandle = null; - this.windowEnded = true; - this.curRatio = -1; - this.cursorY = 0; - this.cursorX = 0; - this.isKeyDown = false; - this.isTyping = false; - this.isScrolling = false; - if(ops.theme == null) { - ops.theme = zui_Themes.dark; - } - this.t = ops.theme; - if(ops.khaWindowId == null) { - ops.khaWindowId = 0; - } - if(ops.scaleFactor == null) { - ops.scaleFactor = 1.0; - } - if(ops.scaleTexture == null) { - ops.scaleTexture = 1.0; - } - if(ops.autoNotifyInput == null) { - ops.autoNotifyInput = true; - } - this.ops = ops; - this.setScaleFactor(ops.scaleFactor); - if(ops.autoNotifyInput) { - kha_input_Mouse.get().notifyWindowed(ops.khaWindowId,$bind(this,this.onMouseDown),$bind(this,this.onMouseUp),$bind(this,this.onMouseMove),$bind(this,this.onMouseWheel)); - kha_input_Keyboard.get().notify($bind(this,this.onKeyDown),$bind(this,this.onKeyUp)); - } -}; -$hxClasses["zui.Zui"] = zui_Zui; -zui_Zui.__name__ = true; -zui_Zui.prototype = { - t: null - ,SCALE: null - ,isScrolling: null - ,isTyping: null - ,inputX: null - ,inputY: null - ,inputInitialX: null - ,inputInitialY: null - ,inputDX: null - ,inputDY: null - ,inputWheelDelta: null - ,inputStarted: null - ,inputReleased: null - ,inputDown: null - ,inputDownR: null - ,isKeyDown: null - ,key: null - ,'char': null - ,cursorX: null - ,cursorY: null - ,ratios: null - ,curRatio: null - ,xBeforeSplit: null - ,wBeforeSplit: null - ,globalG: null - ,g: null - ,ops: null - ,fontSize: null - ,fontSmallSize: null - ,fontOffsetY: null - ,fontSmallOffsetY: null - ,arrowOffsetX: null - ,arrowOffsetY: null - ,titleOffsetX: null - ,buttonOffsetY: null - ,checkOffsetX: null - ,checkOffsetY: null - ,checkSelectOffsetX: null - ,checkSelectOffsetY: null - ,radioOffsetX: null - ,radioOffsetY: null - ,radioSelectOffsetX: null - ,radioSelectOffsetY: null - ,scrollAlign: null - ,_x: null - ,_y: null - ,_w: null - ,_h: null - ,_windowX: null - ,_windowY: null - ,_windowW: null - ,_windowH: null - ,currentWindow: null - ,windowEnded: null - ,scrollingHandle: null - ,scrollEnabled: null - ,textSelectedHandle: null - ,textSelectedCurrentText: null - ,submitTextHandle: null - ,textToSubmit: null - ,setScaleFactor: function(scaleFactor) { - this.SCALE = this.ops.scaleFactor = scaleFactor * this.ops.scaleTexture; - this.fontSize = this.t._FONT_SIZE * this.ops.scaleFactor | 0; - this.fontSmallSize = this.t._FONT_SMALL_SIZE * this.ops.scaleFactor | 0; - var fontHeight = this.ops.font.height(this.fontSize); - var fontSmallHeight = this.ops.font.height(this.fontSmallSize); - this.fontOffsetY = (this.t._ELEMENT_H * this.SCALE - fontHeight) / 2; - this.fontSmallOffsetY = (this.t._ELEMENT_H * this.SCALE - fontSmallHeight) / 2; - this.arrowOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._ARROW_H * this.SCALE) / 2; - this.arrowOffsetX = this.arrowOffsetY; - this.titleOffsetX = (this.arrowOffsetX * 2 + this.t._ARROW_W * this.SCALE) / this.SCALE; - this.buttonOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._BUTTON_H * this.SCALE) / 2; - this.checkOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._CHECK_H * this.SCALE) / 2; - this.checkOffsetX = this.checkOffsetY; - this.checkSelectOffsetY = (this.t._CHECK_H * this.SCALE - this.t._CHECK_SELECT_H * this.SCALE) / 2; - this.checkSelectOffsetX = this.checkSelectOffsetY; - this.radioOffsetY = (this.t._ELEMENT_H * this.SCALE - this.t._RADIO_H * this.SCALE) / 2; - this.radioOffsetX = this.radioOffsetY; - this.radioSelectOffsetY = (this.t._RADIO_H * this.SCALE - this.t._RADIO_SELECT_H * this.SCALE) / 2; - this.radioSelectOffsetX = this.radioSelectOffsetY; - this.scrollAlign = 0; - } - ,bakeElements: function() { - zui_Zui.elementsBaked = true; - zui_Zui.checkSelectImage = kha_Image.createRenderTarget(this.t._CHECK_SELECT_W * this.SCALE | 0,this.t._CHECK_SELECT_H * this.SCALE | 0,null,0,1,this.ops.khaWindowId); - var g = zui_Zui.checkSelectImage.get_g2(); - g.begin(true,0); - g.set_color(this.t.CHECK_SELECT_COL); - g.drawLine(0,0,this.t._CHECK_SELECT_W * this.SCALE,this.t._CHECK_SELECT_H * this.SCALE,2); - g.drawLine(this.t._CHECK_SELECT_W * this.SCALE,0,0,this.t._CHECK_SELECT_H * this.SCALE,2); - g.end(); - } - ,remove: function() { - if(this.ops.autoNotifyInput) { - kha_input_Mouse.get().removeWindowed(this.ops.khaWindowId,$bind(this,this.onMouseDown),$bind(this,this.onMouseUp),$bind(this,this.onMouseMove),$bind(this,this.onMouseWheel)); - kha_input_Keyboard.get().remove($bind(this,this.onKeyDown),$bind(this,this.onKeyUp)); - } - } - ,begin: function(g) { - if(!zui_Zui.elementsBaked) { - this.bakeElements(); - } - this.SCALE = this.ops.scaleFactor; - this.globalG = g; - this._x = 0; - this._y = 0; - this._w = 0; - this._h = 0; - } - ,end: function() { - if(!this.windowEnded) { - this.endWindow(); - } - this.isKeyDown = false; - this.inputStarted = false; - this.inputReleased = false; - this.inputDX = 0; - this.inputDY = 0; - this.inputWheelDelta = 0; - } - ,beginLayout: function(g,x,y,w) { - this.currentWindow = null; - this.g = g; - this.SCALE = 1.0; - this._windowX = 0; - this._windowY = 0; - this._windowW = w; - this._x = x; - this._y = y; - this._w = w; - } - ,endLayout: function() { - } - ,window: function(handle,x,y,w,h,drag) { - if(drag == null) { - drag = false; - } - w = w | 0; - h = h | 0; - if(handle.texture == null || w != handle.texture.get_width() || h != handle.texture.get_height()) { - this.resize(handle,w,h,this.ops.khaWindowId); - } - if(!this.windowEnded) { - this.endWindow(); - } - this.windowEnded = false; - this.g = handle.texture.get_g2(); - this.currentWindow = handle; - this._windowX = x + handle.dragX; - this._windowY = y + handle.dragY; - this._windowW = w; - this._windowH = h; - if(this.getInputInRect(this._windowX,this._windowY,this._windowW,this._windowH)) { - handle.redraws = 2; - } - this._x = 0; - this._y = handle.scrollOffset; - if(handle.layout == 1) { - w = this.t._ELEMENT_W * this.SCALE | 0; - } - this._w = !handle.scrollEnabled ? w : w - (this.t._SCROLL_W * this.SCALE | 0); - this._h = h; - if(handle.redraws == 0 && !this.isScrolling && !this.isTyping) { - return false; - } - if(this.t.FILL_WINDOW_BG) { - this.g.begin(true,this.t.WINDOW_BG_COL); - } else { - this.g.begin(true,0); - this.g.set_color(this.t.WINDOW_BG_COL); - this.g.fillRect(this._x,this._y - handle.scrollOffset,handle.lastMaxX,handle.lastMaxY); - } - handle.dragEnabled = drag; - if(drag) { - if(this.inputStarted && this.getInputInRect(this._windowX,this._windowY,this._windowW,15)) { - handle.dragging = true; - } else if(this.inputReleased) { - handle.dragging = false; - } - if(handle.dragging) { - handle.redraws = 2; - handle.dragX += this.inputDX | 0; - handle.dragY += this.inputDY | 0; - } - this._y += 15; - } - return true; - } - ,endWindow: function() { - var handle = this.currentWindow; - if(handle.redraws > 0 || this.isScrolling || this.isTyping) { - if(handle.dragEnabled) { - this.g.set_color(this.t.SEPARATOR_COL); - this.g.fillRect(0,0,this._windowW,15); - } - var fullHeight = this._y - handle.scrollOffset; - if(fullHeight < this._windowH || handle.layout == 1 || !this.scrollEnabled) { - handle.scrollEnabled = false; - handle.scrollOffset = 0; - } else { - handle.scrollEnabled = true; - var amountToScroll = fullHeight - this._windowH; - var amountScrolled = -handle.scrollOffset; - var ratio = amountScrolled / amountToScroll; - var barH = this._windowH * Math.abs(this._windowH / fullHeight); - barH = Math.max(barH,this.t._ELEMENT_H * this.SCALE); - var totalScrollableArea = this._windowH - barH; - var e = amountToScroll / totalScrollableArea; - var barY = totalScrollableArea * ratio; - if(this.inputStarted && this.getInputInRect(this._windowX + this._windowW - this.t._SCROLL_BAR_W * this.SCALE,barY + this._windowY,this.t._SCROLL_BAR_W * this.SCALE,barH)) { - handle.scrolling = true; - this.scrollingHandle = handle; - this.isScrolling = true; - } - if(handle.scrolling) { - this.scroll(this.inputDY * e,fullHeight); - } else if(this.inputWheelDelta != 0) { - this.scroll(this.inputWheelDelta * (this.t._ELEMENT_H * this.SCALE),fullHeight); - } - if(handle.scrollOffset > 0) { - handle.scrollOffset = 0; - } else if(fullHeight + handle.scrollOffset < this._windowH) { - handle.scrollOffset = this._windowH - fullHeight; - } - this.g.set_color(this.t.SCROLL_BG_COL); - this.g.fillRect(this._windowW - (this.t._SCROLL_W * this.SCALE | 0),this._windowY,this.t._SCROLL_W * this.SCALE | 0,this._windowH); - this.g.set_color(this.t.SCROLL_COL); - this.g.drawRect(this._windowW - this.t._SCROLL_BAR_W * this.SCALE - this.scrollAlign,barY,this.t._SCROLL_BAR_W * this.SCALE,barH); - } - handle.lastMaxX = this._x; - handle.lastMaxY = this._y; - if(handle.layout == 0) { - handle.lastMaxX += this._windowW; - } else { - handle.lastMaxY += this._windowH; - } - handle.redraws--; - this.g.end(); - } - this.windowEnded = true; - this.globalG.begin(false); - this.globalG.set_color(this.t.WINDOW_TINT_COL); - this.globalG.drawScaledImage(handle.texture,this._windowX,this._windowY,handle.texture.get_width() / this.ops.scaleTexture,handle.texture.get_height() / this.ops.scaleTexture); - this.globalG.end(); - } - ,scroll: function(delta,fullHeight) { - this.currentWindow.scrollOffset -= delta; - } - ,panel: function(handle,text,accent) { - if(accent == null) { - accent = 0; - } - if(!this.isVisible()) { - this.endElement(); - return handle.selected; - } - if(this.getReleased()) { - handle.selected = !handle.selected; - } - var hover = this.getHover(); - if(accent > 0) { - this.g.set_color(accent == 1 ? this.t.PANEL_BG1_COL : this.t.PANEL_BG2_COL); - this.g.fillRect(this._x,this._y,this._w,this.t._ELEMENT_H * this.SCALE); - } - this.drawArrow(handle.selected,hover); - this.g.set_color(hover ? this.t.PANEL_TEXT_COL_HOVER : this.t.PANEL_TEXT_COL); - this.g.set_opacity(1.0); - if(accent > 0) { - this.drawString(this.g,text,this.titleOffsetX,0); - } else { - this.drawStringSmall(this.g,text,this.titleOffsetX,0); - } - this.endElement(); - return handle.selected; - } - ,image: function(image) { - var w = this._w - this.buttonOffsetY * 2; - var ratio = w / image.get_width(); - var h = image.get_height() * ratio; - if(!this.isVisible()) { - this.endElement(h); - return; - } - this.g.set_color(this.t.WINDOW_TINT_COL); - this.g.drawScaledImage(image,this._x + this.buttonOffsetY,this._y,w,h); - this.endElement(h); - } - ,text: function(text,align,bg) { - if(bg == null) { - bg = 0; - } - if(align == null) { - align = 0; - } - if(!this.isVisible()) { - this.endElement(); - return; - } - if(bg != 0) { - this.g.set_color(bg); - this.g.fillRect(this._x + this.buttonOffsetY,this._y + this.buttonOffsetY,this._w - this.buttonOffsetY * 2,this.t._BUTTON_H * this.SCALE); - } - this.g.set_color(this.t.TEXT_COL); - this.drawStringSmall(this.g,text,this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE,0,align); - this.endElement(); - } - ,textInput: function(handle,label,align) { - if(align == null) { - align = 0; - } - if(label == null) { - label = ""; - } - if(!this.isVisible()) { - this.endElement(); - return handle.text; - } - if(this.submitTextHandle == handle) { - handle.text = this.textToSubmit; - this.textToSubmit = ""; - this.submitTextHandle = null; - this.textSelectedCurrentText = ""; - } - var hover = this.getHover(); - this.g.set_color(hover ? this.t.TEXT_INPUT_BG_COL_HOVER : this.t.TEXT_INPUT_BG_COL); - var g = this.g; - var x = this._x + this.buttonOffsetY; - var y = this._y + this.buttonOffsetY; - var w = this._w - this.buttonOffsetY * 2; - var h = this.t._BUTTON_H * this.SCALE; - if(this.t.FILL_TEXT_INPUT_BG) { - g.fillRect(x,y,w,h); - } else { - g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE); - } - if(this.textSelectedHandle != handle && this.getReleased()) { - this.isTyping = true; - this.submitTextHandle = this.textSelectedHandle; - this.textToSubmit = this.textSelectedCurrentText; - this.textSelectedHandle = handle; - this.textSelectedCurrentText = handle.text; - this.cursorX = handle.text.length; - this.cursorY = 0; - if(kha_input_Keyboard.get() != null) { - kha_input_Keyboard.get().show(); - } - } - if(this.textSelectedHandle == handle) { - var text = this.textSelectedCurrentText; - if(this.isKeyDown) { - if(this.key == kha_Key.LEFT) { - if(this.cursorX > 0) { - this.cursorX--; - } - } else if(this.key == kha_Key.RIGHT) { - if(this.cursorX < text.length) { - this.cursorX++; - } - } else if(this.key == kha_Key.BACKSPACE) { - if(this.cursorX > 0) { - text = HxOverrides.substr(text,0,this.cursorX - 1) + HxOverrides.substr(text,this.cursorX,null); - this.cursorX--; - } - } else if(this.key == kha_Key.ENTER) { - this.deselectText(); - } else if(this.key == kha_Key.CHAR) { - text = HxOverrides.substr(text,0,this.cursorX) + this["char"] + HxOverrides.substr(text,this.cursorX,null); - this.cursorX++; - } - } - var time = kha_Scheduler.time(); - if(time % (this.t.TEXT_CURSOR_FLASH_SPEED * 2.0) < this.t.TEXT_CURSOR_FLASH_SPEED) { - this.g.set_color(this.t.TEXT_CURSOR_COL); - var cursorHeight = this.t._ELEMENT_H * this.SCALE - this.buttonOffsetY * 3.0; - var lineHeight = this.t._ELEMENT_H * this.SCALE; - var str = align == 0 ? HxOverrides.substr(text,0,this.cursorX) : text.substring(this.cursorX,text.length); - var strw = this.g.get_font().width(this.g.get_fontSize(),str); - var off = this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE; - var cursorX = align == 0 ? this._x + strw + off : this._x + this._w - strw - off; - this.g.fillRect(cursorX,this._y + this.cursorY * lineHeight + this.buttonOffsetY * 1.5,this.SCALE,cursorHeight); - } - this.textSelectedCurrentText = text; - } - if(label != "") { - this.g.set_color(this.t.DEFAULT_LABEL_COL); - var labelAlign = align == 2 ? 0 : 2; - var xOffset = labelAlign == 0 ? 7 : 0; - this.drawStringSmall(this.g,label,xOffset,0,labelAlign); - } - this.g.set_color(this.t.TEXT_COL); - if(this.textSelectedHandle != handle) { - this.drawStringSmall(this.g,handle.text,null,0,align); - } else { - this.drawStringSmall(this.g,this.textSelectedCurrentText,null,0,align); - } - this.endElement(); - return handle.text; - } - ,deselectText: function() { - this.submitTextHandle = this.textSelectedHandle; - this.textToSubmit = this.textSelectedCurrentText; - this.textSelectedHandle = null; - this.isTyping = false; - if(this.currentWindow != null) { - this.currentWindow.redraws = 2; - } - if(kha_input_Keyboard.get() != null) { - kha_input_Keyboard.get().hide(); - } - } - ,button: function(text) { - if(!this.isVisible()) { - this.endElement(); - return false; - } - var wasPressed = this.getReleased(); - var pushed = this.getPushed(); - var hover = this.getHover(); - this.g.set_color(pushed ? this.t.BUTTON_BG_COL_PRESSED : hover ? this.t.BUTTON_BG_COL_HOVER : this.t.BUTTON_BG_COL); - var g = this.g; - var x = this._x + this.buttonOffsetY; - var y = this._y + this.buttonOffsetY; - var w = this._w - this.buttonOffsetY * 2; - var h = this.t._BUTTON_H * this.SCALE; - if(this.t.FILL_BUTTON_BG) { - g.fillRect(x,y,w,h); - } else { - g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE); - } - this.g.set_color(this.t.BUTTON_TEXT_COL); - this.drawStringSmall(this.g,text,0,0,1); - this.endElement(); - return wasPressed; - } - ,check: function(handle,text) { - if(!this.isVisible()) { - this.endElement(); - return handle.selected; - } - if(this.getReleased()) { - handle.selected = !handle.selected; - } - var hover = this.getHover(); - this.drawCheck(handle.selected,hover); - this.g.set_color(hover ? this.t.TEXT_COL_HOVER : this.t.TEXT_COL); - this.drawStringSmall(this.g,text,this.titleOffsetX,0,0); - this.endElement(); - return handle.selected; - } - ,radio: function(handle,position,text) { - if(!this.isVisible()) { - this.endElement(); - return handle.position == position; - } - if(this.getReleased()) { - handle.position = position; - } - var hover = this.getHover(); - this.drawRadio(handle.position == position,hover); - this.g.set_color(hover ? this.t.TEXT_COL_HOVER : this.t.TEXT_COL); - this.drawStringSmall(this.g,text,this.titleOffsetX,0); - this.endElement(); - return handle.position == position; - } - ,inlineRadio: function(handle,texts) { - if(!this.isVisible()) { - this.endElement(); - return handle.position; - } - if(this.getReleased()) { - if(++handle.position >= texts.length) { - handle.position = 0; - } - } - var hover = this.getHover(); - this.drawInlineRadio(texts[handle.position],hover); - this.endElement(); - return handle.position; - } - ,slider: function(handle,text,from,to,filled,precision,displayValue) { - if(displayValue == null) { - displayValue = true; - } - if(precision == null) { - precision = 100; - } - if(filled == null) { - filled = false; - } - if(to == null) { - to = 1.0; - } - if(from == null) { - from = 0.0; - } - if(!this.isVisible()) { - this.endElement(); - return handle.value; - } - if(this.getStarted()) { - handle.scrolling = true; - this.scrollingHandle = handle; - this.isScrolling = true; - } - if(handle.scrolling) { - var range = to - from; - var sliderX = this._x + this._windowX + this.buttonOffsetY; - var sliderW = this._w - this.buttonOffsetY * 2; - var step = range / sliderW; - var value = from + (this.inputX - sliderX) * step; - handle.value = (value * precision | 0) / precision; - if(handle.value < from) { - handle.value = from; - } else if(handle.value > to) { - handle.value = to; - } - } - var hover = this.getHover(); - this.drawSlider(handle.value,from,to,filled,hover); - this.g.set_color(this.t.DEFAULT_LABEL_COL); - this.drawStringSmall(this.g,text,0,0,2); - if(displayValue) { - this.g.set_color(this.t.TEXT_COL); - this.drawStringSmall(this.g,handle.value + ""); - } - this.endElement(); - return handle.value; - } - ,separator: function() { - if(!this.isVisible()) { - this._y += 2; - return; - } - this.g.set_color(this.t.SEPARATOR_COL); - this.g.fillRect(this._x,this._y,this._w - this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE,this.t._LINE_STRENGTH * this.SCALE); - this._y += 2; - } - ,drawArrow: function(selected,hover) { - var x = this._x + this.arrowOffsetX; - var y = this._y + this.arrowOffsetY; - this.g.set_color(hover ? this.t.ARROW_COL_HOVER : this.t.ARROW_COL); - if(selected) { - this.g.fillTriangle(x,y,x + this.t._ARROW_W * this.SCALE,y,x + this.t._ARROW_W * this.SCALE / 2,y + this.t._ARROW_H * this.SCALE); - } else { - this.g.fillTriangle(x,y,x,y + this.t._ARROW_H * this.SCALE,x + this.t._ARROW_W * this.SCALE,y + this.t._ARROW_H * this.SCALE / 2); - } - } - ,drawCheck: function(selected,hover) { - var x = this._x + this.checkOffsetX; - var y = this._y + this.checkOffsetY; - this.g.set_color(hover ? this.t.CHECK_COL_HOVER : this.t.CHECK_COL); - var g = this.g; - var w = this.t._CHECK_W * this.SCALE; - var h = this.t._CHECK_H * this.SCALE; - if(this.t.FILL_CHECK_BG) { - g.fillRect(x,y,w,h); - } else { - g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE); - } - if(selected) { - this.g.set_color(-1); - this.g.drawImage(zui_Zui.checkSelectImage,x + this.checkSelectOffsetX,y + this.checkSelectOffsetY); - } - } - ,drawRadio: function(selected,hover) { - var x = this._x + this.radioOffsetX; - var y = this._y + this.radioOffsetY; - this.g.set_color(hover ? this.t.RADIO_COL_HOVER : this.t.RADIO_COL); - var g = this.g; - var w = this.t._RADIO_W * this.SCALE; - var h = this.t._RADIO_H * this.SCALE; - if(this.t.FILL_RADIO_BG) { - g.fillRect(x,y,w,h); - } else { - g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE); - } - if(selected) { - this.g.set_color(this.t.RADIO_SELECT_COL); - this.g.fillRect(x + this.radioSelectOffsetX,y + this.radioSelectOffsetY,this.t._RADIO_SELECT_W * this.SCALE,this.t._RADIO_SELECT_H * this.SCALE); - } - } - ,drawInlineRadio: function(text,hover) { - if(hover) { - this.g.set_color(this.t.RADIO_COL_HOVER); - this.g.fillRect(this._x + 5,this._y + 5,this._w - 10,this.t._ELEMENT_H * this.SCALE - 10); - } - var x = this._x + this.arrowOffsetX; - var y = this._y + this.arrowOffsetY; - this.g.set_color(hover ? this.t.ARROW_COL_HOVER : this.t.ARROW_COL); - this.g.fillTriangle(x,y,x,y + this.t._ARROW_H * this.SCALE,x - this.t._ARROW_W * this.SCALE / 2,y + this.t._ARROW_H * this.SCALE / 2); - var x1 = this._x + this._w - this.arrowOffsetX - 5; - this.g.fillTriangle(x1,y,x1,y + this.t._ARROW_H * this.SCALE,x1 + this.t._ARROW_W * this.SCALE / 2,y + this.t._ARROW_H * this.SCALE / 2); - this.g.set_color(hover ? this.t.TEXT_COL_HOVER : this.t.TEXT_COL); - this.drawStringSmall(this.g,text,this.titleOffsetX,0,1); - } - ,drawSlider: function(value,from,to,filled,hover) { - var x = this._x + this.buttonOffsetY; - var y = this._y + this.buttonOffsetY; - var w = this._w - this.buttonOffsetY * 2; - this.g.set_color(hover ? this.t.CHECK_COL_HOVER : this.t.CHECK_COL); - var g = this.g; - var h = this.t._BUTTON_H * this.SCALE; - if(this.t.FILL_SLIDER_BG) { - g.fillRect(x,y,w,h); - } else { - g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE); - } - this.g.set_color(hover ? this.t.SLIDER_COL_HOVER : this.t.SLIDER_COL); - var offset = (value - from) / (to - from); - var barW = 8 * this.SCALE; - var sliderX = filled ? x : x + (w - barW) * offset; - var sliderW = filled ? w * offset : barW; - this.g.fillRect(sliderX,y,sliderW,this.t._BUTTON_H * this.SCALE); - } - ,drawString: function(g,text,xOffset,yOffset,align) { - if(align == null) { - align = 0; - } - if(yOffset == null) { - yOffset = 0; - } - if(xOffset == null) { - xOffset = this.t._DEFAULT_TEXT_OFFSET_X; - } - xOffset *= this.SCALE; - g.set_font(this.ops.font); - g.set_fontSize(this.fontSize); - if(align == 1) { - xOffset = this._w / 2 - this.ops.font.width(this.fontSize,text) / 2; - } else if(align == 2) { - xOffset = this._w - this.ops.font.width(this.fontSize,text) - this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE; - } - g.drawString(text,this._x + xOffset,this._y + this.fontOffsetY + yOffset); - } - ,drawStringSmall: function(g,text,xOffset,yOffset,align) { - if(align == null) { - align = 0; - } - if(yOffset == null) { - yOffset = 0; - } - if(xOffset == null) { - xOffset = this.t._DEFAULT_TEXT_OFFSET_X; - } - xOffset *= this.SCALE; - g.set_font(this.ops.font); - g.set_fontSize(this.fontSmallSize); - if(align == 1) { - xOffset = this._w / 2 - this.ops.font.width(this.fontSmallSize,text) / 2; - } else if(align == 2) { - xOffset = this._w - this.ops.font.width(this.fontSmallSize,text) - this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE; - } - g.drawString(text,this._x + xOffset,this._y + this.fontSmallOffsetY + yOffset); - } - ,endElement: function(elementSize) { - if(this.currentWindow == null) { - this._y += this.t._ELEMENT_H * this.SCALE + this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE; - return; - } - if(this.currentWindow.layout == 0) { - if(this.curRatio == -1 || this.ratios != null && this.curRatio == this.ratios.length - 1) { - if(elementSize == null) { - elementSize = this.t._ELEMENT_H * this.SCALE + this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE; - } - this._y += elementSize; - if(this.ratios != null && this.curRatio == this.ratios.length - 1) { - this.curRatio = -1; - this.ratios = null; - this._x = this.xBeforeSplit; - this._w = this.wBeforeSplit; - } - } else { - this.curRatio++; - this._x += this._w; - this._w = this.wBeforeSplit * this.ratios[this.curRatio] | 0; - } - } else { - this._x += this._w + this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE; - } - } - ,row: function(ratios) { - this.ratios = ratios; - this.curRatio = 0; - this.xBeforeSplit = this._x; - this.wBeforeSplit = this._w; - this._w = this._w * ratios[this.curRatio] | 0; - } - ,indent: function() { - this._x += this.t._TAB_W * this.SCALE | 0; - this._w -= this.t._TAB_W * this.SCALE | 0; - } - ,unindent: function() { - this._x -= this.t._TAB_W * this.SCALE | 0; - this._w += this.t._TAB_W * this.SCALE | 0; - } - ,drawRect: function(g,fill,x,y,w,h,strength) { - if(strength == null) { - strength = 1.0; - } - if(fill) { - g.fillRect(x,y,w,h); - } else { - g.drawRect(x,y,w,h,this.t._LINE_STRENGTH * this.SCALE); - } - } - ,isVisible: function() { - if(this.currentWindow == null) { - return true; - } - if(this._y + this.t._ELEMENT_H * this.SCALE > 0) { - return this._y < this.currentWindow.texture.get_height(); - } else { - return false; - } - } - ,getReleased: function() { - if(this.inputReleased && this.getHover()) { - return this.getInitialHover(); - } else { - return false; - } - } - ,getPushed: function() { - if(this.inputDown && this.getHover()) { - return this.getInitialHover(); - } else { - return false; - } - } - ,getStarted: function() { - if(this.inputStarted) { - return this.getHover(); - } else { - return false; - } - } - ,getInitialHover: function() { - if(this.inputInitialX >= this._windowX + this._x && this.inputInitialX < this._windowX + this._x + this._w && this.inputInitialY >= this._windowY + this._y) { - return this.inputInitialY < this._windowY + this._y + this.t._ELEMENT_H * this.SCALE; - } else { - return false; - } - } - ,getHover: function() { - if(this.inputX >= this._windowX + this._x && this.inputX < this._windowX + this._x + this._w && this.inputY >= this._windowY + this._y) { - return this.inputY < this._windowY + this._y + this.t._ELEMENT_H * this.SCALE; - } else { - return false; - } - } - ,getInputInRect: function(x,y,w,h,scale) { - if(scale == null) { - scale = 1.0; - } - if(this.inputX >= x * scale && this.inputX < (x + w) * scale && this.inputY >= y * scale) { - return this.inputY < (y + h) * scale; - } else { - return false; - } - } - ,onMouseDown: function(button,x,y) { - this.inputStarted = true; - if(button == 0) { - this.inputDown = true; - } else { - this.inputDownR = true; - } - this.setInitialInputPosition(x * this.ops.scaleTexture | 0,y * this.ops.scaleTexture | 0); - } - ,onMouseUp: function(button,x,y) { - if(this.isScrolling) { - this.isScrolling = false; - if(this.scrollingHandle != null) { - this.scrollingHandle.scrolling = false; - } - } else { - this.inputReleased = true; - } - if(button == 0) { - this.inputDown = false; - } else { - this.inputDownR = false; - } - this.setInputPosition(x * this.ops.scaleTexture | 0,y * this.ops.scaleTexture | 0); - this.deselectText(); - } - ,onMouseMove: function(x,y,movementX,movementY) { - this.setInputPosition(x * this.ops.scaleTexture | 0,y * this.ops.scaleTexture | 0); - } - ,onMouseWheel: function(delta) { - this.inputWheelDelta = delta; - } - ,setInitialInputPosition: function(inputX,inputY) { - this.setInputPosition(inputX,inputY); - this.inputInitialX = inputX; - this.inputInitialY = inputY; - } - ,setInputPosition: function(inputX,inputY) { - this.inputDX += inputX - this.inputX; - this.inputDY += inputY - this.inputY; - this.inputX = inputX; - this.inputY = inputY; - } - ,onKeyDown: function(key,$char) { - this.isKeyDown = true; - this.key = key; - this["char"] = $char; - } - ,onKeyUp: function(key,$char) { - } - ,ELEMENT_W: function() { - return this.t._ELEMENT_W * this.SCALE; - } - ,ELEMENT_H: function() { - return this.t._ELEMENT_H * this.SCALE; - } - ,ELEMENT_SEPARATOR_SIZE: function() { - return this.t._ELEMENT_SEPARATOR_SIZE * this.SCALE; - } - ,ARROW_W: function() { - return this.t._ARROW_W * this.SCALE; - } - ,ARROW_H: function() { - return this.t._ARROW_H * this.SCALE; - } - ,BUTTON_H: function() { - return this.t._BUTTON_H * this.SCALE; - } - ,CHECK_W: function() { - return this.t._CHECK_W * this.SCALE; - } - ,CHECK_H: function() { - return this.t._CHECK_H * this.SCALE; - } - ,CHECK_SELECT_W: function() { - return this.t._CHECK_SELECT_W * this.SCALE; - } - ,CHECK_SELECT_H: function() { - return this.t._CHECK_SELECT_H * this.SCALE; - } - ,RADIO_W: function() { - return this.t._RADIO_W * this.SCALE; - } - ,RADIO_H: function() { - return this.t._RADIO_H * this.SCALE; - } - ,RADIO_SELECT_W: function() { - return this.t._RADIO_SELECT_W * this.SCALE; - } - ,RADIO_SELECT_H: function() { - return this.t._RADIO_SELECT_H * this.SCALE; - } - ,SCROLL_W: function() { - return this.t._SCROLL_W * this.SCALE | 0; - } - ,SCROLL_BAR_W: function() { - return this.t._SCROLL_BAR_W * this.SCALE; - } - ,DEFAULT_TEXT_OFFSET_X: function() { - return this.t._DEFAULT_TEXT_OFFSET_X * this.SCALE; - } - ,TAB_W: function() { - return this.t._TAB_W * this.SCALE | 0; - } - ,LINE_STRENGTH: function() { - return this.t._LINE_STRENGTH * this.SCALE; - } - ,resize: function(handle,w,h,khaWindowId) { - if(khaWindowId == null) { - khaWindowId = 0; - } - handle.redraws = 2; - if(handle.texture != null) { - handle.texture.unload(); - } - handle.texture = kha_Image.createRenderTarget(w,h,kha_graphics4_TextureFormat.RGBA32,0,1,khaWindowId); - handle.texture.get_g2().set_imageScaleQuality(kha_graphics2_ImageScaleQuality.High); - } - ,__class__: zui_Zui -}; -var zui_Handle = function(ops) { - this.dragY = 0; - this.dragX = 0; - this.dragEnabled = false; - this.dragging = false; - this.lastMaxY = 0.0; - this.lastMaxX = 0.0; - this.layout = 0; - this.scrollEnabled = false; - this.scrollOffset = 0.0; - this.scrolling = false; - this.redraws = 2; - this.texture = null; - this.text = ""; - this.value = 0.0; - this.color = -1; - this.position = 0; - this.selected = false; - if(ops != null) { - if(ops.selected != null) { - this.selected = ops.selected; - } - if(ops.position != null) { - this.position = ops.position; - } - if(ops.value != null) { - this.value = ops.value; - } - if(ops.text != null) { - this.text = ops.text; - } - if(ops.color != null) { - this.color = ops.color; - } - if(ops.layout != null) { - this.layout = ops.layout; - } - } -}; -$hxClasses["zui.Handle"] = zui_Handle; -zui_Handle.__name__ = true; -zui_Handle.prototype = { - selected: null - ,position: null - ,color: null - ,value: null - ,text: null - ,texture: null - ,redraws: null - ,scrolling: null - ,scrollOffset: null - ,scrollEnabled: null - ,layout: null - ,lastMaxX: null - ,lastMaxY: null - ,dragging: null - ,dragEnabled: null - ,dragX: null - ,dragY: null - ,children: null - ,nest: function(i,ops) { - if(this.children == null) { - this.children = []; - } - while(this.children.length <= i) this.children.push(null); - if(this.children[i] == null) { - this.children[i] = new zui_Handle(ops); - } - return this.children[i]; - } - ,__class__: zui_Handle -}; -function $iterator(o) { if( o instanceof Array ) return function() { return HxOverrides.iter(o); }; return typeof(o.iterator) == 'function' ? $bind(o,o.iterator) : o.iterator; } -var $_, $fid = 0; -function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $fid++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = function(){ return f.method.apply(f.scope, arguments); }; f.scope = o; f.method = m; o.hx__closures__[m.__id__] = f; } return f; } -$hxClasses["Math"] = Math; -String.prototype.__class__ = $hxClasses["String"] = String; -String.__name__ = true; -$hxClasses["Array"] = Array; -Array.__name__ = true; -Date.prototype.__class__ = $hxClasses["Date"] = Date; -Date.__name__ = ["Date"]; -var Int = $hxClasses["Int"] = { __name__ : ["Int"]}; -var Dynamic = $hxClasses["Dynamic"] = { __name__ : ["Dynamic"]}; -var Float = $hxClasses["Float"] = Number; -Float.__name__ = ["Float"]; -var Bool = $hxClasses["Bool"] = Boolean; -Bool.__ename__ = ["Bool"]; -var Class = $hxClasses["Class"] = { __name__ : ["Class"]}; -var Enum = { }; -var __map_reserved = {} -var ArrayBuffer = $global.ArrayBuffer || js_html_compat_ArrayBuffer; -if(ArrayBuffer.prototype.slice == null) { - ArrayBuffer.prototype.slice = js_html_compat_ArrayBuffer.sliceImpl; -} -var DataView = $global.DataView || js_html_compat_DataView; -var Float32Array = $global.Float32Array || js_html_compat_Float32Array._new; -var Uint8Array = $global.Uint8Array || js_html_compat_Uint8Array._new; -haxe_Unserializer.DEFAULT_RESOLVER = new haxe__$Unserializer_DefaultResolver(); -haxe_Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:"; -haxe_crypto_Base64.CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -haxe_crypto_Base64.BYTES = haxe_io_Bytes.ofString(haxe_crypto_Base64.CHARS); -haxe_ds_ObjectMap.count = 0; -haxe_io_FPHelper.i64tmp = (function($this) { - var $r; - var this1 = new haxe__$Int64__$_$_$Int64(0,0); - $r = this1; - return $r; -}(this)); -js_Boot.__toStr = ({ }).toString; -js_html_compat_Float32Array.BYTES_PER_ELEMENT = 4; -js_html_compat_Uint8Array.BYTES_PER_ELEMENT = 1; -kha_Assets.images = new kha__$Assets_ImageList(); -kha_Assets.sounds = new kha__$Assets_SoundList(); -kha_Assets.blobs = new kha__$Assets_BlobList(); -kha_Assets.fonts = new kha__$Assets_FontList(); -kha_Assets.videos = new kha__$Assets_VideoList(); -kha__$Color_Color_$Impl_$.Black = -16777216; -kha__$Color_Color_$Impl_$.White = -1; -kha__$Color_Color_$Impl_$.Red = -65536; -kha__$Color_Color_$Impl_$.Blue = -16776961; -kha__$Color_Color_$Impl_$.Green = -16711936; -kha__$Color_Color_$Impl_$.Magenta = -65281; -kha__$Color_Color_$Impl_$.Yellow = -256; -kha__$Color_Color_$Impl_$.Cyan = -16711681; -kha__$Color_Color_$Impl_$.Purple = -8388480; -kha__$Color_Color_$Impl_$.Pink = -16181; -kha__$Color_Color_$Impl_$.Orange = -23296; -kha__$Color_Color_$Impl_$.Transparent = 0; -kha__$Color_Color_$Impl_$.invMaxChannelValue = 0.00392156862745098; -kha_CompilerDefines.js = "1"; -kha_CompilerDefines.kha_a1 = "1"; -kha_CompilerDefines.kha_g3 = "1"; -kha_CompilerDefines.kha_g4 = "1"; -kha_CompilerDefines.kha_html5_js = "1"; -kha_CompilerDefines["source-header"] = "Generated by Haxe 3.4.2"; -kha_CompilerDefines.sys_g3 = "1"; -kha_CompilerDefines.kha_g1 = "1"; -kha_CompilerDefines.sys_a1 = "1"; -kha_CompilerDefines.haxe_ver = "3.402"; -kha_CompilerDefines.jquery_ver = "11204"; -kha_CompilerDefines.kha_js = "1"; -kha_CompilerDefines.sys_html5 = "1"; -kha_CompilerDefines.canvas_id = "khanvas"; -kha_CompilerDefines.kha_version = "1611"; -kha_CompilerDefines.sys_g4 = "1"; -kha_CompilerDefines.js_es = "5"; -kha_CompilerDefines.kha_html5 = "1"; -kha_CompilerDefines.zui = "1"; -kha_CompilerDefines["js-es5"] = "1"; -kha_CompilerDefines.js_es5 = "1"; -kha_CompilerDefines.sys_a2 = "1"; -kha_CompilerDefines.dce = "std"; -kha_CompilerDefines.sys_g1 = "1"; -kha_CompilerDefines["true"] = "1"; -kha_CompilerDefines.sys_g2 = "1"; -kha_CompilerDefines.kha_webgl = "1"; -kha_CompilerDefines.kha = "1"; -kha_CompilerDefines.kha_g2 = "1"; -kha_CompilerDefines.haxe3 = "1"; -kha_CompilerDefines.kha_a2 = "1"; -kha_CompilerDefines.script_name = "kha"; -kha_FontStyle.Default = new kha_FontStyle(false,false,false); -kha_Scheduler.timeWarpSaveTime = 1.0; -kha_Scheduler.DIF_COUNT = 3; -kha_Scheduler.maxframetime = 0.5; -kha_Scheduler.startTime = 0; -kha_Shaders.painter_colored_fragData0 = "s198:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdmFyeWluZyBoaWdocCB2ZWM0IGZyYWdtZW50Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9GcmFnRGF0YVswXSA9IGZyYWdtZW50Q29sb3I7Cn0KCg"; -kha_Shaders.painter_colored_fragData1 = "s192:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp2YXJ5aW5nIHZlYzQgZnJhZ21lbnRDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX0ZyYWdEYXRhWzBdID0gZnJhZ21lbnRDb2xvcjsKfQoK"; -kha_Shaders.painter_colored_fragData2 = "s210:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CgpvdXQgdmVjNCBGcmFnQ29sb3I7CmluIHZlYzQgZnJhZ21lbnRDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIEZyYWdDb2xvciA9IGZyYWdtZW50Q29sb3I7Cn0KCg"; -kha_Shaders.painter_colored_vertData0 = "s331:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgZnJhZ21lbnRDb2xvcjsKYXR0cmlidXRlIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgZnJhZ21lbnRDb2xvciA9IHZlcnRleENvbG9yOwp9Cgo"; -kha_Shaders.painter_colored_vertData1 = "s374:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzQgZnJhZ21lbnRDb2xvcjsKYXR0cmlidXRlIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg"; -kha_Shaders.painter_colored_vertData2 = "s354:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWM0IGZyYWdtZW50Q29sb3I7CmluIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg"; -kha_Shaders.painter_image_fragData0 = "s471:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4OwoKdmFyeWluZyBoaWdocCB2ZWMyIHRleENvb3JkOwp2YXJ5aW5nIGhpZ2hwIHZlYzQgY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBoaWdocCB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICBoaWdocCB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBnbF9GcmFnRGF0YVswXSA9IHRleGNvbG9yOwp9Cgo"; -kha_Shaders.painter_image_fragData1 = "s444:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCnZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKdmFyeWluZyB2ZWM0IGNvbG9yOwoKdm9pZCBtYWluKCkKewogICAgdmVjNCB0ZXhjb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgZ2xfRnJhZ0RhdGFbMF0gPSB0ZXhjb2xvcjsKfQoK"; -kha_Shaders.painter_image_fragData2 = "s452:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCmluIHZlYzIgdGV4Q29vcmQ7CmluIHZlYzQgY29sb3I7Cm91dCB2ZWM0IEZyYWdDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgdGV4Y29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBGcmFnQ29sb3IgPSB0ZXhjb2xvcjsKfQoK"; -kha_Shaders.painter_image_vertData0 = "s415:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSB2ZWMyIHRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgY29sb3I7CmF0dHJpYnV0ZSB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo"; -kha_Shaders.painter_image_vertData1 = "s479:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247CnZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yOwphdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo"; -kha_Shaders.painter_image_vertData2 = "s444:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWMyIHRleENvb3JkOwppbiBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247Cm91dCBtZWRpdW1wIHZlYzQgY29sb3I7CmluIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHRleFBvc2l0aW9uOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK"; -kha_Shaders.painter_text_fragData0 = "s351:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4OwoKdmFyeWluZyBoaWdocCB2ZWM0IGZyYWdtZW50Q29sb3I7CnZhcnlpbmcgaGlnaHAgdmVjMiB0ZXhDb29yZDsKCnZvaWQgbWFpbigpCnsKICAgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNChmcmFnbWVudENvbG9yLnh5eiwgdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpLnggKiBmcmFnbWVudENvbG9yLncpOwp9Cgo"; -kha_Shaders.painter_text_fragData1 = "s340:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCnZhcnlpbmcgdmVjNCBmcmFnbWVudENvbG9yOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9GcmFnRGF0YVswXSA9IHZlYzQoZnJhZ21lbnRDb2xvci54eXosIHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKS54ICogZnJhZ21lbnRDb2xvci53KTsKfQoK"; -kha_Shaders.painter_text_fragData2 = "s348:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCm91dCB2ZWM0IEZyYWdDb2xvcjsKaW4gdmVjNCBmcmFnbWVudENvbG9yOwppbiB2ZWMyIHRleENvb3JkOwoKdm9pZCBtYWluKCkKewogICAgRnJhZ0NvbG9yID0gdmVjNChmcmFnbWVudENvbG9yLnh5eiwgdGV4dHVyZSh0ZXgsIHRleENvb3JkKS54ICogZnJhZ21lbnRDb2xvci53KTsKfQoK"; -kha_Shaders.painter_text_vertData0 = "s436:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSB2ZWMyIHRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgZnJhZ21lbnRDb2xvcjsKYXR0cmlidXRlIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgdGV4Q29vcmQgPSB0ZXhQb3NpdGlvbjsKICAgIGZyYWdtZW50Q29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK"; -kha_Shaders.painter_text_vertData1 = "s500:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247CnZhcnlpbmcgbWVkaXVtcCB2ZWM0IGZyYWdtZW50Q29sb3I7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgdGV4Q29vcmQgPSB0ZXhQb3NpdGlvbjsKICAgIGZyYWdtZW50Q29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK"; -kha_Shaders.painter_text_vertData2 = "s466:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWMyIHRleENvb3JkOwppbiBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247Cm91dCBtZWRpdW1wIHZlYzQgZnJhZ21lbnRDb2xvcjsKaW4gbWVkaXVtcCB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg"; -kha_Shaders.painter_video_fragData0 = "s471:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gaGlnaHAgaW50OwoKdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdGV4OwoKdmFyeWluZyBoaWdocCB2ZWMyIHRleENvb3JkOwp2YXJ5aW5nIGhpZ2hwIHZlYzQgY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBoaWdocCB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICBoaWdocCB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBnbF9GcmFnRGF0YVswXSA9IHRleGNvbG9yOwp9Cgo"; -kha_Shaders.painter_video_fragData1 = "s444:I3ZlcnNpb24gMTAwCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCnZhcnlpbmcgdmVjMiB0ZXhDb29yZDsKdmFyeWluZyB2ZWM0IGNvbG9yOwoKdm9pZCBtYWluKCkKewogICAgdmVjNCB0ZXhjb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgZ2xfRnJhZ0RhdGFbMF0gPSB0ZXhjb2xvcjsKfQoK"; -kha_Shaders.painter_video_fragData2 = "s452:I3ZlcnNpb24gMzAwIGVzCnByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpwcmVjaXNpb24gbWVkaXVtcCBpbnQ7Cgp1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjJEIHRleDsKCmluIHZlYzIgdGV4Q29vcmQ7CmluIHZlYzQgY29sb3I7Cm91dCB2ZWM0IEZyYWdDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgdGV4Y29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Q29vcmQpICogY29sb3I7CiAgICB2ZWMzIF8zMiA9IHRleGNvbG9yLnh5eiAqIGNvbG9yLnc7CiAgICB0ZXhjb2xvciA9IHZlYzQoXzMyLngsIF8zMi55LCBfMzIueiwgdGV4Y29sb3Iudyk7CiAgICBGcmFnQ29sb3IgPSB0ZXhjb2xvcjsKfQoK"; -kha_Shaders.painter_video_vertData0 = "s415:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmF0dHJpYnV0ZSB2ZWMzIHZlcnRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSB2ZWMyIHRleFBvc2l0aW9uOwp2YXJ5aW5nIHZlYzQgY29sb3I7CmF0dHJpYnV0ZSB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo"; -kha_Shaders.painter_video_vertData1 = "s479:I3ZlcnNpb24gMTAwCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKYXR0cmlidXRlIG1lZGl1bXAgdmVjMyB2ZXJ0ZXhQb3NpdGlvbjsKdmFyeWluZyBtZWRpdW1wIHZlYzIgdGV4Q29vcmQ7CmF0dHJpYnV0ZSBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247CnZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yOwphdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBjb2xvciA9IHZlcnRleENvbG9yOwp9Cgo"; -kha_Shaders.painter_video_vertData2 = "s444:I3ZlcnNpb24gMzAwIGVzCgp1bmlmb3JtIG1lZGl1bXAgbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoKaW4gbWVkaXVtcCB2ZWMzIHZlcnRleFBvc2l0aW9uOwpvdXQgbWVkaXVtcCB2ZWMyIHRleENvb3JkOwppbiBtZWRpdW1wIHZlYzIgdGV4UG9zaXRpb247Cm91dCBtZWRpdW1wIHZlYzQgY29sb3I7CmluIG1lZGl1bXAgdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHRleFBvc2l0aW9uOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK"; -kha_System.renderListeners = []; -kha_System.foregroundListeners = []; -kha_System.resumeListeners = []; -kha_System.pauseListeners = []; -kha_System.backgroundListeners = []; -kha_System.shutdownListeners = []; -kha_SystemImpl.mobile = false; -kha_SystemImpl.mobileAudioPlaying = false; -kha_SystemImpl.chrome = false; -kha_SystemImpl.insideInputEvent = false; -kha_SystemImpl.maxGamepads = 4; -kha_SystemImpl.leftMouseCtrlDown = false; -kha_SystemImpl.minimumScroll = 999; -kha_SystemImpl.lastFirstTouchX = 0; -kha_SystemImpl.lastFirstTouchY = 0; -kha_SystemImpl.iosSoundEnabled = false; -kha_WebGLImage.GL_RGBA16F = 34842; -kha_WebGLImage.GL_RGBA32F = 34836; -kha_WebGLImage.GL_R16F = 33325; -kha_WebGLImage.GL_R32F = 33326; -kha_WebGLImage.GL_DEPTH_COMPONENT24 = 33190; -kha_WebGLImage.GL_DEPTH24_STENCIL8 = 35056; -kha_WebGLImage.GL_DEPTH32F_STENCIL8 = 36013; -kha_audio2_Audio1.channelCount = 16; -kha_audio2_ogg_tools_Crc32.POLY = 79764919; -kha_audio2_ogg_vorbis_VorbisDecodeState.INVALID_BITS = -1; -kha_audio2_ogg_vorbis_VorbisTools.EOP = -1; -kha_audio2_ogg_vorbis_VorbisTools.M__PI = 3.14159265358979323846264; -kha_audio2_ogg_vorbis_VorbisTools.DIVTAB_NUMER = 32; -kha_audio2_ogg_vorbis_VorbisTools.DIVTAB_DENOM = 64; -kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE = [1.0649863e-07,1.1341951e-07,1.2079015e-07,1.2863978e-07,1.3699951e-07,1.4590251e-07,1.5538408e-07,1.6548181e-07,1.7623575e-07,1.8768855e-07,1.9988561e-07,2.1287530e-07,2.2670913e-07,2.4144197e-07,2.5713223e-07,2.7384213e-07,2.9163793e-07,3.1059021e-07,3.3077411e-07,3.5226968e-07,3.7516214e-07,3.9954229e-07,4.2550680e-07,4.5315863e-07,4.8260743e-07,5.1396998e-07,5.4737065e-07,5.8294187e-07,6.2082472e-07,6.6116941e-07,7.0413592e-07,7.4989464e-07,7.9862701e-07,8.5052630e-07,9.0579828e-07,9.6466216e-07,1.0273513e-06,1.0941144e-06,1.1652161e-06,1.2409384e-06,1.3215816e-06,1.4074654e-06,1.4989305e-06,1.5963394e-06,1.7000785e-06,1.8105592e-06,1.9282195e-06,2.0535261e-06,2.1869758e-06,2.3290978e-06,2.4804557e-06,2.6416497e-06,2.8133190e-06,2.9961443e-06,3.1908506e-06,3.3982101e-06,3.6190449e-06,3.8542308e-06,4.1047004e-06,4.3714470e-06,4.6555282e-06,4.9580707e-06,5.2802740e-06,5.6234160e-06,5.9888572e-06,6.3780469e-06,6.7925283e-06,7.2339451e-06,7.7040476e-06,8.2047000e-06,8.7378876e-06,9.3057248e-06,9.9104632e-06,1.0554501e-05,1.1240392e-05,1.1970856e-05,1.2748789e-05,1.3577278e-05,1.4459606e-05,1.5399272e-05,1.6400004e-05,1.7465768e-05,1.8600792e-05,1.9809576e-05,2.1096914e-05,2.2467911e-05,2.3928002e-05,2.5482978e-05,2.7139006e-05,2.8902651e-05,3.0780908e-05,3.2781225e-05,3.4911534e-05,3.7180282e-05,3.9596466e-05,4.2169667e-05,4.4910090e-05,4.7828601e-05,5.0936773e-05,5.4246931e-05,5.7772202e-05,6.1526565e-05,6.5524908e-05,6.9783085e-05,7.4317983e-05,7.9147585e-05,8.4291040e-05,8.9768747e-05,9.5602426e-05,0.00010181521,0.00010843174,0.00011547824,0.00012298267,0.00013097477,0.00013948625,0.00014855085,0.00015820453,0.00016848555,0.00017943469,0.00019109536,0.00020351382,0.00021673929,0.00023082423,0.00024582449,0.00026179955,0.00027881276,0.00029693158,0.00031622787,0.00033677814,0.00035866388,0.00038197188,0.00040679456,0.00043323036,0.00046138411,0.00049136745,0.00052329927,0.00055730621,0.00059352311,0.00063209358,0.00067317058,0.00071691700,0.00076350630,0.00081312324,0.00086596457,0.00092223983,0.00098217216,0.0010459992,0.0011139742,0.0011863665,0.0012634633,0.0013455702,0.0014330129,0.0015261382,0.0016253153,0.0017309374,0.0018434235,0.0019632195,0.0020908006,0.0022266726,0.0023713743,0.0025254795,0.0026895994,0.0028643847,0.0030505286,0.0032487691,0.0034598925,0.0036847358,0.0039241906,0.0041792066,0.0044507950,0.0047400328,0.0050480668,0.0053761186,0.0057254891,0.0060975636,0.0064938176,0.0069158225,0.0073652516,0.0078438871,0.0083536271,0.0088964928,0.009474637,0.010090352,0.010746080,0.011444421,0.012188144,0.012980198,0.013823725,0.014722068,0.015678791,0.016697687,0.017782797,0.018938423,0.020169149,0.021479854,0.022875735,0.024362330,0.025945531,0.027631618,0.029427276,0.031339626,0.033376252,0.035545228,0.037855157,0.040315199,0.042935108,0.045725273,0.048696758,0.051861348,0.055231591,0.058820850,0.062643361,0.066714279,0.071049749,0.075666962,0.080584227,0.085821044,0.091398179,0.097337747,0.10366330,0.11039993,0.11757434,0.12521498,0.13335215,0.14201813,0.15124727,0.16107617,0.17154380,0.18269168,0.19456402,0.20720788,0.22067342,0.23501402,0.25028656,0.26655159,0.28387361,0.30232132,0.32196786,0.34289114,0.36517414,0.38890521,0.41417847,0.44109412,0.46975890,0.50028648,0.53279791,0.56742212,0.60429640,0.64356699,0.68538959,0.72993007,0.77736504,0.82788260,0.88168307,0.9389798,1.0]; -kha_audio2_ogg_vorbis_data_Codebook.NO_CODE = 255; -kha_audio2_ogg_vorbis_data_Codebook.delay = 0; -kha_audio2_ogg_vorbis_data_Header.PACKET_ID = 1; -kha_audio2_ogg_vorbis_data_Header.PACKET_COMMENT = 3; -kha_audio2_ogg_vorbis_data_Header.PACKET_SETUP = 5; -kha_audio2_ogg_vorbis_data_PageFlag.CONTINUED_PACKET = 1; -kha_audio2_ogg_vorbis_data_PageFlag.FIRST_PAGE = 2; -kha_audio2_ogg_vorbis_data_PageFlag.LAST_PAGE = 4; -kha_audio2_ogg_vorbis_data_Setting.MAX_CHANNELS = 16; -kha_audio2_ogg_vorbis_data_Setting.PUSHDATA_CRC_COUNT = 4; -kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_LENGTH = 10; -kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_TABLE_SIZE = 1024; -kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_TABLE_MASK = 1023; -kha_graphics2_truetype_StbTruetype.STBTT_vmove = 1; -kha_graphics2_truetype_StbTruetype.STBTT_vline = 2; -kha_graphics2_truetype_StbTruetype.STBTT_vcurve = 3; -kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_DONTCARE = 0; -kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_BOLD = 1; -kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_ITALIC = 2; -kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_UNDERSCORE = 4; -kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_NONE = 8; -kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_UNICODE = 0; -kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_MAC = 1; -kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_ISO = 2; -kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_MICROSOFT = 3; -kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_1_0 = 0; -kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_1_1 = 1; -kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_ISO_10646 = 2; -kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_2_0_BMP = 3; -kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_2_0_FULL = 4; -kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_SYMBOL = 0; -kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_UNICODE_BMP = 1; -kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_SHIFTJIS = 2; -kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_UNICODE_FULL = 10; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_ROMAN = 0; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_ARABIC = 4; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_JAPANESE = 1; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_HEBREW = 5; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_CHINESE_TRAD = 2; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_GREEK = 6; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_KOREAN = 3; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_RUSSIAN = 7; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_ENGLISH = 1033; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_ITALIAN = 1040; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_CHINESE = 2052; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_JAPANESE = 1041; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_DUTCH = 1043; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_KOREAN = 1042; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_FRENCH = 1036; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_RUSSIAN = 1049; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_GERMAN = 1031; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_SPANISH = 1033; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_HEBREW = 1037; -kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_SWEDISH = 1053; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ENGLISH = 0; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_JAPANESE = 11; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ARABIC = 12; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_KOREAN = 23; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_DUTCH = 4; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_RUSSIAN = 32; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_FRENCH = 1; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_SPANISH = 6; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_GERMAN = 2; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_SWEDISH = 5; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_HEBREW = 10; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_CHINESE_SIMPLIFIED = 33; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ITALIAN = 3; -kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_CHINESE_TRAD = 19; -kha_graphics2_truetype_StbTruetype.STBTT_MAX_OVERSAMPLE = 8; -kha_graphics2_truetype_StbTruetype.STBTT_RASTERIZER_VERSION = 2; -kha_graphics4_CubeMap.GL_RGBA16F = 34842; -kha_graphics4_CubeMap.GL_RGBA32F = 34836; -kha_graphics4_CubeMap.GL_R16F = 33325; -kha_graphics4_CubeMap.GL_R32F = 33326; -kha_graphics4_CubeMap.GL_DEPTH_COMPONENT24 = 33190; -kha_graphics4_CubeMap.GL_DEPTH24_STENCIL8 = 35056; -kha_graphics4_CubeMap.GL_DEPTH32F_STENCIL8 = 36013; -kha_graphics4_ImageShaderPainter.bufferSize = 1500; -kha_graphics4_ImageShaderPainter.vertexSize = 9; -kha_graphics4_ColoredShaderPainter.bufferSize = 100; -kha_graphics4_ColoredShaderPainter.triangleBufferSize = 100; -kha_graphics4_TextShaderPainter.bufferSize = 100; -kha_input_Gamepad.__meta__ = { fields : { sendAxisEvent : { input : null}, sendButtonEvent : { input : null}}}; -kha_input_Gamepad.instances = []; -kha_input_Keyboard.__meta__ = { fields : { sendDownEvent : { input : null}, sendUpEvent : { input : null}}}; -kha_input_Mouse.__meta__ = { fields : { sendLeaveEvent : { input : null}, sendDownEvent : { input : null}, sendUpEvent : { input : null}, sendMoveEvent : { input : null}, sendWheelEvent : { input : null}}}; -kha_internal_HdrFormat.radiancePattern = new EReg("#\\?RADIANCE","i"); -kha_internal_HdrFormat.commentPattern = new EReg("#.*","i"); -kha_internal_HdrFormat.gammaPattern = new EReg("GAMMA=","i"); -kha_internal_HdrFormat.exposurePattern = new EReg("EXPOSURE=\\s*([0-9]*[.][0-9]*)","i"); -kha_internal_HdrFormat.formatPattern = new EReg("FORMAT=32-bit_rle_rgbe","i"); -kha_internal_HdrFormat.widthHeightPattern = new EReg("-Y ([0-9]+) \\+X ([0-9]+)","i"); -kha_js_AEAudioChannel.todo = []; -kha_js_Sound.loading = []; -kha_js_Video.loading = new List(); -kha_math_FastMatrix3.width = 3; -kha_math_FastMatrix3.height = 3; -kha_math_FastMatrix4.width = 4; -kha_math_FastMatrix4.height = 4; -kha_math_Matrix3.width = 3; -kha_math_Matrix3.height = 3; -kha_math_Matrix4.width = 4; -kha_math_Matrix4.height = 4; -kha_math_Quaternion.AXIS_X = 0; -kha_math_Quaternion.AXIS_Y = 1; -kha_math_Quaternion.AXIS_Z = 2; -kha_network_ControllerBuilder.nextId = 0; -kha_network_Session.START = 0; -kha_network_Session.ENTITY_UPDATES = 1; -kha_network_Session.CONTROLLER_UPDATES = 2; -kha_network_Session.REMOTE_CALL = 3; -kha_network_Session.PING = 4; -kha_network_Session.ERROR = 5; -kha_network_Session.PLAYER_UPDATES = 6; -kha_network_Session.RPC_SERVER = 0; -kha_network_Session.RPC_ALL = 1; -kha_network_SyncBuilder.nextId = 0; -kha_network_SyncBuilder.objects = []; -zui_Id.i = 0; -zui_Themes.light = { _FONT_SIZE : 15, _FONT_SMALL_SIZE : 15, _ELEMENT_W : 100, _ELEMENT_H : 26, _ELEMENT_SEPARATOR_SIZE : 2, _ARROW_W : 9, _ARROW_H : 9, _BUTTON_H : 19, _CHECK_W : 15, _CHECK_H : 15, _CHECK_SELECT_W : 8, _CHECK_SELECT_H : 8, _RADIO_W : 15, _RADIO_H : 15, _RADIO_SELECT_W : 8, _RADIO_SELECT_H : 8, _SCROLL_W : 12, _SCROLL_BAR_W : 8, _DEFAULT_TEXT_OFFSET_X : 8, _TAB_W : 12, _LINE_STRENGTH : 1, WINDOW_BG_COL : -1776412, WINDOW_TINT_COL : -1, SCROLL_BG_COL : -1776412, SCROLL_COL : -15658735, SCROLL_HOVER_COL : -10055985, PANEL_BG1_COL : -16777216, PANEL_BG2_COL : -16777216, PANEL_TEXT_COL : -13421773, PANEL_TEXT_COL_HOVER : -13421773, BUTTON_BG_COL : -11175241, BUTTON_TEXT_COL : -15658735, BUTTON_BG_COL_HOVER : -10055985, BUTTON_BG_COL_PRESSED : -3299061, TEXT_INPUT_BG_COL : -13355978, TEXT_INPUT_BG_COL_HOVER : -12303290, TEXT_CURSOR_COL : -15658735, TEXT_CURSOR_FLASH_SPEED : 0.5, CHECK_COL : -13355978, CHECK_COL_HOVER : -7829368, CHECK_SELECT_COL : -13355978, RADIO_COL : -13355978, RADIO_COL_HOVER : -7829368, RADIO_SELECT_COL : -13355978, SLIDER_COL : -9069865, SLIDER_COL_HOVER : -10055985, TEXT_COL : -15658735, TEXT_COL_HOVER : -15658735, DEFAULT_LABEL_COL : -14540254, ARROW_COL : -4539977, ARROW_COL_HOVER : -3487289, SEPARATOR_COL : -5592406, FILL_WINDOW_BG : true, FILL_TEXT_INPUT_BG : false, FILL_BUTTON_BG : false, FILL_CHECK_BG : false, FILL_RADIO_BG : false, FILL_SLIDER_BG : false}; -zui_Themes.dark = { _FONT_SIZE : 15, _FONT_SMALL_SIZE : 15, _ELEMENT_W : 100, _ELEMENT_H : 26, _ELEMENT_SEPARATOR_SIZE : 2, _ARROW_W : 9, _ARROW_H : 9, _BUTTON_H : 19, _CHECK_W : 15, _CHECK_H : 15, _CHECK_SELECT_W : 8, _CHECK_SELECT_H : 8, _RADIO_W : 15, _RADIO_H : 15, _RADIO_SELECT_W : 8, _RADIO_SELECT_H : 8, _SCROLL_W : 12, _SCROLL_BAR_W : 8, _DEFAULT_TEXT_OFFSET_X : 8, _TAB_W : 12, _LINE_STRENGTH : 1, WINDOW_BG_COL : -15658735, WINDOW_TINT_COL : -1, SCROLL_BG_COL : -15724528, SCROLL_COL : -11974327, SCROLL_HOVER_COL : -2894893, PANEL_BG1_COL : -16777216, PANEL_BG2_COL : -16777216, PANEL_TEXT_COL : -1118482, PANEL_TEXT_COL_HOVER : -1118482, BUTTON_BG_COL : -11175241, BUTTON_TEXT_COL : -3487289, BUTTON_BG_COL_HOVER : -10055985, BUTTON_BG_COL_PRESSED : -3299061, TEXT_INPUT_BG_COL : -13355978, TEXT_INPUT_BG_COL_HOVER : -12303290, TEXT_CURSOR_COL : -3487289, TEXT_CURSOR_FLASH_SPEED : 0.5, CHECK_COL : -13355978, CHECK_COL_HOVER : -12303290, CHECK_SELECT_COL : -2697514, RADIO_COL : -13355978, RADIO_COL_HOVER : -12303290, RADIO_SELECT_COL : -2697514, SLIDER_COL : -13355978, SLIDER_COL_HOVER : -12303290, TEXT_COL : -3487289, TEXT_COL_HOVER : -3487289, DEFAULT_LABEL_COL : -5592406, ARROW_COL : -3487289, ARROW_COL_HOVER : -3487289, SEPARATOR_COL : -14540513, FILL_WINDOW_BG : false, FILL_TEXT_INPUT_BG : false, FILL_BUTTON_BG : false, FILL_CHECK_BG : false, FILL_RADIO_BG : false, FILL_SLIDER_BG : false}; -zui_Zui.elementsBaked = false; -zui_Handle.global = new zui_Handle(); -Main.main(); -})(typeof exports != "undefined" ? exports : typeof window != "undefined" ? window : typeof self != "undefined" ? self : this, typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this); diff --git a/tools/armorui/.gitignore b/tools/armorui/krom/.gitignore similarity index 100% rename from tools/armorui/.gitignore rename to tools/armorui/krom/.gitignore diff --git a/tools/armorui/krom/DroidSans.ttf b/tools/armorui/krom/DroidSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..efd1f8bbd882a6a434159fa1da7238babbaa2fb3 GIT binary patch literal 41028 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 literal 0 HcmV?d00001 diff --git a/tools/armorui/krom/color_wheel.png b/tools/armorui/krom/color_wheel.png new file mode 100644 index 0000000000000000000000000000000000000000..aee45c1728d7d511b63cff144630759adc27c426 GIT binary patch literal 36585 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 X9IUi}x-wE}00000NkvXXu0mjf(HrS# literal 0 HcmV?d00001 diff --git a/tools/armorui/krom/krom.js b/tools/armorui/krom/krom.js new file mode 100644 index 00000000..c413cc77 --- /dev/null +++ b/tools/armorui/krom/krom.js @@ -0,0 +1 @@ +function $extend(e,t){function a(){}a.prototype=e;var i=new a;for(var r in t)i[r]=t[r];return t.toString!==Object.prototype.toString&&(i.toString=t.toString),i}function $iterator(e){return e instanceof Array?function(){return HxOverrides.iter(e)}:"function"==typeof e.iterator?$bind(e,e.iterator):e.iterator}function $bind(e,t){if(null==t)return null;null==t.__id__&&(t.__id__=$fid++);var a;return null==e.hx__closures__?e.hx__closures__={}:a=e.hx__closures__[t.__id__],null==a&&((a=function(){return a.method.apply(a.scope,arguments)}).scope=e,a.method=t,e.hx__closures__[t.__id__]=a),a}var $hx_exports="undefined"!=typeof exports?exports:"undefined"!=typeof window?window:"undefined"!=typeof self?self:this;$hx_exports.kha=$hx_exports.kha||{},$hx_exports.kha.input=$hx_exports.kha.input||{},$hx_exports.kha._Color=$hx_exports.kha._Color||{};var $global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,$hxClasses=$hxClasses||{},$estr=function(){return js_Boot.__string_rec(this,"")},Elements=$hxClasses.Elements=function(e){this.hradio=zui_Handle.global.nest(6,null),this.hwin=zui_Handle.global.nest(0,null),this.selectedElem=-1,this.dragAsset=null,this.assetId=0,this.assetNames=[],this.drag=!1,this.bg=null,this.canvas=e,kha_Assets.loadEverything($bind(this,this.loaded))};Elements.__name__=!0,Elements.prototype={ui:null,cui:null,bg:null,canvas:null,drag:null,assetNames:null,assetId:null,dragAsset:null,loaded:function(){var e=this,t=Reflect.copy(zui_Themes.dark);t.FILL_WINDOW_BG=!0,this.ui=new zui_Zui({font:kha_Assets.fonts.DroidSans,theme:t,color_wheel:kha_Assets.images.color_wheel}),this.cui=new zui_Zui({font:kha_Assets.fonts.DroidSans,autoNotifyInput:!1}),kha_System.notifyOnDropFiles(function(t){t=StringTools.rtrim(t),e.importAsset(t)}),kha_System.notifyOnRender($bind(this,this.render)),kha_Scheduler.addTimeTask($bind(this,this.update),0,.016666666666666666)},importAsset:function(e){var t=this;(StringTools.endsWith(e,".jpg")||StringTools.endsWith(e,".png")||StringTools.endsWith(e,".hdr"))&&kha_LoaderImpl.loadImageFromDescription({files:[e]},function(a){var i=e.split("/"),r=i[i.length-1],s={name:r,file:e,image:a,id:t.assetId++};t.canvas.assets.push(s),t.assetNames.push(r),t.hwin.redraws=2})},makeElem:function(e){var t="",a=100;return 0==e?(t="Text",a=48):2==e?t="Button":1==e&&(t="Image"),{id:zui_Canvas.getElementId(this.canvas),type:e,name:t,event:"",x:0,y:0,width:150,height:a,text:t,asset:"",color:16777215,anchor:0,children:[]}},getEnumTexts:function(){return this.assetNames.length>0?this.assetNames:[""]},getAssetIndex:function(e){for(var t=0,a=this.canvas.assets.length;t=0&&this.selectedElem=0;){var y=this.canvas.elements[S];this.ui.radio(this.hradio,S,y.name)&&(this.selectedElem=S),--S}this.ui.row([.3333333333333333,.3333333333333333,.3333333333333333]);var x=this.ui.t.BUTTON_BG_COL,B=this.ui.t.BUTTON_BG_COL_HOVER,T=this.ui.t.BUTTON_BG_COL_PRESSED;this.ui.t.BUTTON_BG_COL=-13355978,this.ui.t.BUTTON_BG_COL_HOVER=-12303290,this.ui.t.BUTTON_BG_COL_PRESSED=-13619152;var w=this.canvas.elements;if(this.ui.button("Up")&&this.selectedElem0){var I=this.canvas.elements[this.selectedElem];this.canvas.elements[this.selectedElem]=this.canvas.elements[this.selectedElem-1],this.canvas.elements[this.selectedElem-1]=I,this.selectedElem--,this.hradio.position=this.selectedElem}this.ui.button("Remove")&&(w.splice(this.selectedElem,1),this.selectedElem==w.length?this.selectedElem--:this.selectedElem<0&&this.selectedElem++,this.hradio.position=this.selectedElem),this.ui.t.BUTTON_BG_COL=x,this.ui.t.BUTTON_BG_COL_HOVER=B,this.ui.t.BUTTON_BG_COL_PRESSED=T}if(this.ui.separator(),this.ui.panel(zui_Handle.global.nest(7,{selected:!0}),"PROPERTIES")&&this.selectedElem>=0){var C=this.canvas.elements[this.selectedElem],A=C.id;this.ui.row([.5,.5]),C.name=this.ui.textInput(zui_Handle.global.nest(8,null).nest(A,{text:C.name}),"Name",2),C.event=this.ui.textInput(zui_Handle.global.nest(9,null).nest(A,{text:C.event}),"Event",2),this.ui.row([.5,.5]);var L=C.x+"",R=zui_Handle.global.nest(10,null).nest(A,{text:L}),$=C.y+"",F=zui_Handle.global.nest(11,null).nest(A,{text:$});R.text=C.x+"",F.text=C.y+"";var V=this.ui.textInput(R,"X",2),N=this.ui.textInput(F,"Y",2);C.x=parseFloat(V),C.y=parseFloat(N),this.ui.row([.5,.5]);var P=C.width+"",M=this.ui.textInput(zui_Handle.global.nest(12,null).nest(A,{text:P}),"Width",2),O=C.height+"",D=this.ui.textInput(zui_Handle.global.nest(13,null).nest(A,{text:O}),"Height",2);C.width=0|parseFloat(M),C.height=0|parseFloat(D),C.text=this.ui.textInput(zui_Handle.global.nest(14,null).nest(A,{text:C.text}),"Text",2),C.anchor=this.ui.combo(zui_Handle.global.nest(15,null).nest(A),["None","Top-Left","Top-Center","Top-Right"],"Anchor",!0,2);var U=this.ui.combo(zui_Handle.global.nest(16,null).nest(A,{position:this.getAssetIndex(C.asset)}),this.getEnumTexts(),"Asset",!0,2);C.asset=this.getEnumTexts()[U],C.color=zui_Ext.colorWheel(this.ui,zui_Handle.global.nest(17,null).nest(A,{color:16777215}),!0,null,!0)}if(this.ui.separator(),this.ui.panel(zui_Handle.global.nest(18,{selected:!0}),"ASSETS"))if(this.canvas.assets.length>0)for(var H=this.canvas.assets.length-1;H>=0;){var G=this.canvas.assets[H];1==this.ui.image(G.image)&&(this.dragAsset=G),this.ui.row([.875,.125]),G.name=this.ui.textInput(zui_Handle.global.nest(19,null).nest(G.id,{text:G.name}),"",2),this.assetNames[H]=G.name,this.ui.button("X")&&(G.image.unload(),this.canvas.assets.splice(H,1),this.assetNames.splice(H,1)),--H}else this.ui.text("(Drag & drop assets)",1,-15395563),this.ui.text("(.png .jpg .hdr)",1,-15395563)}if(this.ui.end(),h.begin(!1),null!=this.dragAsset){var W=128/this.dragAsset.image.get_width(),z=this.dragAsset.image.get_height()*W;h.drawScaledImage(this.dragAsset.image,this.ui.inputX,this.ui.inputY,128,z)}h.end()},acceptDrag:function(e){var t=this.makeElem(1);t.asset=this.assetNames[e],t.x=this.ui.inputX-this.canvas.x,t.y=this.ui.inputY-this.canvas.y,this.canvas.elements.push(t),this.hradio.position=this.canvas.elements.length-1},update:function(){if(this.ui.inputReleased&&null!=this.dragAsset){if(this.ui.inputXthis.canvas.x+_.x&&this.ui.inputXthis.canvas.y+_.y&&this.ui.inputY=0&&this.selectedElemthis.canvas.x+o.x&&this.ui.inputXthis.canvas.y+o.y&&this.ui.inputY=a&&HxOverrides.substr(e,i-a,a)==t},StringTools.isSpace=function(e,t){var a=HxOverrides.cca(e,t);return a>8&&a<14||32==a},StringTools.rtrim=function(e){for(var t=e.length,a=0;a0?HxOverrides.substr(e,0,t-a):e};var Type=$hxClasses.Type=function(){};Type.__name__=!0,Type.resolveClass=function(e){var t=$hxClasses[e];return null!=t&&t.__name__?t:null},Type.resolveEnum=function(e){var t=$hxClasses[e];return null!=t&&t.__ename__?t:null},Type.createEmptyInstance=function(e){function t(){}return t.prototype=e.prototype,new t},Type.createEnum=function(e,t,a){var i=Reflect.field(e,t);if(null==i)throw new js__$Boot_HaxeError("No such constructor "+t);if(Reflect.isFunction(i)){if(null==a)throw new js__$Boot_HaxeError("Constructor "+t+" need parameters");return i.apply(e,a)}if(null!=a&&0!=a.length)throw new js__$Boot_HaxeError("Constructor "+t+" does not need parameters");return i},Type.getInstanceFields=function(e){var t=[];for(var a in e.prototype)t.push(a);return HxOverrides.remove(t,"__class__"),HxOverrides.remove(t,"__properties__"),t};var _$UInt_UInt_$Impl_$=$hxClasses["_UInt.UInt_Impl_"]={};_$UInt_UInt_$Impl_$.__name__=!0,_$UInt_UInt_$Impl_$.gt=function(e,t){var a=e<0;return a!=t<0?a:e>t},_$UInt_UInt_$Impl_$.gte=function(e,t){var a=e<0;return a!=t<0?a:e>=t},_$UInt_UInt_$Impl_$.toFloat=function(e){var t=e;return t<0?4294967296+t:t+0};var haxe_IMap=$hxClasses["haxe.IMap"]=function(){};haxe_IMap.__name__=!0;var haxe__$Int64__$_$_$Int64=$hxClasses["haxe._Int64.___Int64"]=function(e,t){this.high=e,this.low=t};haxe__$Int64__$_$_$Int64.__name__=!0,haxe__$Int64__$_$_$Int64.prototype={high:null,low:null,__class__:haxe__$Int64__$_$_$Int64};var haxe_Log=$hxClasses["haxe.Log"]=function(){};haxe_Log.__name__=!0,haxe_Log.trace=function(e,t){js_Boot.__trace(e,t)};var haxe__$Unserializer_DefaultResolver=$hxClasses["haxe._Unserializer.DefaultResolver"]=function(){};haxe__$Unserializer_DefaultResolver.__name__=!0,haxe__$Unserializer_DefaultResolver.prototype={resolveClass:function(e){return Type.resolveClass(e)},resolveEnum:function(e){return Type.resolveEnum(e)},__class__:haxe__$Unserializer_DefaultResolver};var haxe_Unserializer=$hxClasses["haxe.Unserializer"]=function(e){this.buf=e,this.length=e.length,this.pos=0,this.scache=[],this.cache=[];var t=haxe_Unserializer.DEFAULT_RESOLVER;null==t&&(t=new haxe__$Unserializer_DefaultResolver,haxe_Unserializer.DEFAULT_RESOLVER=t),this.resolver=t};haxe_Unserializer.__name__=!0,haxe_Unserializer.initCodes=function(){for(var e=[],t=0,a=haxe_Unserializer.BASE64.length;t57)break;e=10*e+(i-48),this.pos++}else{if(this.pos!=a)break;t=!0,this.pos++}}return t&&(e*=-1),e},readFloat:function(){for(var e=this.pos;;){var t=this.buf.charCodeAt(this.pos);if(t!=t)break;if(!(t>=43&&t<58||101==t||69==t))break;this.pos++}return parseFloat(HxOverrides.substr(this.buf,e,this.pos-e))},unserializeObject:function(e){for(;;){if(this.pos>=this.length)throw new js__$Boot_HaxeError("Invalid object");if(103==this.buf.charCodeAt(this.pos))break;var t=this.unserialize();if("string"!=typeof t)throw new js__$Boot_HaxeError("Invalid object key");var a=this.unserialize();e[t]=a}this.pos++},unserializeEnum:function(e,t){if(58!=this.buf.charCodeAt(this.pos++))throw new js__$Boot_HaxeError("Invalid enum format");var a=this.readDigits();if(0==a)return Type.createEnum(e,t);for(var i=[];a-- >0;)i.push(this.unserialize());return Type.createEnum(e,t,i)},unserialize:function(){switch(this.buf.charCodeAt(this.pos++)){case 65:var e=this.unserialize(),t=this.resolver.resolveClass(e);if(null==t)throw new js__$Boot_HaxeError("Class not found "+e);return t;case 66:var a=this.unserialize(),i=this.resolver.resolveEnum(a);if(null==i)throw new js__$Boot_HaxeError("Enum not found "+a);return i;case 67:var r=this.unserialize(),s=this.resolver.resolveClass(r);if(null==s)throw new js__$Boot_HaxeError("Class not found "+r);var n=Type.createEmptyInstance(s);if(this.cache.push(n),n.hxUnserialize(this),103!=this.buf.charCodeAt(this.pos++))throw new js__$Boot_HaxeError("Invalid custom data");return n;case 77:var _=new haxe_ds_ObjectMap;this.cache.push(_);for(this.buf;104!=this.buf.charCodeAt(this.pos);){var o=this.unserialize();_.set(o,this.unserialize())}return this.pos++,_;case 82:var h=this.readDigits();if(h<0||h>=this.scache.length)throw new js__$Boot_HaxeError("Invalid string reference");return this.scache[h];case 97:this.buf;var l=[];for(this.cache.push(l);;){var u=this.buf.charCodeAt(this.pos);if(104==u){this.pos++;break}if(117==u){this.pos++;var c=this.readDigits();l[l.length+c-1]=null}else l.push(this.unserialize())}return l;case 98:var d=new haxe_ds_StringMap;this.cache.push(d);for(this.buf;104!=this.buf.charCodeAt(this.pos);){var p=this.unserialize(),g=this.unserialize();null!=__map_reserved[p]?d.setReserved(p,g):d.h[p]=g}return this.pos++,d;case 99:var f=this.unserialize(),v=this.resolver.resolveClass(f);if(null==v)throw new js__$Boot_HaxeError("Class not found "+f);var k=Type.createEmptyInstance(v);return this.cache.push(k),this.unserializeObject(k),k;case 100:return this.readFloat();case 102:return!1;case 105:return this.readDigits();case 106:var m=this.unserialize(),b=this.resolver.resolveEnum(m);if(null==b)throw new js__$Boot_HaxeError("Enum not found "+m);this.pos++;var S=this.readDigits(),y=b.__constructs__.slice()[S];if(null==y)throw new js__$Boot_HaxeError("Unknown enum index "+m+"@"+S);var x=this.unserializeEnum(b,y);return this.cache.push(x),x;case 107:return NaN;case 108:var B=new List;this.cache.push(B);for(this.buf;104!=this.buf.charCodeAt(this.pos);)B.add(this.unserialize());return this.pos++,B;case 109:return-1/0;case 110:return null;case 111:var T={};return this.cache.push(T),this.unserializeObject(T),T;case 112:return 1/0;case 113:var w=new haxe_ds_IntMap;this.cache.push(w);this.buf;for(var E=this.buf.charCodeAt(this.pos++);58==E;){var I=this.readDigits(),C=this.unserialize();w.h[I]=C,E=this.buf.charCodeAt(this.pos++)}if(104!=E)throw new js__$Boot_HaxeError("Invalid IntMap format");return w;case 114:var A=this.readDigits();if(A<0||A>=this.cache.length)throw new js__$Boot_HaxeError("Invalid reference");return this.cache[A];case 115:var L=this.readDigits(),R=this.buf;if(58!=this.buf.charCodeAt(this.pos++)||this.length-this.pos>2)+(V>=2?V-1:0))),M=0;F>4);var U=$[R.charCodeAt(F++)];P.b[M++]=255&(D<<4|U>>2);var H=$[R.charCodeAt(F++)];P.b[M++]=255&(U<<6|H)}if(V>=2){var G=$[R.charCodeAt(F++)],W=$[R.charCodeAt(F++)];if(P.b[M++]=255&(G<<2|W>>4),3==V){var z=$[R.charCodeAt(F++)];P.b[M++]=255&(W<<4|z>>2)}}return this.pos+=L,this.cache.push(P),P;case 116:return!0;case 118:var j;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&45==this.buf.charCodeAt(this.pos+4))j=HxOverrides.strDate(HxOverrides.substr(this.buf,this.pos,19)),this.pos+=19;else{var K=this.readFloat();j=new Date(K)}return this.cache.push(j),j;case 119:var X=this.unserialize(),Y=this.resolver.resolveEnum(X);if(null==Y)throw new js__$Boot_HaxeError("Enum not found "+X);var Z=this.unserializeEnum(Y,this.unserialize());return this.cache.push(Z),Z;case 120:throw js__$Boot_HaxeError.wrap(this.unserialize());case 121:var Q=this.readDigits();if(58!=this.buf.charCodeAt(this.pos++)||this.length-this.pos>6),t.push(128|63&i)):i<=65535?(t.push(224|i>>12),t.push(128|i>>6&63),t.push(128|63&i)):(t.push(240|i>>18),t.push(128|i>>12&63),t.push(128|i>>6&63),t.push(128|63&i))}return new haxe_io_Bytes(new Uint8Array(t).buffer)},haxe_io_Bytes.ofData=function(e){var t=e.hxBytes;return null!=t?t:new haxe_io_Bytes(e)},haxe_io_Bytes.prototype={length:null,b:null,data:null,sub:function(e,t){if(e<0||t<0||e+t>this.length)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);return new haxe_io_Bytes(this.b.buffer.slice(e+this.b.byteOffset,e+this.b.byteOffset+t))},getFloat:function(e){return null==this.data&&(this.data=new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength)),this.data.getFloat32(e,!0)},setInt32:function(e,t){null==this.data&&(this.data=new DataView(this.b.buffer,this.b.byteOffset,this.b.byteLength)),this.data.setInt32(e,t,!0)},getString:function(e,t){if(e<0||t<0||e+t>this.length)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);for(var a="",i=this.b,r=String.fromCharCode,s=e,n=e+t;s>10)),a+=r(1023&o|56320)}}return a},toString:function(){return this.getString(0,this.length)},__class__:haxe_io_Bytes};var haxe_io_BytesBuffer=$hxClasses["haxe.io.BytesBuffer"]=function(){this.b=[]};haxe_io_BytesBuffer.__name__=!0,haxe_io_BytesBuffer.prototype={b:null,getBytes:function(){var e=new haxe_io_Bytes(new Uint8Array(this.b).buffer);return this.b=null,e},__class__:haxe_io_BytesBuffer};var haxe_io_Input=$hxClasses["haxe.io.Input"]=function(){};haxe_io_Input.__name__=!0,haxe_io_Input.prototype={bigEndian:null,readByte:function(){throw new js__$Boot_HaxeError("Not implemented")},readBytes:function(e,t,a){var i=a,r=e.b;if(t<0||a<0||t+a>e.length)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);try{for(;i>0;)r[t]=this.readByte(),++t,--i}catch(e){if(e instanceof js__$Boot_HaxeError&&(e=e.val),!js_Boot.__instanceof(e,haxe_io_Eof))throw e}return a-i},readFullBytes:function(e,t,a){for(;a>0;){var i=this.readBytes(e,t,a);if(0==i)throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);t+=i,a-=i}},read:function(e){for(var t=new haxe_io_Bytes(new ArrayBuffer(e)),a=0;e>0;){var i=this.readBytes(t,a,e);if(0==i)throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);a+=i,e-=i}return t},readInt32:function(){var e=this.readByte(),t=this.readByte(),a=this.readByte(),i=this.readByte();return this.bigEndian?i|a<<8|t<<16|e<<24:e|t<<8|a<<16|i<<24},readString:function(e){var t=new haxe_io_Bytes(new ArrayBuffer(e));return this.readFullBytes(t,0,e),t.toString()},__class__:haxe_io_Input};var haxe_io_BytesInput=$hxClasses["haxe.io.BytesInput"]=function(e,t,a){if(null==t&&(t=0),null==a&&(a=e.length-t),t<0||a<0||t+a>e.length)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);this.b=e.b,this.pos=t,this.len=a,this.totlen=a};haxe_io_BytesInput.__name__=!0,haxe_io_BytesInput.__super__=haxe_io_Input,haxe_io_BytesInput.prototype=$extend(haxe_io_Input.prototype,{b:null,pos:null,len:null,totlen:null,set_position:function(e){return e<0?e=0:e>this.totlen&&(e=this.totlen),this.len=this.totlen-e,this.pos=e},readByte:function(){if(0==this.len)throw new js__$Boot_HaxeError(new haxe_io_Eof);return this.len--,this.b[this.pos++]},readBytes:function(e,t,a){if(t<0||a<0||t+a>e.length)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);if(0==this.len&&a>0)throw new js__$Boot_HaxeError(new haxe_io_Eof);this.lene.length)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);for(var i=e.b,r=a;r>0;)this.writeByte(i[t]),++t,--r;return a},write:function(e){for(var t=e.length,a=0;t>0;){var i=this.writeBytes(e,a,t);if(0==i)throw new js__$Boot_HaxeError(haxe_io_Error.Blocked);a+=i,t-=i}},writeFloat:function(e){this.writeInt32(haxe_io_FPHelper.floatToI32(e))},writeInt32:function(e){this.bigEndian?(this.writeByte(e>>>24),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e)):(this.writeByte(255&e),this.writeByte(e>>8&255),this.writeByte(e>>16&255),this.writeByte(e>>>24))},__class__:haxe_io_Output};var haxe_io_BytesOutput=$hxClasses["haxe.io.BytesOutput"]=function(){this.b=new haxe_io_BytesBuffer};haxe_io_BytesOutput.__name__=!0,haxe_io_BytesOutput.__super__=haxe_io_Output,haxe_io_BytesOutput.prototype=$extend(haxe_io_Output.prototype,{b:null,writeByte:function(e){this.b.b.push(e)},writeBytes:function(e,t,a){var i=this.b;if(t<0||a<0||t+a>e.length)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);i.b;for(var r=e.b,s=t,n=t+a;s>>31<<1),a=e>>>23&255,i=8388607&e;return 0==i&&0==a?0:t*(1+Math.pow(2,-23)*i)*Math.pow(2,a-127)},haxe_io_FPHelper.floatToI32=function(e){if(0==e)return 0;var t=e<0?-e:e,a=Math.floor(Math.log(t)/.6931471805599453);a<-127?a=-127:a>128&&(a=128);var i=Math.round(8388608*(t/Math.pow(2,a)-1));return 8388608==i&&a<128&&(i=0,++a),(e<0?-2147483648:0)|a+127<<23|i},haxe_io_FPHelper.i64ToDouble=function(e,t){var a=1-(t>>>31<<1),i=(t>>20&2047)-1023,r=4294967296*(1048575&t)+2147483648*(e>>>31)+(2147483647&e);return 0==r&&-1023==i?0:a*(1+Math.pow(2,-52)*r)*Math.pow(2,i)},haxe_io_FPHelper.doubleToI64=function(e){var t=haxe_io_FPHelper.i64tmp;if(0==e)t.low=0,t.high=0;else if(isFinite(e)){var a=e<0?-e:e,i=Math.floor(Math.log(a)/.6931471805599453),r=Math.round(4503599627370496*(a/Math.pow(2,i)-1)),s=0|r,n=r/4294967296|0;t.low=s,t.high=(e<0?-2147483648:0)|i+1023<<20|n}else e>0?(t.low=0,t.high=2146435072):(t.low=0,t.high=-1048576);return t};var js__$Boot_HaxeError=$hxClasses["js._Boot.HaxeError"]=function(e){Error.call(this),this.val=e,this.message=String(e),Error.captureStackTrace&&Error.captureStackTrace(this,js__$Boot_HaxeError)};js__$Boot_HaxeError.__name__=!0,js__$Boot_HaxeError.wrap=function(e){return e instanceof Error?e:new js__$Boot_HaxeError(e)},js__$Boot_HaxeError.__super__=Error,js__$Boot_HaxeError.prototype=$extend(Error.prototype,{val:null,__class__:js__$Boot_HaxeError});var js_Boot=$hxClasses["js.Boot"]=function(){};js_Boot.__name__=!0,js_Boot.__unhtml=function(e){return e.split("&").join("&").split("<").join("<").split(">").join(">")},js_Boot.__trace=function(e,t){var a=null!=t?t.fileName+":"+t.lineNumber+": ":"";if(a+=js_Boot.__string_rec(e,""),null!=t&&null!=t.customParams)for(var i=0,r=t.customParams;i":"undefined"!=typeof console&&null!=console.log&&console.log(a)},js_Boot.getClass=function(e){if(e instanceof Array&&null==e.__enum__)return Array;var t=e.__class__;if(null!=t)return t;var a=js_Boot.__nativeClassName(e);return null!=a?js_Boot.__resolveNativeClass(a):null},js_Boot.__string_rec=function(e,t){if(null==e)return"null";if(t.length>=5)return"<...>";var a=typeof e;switch("function"==a&&(e.__name__||e.__ename__)&&(a="object"),a){case"function":return"";case"object":if(e instanceof Array){if(e.__enum__){if(2==e.length)return e[0];var i=e[0]+"(";t+="\t";for(var r=2,s=e.length;r0?",":"")+js_Boot.__string_rec(e[l],t)}return _+="]"}var u;try{u=e.toString}catch(e){return"???"}if(null!=u&&u!=Object.toString&&"function"==typeof u){var c=e.toString();if("[object Object]"!=c)return c}var d=null,p="{\n";t+="\t";var g=null!=e.hasOwnProperty;for(var d in e)g&&!e.hasOwnProperty(d)||"prototype"!=d&&"__class__"!=d&&"__super__"!=d&&"__interfaces__"!=d&&"__properties__"!=d&&(2!=p.length&&(p+=", \n"),p+=t+d+" : "+js_Boot.__string_rec(e[d],t));return t=t.substring(1),p+="\n"+t+"}";case"string":return e;default:return String(e)}},js_Boot.__interfLoop=function(e,t){if(null==e)return!1;if(e==t)return!0;var a=e.__interfaces__;if(null!=a)for(var i=0,r=a.length;ie.byteLength)throw new js__$Boot_HaxeError(haxe_io_Error.OutsideBounds);this.byteLength=this.length,this.byteOffset=this.offset,this.buffer=this.buf};js_html_compat_DataView.__name__=!0,js_html_compat_DataView.prototype={buf:null,offset:null,length:null,byteLength:null,byteOffset:null,buffer:null,getInt8:function(e){var t=this.buf.a[this.offset+e];return t>=128?t-256:t},getUint8:function(e){return this.buf.a[this.offset+e]},getInt16:function(e,t){var a=this.getUint16(e,t);return a>=32768?a-65536:a},getUint16:function(e,t){return t?this.buf.a[this.offset+e]|this.buf.a[this.offset+e+1]<<8:this.buf.a[this.offset+e]<<8|this.buf.a[this.offset+e+1]},getInt32:function(e,t){var a=this.offset+e,i=this.buf.a[a++],r=this.buf.a[a++],s=this.buf.a[a++],n=this.buf.a[a++];return t?i|r<<8|s<<16|n<<24:n|s<<8|r<<16|i<<24},getUint32:function(e,t){var a=this.getInt32(e,t);return a<0?a+4294967296:a},getFloat32:function(e,t){return haxe_io_FPHelper.i32ToFloat(this.getInt32(e,t))},getFloat64:function(e,t){var a=this.getInt32(e,t),i=this.getInt32(e+4,t);return haxe_io_FPHelper.i64ToDouble(t?a:i,t?i:a)},setInt8:function(e,t){this.buf.a[e+this.offset]=t<0?t+128&255:255&t},setUint8:function(e,t){this.buf.a[e+this.offset]=255&t},setInt16:function(e,t,a){this.setUint16(e,t<0?t+65536:t,a)},setUint16:function(e,t,a){var i=e+this.offset;a?(this.buf.a[i]=255&t,this.buf.a[i++]=t>>8&255):(this.buf.a[i++]=t>>8&255,this.buf.a[i]=255&t)},setInt32:function(e,t,a){this.setUint32(e,t,a)},setUint32:function(e,t,a){var i=e+this.offset;a?(this.buf.a[i++]=255&t,this.buf.a[i++]=t>>8&255,this.buf.a[i++]=t>>16&255,this.buf.a[i++]=t>>>24):(this.buf.a[i++]=t>>>24,this.buf.a[i++]=t>>16&255,this.buf.a[i++]=t>>8&255,this.buf.a[i++]=255&t)},setFloat32:function(e,t,a){this.setUint32(e,haxe_io_FPHelper.floatToI32(t),a)},setFloat64:function(e,t,a){var i=haxe_io_FPHelper.doubleToI64(t);a?(this.setUint32(e,i.low),this.setUint32(e,i.high)):(this.setUint32(e,i.high),this.setUint32(e,i.low))},__class__:js_html_compat_DataView};var js_html_compat_Float32Array=$hxClasses["js.html.compat.Float32Array"]=function(){};js_html_compat_Float32Array.__name__=!0,js_html_compat_Float32Array._new=function(e,t,a){var i;if("number"==typeof e){i=[];for(var r=0,s=e;r>2),i=[];for(var l=0,u=a;l>8&255),d.push(f>>16&255),d.push(f>>>24)}i.byteLength=i.length<<2,i.byteOffset=0,i.buffer=new js_html_compat_ArrayBuffer(d)}return i.subarray=js_html_compat_Float32Array._subarray,i.set=js_html_compat_Float32Array._set,i},js_html_compat_Float32Array._set=function(e,t){if(js_Boot.__instanceof(e.buffer,js_html_compat_ArrayBuffer)){var a=e;if(e.byteLength+t>this.byteLength)throw new js__$Boot_HaxeError("set() outside of range");for(var i=0,r=e.byteLength;ithis.byteLength)throw new js__$Boot_HaxeError("set() outside of range");for(var _=0,o=n.length;_this.byteLength)throw new js__$Boot_HaxeError("set() outside of range");for(var i=0,r=e.byteLength;ithis.byteLength)throw new js__$Boot_HaxeError("set() outside of range");for(var _=0,o=n.length;_>>16},kha__$Color_Color_$Impl_$.get_Gb=function(e){return(65280&e)>>>8},kha__$Color_Color_$Impl_$.get_Bb=function(e){return 255&e},kha__$Color_Color_$Impl_$.get_Ab=function(e){return e>>>24},kha__$Color_Color_$Impl_$.set_Rb=function(e,t){return e=e>>>24<<24|t<<16|(65280&e)>>>8<<8|255&e,t},kha__$Color_Color_$Impl_$.set_Gb=function(e,t){return e=e>>>24<<24|(16711680&e)>>>16<<16|t<<8|255&e,t},kha__$Color_Color_$Impl_$.set_Bb=function(e,t){return e=e>>>24<<24|(16711680&e)>>>16<<16|(65280&e)>>>8<<8|t,t},kha__$Color_Color_$Impl_$.set_Ab=function(e,t){return e=t<<24|(16711680&e)>>>16<<16|(65280&e)>>>8<<8|255&e,t},kha__$Color_Color_$Impl_$.get_R=function(e){return.00392156862745098*((16711680&e)>>>16)},kha__$Color_Color_$Impl_$.get_G=function(e){return.00392156862745098*((65280&e)>>>8)},kha__$Color_Color_$Impl_$.get_B=function(e){return.00392156862745098*(255&e)},kha__$Color_Color_$Impl_$.get_A=function(e){return.00392156862745098*(e>>>24)},kha__$Color_Color_$Impl_$.set_R=function(e,t){return e=(.00392156862745098*(e>>>24)*255|0)<<24|(255*t|0)<<16|(.00392156862745098*((65280&e)>>>8)*255|0)<<8|.00392156862745098*(255&e)*255|0,t},kha__$Color_Color_$Impl_$.set_G=function(e,t){return e=(.00392156862745098*(e>>>24)*255|0)<<24|(.00392156862745098*((16711680&e)>>>16)*255|0)<<16|(255*t|0)<<8|.00392156862745098*(255&e)*255|0,t},kha__$Color_Color_$Impl_$.set_B=function(e,t){return e=(.00392156862745098*(e>>>24)*255|0)<<24|(.00392156862745098*((16711680&e)>>>16)*255|0)<<16|(.00392156862745098*((65280&e)>>>8)*255|0)<<8|255*t|0,t},kha__$Color_Color_$Impl_$.set_A=function(e,t){return e=(255*t|0)<<24|(.00392156862745098*((16711680&e)>>>16)*255|0)<<16|(.00392156862745098*((65280&e)>>>8)*255|0)<<8|.00392156862745098*(255&e)*255|0,t};var kha_Display=$hxClasses["kha.Display"]=function(){};kha_Display.__name__=!0,kha_Display.width=function(e){return kha_DisplayImpl.width(e)},kha_Display.height=function(e){return kha_DisplayImpl.height(e)},kha_Display.x=function(e){return kha_DisplayImpl.x(e)},kha_Display.y=function(e){return kha_DisplayImpl.y(e)},kha_Display.isPrimary=function(e){return kha_DisplayImpl.isPrimary(e)},kha_Display.get_count=function(){return kha_DisplayImpl.count()};var kha_DisplayImpl=$hxClasses["kha.DisplayImpl"]=function(){};kha_DisplayImpl.__name__=!0,kha_DisplayImpl.count=function(){return Krom.displayCount()},kha_DisplayImpl.width=function(e){return Krom.displayWidth(e)},kha_DisplayImpl.height=function(e){return Krom.displayHeight(e)},kha_DisplayImpl.x=function(e){return Krom.displayX(e)},kha_DisplayImpl.y=function(e){return Krom.displayY(e)},kha_DisplayImpl.isPrimary=function(e){return Krom.displayIsPrimary(e)};var kha_Resource=$hxClasses["kha.Resource"]=function(){};kha_Resource.__name__=!0,kha_Resource.prototype={unload:null,__class__:kha_Resource};var kha_Font=$hxClasses["kha.Font"]=function(){};kha_Font.__name__=!0,kha_Font.__interfaces__=[kha_Resource],kha_Font.prototype={height:null,width:null,baseline:null,__class__:kha_Font};var kha_FontStyle=$hxClasses["kha.FontStyle"]=function(e,t,a){this.bold=e,this.italic=t,this.underlined=a};kha_FontStyle.__name__=!0,kha_FontStyle.prototype={bold:null,italic:null,underlined:null,getBold:function(){return this.bold},getItalic:function(){return this.italic},getUnderlined:function(){return this.underlined},__class__:kha_FontStyle};var kha_Framebuffer=$hxClasses["kha.Framebuffer"]=function(e,t,a,i){this.windowId=e,this.graphics1=t,this.graphics2=a,this.graphics4=i};kha_Framebuffer.__name__=!0,kha_Framebuffer.__interfaces__=[kha_Canvas],kha_Framebuffer.prototype={windowId:null,graphics1:null,graphics2:null,graphics4:null,init:function(e,t,a){this.graphics1=e,this.graphics2=t,this.graphics4=a},g1:null,get_g1:function(){return this.graphics1},g2:null,get_g2:function(){return this.graphics2},g4:null,get_g4:function(){return this.graphics4},width:null,get_width:function(){return kha_System.windowWidth(this.windowId)},height:null,get_height:function(){return kha_System.windowHeight(this.windowId)},__class__:kha_Framebuffer};var kha_Image=$hxClasses["kha.Image"]=function(e){this.pixels=null,this.bytes=null,this.texture_=e};kha_Image.__name__=!0,kha_Image.__interfaces__=[kha_Resource,kha_Canvas],kha_Image.getRenderTargetFormat=function(e){switch(e[1]){case 0:return 0;case 1:return 5;case 2:return 3;case 3:return 4;case 4:return 1;case 5:return 2;case 6:return 6}},kha_Image.getDepthBufferBits=function(e){switch(e){case 0:return-1;case 1:case 2:case 3:return 24;case 4:return 32;case 5:return 16}},kha_Image.getStencilBufferBits=function(e){switch(e){case 0:case 1:return-1;case 2:case 3:case 4:return 8;case 5:return 0}},kha_Image.getTextureFormat=function(e){switch(e[1]){case 0:return 0;case 2:return 3;case 4:return 4;case 5:return 5;case 6:return 7;default:return 1}},kha_Image._fromTexture=function(e){return new kha_Image(e)},kha_Image.fromBytes=function(e,t,a,i,r){null==i&&(i=kha_graphics4_TextureFormat.RGBA32);var s=new kha_Image(null);return s.format=i,s.texture_=Krom.createTextureFromBytes(e.b.bufferValue,t,a,kha_Image.getTextureFormat(i),!0),s},kha_Image.create=function(e,t,a,i){null==a&&(a=kha_graphics4_TextureFormat.RGBA32);var r=new kha_Image(null);return r.format=a,r.texture_=Krom.createTexture(e,t,kha_Image.getTextureFormat(a)),r},kha_Image.create3D=function(e,t,a,i,r){null==i&&(i=kha_graphics4_TextureFormat.RGBA32);var s=new kha_Image(null);return s.format=i,s.texture_=Krom.createTexture3D(e,t,a,kha_Image.getTextureFormat(i)),s},kha_Image.createRenderTarget=function(e,t,a,i,r,s){null==s&&(s=0),null==r&&(r=1),null==i&&(i=0),null==a&&(a=kha_graphics4_TextureFormat.RGBA32);var n=new kha_Image(null);return n.format=a,n.renderTarget_=Krom.createRenderTarget(e,t,kha_Image.getDepthBufferBits(i),kha_Image.getRenderTargetFormat(a),kha_Image.getStencilBufferBits(i),s),n},kha_Image.get_maxSize=function(){return 4096},kha_Image.get_nonPow2Supported=function(){return!0},kha_Image.formatByteSize=function(e){switch(e[1]){case 0:return 4;case 1:return 1;case 2:return 16;case 3:return 2;case 4:return 8;case 5:return 4;case 6:return 2}},kha_Image.prototype={texture_:null,renderTarget_:null,format:null,readable:null,graphics1:null,graphics2:null,graphics4:null,isOpaque:function(e,t){return!1},at:function(e,t){return-16777216},unload:function(){Krom.unloadImage(this),this.texture_=null,this.renderTarget_=null},bytes:null,lock:function(e){return null==e&&(e=0),this.bytes=new haxe_io_Bytes(new ArrayBuffer(this.format==kha_graphics4_TextureFormat.RGBA32?4*this.get_width()*this.get_height():this.get_width()*this.get_height())),this.bytes},unlock:function(){Krom.unlockTexture(this.texture_,this.bytes.b.bufferValue)},pixels:null,getPixels:function(){return null==this.renderTarget_?null:(null==this.pixels&&(this.pixels=new haxe_io_Bytes(new ArrayBuffer(kha_Image.formatByteSize(this.format)*this.get_width()*this.get_height()))),Krom.getRenderTargetPixels(this.renderTarget_,this.pixels.b.bufferValue),this.pixels)},generateMipmaps:function(e){Krom.generateMipmaps(this.texture_,e)},setMipmaps:function(e){Krom.setMipmaps(this.texture_,e)},setDepthStencilFrom:function(e){Krom.setDepthStencilFrom(this.renderTarget_,e.renderTarget_)},clear:function(e,t,a,i,r,s,n){Krom.clearTexture(this.texture_,e,t,a,i,r,s,n)},width:null,get_width:function(){return null==this.texture_?this.renderTarget_.width:this.texture_.width},height:null,get_height:function(){return null==this.texture_?this.renderTarget_.height:this.texture_.height},depth:null,get_depth:function(){return null!=this.texture_?this.texture_.depth:1},realWidth:null,get_realWidth:function(){return null==this.texture_?this.renderTarget_.width:this.texture_.realWidth},realHeight:null,get_realHeight:function(){return null==this.texture_?this.renderTarget_.height:this.texture_.realHeight},g1:null,get_g1:function(){return null==this.graphics1&&(this.graphics1=new kha_graphics2_Graphics1(this)),this.graphics1},g2:null,get_g2:function(){return null==this.graphics2&&(this.graphics2=new kha_graphics4_Graphics2(this)),this.graphics2},g4:null,get_g4:function(){return null==this.graphics4&&(this.graphics4=new kha_krom_Graphics(this)),this.graphics4},__class__:kha_Image};var kha_AlignedQuad=$hxClasses["kha.AlignedQuad"]=function(){};kha_AlignedQuad.__name__=!0,kha_AlignedQuad.prototype={x0:null,y0:null,s0:null,t0:null,x1:null,y1:null,s1:null,t1:null,xadvance:null,__class__:kha_AlignedQuad};var kha_KravurImage=$hxClasses["kha.KravurImage"]=function(e,t,a,i,r,s,n,_){this.mySize=e,this.width=r,this.height=s,this.chars=n,this.baseline=t;for(var o=0;o=this.chars.length)return null;var i=1/this.width,r=1/this.height,s=this.chars[e];if(null==s)return null;var n=Math.round(t+s.xoff),_=Math.round(a+s.yoff),o=new kha_AlignedQuad;return o.x0=n,o.y0=_,o.x1=n+s.x1-s.x0,o.y1=_+s.y1-s.y0,o.s0=s.x0*i,o.t0=s.y0*r,o.s1=s.x1*i,o.t1=s.y1*r,o.xadvance=s.xadvance,o},getCharWidth:function(e){return e<32?0:e-32>=this.chars.length?0:this.chars[e-32].xadvance},getHeight:function(){return this.mySize},stringWidth:function(e){for(var t=new String(e),a=0,i=0,r=t.length;i=57&&t<=63&&(t=60),kha_Scheduler.onedifhz=1/t,kha_Scheduler.stopped=!1,kha_Scheduler.resetTime(),kha_Scheduler.lastTime=kha_Scheduler.realTime()-kha_Scheduler.startTime;for(var a=0,i=kha_Scheduler.DIF_COUNT;a=e)i.next=i.start;else if(i.period>0){var r=e-i.start,s=Math.ceil(r/i.period);i.next=i.start+s*i.period}}},kha_Scheduler.back=function(e){if(!(e>=kha_Scheduler.lastTime)){kha_Scheduler.current=e,kha_Scheduler.lastTime=e,kha_Scheduler.warpTimeTasks(e,kha_Scheduler.outdatedTimeTasks),kha_Scheduler.warpTimeTasks(e,kha_Scheduler.timeTasks);for(var t=0,a=kha_Scheduler.outdatedTimeTasks;t=e&&kha_Scheduler.timeTasksScratchpad.push(i)}for(var r=0,s=kha_Scheduler.timeTasksScratchpad;r0;)HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]);for(var l=0,u=kha_Scheduler.outdatedTimeTasks;l0;)HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0])}},kha_Scheduler.executeFrame=function(){var e=kha_Scheduler.realTime()-kha_Scheduler.startTime-kha_Scheduler.lastTime,t=kha_Scheduler.current;if(!(e<0)){if(e>kha_Scheduler.maxframetime)kha_Scheduler.startTime+=e-kha_Scheduler.maxframetime,t+=e=kha_Scheduler.maxframetime;else if(kha_Scheduler.vsync){for(var a=kha_Scheduler.onedifhz;a0&&(kha_Scheduler.activeTimeTask=kha_Scheduler.timeTasks[0],kha_Scheduler.activeTimeTask.next<=t);)kha_Scheduler.activeTimeTask.next+=kha_Scheduler.activeTimeTask.period,HxOverrides.remove(kha_Scheduler.timeTasks,kha_Scheduler.activeTimeTask),kha_Scheduler.activeTimeTask.active&&kha_Scheduler.activeTimeTask.task()?kha_Scheduler.activeTimeTask.period>0&&(0==kha_Scheduler.activeTimeTask.duration||kha_Scheduler.activeTimeTask.duration>=kha_Scheduler.activeTimeTask.start+kha_Scheduler.activeTimeTask.next)?kha_Scheduler.insertSorted(kha_Scheduler.timeTasks,kha_Scheduler.activeTimeTask):kha_Scheduler.archiveTimeTask(kha_Scheduler.activeTimeTask,t):(kha_Scheduler.activeTimeTask.active=!1,kha_Scheduler.archiveTimeTask(kha_Scheduler.activeTimeTask,t));kha_Scheduler.activeTimeTask=null,kha_Scheduler.sortFrameTasks();for(var m=0,b=kha_Scheduler.frameTasks;m0;)HxOverrides.remove(kha_Scheduler.frameTasks,kha_Scheduler.toDeleteFrame.pop())}},kha_Scheduler.archiveTimeTask=function(e,t){},kha_Scheduler.time=function(){return kha_Scheduler.current},kha_Scheduler.realTime=function(){return kha_System.get_time()},kha_Scheduler.resetTime=function(){var e=kha_System.get_time(),t=e-kha_Scheduler.startTime;kha_Scheduler.startTime=e;for(var a=0,i=kha_Scheduler.timeTasks;a0;)HxOverrides.remove(kha_Scheduler.timeTasksScratchpad,kha_Scheduler.timeTasksScratchpad[0]);null!=kha_Scheduler.activeTimeTask&&kha_Scheduler.activeTimeTask.groupId==e&&(kha_Scheduler.activeTimeTask.active=!1)},kha_Scheduler.numTasksInSchedule=function(){return kha_Scheduler.timeTasks.length+kha_Scheduler.frameTasks.length},kha_Scheduler.insertSorted=function(e,t){for(var a=0,i=e.length;at.next)return void e.splice(r,0,t)}e.push(t)},kha_Scheduler.sortFrameTasks=function(){kha_Scheduler.frame_tasks_sorted||(kha_Scheduler.frameTasks.sort(function(e,t){return e.priority>t.priority?1:e.priority=kha_System.renderListeners.length;)kha_System.renderListeners.push([]);kha_System.renderListeners[t].push(e)},kha_System.removeRenderListener=function(e,t){null==t&&(t=0),HxOverrides.remove(kha_System.renderListeners[t],e)},kha_System.notifyOnApplicationState=function(e,t,a,i,r){null!=e&&kha_System.foregroundListeners.push(e),null!=t&&kha_System.resumeListeners.push(t),null!=a&&kha_System.pauseListeners.push(a),null!=i&&kha_System.backgroundListeners.push(i),null!=r&&kha_System.shutdownListeners.push(r)},kha_System.notifyOnDropFiles=function(e){kha_System.dropFilesListeners.push(e)},kha_System.render=function(e,t){if(0!=kha_System.renderListeners.length)for(var a=0,i=kha_System.renderListeners[e];a=this.getLength()},unload:function(){},__class__:kha_Video};var kha_WindowMode=$hxClasses["kha.WindowMode"]={__ename__:!0,__constructs__:["Window","BorderlessWindow","Fullscreen"]};kha_WindowMode.Window=["Window",0],kha_WindowMode.Window.toString=$estr,kha_WindowMode.Window.__enum__=kha_WindowMode,kha_WindowMode.BorderlessWindow=["BorderlessWindow",1],kha_WindowMode.BorderlessWindow.toString=$estr,kha_WindowMode.BorderlessWindow.__enum__=kha_WindowMode,kha_WindowMode.Fullscreen=["Fullscreen",2],kha_WindowMode.Fullscreen.toString=$estr,kha_WindowMode.Fullscreen.__enum__=kha_WindowMode;var kha_Position=$hxClasses["kha.Position"]={__ename__:!0,__constructs__:["Center","Fixed"]};kha_Position.Center=["Center",0],kha_Position.Center.toString=$estr,kha_Position.Center.__enum__=kha_Position,kha_Position.Fixed=function(e){var t=["Fixed",1,e];return t.__enum__=kha_Position,t.toString=$estr,t};var kha_TargetDisplay=$hxClasses["kha.TargetDisplay"]={__ename__:!0,__constructs__:["Primary","ById"]};kha_TargetDisplay.Primary=["Primary",0],kha_TargetDisplay.Primary.toString=$estr,kha_TargetDisplay.Primary.__enum__=kha_TargetDisplay,kha_TargetDisplay.ById=function(e){var t=["ById",1,e];return t.__enum__=kha_TargetDisplay,t.toString=$estr,t};var kha_RendererOptions=$hxClasses["kha.RendererOptions"]=function(e,t,a){this.textureFormat=e,this.depthStencilFormat=t,this.samplesPerPixel=a};kha_RendererOptions.__name__=!0,kha_RendererOptions.prototype={textureFormat:null,depthStencilFormat:null,samplesPerPixel:null,__class__:kha_RendererOptions};var kha_WindowedModeOptions=$hxClasses["kha.WindowedModeOptions"]=function(e,t,a){this.minimizable=e,this.maximizable=t,this.resizable=a};kha_WindowedModeOptions.__name__=!0,kha_WindowedModeOptions.prototype={minimizable:null,maximizable:null,resizable:null,__class__:kha_WindowedModeOptions};var kha_WindowOptions=$hxClasses["kha.WindowOptions"]=function(e,t,a,i,r,s,n,_,o){this.width=e,this.height=t,this.mode=a,this.title=i,this.x=r,this.y=s,this.targetDisplay=n,this.rendererOptions=_,this.windowedModeOptions=o};kha_WindowOptions.__name__=!0,kha_WindowOptions.prototype={width:null,height:null,mode:null,title:null,x:null,y:null,targetDisplay:null,rendererOptions:null,windowedModeOptions:null,__class__:kha_WindowOptions};var kha_arrays__$Float32Array_Float32Array_$Impl_$=$hxClasses["kha.arrays._Float32Array.Float32Array_Impl_"]={};kha_arrays__$Float32Array_Float32Array_$Impl_$.__name__=!0,kha_arrays__$Float32Array_Float32Array_$Impl_$._new=function(e){return new Float32Array(e)},kha_arrays__$Float32Array_Float32Array_$Impl_$.get_length=function(e){return e.length},kha_arrays__$Float32Array_Float32Array_$Impl_$.set=function(e,t,a){return e[t]=a},kha_arrays__$Float32Array_Float32Array_$Impl_$.get=function(e,t){return e[t]},kha_arrays__$Float32Array_Float32Array_$Impl_$.data=function(e){return e},kha_arrays__$Float32Array_Float32Array_$Impl_$.arrayRead=function(e,t){return e[t]},kha_arrays__$Float32Array_Float32Array_$Impl_$.arrayWrite=function(e,t,a){return e[t]=a},kha_arrays__$Float32Array_Float32Array_$Impl_$.subarray=function(e,t,a){return e.subarray(t,a)};var kha_arrays__$Uint32Array_Uint32Array_$Impl_$=$hxClasses["kha.arrays._Uint32Array.Uint32Array_Impl_"]={};kha_arrays__$Uint32Array_Uint32Array_$Impl_$.__name__=!0,kha_arrays__$Uint32Array_Uint32Array_$Impl_$._new=function(e){return new Uint32Array(e)},kha_arrays__$Uint32Array_Uint32Array_$Impl_$.get_length=function(e){return e.length},kha_arrays__$Uint32Array_Uint32Array_$Impl_$.set=function(e,t,a){return e[t]=a},kha_arrays__$Uint32Array_Uint32Array_$Impl_$.get=function(e,t){return e[t]},kha_arrays__$Uint32Array_Uint32Array_$Impl_$.data=function(e){return e},kha_arrays__$Uint32Array_Uint32Array_$Impl_$.arrayRead=function(e,t){return e[t]},kha_arrays__$Uint32Array_Uint32Array_$Impl_$.arrayWrite=function(e,t,a){return e[t]=a},kha_arrays__$Uint32Array_Uint32Array_$Impl_$.subarray=function(e,t,a){return e.subarray(t,a)};var kha_audio1_AudioChannel=$hxClasses["kha.audio1.AudioChannel"]=function(){};kha_audio1_AudioChannel.__name__=!0,kha_audio1_AudioChannel.prototype={play:null,pause:null,stop:null,length:null,get_length:null,position:null,get_position:null,get_volume:null,set_volume:null,finished:null,get_finished:null,__class__:kha_audio1_AudioChannel};var kha_audio2_Audio=$hxClasses["kha.audio2.Audio"]=function(){};kha_audio2_Audio.__name__=!0,kha_audio2_Audio._init=function(){kha_audio2_Audio.buffer=new kha_audio2_Buffer(8192,2,44100)},kha_audio2_Audio._callCallback=function(e){if(null!=kha_audio2_Audio.buffer)if(null!=kha_audio2_Audio.audioCallback)kha_audio2_Audio.audioCallback(e,kha_audio2_Audio.buffer);else for(var t=0,a=e;t=kha_audio2_Audio.buffer.size&&(kha_audio2_Audio.buffer.writeLocation=0)}},kha_audio2_Audio._readSample=function(){if(null==kha_audio2_Audio.buffer)return 0;var e=kha_audio2_Audio.buffer.data[kha_audio2_Audio.buffer.readLocation];return kha_audio2_Audio.buffer.readLocation+=1,kha_audio2_Audio.buffer.readLocation>=kha_audio2_Audio.buffer.size&&(kha_audio2_Audio.buffer.readLocation=0),e},kha_audio2_Audio.play=function(e,t){return null==t&&(t=!1),null},kha_audio2_Audio.stream=function(e,t){return null==t&&(t=!1),null};var kha_audio2_Audio1=$hxClasses["kha.audio2.Audio1"]=function(){};kha_audio2_Audio1.__name__=!0,kha_audio2_Audio1._init=function(){var e=new Array(16);kha_audio2_Audio1.soundChannels=e;var t=new Array(16);kha_audio2_Audio1.streamChannels=t;var a=new Array(16);kha_audio2_Audio1.internalSoundChannels=a;var i=new Array(16);kha_audio2_Audio1.internalStreamChannels=i;var r=new Array(512);kha_audio2_Audio1.sampleCache1=r;var s=new Array(512);kha_audio2_Audio1.sampleCache2=s,kha_audio2_Audio.audioCallback=kha_audio2_Audio1.mix},kha_audio2_Audio1.max=function(e,t){return e>t?e:t},kha_audio2_Audio1.min=function(e,t){return e-1?$:-1,t.writeLocation+=1,t.writeLocation>=t.size&&(t.writeLocation=0)}},kha_audio2_Audio1.play=function(e,t){null==t&&(t=!1);for(var a=null,i=0;i<16;){var r=i++;if(null==kha_audio2_Audio1.soundChannels[r]||kha_audio2_Audio1.soundChannels[r].get_finished()){(a=new kha_audio2_AudioChannel(t)).data=e.uncompressedData,kha_audio2_Audio1.soundChannels[r]=a;break}}return a},kha_audio2_Audio1._playAgain=function(e){for(var t=0;t<16;){var a=t++;if(null==kha_audio2_Audio1.soundChannels[a]||kha_audio2_Audio1.soundChannels[a].get_finished()||kha_audio2_Audio1.soundChannels[a]==e){kha_audio2_Audio1.soundChannels[a]=e;break}}},kha_audio2_Audio1.stream=function(e,t){null==t&&(t=!1);var a=kha_audio2_Audio.stream(e,t);if(null!=a)return a;for(var i=null,r=0;r<16;){var s=r++;if(null==kha_audio2_Audio1.streamChannels[s]||kha_audio2_Audio1.streamChannels[s].get_finished()){i=new kha_audio2_StreamChannel(e.compressedData,t),kha_audio2_Audio1.streamChannels[s]=i;break}}return i};var kha_audio2_AudioChannel=$hxClasses["kha.audio2.AudioChannel"]=function(e){this.paused=!1,this.looping=e,this.myVolume=1,this.myPosition=0};kha_audio2_AudioChannel.__name__=!0,kha_audio2_AudioChannel.__interfaces__=[kha_audio1_AudioChannel],kha_audio2_AudioChannel.prototype={data:null,myVolume:null,myPosition:null,paused:null,looping:null,nextSamples:function(e,t,a){if(this.paused)for(var i=0,r=t;i=this.data.length&&(this.myPosition=0)}for(;s=this.data.length},__class__:kha_audio2_AudioChannel};var kha_audio2_Buffer=$hxClasses["kha.audio2.Buffer"]=function(e,t,a){this.size=e;var i=new Array(e);this.data=i,this.channels=t,this.samplesPerSecond=a,this.readLocation=0,this.writeLocation=0};kha_audio2_Buffer.__name__=!0,kha_audio2_Buffer.prototype={channels:null,samplesPerSecond:null,data:null,size:null,readLocation:null,writeLocation:null,__class__:kha_audio2_Buffer};var kha_audio2_StreamChannel=$hxClasses["kha.audio2.StreamChannel"]=function(e,t){this.paused=!1,this.atend=!1,this.myVolume=1,this.loop=t,this.reader=kha_audio2_ogg_vorbis_Reader.openFromBytes(e)};kha_audio2_StreamChannel.__name__=!0,kha_audio2_StreamChannel.__interfaces__=[kha_audio1_AudioChannel],kha_audio2_StreamChannel.prototype={reader:null,atend:null,loop:null,myVolume:null,paused:null,nextSamples:function(e,t,a){if(this.paused)for(var i=0,r=t;i>>24]};var kha_audio2_ogg_tools_MathTools=$hxClasses["kha.audio2.ogg.tools.MathTools"]=function(){};kha_audio2_ogg_tools_MathTools.__name__=!0,kha_audio2_ogg_tools_MathTools.ilog=function(e){var t=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];return e<16384?e<16?t[e]:e<512?5+t[e>>5]:10+t[e>>10]:e<16777216?e<524288?15+t[e>>15]:20+t[e>>20]:e<536870912?25+t[e>>25]:e<-2147483648?30+t[e>>30]:0};var kha_audio2_ogg_tools_Mdct=$hxClasses["kha.audio2.ogg.tools.Mdct"]=function(){};kha_audio2_ogg_tools_Mdct.__name__=!0,kha_audio2_ogg_tools_Mdct.inverseTransform=function(e,t,a,i,r,s){for(var n=t>>1,_=t>>2,o=t>>3,h=new Array(n),l=n-2,u=0,c=0,d=n;c!=d;)h[l+1]=e[c]*a[u]-e[c+2]*a[u+1],h[l]=e[c]*a[u+1]+e[c+2]*a[u],l-=2,u+=2,c+=4;for(c=n-3;l>=0;)h[l+1]=-e[c+2]*a[u]- -e[c]*a[u+1],h[l]=-e[c+2]*a[u+1]+-e[c]*a[u],l-=2,u+=2,c-=4;for(var p=e,g=h,f=n-8,v=_,k=0,m=_,b=0;f>=0;){var S=g[v+1]-g[k+1],y=g[v]-g[k];p[m+1]=g[v+1]+g[k+1],p[m]=g[v]+g[k],p[b+1]=S*a[f+4]-y*a[f+5],p[b]=y*a[f+4]+S*a[f+5],S=g[v+3]-g[k+3],y=g[v+2]-g[k+2],p[m+3]=g[v+3]+g[k+3],p[m+2]=g[v+2]+g[k+2],p[b+3]=S*a[f]-y*a[f+1],p[b+2]=y*a[f]+S*a[f+1],f-=8,m+=4,b+=4,v+=4,k+=4}for(var x=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4],B=(t<16384?t<16?x[t]:t<512?5+x[t>>5]:10+x[t>>10]:t<16777216?t<524288?15+x[t>>15]:20+x[t>>20]:t<536870912?25+x[t>>25]:t<-2147483648?30+x[t>>30]:0)-1,T=n-1-0*_,w=T,E=T+-(t>>3),I=0,C=1+(t>>4>>2);--C>0;){var A=p[w]-p[E],L=p[w+-1]-p[E+-1],R=w,$=p;$[R]=$[R]+p[E];var F=w+-1,V=p;V[F]=V[F]+p[E+-1],p[E]=A*a[I]-L*a[I+1],p[E+-1]=L*a[I]+A*a[I+1],I+=8,A=p[w+-2]-p[E+-2],L=p[w+-3]-p[E+-3];var N=w+-2,P=p;P[N]=P[N]+p[E+-2];var M=w+-3,O=p;O[M]=O[M]+p[E+-3],p[E+-2]=A*a[I]-L*a[I+1],p[E+-3]=L*a[I]+A*a[I+1],I+=8,A=p[w+-4]-p[E+-4],L=p[w+-5]-p[E+-5];var D=w+-4,U=p;U[D]=U[D]+p[E+-4];var H=w+-5,G=p;G[H]=G[H]+p[E+-5],p[E+-4]=A*a[I]-L*a[I+1],p[E+-5]=L*a[I]+A*a[I+1],I+=8,A=p[w+-6]-p[E+-6],L=p[w+-7]-p[E+-7];var W=w+-6,z=p;z[W]=z[W]+p[E+-6];var j=w+-7,K=p;K[j]=K[j]+p[E+-7],p[E+-6]=A*a[I]-L*a[I+1],p[E+-7]=L*a[I]+A*a[I+1],I+=8,w-=8,E-=8}for(var X=n-1-_,Y=X,Z=X+-(t>>3),Q=0,J=1+(t>>4>>2);--J>0;){var q=p[Y]-p[Z],ee=p[Y+-1]-p[Z+-1],te=Y,ae=p;ae[te]=ae[te]+p[Z];var ie=Y+-1,re=p;re[ie]=re[ie]+p[Z+-1],p[Z]=q*a[Q]-ee*a[Q+1],p[Z+-1]=ee*a[Q]+q*a[Q+1],Q+=8,q=p[Y+-2]-p[Z+-2],ee=p[Y+-3]-p[Z+-3];var se=Y+-2,ne=p;ne[se]=ne[se]+p[Z+-2];var _e=Y+-3,oe=p;oe[_e]=oe[_e]+p[Z+-3],p[Z+-2]=q*a[Q]-ee*a[Q+1],p[Z+-3]=ee*a[Q]+q*a[Q+1],Q+=8,q=p[Y+-4]-p[Z+-4],ee=p[Y+-5]-p[Z+-5];var he=Y+-4,le=p;le[he]=le[he]+p[Z+-4];var ue=Y+-5,ce=p;ce[ue]=ce[ue]+p[Z+-5],p[Z+-4]=q*a[Q]-ee*a[Q+1],p[Z+-5]=ee*a[Q]+q*a[Q+1],Q+=8,q=p[Y+-6]-p[Z+-6],ee=p[Y+-7]-p[Z+-7];var de=Y+-6,pe=p;pe[de]=pe[de]+p[Z+-6];var ge=Y+-7,fe=p;fe[ge]=fe[ge]+p[Z+-7],p[Z+-6]=q*a[Q]-ee*a[Q+1],p[Z+-7]=ee*a[Q]+q*a[Q+1],Q+=8,Y-=8,Z-=8}for(var ve=n-1-0*o,ke=0,me=ve,be=ve+-(t>>4),Se=1+(t>>5>>2);--Se>0;){var ye=p[me]-p[be],xe=p[me+-1]-p[be+-1],Be=me,Te=p;Te[Be]=Te[Be]+p[be];var we=me+-1,Ee=p;Ee[we]=Ee[we]+p[be+-1],p[be]=ye*a[ke]-xe*a[ke+1],p[be+-1]=xe*a[ke]+ye*a[ke+1],ke+=16,ye=p[me+-2]-p[be+-2],xe=p[me+-3]-p[be+-3];var Ie=me+-2,Ce=p;Ce[Ie]=Ce[Ie]+p[be+-2];var Ae=me+-3,Le=p;Le[Ae]=Le[Ae]+p[be+-3],p[be+-2]=ye*a[ke]-xe*a[ke+1],p[be+-3]=xe*a[ke]+ye*a[ke+1],ke+=16,ye=p[me+-4]-p[be+-4],xe=p[me+-5]-p[be+-5];var Re=me+-4,$e=p;$e[Re]=$e[Re]+p[be+-4];var Fe=me+-5,Ve=p;Ve[Fe]=Ve[Fe]+p[be+-5],p[be+-4]=ye*a[ke]-xe*a[ke+1],p[be+-5]=xe*a[ke]+ye*a[ke+1],ke+=16,ye=p[me+-6]-p[be+-6],xe=p[me+-7]-p[be+-7];var Ne=me+-6,Pe=p;Pe[Ne]=Pe[Ne]+p[be+-6];var Me=me+-7,Oe=p;Oe[Me]=Oe[Me]+p[be+-7],p[be+-6]=ye*a[ke]-xe*a[ke+1],p[be+-7]=xe*a[ke]+ye*a[ke+1],me-=8,be-=8,ke+=16}for(var De=n-1-o,Ue=0,He=De,Ge=De+-(t>>4),We=1+(t>>5>>2);--We>0;){var ze=p[He]-p[Ge],je=p[He+-1]-p[Ge+-1],Ke=He,Xe=p;Xe[Ke]=Xe[Ke]+p[Ge];var Ye=He+-1,Ze=p;Ze[Ye]=Ze[Ye]+p[Ge+-1],p[Ge]=ze*a[Ue]-je*a[Ue+1],p[Ge+-1]=je*a[Ue]+ze*a[Ue+1],Ue+=16,ze=p[He+-2]-p[Ge+-2],je=p[He+-3]-p[Ge+-3];var Qe=He+-2,Je=p;Je[Qe]=Je[Qe]+p[Ge+-2];var qe=He+-3,et=p;et[qe]=et[qe]+p[Ge+-3],p[Ge+-2]=ze*a[Ue]-je*a[Ue+1],p[Ge+-3]=je*a[Ue]+ze*a[Ue+1],Ue+=16,ze=p[He+-4]-p[Ge+-4],je=p[He+-5]-p[Ge+-5];var tt=He+-4,at=p;at[tt]=at[tt]+p[Ge+-4];var it=He+-5,rt=p;rt[it]=rt[it]+p[Ge+-5],p[Ge+-4]=ze*a[Ue]-je*a[Ue+1],p[Ge+-5]=je*a[Ue]+ze*a[Ue+1],Ue+=16,ze=p[He+-6]-p[Ge+-6],je=p[He+-7]-p[Ge+-7];var st=He+-6,nt=p;nt[st]=nt[st]+p[Ge+-6];var _t=He+-7,ot=p;ot[_t]=ot[_t]+p[Ge+-7],p[Ge+-6]=ze*a[Ue]-je*a[Ue+1],p[Ge+-7]=je*a[Ue]+ze*a[Ue+1],He-=8,Ge-=8,Ue+=16}for(var ht=n-1-2*o,lt=0,ut=ht,ct=ht+-(t>>4),dt=1+(t>>5>>2);--dt>0;){var pt=p[ut]-p[ct],gt=p[ut+-1]-p[ct+-1],ft=ut,vt=p;vt[ft]=vt[ft]+p[ct];var kt=ut+-1,mt=p;mt[kt]=mt[kt]+p[ct+-1],p[ct]=pt*a[lt]-gt*a[lt+1],p[ct+-1]=gt*a[lt]+pt*a[lt+1],lt+=16,pt=p[ut+-2]-p[ct+-2],gt=p[ut+-3]-p[ct+-3];var bt=ut+-2,St=p;St[bt]=St[bt]+p[ct+-2];var yt=ut+-3,xt=p;xt[yt]=xt[yt]+p[ct+-3],p[ct+-2]=pt*a[lt]-gt*a[lt+1],p[ct+-3]=gt*a[lt]+pt*a[lt+1],lt+=16,pt=p[ut+-4]-p[ct+-4],gt=p[ut+-5]-p[ct+-5];var Bt=ut+-4,Tt=p;Tt[Bt]=Tt[Bt]+p[ct+-4];var wt=ut+-5,Et=p;Et[wt]=Et[wt]+p[ct+-5],p[ct+-4]=pt*a[lt]-gt*a[lt+1],p[ct+-5]=gt*a[lt]+pt*a[lt+1],lt+=16,pt=p[ut+-6]-p[ct+-6],gt=p[ut+-7]-p[ct+-7];var It=ut+-6,Ct=p;Ct[It]=Ct[It]+p[ct+-6];var At=ut+-7,Lt=p;Lt[At]=Lt[At]+p[ct+-7],p[ct+-6]=pt*a[lt]-gt*a[lt+1],p[ct+-7]=gt*a[lt]+pt*a[lt+1],ut-=8,ct-=8,lt+=16}for(var Rt=n-1-3*o,$t=0,Ft=Rt,Vt=Rt+-(t>>4),Nt=1+(t>>5>>2);--Nt>0;){var Pt=p[Ft]-p[Vt],Mt=p[Ft+-1]-p[Vt+-1],Ot=Ft,Dt=p;Dt[Ot]=Dt[Ot]+p[Vt];var Ut=Ft+-1,Ht=p;Ht[Ut]=Ht[Ut]+p[Vt+-1],p[Vt]=Pt*a[$t]-Mt*a[$t+1],p[Vt+-1]=Mt*a[$t]+Pt*a[$t+1],$t+=16,Pt=p[Ft+-2]-p[Vt+-2],Mt=p[Ft+-3]-p[Vt+-3];var Gt=Ft+-2,Wt=p;Wt[Gt]=Wt[Gt]+p[Vt+-2];var zt=Ft+-3,jt=p;jt[zt]=jt[zt]+p[Vt+-3],p[Vt+-2]=Pt*a[$t]-Mt*a[$t+1],p[Vt+-3]=Mt*a[$t]+Pt*a[$t+1],$t+=16,Pt=p[Ft+-4]-p[Vt+-4],Mt=p[Ft+-5]-p[Vt+-5];var Kt=Ft+-4,Xt=p;Xt[Kt]=Xt[Kt]+p[Vt+-4];var Yt=Ft+-5,Zt=p;Zt[Yt]=Zt[Yt]+p[Vt+-5],p[Vt+-4]=Pt*a[$t]-Mt*a[$t+1],p[Vt+-5]=Mt*a[$t]+Pt*a[$t+1],$t+=16,Pt=p[Ft+-6]-p[Vt+-6],Mt=p[Ft+-7]-p[Vt+-7];var Qt=Ft+-6,Jt=p;Jt[Qt]=Jt[Qt]+p[Vt+-6];var qt=Ft+-7,ea=p;ea[qt]=ea[qt]+p[Vt+-7],p[Vt+-6]=Pt*a[$t]-Mt*a[$t+1],p[Vt+-7]=Mt*a[$t]+Pt*a[$t+1],Ft-=8,Vt-=8,$t+=16}for(var ta=2,aa=B-3>>1;ta>ia+2,sa=ra>>1,na=0,_a=1<>ia+4>>2);--da>0;){var pa=p[ua]-p[ca],ga=p[ua+-1]-p[ca+-1],fa=ua,va=p;va[fa]=va[fa]+p[ca];var ka=ua+-1,ma=p;ma[ka]=ma[ka]+p[ca+-1],p[ca]=pa*a[la]-ga*a[la+1],p[ca+-1]=ga*a[la]+pa*a[la+1],la+=ha,pa=p[ua+-2]-p[ca+-2],ga=p[ua+-3]-p[ca+-3];var ba=ua+-2,Sa=p;Sa[ba]=Sa[ba]+p[ca+-2];var ya=ua+-3,xa=p;xa[ya]=xa[ya]+p[ca+-3],p[ca+-2]=pa*a[la]-ga*a[la+1],p[ca+-3]=ga*a[la]+pa*a[la+1],la+=ha,pa=p[ua+-4]-p[ca+-4],ga=p[ua+-5]-p[ca+-5];var Ba=ua+-4,Ta=p;Ta[Ba]=Ta[Ba]+p[ca+-4];var wa=ua+-5,Ea=p;Ea[wa]=Ea[wa]+p[ca+-5],p[ca+-4]=pa*a[la]-ga*a[la+1],p[ca+-5]=ga*a[la]+pa*a[la+1],la+=ha,pa=p[ua+-6]-p[ca+-6],ga=p[ua+-7]-p[ca+-7];var Ia=ua+-6,Ca=p;Ca[Ia]=Ca[Ia]+p[ca+-6];var Aa=ua+-7,La=p;La[Aa]=La[Aa]+p[ca+-7],p[ca+-6]=pa*a[la]-ga*a[la+1],p[ca+-7]=ga*a[la]+pa*a[la+1],ua-=8,ca-=8,la+=ha}for(var Ra=B-3>>1,$a=B-6;Ra<$a;)for(var Fa=Ra++,Va=t>>Fa+2,Na=1<>1,Ma=1<>Fa+6)+1;--Ua>0;){for(var Ha=a[Oa],Ga=a[Oa+1],Wa=a[Oa+Na],za=a[Oa+Na+1],ja=a[Oa+2*Na],Ka=a[Oa+2*Na+1],Xa=a[Oa+3*Na],Ya=a[Oa+3*Na+1],Za=Da,Qa=Da+-Pa,Ja=Ma+1;--Ja>0;){var qa=p[Za]-p[Qa],ei=p[Za+-1]-p[Qa+-1];p[Za]=p[Za]+p[Qa],p[Za+-1]=p[Za+-1]+p[Qa+-1],p[Qa]=qa*Ha-ei*Ga,p[Qa+-1]=ei*Ha+qa*Ga,qa=p[Za+-2]-p[Qa+-2],ei=p[Za+-3]-p[Qa+-3],p[Za+-2]=p[Za+-2]+p[Qa+-2],p[Za+-3]=p[Za+-3]+p[Qa+-3],p[Qa+-2]=qa*Wa-ei*za,p[Qa+-3]=ei*Wa+qa*za,qa=p[Za+-4]-p[Qa+-4],ei=p[Za+-5]-p[Qa+-5],p[Za+-4]=p[Za+-4]+p[Qa+-4],p[Za+-5]=p[Za+-5]+p[Qa+-5],p[Qa+-4]=qa*ja-ei*Ka,p[Qa+-5]=ei*ja+qa*Ka,qa=p[Za+-6]-p[Qa+-6],ei=p[Za+-7]-p[Qa+-7],p[Za+-6]=p[Za+-6]+p[Qa+-6],p[Za+-7]=p[Za+-7]+p[Qa+-7],p[Qa+-6]=qa*Xa-ei*Ya,p[Qa+-7]=ei*Xa+qa*Ya,Za-=Va,Qa-=Va}Oa+=4*Na,Da-=8}for(var ti=n-1,ai=a[t>>3],ii=ti,ri=ti-16*(t>>5);ii>ri;){var si=p[ii],ni=p[ii+-8];p[ii+-8]=si-ni,p[ii]=si+ni,si=p[ii+-1],ni=p[ii+-9],p[ii+-9]=si-ni,p[ii+-1]=si+ni;var _i=(si=p[ii+-2])-(ni=p[ii+-10]);p[ii+-2]=si+ni;var oi=(si=p[ii+-3])-(ni=p[ii+-11]);p[ii+-3]=si+ni,p[ii+-10]=(_i+oi)*ai,p[ii+-11]=(oi-_i)*ai,si=p[ii+-4],_i=(ni=p[ii+-12])-si,p[ii+-4]=si+ni,oi=(si=p[ii+-5])-(ni=p[ii+-13]),p[ii+-5]=si+ni,p[ii+-12]=oi,p[ii+-13]=_i,si=p[ii+-6],_i=(ni=p[ii+-14])-si,p[ii+-6]=si+ni,oi=(si=p[ii+-7])-(ni=p[ii+-15]),p[ii+-7]=si+ni,p[ii+-14]=(_i+oi)*ai,p[ii+-15]=(_i-oi)*ai;var hi=p[ii],li=p[ii+-4],ui=hi-li,ci=hi+li,di=(hi=p[ii+-2])+(li=p[ii+-6]),pi=hi-li;p[ii]=ci+di,p[ii+-2]=ci-di;var gi=p[ii+-3]-p[ii+-7];p[ii+-4]=ui+gi,p[ii+-6]=ui-gi;var fi=(hi=p[ii+-1])-(li=p[ii+-5]),vi=hi+li,ki=p[ii+-3]+p[ii+-7];p[ii+-1]=vi+ki,p[ii+-3]=vi-ki,p[ii+-5]=fi-pi,p[ii+-7]=fi+pi;var mi=ii-8,bi=p[mi],Si=p[mi+-4],yi=bi-Si,xi=bi+Si,Bi=(bi=p[mi+-2])+(Si=p[mi+-6]),Ti=bi-Si;p[mi]=xi+Bi,p[mi+-2]=xi-Bi;var wi=p[mi+-3]-p[mi+-7];p[mi+-4]=yi+wi,p[mi+-6]=yi-wi;var Ei=(bi=p[mi+-1])-(Si=p[mi+-5]),Ii=bi+Si,Ci=p[mi+-3]+p[mi+-7];p[mi+-1]=Ii+Ci,p[mi+-3]=Ii-Ci,p[mi+-5]=Ei-Ti,p[mi+-7]=Ei+Ti,ii-=16}for(var Ai=0,Li=_-4,Ri=n-4;Li>=0;){var $i=s[Ai];g[Ri+3]=p[$i],g[Ri+2]=p[$i+1],g[Li+3]=p[$i+2],g[Li+2]=p[$i+3],$i=s[Ai+1],g[Ri+1]=p[$i],g[Ri]=p[$i+1],g[Li+1]=p[$i+2],g[Li]=p[$i+3],Li-=4,Ri-=4,Ai+=2}for(var Fi=0,Vi=0,Ni=n-4;Vi=0;){var Yi=h[Wi+6]*i[Gi+7]-h[Wi+7]*i[Gi+6],Zi=-h[Wi+6]*i[Gi+6]-h[Wi+7]*i[Gi+7];e[zi]=Yi,e[ji+3]=-Yi,e[Ki]=Zi,e[Xi+3]=Zi;var Qi=h[Wi+4]*i[Gi+5]-h[Wi+5]*i[Gi+4],Ji=-h[Wi+4]*i[Gi+4]-h[Wi+5]*i[Gi+5];e[zi+1]=Qi,e[ji+2]=-Qi,e[Ki+1]=Ji,e[Xi+2]=Ji,Yi=h[Wi+2]*i[Gi+3]-h[Wi+3]*i[Gi+2],Zi=-h[Wi+2]*i[Gi+2]-h[Wi+3]*i[Gi+3],e[zi+2]=Yi,e[ji+1]=-Yi,e[Ki+2]=Zi,e[Xi+1]=Zi,Qi=h[Wi]*i[Gi+1]-h[Wi+1]*i[Gi],Ji=-h[Wi]*i[Gi]-h[Wi+1]*i[Gi+1],e[zi+3]=Qi,e[ji]=-Qi,e[Ki+3]=Ji,e[Xi]=Ji,Gi-=8,Wi-=8,zi+=4,Ki+=4,ji-=4,Xi-=4}},kha_audio2_ogg_tools_Mdct.step3Iter0Loop=function(e,t,a,i,r){for(var s=a,n=a+i,_=0,o=1+(e>>2);--o>0;){var h=t[s]-t[n],l=t[s+-1]-t[n+-1],u=s,c=t;c[u]=c[u]+t[n];var d=s+-1,p=t;p[d]=p[d]+t[n+-1],t[n]=h*r[_]-l*r[_+1],t[n+-1]=l*r[_]+h*r[_+1],_+=8,h=t[s+-2]-t[n+-2],l=t[s+-3]-t[n+-3];var g=s+-2,f=t;f[g]=f[g]+t[n+-2];var v=s+-3,k=t;k[v]=k[v]+t[n+-3],t[n+-2]=h*r[_]-l*r[_+1],t[n+-3]=l*r[_]+h*r[_+1],_+=8,h=t[s+-4]-t[n+-4],l=t[s+-5]-t[n+-5];var m=s+-4,b=t;b[m]=b[m]+t[n+-4];var S=s+-5,y=t;y[S]=y[S]+t[n+-5],t[n+-4]=h*r[_]-l*r[_+1],t[n+-5]=l*r[_]+h*r[_+1],_+=8,h=t[s+-6]-t[n+-6],l=t[s+-7]-t[n+-7];var x=s+-6,B=t;B[x]=B[x]+t[n+-6];var T=s+-7,w=t;w[T]=w[T]+t[n+-7],t[n+-6]=h*r[_]-l*r[_+1],t[n+-7]=l*r[_]+h*r[_+1],_+=8,s-=8,n-=8}},kha_audio2_ogg_tools_Mdct.step3InnerRLoop=function(e,t,a,i,r,s){for(var n=0,_=a,o=a+i,h=1+(e>>2);--h>0;){var l=t[_]-t[o],u=t[_+-1]-t[o+-1],c=_,d=t;d[c]=d[c]+t[o];var p=_+-1,g=t;g[p]=g[p]+t[o+-1],t[o]=l*r[n]-u*r[n+1],t[o+-1]=u*r[n]+l*r[n+1],n+=s,l=t[_+-2]-t[o+-2],u=t[_+-3]-t[o+-3];var f=_+-2,v=t;v[f]=v[f]+t[o+-2];var k=_+-3,m=t;m[k]=m[k]+t[o+-3],t[o+-2]=l*r[n]-u*r[n+1],t[o+-3]=u*r[n]+l*r[n+1],n+=s,l=t[_+-4]-t[o+-4],u=t[_+-5]-t[o+-5];var b=_+-4,S=t;S[b]=S[b]+t[o+-4];var y=_+-5,x=t;x[y]=x[y]+t[o+-5],t[o+-4]=l*r[n]-u*r[n+1],t[o+-5]=u*r[n]+l*r[n+1],n+=s,l=t[_+-6]-t[o+-6],u=t[_+-7]-t[o+-7];var B=_+-6,T=t;T[B]=T[B]+t[o+-6];var w=_+-7,E=t;E[w]=E[w]+t[o+-7],t[o+-6]=l*r[n]-u*r[n+1],t[o+-7]=u*r[n]+l*r[n+1],_-=8,o-=8,n+=s}},kha_audio2_ogg_tools_Mdct.step3InnerSLoop=function(e,t,a,i,r,s,n,_){for(var o=r[s],h=r[s+1],l=r[s+n],u=r[s+n+1],c=r[s+2*n],d=r[s+2*n+1],p=r[s+3*n],g=r[s+3*n+1],f=a,v=a+i,k=e+1;--k>0;){var m=t[f]-t[v],b=t[f+-1]-t[v+-1];t[f]=t[f]+t[v],t[f+-1]=t[f+-1]+t[v+-1],t[v]=m*o-b*h,t[v+-1]=b*o+m*h,m=t[f+-2]-t[v+-2],b=t[f+-3]-t[v+-3],t[f+-2]=t[f+-2]+t[v+-2],t[f+-3]=t[f+-3]+t[v+-3],t[v+-2]=m*l-b*u,t[v+-3]=b*l+m*u,m=t[f+-4]-t[v+-4],b=t[f+-5]-t[v+-5],t[f+-4]=t[f+-4]+t[v+-4],t[f+-5]=t[f+-5]+t[v+-5],t[v+-4]=m*c-b*d,t[v+-5]=b*c+m*d,m=t[f+-6]-t[v+-6],b=t[f+-7]-t[v+-7],t[f+-6]=t[f+-6]+t[v+-6],t[f+-7]=t[f+-7]+t[v+-7],t[v+-6]=m*p-b*g,t[v+-7]=b*p+m*g,f-=_,v-=_}},kha_audio2_ogg_tools_Mdct.iter54=function(e,t){var a=e[t],i=e[t+-4],r=a-i,s=a+i,n=(a=e[t+-2])+(i=e[t+-6]),_=a-i;e[t]=s+n,e[t+-2]=s-n;var o=e[t+-3]-e[t+-7];e[t+-4]=r+o,e[t+-6]=r-o;var h=(a=e[t+-1])-(i=e[t+-5]),l=a+i,u=e[t+-3]+e[t+-7];e[t+-1]=l+u,e[t+-3]=l-u,e[t+-5]=h-_,e[t+-7]=h+_},kha_audio2_ogg_tools_Mdct.step3InnerSLoopLd654=function(e,t,a,i,r){for(var s=i[r>>3],n=a,_=a-16*e;n>_;){var o=t[n],h=t[n+-8];t[n+-8]=o-h,t[n]=o+h,o=t[n+-1],h=t[n+-9],t[n+-9]=o-h,t[n+-1]=o+h;var l=(o=t[n+-2])-(h=t[n+-10]);t[n+-2]=o+h;var u=(o=t[n+-3])-(h=t[n+-11]);t[n+-3]=o+h,t[n+-10]=(l+u)*s,t[n+-11]=(u-l)*s,o=t[n+-4],l=(h=t[n+-12])-o,t[n+-4]=o+h,u=(o=t[n+-5])-(h=t[n+-13]),t[n+-5]=o+h,t[n+-12]=u,t[n+-13]=l,o=t[n+-6],l=(h=t[n+-14])-o,t[n+-6]=o+h,u=(o=t[n+-7])-(h=t[n+-15]),t[n+-7]=o+h,t[n+-14]=(l+u)*s,t[n+-15]=(l-u)*s;var c=t[n],d=t[n+-4],p=c-d,g=c+d,f=(c=t[n+-2])+(d=t[n+-6]),v=c-d;t[n]=g+f,t[n+-2]=g-f;var k=t[n+-3]-t[n+-7];t[n+-4]=p+k,t[n+-6]=p-k;var m=(c=t[n+-1])-(d=t[n+-5]),b=c+d,S=t[n+-3]+t[n+-7];t[n+-1]=b+S,t[n+-3]=b-S,t[n+-5]=m-v,t[n+-7]=m+v;var y=n-8,x=t[y],B=t[y+-4],T=x-B,w=x+B,E=(x=t[y+-2])+(B=t[y+-6]),I=x-B;t[y]=w+E,t[y+-2]=w-E;var C=t[y+-3]-t[y+-7];t[y+-4]=T+C,t[y+-6]=T-C;var A=(x=t[y+-1])-(B=t[y+-5]),L=x+B,R=t[y+-3]+t[y+-7];t[y+-1]=L+R,t[y+-3]=L-R,t[y+-5]=A-I,t[y+-7]=A+I,n-=16}};var kha_audio2_ogg_vorbis_Reader=$hxClasses["kha.audio2.ogg.vorbis.Reader"]=function(e,t,a){this.seekFunc=t,this.inputLength=a,this.decoder=kha_audio2_ogg_vorbis_VorbisDecoder.start(e),this.decoder.setupSampleNumber(t,a),this.loopStart=this.get_header().comment.get_loopStart(),this.loopLength=this.get_header().comment.get_loopLength()};kha_audio2_ogg_vorbis_Reader.__name__=!0,kha_audio2_ogg_vorbis_Reader.openFromBytes=function(e){var t=new haxe_io_BytesInput(e),a=t;return new kha_audio2_ogg_vorbis_Reader(t,function(e){kha_audio2_ogg_vorbis_Reader.seekBytes(a,e)},e.length)},kha_audio2_ogg_vorbis_Reader.seekBytes=function(e,t){e.set_position(t)},kha_audio2_ogg_vorbis_Reader.readAll=function(e,t,a){null==a&&(a=!1);var i=new haxe_io_BytesInput(e),r=kha_audio2_ogg_vorbis_VorbisDecoder.start(i),s=i;r.setupSampleNumber(function(e){kha_audio2_ogg_vorbis_Reader.seekBytes(s,e)},e.length);for(var n=r.header,_=4096*n.channel,o=new Array(_);;){for(var h=r.read(o,4096,n.channel,n.sampleRate,a),l=0,u=h*n.channel;l=0&&!(this.segments[n]<255);)n>=0&&(this.endSegWithKnownLoc=n,this.knownLocForPacket=e),--n;if(this.firstDecode){for(var _=0,o=new kha_audio2_ogg_vorbis_data_ProbedPage,h=0,l=a;h=this.segments.length&&(this.nextSeg=-1),0!=this.bytesInSeg)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"VorbisDecodeState.hx",lineNumber:184,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"next"}));return this.bytesInSeg=e,e},startPacket:function(){for(;-1==this.nextSeg;)if(this.page.start(this),0!=(1&this.page.flag))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{fileName:"VorbisDecodeState.hx",lineNumber:193,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"startPacket"}));this.lastSeg=!1,this.validBits=0,this.bytesInSeg=0},maybeStartPacket:function(){if(-1==this.nextSeg){var e,t=!1;try{this.inputPosition+=1,e=this.input.readByte()}catch(a){if(a instanceof js__$Boot_HaxeError&&(a=a.val),!js_Boot.__instanceof(a,haxe_io_Eof))throw a;t=!0,e=0}if(t)return!1;var a,i,r;if(79==e?(this.inputPosition+=1,r=103!=this.input.readByte()):r=!0,r?i=!0:(this.inputPosition+=1,i=103!=this.input.readByte()),i?a=!0:(this.inputPosition+=1,a=83!=this.input.readByte()),a)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{fileName:"VorbisDecodeState.hx",lineNumber:218,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"maybeStartPacket"}));this.page.startWithoutCapturePattern(this)}return this.startPacket(),!0},readBits:function(e){if(this.validBits<0)return 0;if(this.validBits24)return this.readBits(24)+(this.readBits(e-24)<<24);for(0==this.validBits&&(this.acc=0);;){if(0==this.bytesInSeg&&(this.lastSeg||0==this.next())){this.validBits=-1;break}if(this.bytesInSeg--,this.inputPosition+=1,this.acc=this.acc+(this.input.readByte()<>>e,this.validBits-=e,t}var a=this.acc&(1<>>e,this.validBits-=e,a},readPacketRaw:function(){return 0!=this.bytesInSeg||!this.lastSeg&&0!=this.next()?(this.bytesInSeg--,this.inputPosition+=1,this.input.readByte()):-1},readPacket:function(){var e;return 0!=this.bytesInSeg||!this.lastSeg&&0!=this.next()?(this.bytesInSeg--,this.inputPosition+=1,e=this.input.readByte()):e=-1,this.validBits=0,e},flushPacket:function(){for(;0!=this.bytesInSeg||!this.lastSeg&&0!=this.next();)this.bytesInSeg--,this.inputPosition+=1,this.input.readByte()},vorbisValidate:function(){for(var e=new haxe_io_Bytes(new ArrayBuffer(6)),t=0;t<6;){var a,i=t++;0!=this.bytesInSeg||!this.lastSeg&&0!=this.next()?(this.bytesInSeg--,this.inputPosition+=1,a=this.input.readByte()):a=-1,this.validBits=0,e.b[i]=255&a}if("vorbis"!=e.toString())throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{fileName:"VorbisDecodeState.hx",lineNumber:300,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"vorbisValidate"}))},firstPageValidate:function(){if(1!=this.segments.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"segmentCount",{fileName:"VorbisDecodeState.hx",lineNumber:307,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"firstPageValidate"}));if(30!=this.segments[0])throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{fileName:"VorbisDecodeState.hx",lineNumber:310,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"firstPageValidate"}))},startFirstDecode:function(){this.firstAudioPageOffset=this.inputPosition,this.firstDecode=!0},capturePattern:function(){var e,t,a;if(this.inputPosition+=1,79==this.input.readByte()?(this.inputPosition+=1,a=103!=this.input.readByte()):a=!0,a?t=!0:(this.inputPosition+=1,t=103!=this.input.readByte()),t?e=!0:(this.inputPosition+=1,e=83!=this.input.readByte()),e)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{fileName:"VorbisDecodeState.hx",lineNumber:323,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"capturePattern"}))},skip:function(e){this.inputPosition+=e;for(var t=new Array(e),a=0,i=e;a=0){var i=e.codewordLengths[a];this.acc=this.acc>>>i,this.validBits-=i,this.validBits<0?(this.validBits=0,t=-1):t=a}else t=this.decodeScalarRaw(e);return e.sparse&&(t=e.sortedValues[t]),t},decodeRaw:function(e){this.validBits<10&&this.prepHuffman();var t=e.fastHuffman[1023&this.acc];if(t>=0){var a=e.codewordLengths[t];return this.acc=this.acc>>>a,this.validBits-=a,this.validBits<0?(this.validBits=0,-1):t}return this.decodeScalarRaw(e)},isLastByte:function(){return 0==this.bytesInSeg&&this.lastSeg},finishDecodePacket:function(e,t,a){var i=a.left.start,r=!1,s=t>>1;if(this.firstDecode)this.currentLoc=-s,this.discardSamplesDeferred=t-a.right.end,r=!0,this.firstDecode=!1;else if(0!=this.discardSamplesDeferred)a.left.start+=this.discardSamplesDeferred,i=a.left.start,this.discardSamplesDeferred=0;else;if(this.lastSegWhich==this.endSegWithKnownLoc){if(r&&0!=(4&this.page.flag)){var n=this.knownLocForPacket-(t-a.right.end);if(n0)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{fileName:"VorbisDecodeState.hx",lineNumber:552,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"getSampleNumber"}));return this.pLast=new kha_audio2_ogg_vorbis_data_ProbedPage,this.pLast.pageStart=o,this.pLast.pageEnd=r,this.pLast.lastDecodedSample=d,this.pLast.firstDecodedSample=null,this.pLast.afterPreviousPageStart=i,e(this.inputPosition=a),d},forcePageResync:function(){this.nextSeg=-1},setInputOffset:function(e,t){e(this.inputPosition=t)},findPage:function(e,t){try{for(;;)if(this.inputPosition+=1,79==this.input.readByte()){var a=this.inputPosition;if(a-25>t)return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound;var i,r;if(this.inputPosition+=1,103==this.input.readByte()?(this.inputPosition+=1,r=103!=this.input.readByte()):r=!0,r?i=!0:(this.inputPosition+=1,i=83!=this.input.readByte()),i)continue;var s=new Array(27);s[0]=79,s[1]=103,s[2]=103,s[3]=83;for(var n=4;n<27;){var _=n++;this.inputPosition+=1,s[_]=this.input.readByte()}if(0!=s[4]){e(this.inputPosition=a);continue}for(var o=s[22]+(s[23]<<8)+(s[24]<<16)+(s[25]<<24),h=22;h<26;)s[h++]=0;for(var l=0,u=0;u<27;){var c=u++;l=l<<8^kha_audio2_ogg_tools_Crc32.table[s[c]^l>>>24]}var d=0;try{for(var p=0,g=s[26];p>>24],d+=f}for(var v=0,k=d;v>>24]}}catch(e){if(e instanceof js__$Boot_HaxeError&&(e=e.val),js_Boot.__instanceof(e,haxe_io_Eof))return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound;throw e}if(l==o){var b=this.inputPosition;return e(this.inputPosition=a-1),kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.Found(b,0!=(4&s[5]))}}}catch(e){if(e instanceof js__$Boot_HaxeError&&(e=e.val),js_Boot.__instanceof(e,haxe_io_Eof))return kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound;throw e}},analyzePage:function(e,t){var a=new kha_audio2_ogg_vorbis_data_ProbedPage,i=new Array(255);a.pageStart=this.inputPosition,this.inputPosition+=27;for(var r=new Array(27),s=0;s<27;)r[s++]=this.input.readByte();var n=r;if(79!=n[0]||103!=n[1]||103!=n[2]||83!=n[3])throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"VorbisDecodeState.hx",lineNumber:660,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"analyzePage"}));var _=n[26];this.inputPosition+=_;for(var o=new Array(_),h=0,l=_;h>=1;var y=v-1,x=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];if((S&=(1<<(y<16384?y<16?x[y]:y<512?5+x[y>>5]:10+x[y>>10]:y<16777216?y<524288?15+x[y>>15]:20+x[y>>20]:y<536870912?25+x[y>>25]:y<-2147483648?30+x[y>>30]:0))-1)>=v)return e(this.inputPosition=a.pageStart),null;i[g++]=t.modes[S].blockflag;var B=u[b]-1;this.inputPosition+=B;for(var T=new Array(B),w=0,E=B;w1&&(R+=i[g-1]?t.blocksize1:t.blocksize0);for(var $=g-2;$>=1;)i[--$]?i[$+1]?R+=t.blocksize1>>1:R+=(t.blocksize1-t.blocksize0>>2)+(t.blocksize0>>1):R+=t.blocksize0>>1,--$;return a.firstDecodedSample=a.lastDecodedSample-R,e(this.inputPosition=a.pageStart),a},decodeScalarRaw:function(e){if(this.prepHuffman(),null==e.sortedCodewords&&null==e.codewords)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"VorbisDecodeState.hx",lineNumber:787,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"decodeScalarRaw"}));var t=e.codewordLengths,a=e.codewords,i=e.sortedCodewords;if(e.entries>8?null!=i:null!=a){for(var r=this.acc,s=(r=(-16711936&(r=(-252645136&(r=(-858993460&(r=(-1431655766&r)>>>1|(1431655765&r)<<1))>>>2|(858993459&r)<<2))>>>4|(252645135&r)<<4))>>>8|(16711935&r)<<8)>>>16|r<<16,n=0,_=e.sortedEntries;_>1;){var o=n+(_>>1);_$UInt_UInt_$Impl_$.gte(s,i[o])?(n=o,_-=_>>1):_>>=1}e.sparse||(n=e.sortedValues[n]);var h=t[n];return this.validBits>=h?(this.acc=this.acc>>>h,this.validBits-=h,n):(this.validBits=0,-1)}if(e.sparse)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"VorbisDecodeState.hx",lineNumber:829,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"decodeScalarRaw"}));for(var l=0,u=e.entries;l=d?(this.acc=this.acc>>>d,this.validBits-=d,c):(this.validBits=0,-1)}return this.error=new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{fileName:"VorbisDecodeState.hx",lineNumber:846,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"decodeScalarRaw"}),this.validBits=0,-1},__class__:kha_audio2_ogg_vorbis_VorbisDecodeState};var kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult=$hxClasses["kha.audio2.ogg.vorbis._VorbisDecodeState.FindPageResult"]={__ename__:!0,__constructs__:["Found","NotFound"]};kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.Found=function(e,t){var a=["Found",0,e,t];return a.__enum__=kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult,a.toString=$estr,a},kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound=["NotFound",1],kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound.toString=$estr,kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult.NotFound.__enum__=kha_audio2_ogg_vorbis__$VorbisDecodeState_FindPageResult;var kha_audio2_ogg_vorbis_VorbisDecoder=$hxClasses["kha.audio2.ogg.vorbis.VorbisDecoder"]=function(e,t){this.header=e,this.decodeState=t,this.totalSample=null,this.currentSample=0,this.previousLength=0;var a=e.channel,i=new Array(a);this.channelBuffers=i;var r=e.channel,s=new Array(r);this.previousWindow=s;var n=e.channel,_=new Array(n);this.finalY=_;for(var o=0,h=e.channel;othis.totalSample-this.currentSample&&(l=this.totalSample-this.currentSample);for(var u=0;h=l-h&&(c=l-h);for(var d=this.channelBufferStart,p=this.channelBufferStart+c;d1?x=1:x<-1&&(x=-1),r&&(e[u]=x,++u)}}if(h+=c,this.channelBufferStart+=c,h==l||0==this.getFrameFloat())break}for(var B=h,T=l;Bthis.totalSample-this.currentSample&&(e=this.totalSample-this.currentSample);t=e-t&&(a=e-t),t+=a,this.channelBufferStart+=a,t==e||0==this.getFrameFloat())break}return this.currentSample+=e,e},setupSampleNumber:function(e,t){null==this.totalSample&&(this.totalSample=this.decodeState.getSampleNumber(e,t))},seek:function(e,t,a){if(this.currentSample!=a){if(null==this.totalSample&&(this.setupSampleNumber(e,t),0==this.totalSample))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE,null,{fileName:"VorbisDecoder.hx",lineNumber:187,className:"kha.audio2.ogg.vorbis.VorbisDecoder",methodName:"seek"}));a<0&&(a=0);var i=this.decodeState.pFirst,r=this.decodeState.pLast;if(a>=r.lastDecodedSample&&(a=r.lastDecodedSample-1),a=4){var u=n+(_-n>>>1);s>=8?l=u:_$UInt_UInt_$Impl_$.gt(u,l)?l+=u-l>>>1:l=u+(l-u>>>1)}switch(++s,e(this.decodeState.inputPosition=l),this.decodeState.findPage(e,t)[1]){case 0:break;case 1:throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{fileName:"VorbisDecoder.hx",lineNumber:249,className:"kha.audio2.ogg.vorbis.VorbisDecoder",methodName:"seek"}))}var c=this.decodeState.analyzePage(e,this.header);if(null==c)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{fileName:"VorbisDecoder.hx",lineNumber:255,className:"kha.audio2.ogg.vorbis.VorbisDecoder",methodName:"seek"}));c.afterPreviousPageStart=l,c.pageStart!=r.pageStart?a>1,i=t>>2,r=t>>3,s=this.a,n=new Array(a);s[e]=n;var _=this.b,o=new Array(a);_[e]=o;var h=this.c,l=new Array(i);h[e]=l;var u=this.window,c=new Array(a);u[e]=c;var d=this.bitReverseData,p=new Array(r);d[e]=p,kha_audio2_ogg_vorbis_VorbisTools.computeTwiddleFactors(t,this.a[e],this.b[e],this.c[e]),kha_audio2_ogg_vorbis_VorbisTools.computeWindow(t,this.window[e]),kha_audio2_ogg_vorbis_VorbisTools.computeBitReverse(t,this.bitReverseData[e])},inverseMdct:function(e,t,a){for(var i=a?1:0,r=this.a[i],s=this.b[i],n=this.c[i],_=this.bitReverseData[i],o=t>>1,h=t>>2,l=t>>3,u=new Array(o),c=o-2,d=0,p=0,g=o;p!=g;)u[c+1]=e[p]*r[d]-e[p+2]*r[d+1],u[c]=e[p]*r[d+1]+e[p+2]*r[d],c-=2,d+=2,p+=4;for(p=o-3;c>=0;)u[c+1]=-e[p+2]*r[d]- -e[p]*r[d+1],u[c]=-e[p+2]*r[d+1]+-e[p]*r[d],c-=2,d+=2,p-=4;for(var f=e,v=u,k=o-8,m=h,b=0,S=h,y=0;k>=0;){var x=v[m+1]-v[b+1],B=v[m]-v[b];f[S+1]=v[m+1]+v[b+1],f[S]=v[m]+v[b],f[y+1]=x*r[k+4]-B*r[k+5],f[y]=B*r[k+4]+x*r[k+5],x=v[m+3]-v[b+3],B=v[m+2]-v[b+2],f[S+3]=v[m+3]+v[b+3],f[S+2]=v[m+2]+v[b+2],f[y+3]=x*r[k]-B*r[k+1],f[y+2]=B*r[k]+x*r[k+1],k-=8,S+=4,y+=4,m+=4,b+=4}for(var T=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4],w=(t<16384?t<16?T[t]:t<512?5+T[t>>5]:10+T[t>>10]:t<16777216?t<524288?15+T[t>>15]:20+T[t>>20]:t<536870912?25+T[t>>25]:t<-2147483648?30+T[t>>30]:0)-1,E=o-1-0*h,I=E,C=E+-(t>>3),A=0,L=1+(t>>4>>2);--L>0;){var R=f[I]-f[C],$=f[I+-1]-f[C+-1],F=I,V=f;V[F]=V[F]+f[C];var N=I+-1,P=f;P[N]=P[N]+f[C+-1],f[C]=R*r[A]-$*r[A+1],f[C+-1]=$*r[A]+R*r[A+1],A+=8,R=f[I+-2]-f[C+-2],$=f[I+-3]-f[C+-3];var M=I+-2,O=f;O[M]=O[M]+f[C+-2];var D=I+-3,U=f;U[D]=U[D]+f[C+-3],f[C+-2]=R*r[A]-$*r[A+1],f[C+-3]=$*r[A]+R*r[A+1],A+=8,R=f[I+-4]-f[C+-4],$=f[I+-5]-f[C+-5];var H=I+-4,G=f;G[H]=G[H]+f[C+-4];var W=I+-5,z=f;z[W]=z[W]+f[C+-5],f[C+-4]=R*r[A]-$*r[A+1],f[C+-5]=$*r[A]+R*r[A+1],A+=8,R=f[I+-6]-f[C+-6],$=f[I+-7]-f[C+-7];var j=I+-6,K=f;K[j]=K[j]+f[C+-6];var X=I+-7,Y=f;Y[X]=Y[X]+f[C+-7],f[C+-6]=R*r[A]-$*r[A+1],f[C+-7]=$*r[A]+R*r[A+1],A+=8,I-=8,C-=8}for(var Z=o-1-h,Q=Z,J=Z+-(t>>3),q=0,ee=1+(t>>4>>2);--ee>0;){var te=f[Q]-f[J],ae=f[Q+-1]-f[J+-1],ie=Q,re=f;re[ie]=re[ie]+f[J];var se=Q+-1,ne=f;ne[se]=ne[se]+f[J+-1],f[J]=te*r[q]-ae*r[q+1],f[J+-1]=ae*r[q]+te*r[q+1],q+=8,te=f[Q+-2]-f[J+-2],ae=f[Q+-3]-f[J+-3];var _e=Q+-2,oe=f;oe[_e]=oe[_e]+f[J+-2];var he=Q+-3,le=f;le[he]=le[he]+f[J+-3],f[J+-2]=te*r[q]-ae*r[q+1],f[J+-3]=ae*r[q]+te*r[q+1],q+=8,te=f[Q+-4]-f[J+-4],ae=f[Q+-5]-f[J+-5];var ue=Q+-4,ce=f;ce[ue]=ce[ue]+f[J+-4];var de=Q+-5,pe=f;pe[de]=pe[de]+f[J+-5],f[J+-4]=te*r[q]-ae*r[q+1],f[J+-5]=ae*r[q]+te*r[q+1],q+=8,te=f[Q+-6]-f[J+-6],ae=f[Q+-7]-f[J+-7];var ge=Q+-6,fe=f;fe[ge]=fe[ge]+f[J+-6];var ve=Q+-7,ke=f;ke[ve]=ke[ve]+f[J+-7],f[J+-6]=te*r[q]-ae*r[q+1],f[J+-7]=ae*r[q]+te*r[q+1],q+=8,Q-=8,J-=8}for(var me=o-1-0*l,be=0,Se=me,ye=me+-(t>>4),xe=1+(t>>5>>2);--xe>0;){var Be=f[Se]-f[ye],Te=f[Se+-1]-f[ye+-1],we=Se,Ee=f;Ee[we]=Ee[we]+f[ye];var Ie=Se+-1,Ce=f;Ce[Ie]=Ce[Ie]+f[ye+-1],f[ye]=Be*r[be]-Te*r[be+1],f[ye+-1]=Te*r[be]+Be*r[be+1],be+=16,Be=f[Se+-2]-f[ye+-2],Te=f[Se+-3]-f[ye+-3];var Ae=Se+-2,Le=f;Le[Ae]=Le[Ae]+f[ye+-2];var Re=Se+-3,$e=f;$e[Re]=$e[Re]+f[ye+-3],f[ye+-2]=Be*r[be]-Te*r[be+1],f[ye+-3]=Te*r[be]+Be*r[be+1],be+=16,Be=f[Se+-4]-f[ye+-4],Te=f[Se+-5]-f[ye+-5];var Fe=Se+-4,Ve=f;Ve[Fe]=Ve[Fe]+f[ye+-4];var Ne=Se+-5,Pe=f;Pe[Ne]=Pe[Ne]+f[ye+-5],f[ye+-4]=Be*r[be]-Te*r[be+1],f[ye+-5]=Te*r[be]+Be*r[be+1],be+=16,Be=f[Se+-6]-f[ye+-6],Te=f[Se+-7]-f[ye+-7];var Me=Se+-6,Oe=f;Oe[Me]=Oe[Me]+f[ye+-6];var De=Se+-7,Ue=f;Ue[De]=Ue[De]+f[ye+-7],f[ye+-6]=Be*r[be]-Te*r[be+1],f[ye+-7]=Te*r[be]+Be*r[be+1],Se-=8,ye-=8,be+=16}for(var He=o-1-l,Ge=0,We=He,ze=He+-(t>>4),je=1+(t>>5>>2);--je>0;){var Ke=f[We]-f[ze],Xe=f[We+-1]-f[ze+-1],Ye=We,Ze=f;Ze[Ye]=Ze[Ye]+f[ze];var Qe=We+-1,Je=f;Je[Qe]=Je[Qe]+f[ze+-1],f[ze]=Ke*r[Ge]-Xe*r[Ge+1],f[ze+-1]=Xe*r[Ge]+Ke*r[Ge+1],Ge+=16,Ke=f[We+-2]-f[ze+-2],Xe=f[We+-3]-f[ze+-3];var qe=We+-2,et=f;et[qe]=et[qe]+f[ze+-2];var tt=We+-3,at=f;at[tt]=at[tt]+f[ze+-3],f[ze+-2]=Ke*r[Ge]-Xe*r[Ge+1],f[ze+-3]=Xe*r[Ge]+Ke*r[Ge+1],Ge+=16,Ke=f[We+-4]-f[ze+-4],Xe=f[We+-5]-f[ze+-5];var it=We+-4,rt=f;rt[it]=rt[it]+f[ze+-4];var st=We+-5,nt=f;nt[st]=nt[st]+f[ze+-5],f[ze+-4]=Ke*r[Ge]-Xe*r[Ge+1],f[ze+-5]=Xe*r[Ge]+Ke*r[Ge+1],Ge+=16,Ke=f[We+-6]-f[ze+-6],Xe=f[We+-7]-f[ze+-7];var _t=We+-6,ot=f;ot[_t]=ot[_t]+f[ze+-6];var ht=We+-7,lt=f;lt[ht]=lt[ht]+f[ze+-7],f[ze+-6]=Ke*r[Ge]-Xe*r[Ge+1],f[ze+-7]=Xe*r[Ge]+Ke*r[Ge+1],We-=8,ze-=8,Ge+=16}for(var ut=o-1-2*l,ct=0,dt=ut,pt=ut+-(t>>4),gt=1+(t>>5>>2);--gt>0;){var ft=f[dt]-f[pt],vt=f[dt+-1]-f[pt+-1],kt=dt,mt=f;mt[kt]=mt[kt]+f[pt];var bt=dt+-1,St=f;St[bt]=St[bt]+f[pt+-1],f[pt]=ft*r[ct]-vt*r[ct+1],f[pt+-1]=vt*r[ct]+ft*r[ct+1],ct+=16,ft=f[dt+-2]-f[pt+-2],vt=f[dt+-3]-f[pt+-3];var yt=dt+-2,xt=f;xt[yt]=xt[yt]+f[pt+-2];var Bt=dt+-3,Tt=f;Tt[Bt]=Tt[Bt]+f[pt+-3],f[pt+-2]=ft*r[ct]-vt*r[ct+1],f[pt+-3]=vt*r[ct]+ft*r[ct+1],ct+=16,ft=f[dt+-4]-f[pt+-4],vt=f[dt+-5]-f[pt+-5];var wt=dt+-4,Et=f;Et[wt]=Et[wt]+f[pt+-4];var It=dt+-5,Ct=f;Ct[It]=Ct[It]+f[pt+-5],f[pt+-4]=ft*r[ct]-vt*r[ct+1],f[pt+-5]=vt*r[ct]+ft*r[ct+1],ct+=16,ft=f[dt+-6]-f[pt+-6],vt=f[dt+-7]-f[pt+-7];var At=dt+-6,Lt=f;Lt[At]=Lt[At]+f[pt+-6];var Rt=dt+-7,$t=f;$t[Rt]=$t[Rt]+f[pt+-7],f[pt+-6]=ft*r[ct]-vt*r[ct+1],f[pt+-7]=vt*r[ct]+ft*r[ct+1],dt-=8,pt-=8,ct+=16}for(var Ft=o-1-3*l,Vt=0,Nt=Ft,Pt=Ft+-(t>>4),Mt=1+(t>>5>>2);--Mt>0;){var Ot=f[Nt]-f[Pt],Dt=f[Nt+-1]-f[Pt+-1],Ut=Nt,Ht=f;Ht[Ut]=Ht[Ut]+f[Pt];var Gt=Nt+-1,Wt=f;Wt[Gt]=Wt[Gt]+f[Pt+-1],f[Pt]=Ot*r[Vt]-Dt*r[Vt+1],f[Pt+-1]=Dt*r[Vt]+Ot*r[Vt+1],Vt+=16,Ot=f[Nt+-2]-f[Pt+-2],Dt=f[Nt+-3]-f[Pt+-3];var zt=Nt+-2,jt=f;jt[zt]=jt[zt]+f[Pt+-2];var Kt=Nt+-3,Xt=f;Xt[Kt]=Xt[Kt]+f[Pt+-3],f[Pt+-2]=Ot*r[Vt]-Dt*r[Vt+1],f[Pt+-3]=Dt*r[Vt]+Ot*r[Vt+1],Vt+=16,Ot=f[Nt+-4]-f[Pt+-4],Dt=f[Nt+-5]-f[Pt+-5];var Yt=Nt+-4,Zt=f;Zt[Yt]=Zt[Yt]+f[Pt+-4];var Qt=Nt+-5,Jt=f;Jt[Qt]=Jt[Qt]+f[Pt+-5],f[Pt+-4]=Ot*r[Vt]-Dt*r[Vt+1],f[Pt+-5]=Dt*r[Vt]+Ot*r[Vt+1],Vt+=16,Ot=f[Nt+-6]-f[Pt+-6],Dt=f[Nt+-7]-f[Pt+-7];var qt=Nt+-6,ea=f;ea[qt]=ea[qt]+f[Pt+-6];var ta=Nt+-7,aa=f;aa[ta]=aa[ta]+f[Pt+-7],f[Pt+-6]=Ot*r[Vt]-Dt*r[Vt+1],f[Pt+-7]=Dt*r[Vt]+Ot*r[Vt+1],Nt-=8,Pt-=8,Vt+=16}for(var ia=2,ra=w-3>>1;ia>sa+2,_a=na>>1,oa=0,ha=1<>sa+4>>2);--ga>0;){var fa=f[da]-f[pa],va=f[da+-1]-f[pa+-1],ka=da,ma=f;ma[ka]=ma[ka]+f[pa];var ba=da+-1,Sa=f;Sa[ba]=Sa[ba]+f[pa+-1],f[pa]=fa*r[ca]-va*r[ca+1],f[pa+-1]=va*r[ca]+fa*r[ca+1],ca+=ua,fa=f[da+-2]-f[pa+-2],va=f[da+-3]-f[pa+-3];var ya=da+-2,xa=f;xa[ya]=xa[ya]+f[pa+-2];var Ba=da+-3,Ta=f;Ta[Ba]=Ta[Ba]+f[pa+-3],f[pa+-2]=fa*r[ca]-va*r[ca+1],f[pa+-3]=va*r[ca]+fa*r[ca+1],ca+=ua,fa=f[da+-4]-f[pa+-4],va=f[da+-5]-f[pa+-5];var wa=da+-4,Ea=f;Ea[wa]=Ea[wa]+f[pa+-4];var Ia=da+-5,Ca=f;Ca[Ia]=Ca[Ia]+f[pa+-5],f[pa+-4]=fa*r[ca]-va*r[ca+1],f[pa+-5]=va*r[ca]+fa*r[ca+1],ca+=ua,fa=f[da+-6]-f[pa+-6],va=f[da+-7]-f[pa+-7];var Aa=da+-6,La=f;La[Aa]=La[Aa]+f[pa+-6];var Ra=da+-7,$a=f;$a[Ra]=$a[Ra]+f[pa+-7],f[pa+-6]=fa*r[ca]-va*r[ca+1],f[pa+-7]=va*r[ca]+fa*r[ca+1],da-=8,pa-=8,ca+=ua}for(var Fa=w-3>>1,Va=w-6;Fa>Na+2,Ma=1<>1,Da=1<>Na+6)+1;--Ga>0;){for(var Wa=r[Ua],za=r[Ua+1],ja=r[Ua+Ma],Ka=r[Ua+Ma+1],Xa=r[Ua+2*Ma],Ya=r[Ua+2*Ma+1],Za=r[Ua+3*Ma],Qa=r[Ua+3*Ma+1],Ja=Ha,qa=Ha+-Oa,ei=Da+1;--ei>0;){var ti=f[Ja]-f[qa],ai=f[Ja+-1]-f[qa+-1];f[Ja]=f[Ja]+f[qa],f[Ja+-1]=f[Ja+-1]+f[qa+-1],f[qa]=ti*Wa-ai*za,f[qa+-1]=ai*Wa+ti*za,ti=f[Ja+-2]-f[qa+-2],ai=f[Ja+-3]-f[qa+-3],f[Ja+-2]=f[Ja+-2]+f[qa+-2],f[Ja+-3]=f[Ja+-3]+f[qa+-3],f[qa+-2]=ti*ja-ai*Ka,f[qa+-3]=ai*ja+ti*Ka,ti=f[Ja+-4]-f[qa+-4],ai=f[Ja+-5]-f[qa+-5],f[Ja+-4]=f[Ja+-4]+f[qa+-4],f[Ja+-5]=f[Ja+-5]+f[qa+-5],f[qa+-4]=ti*Xa-ai*Ya,f[qa+-5]=ai*Xa+ti*Ya,ti=f[Ja+-6]-f[qa+-6],ai=f[Ja+-7]-f[qa+-7],f[Ja+-6]=f[Ja+-6]+f[qa+-6],f[Ja+-7]=f[Ja+-7]+f[qa+-7],f[qa+-6]=ti*Za-ai*Qa,f[qa+-7]=ai*Za+ti*Qa,Ja-=Pa,qa-=Pa}Ua+=4*Ma,Ha-=8}for(var ii=o-1,ri=r[t>>3],si=ii,ni=ii-16*(t>>5);si>ni;){var _i=f[si],oi=f[si+-8];f[si+-8]=_i-oi,f[si]=_i+oi,_i=f[si+-1],oi=f[si+-9],f[si+-9]=_i-oi,f[si+-1]=_i+oi;var hi=(_i=f[si+-2])-(oi=f[si+-10]);f[si+-2]=_i+oi;var li=(_i=f[si+-3])-(oi=f[si+-11]);f[si+-3]=_i+oi,f[si+-10]=(hi+li)*ri,f[si+-11]=(li-hi)*ri,_i=f[si+-4],hi=(oi=f[si+-12])-_i,f[si+-4]=_i+oi,li=(_i=f[si+-5])-(oi=f[si+-13]),f[si+-5]=_i+oi,f[si+-12]=li,f[si+-13]=hi,_i=f[si+-6],hi=(oi=f[si+-14])-_i,f[si+-6]=_i+oi,li=(_i=f[si+-7])-(oi=f[si+-15]),f[si+-7]=_i+oi,f[si+-14]=(hi+li)*ri,f[si+-15]=(hi-li)*ri;var ui=f[si],ci=f[si+-4],di=ui-ci,pi=ui+ci,gi=(ui=f[si+-2])+(ci=f[si+-6]),fi=ui-ci;f[si]=pi+gi,f[si+-2]=pi-gi;var vi=f[si+-3]-f[si+-7];f[si+-4]=di+vi,f[si+-6]=di-vi;var ki=(ui=f[si+-1])-(ci=f[si+-5]),mi=ui+ci,bi=f[si+-3]+f[si+-7];f[si+-1]=mi+bi,f[si+-3]=mi-bi,f[si+-5]=ki-fi,f[si+-7]=ki+fi;var Si=si-8,yi=f[Si],xi=f[Si+-4],Bi=yi-xi,Ti=yi+xi,wi=(yi=f[Si+-2])+(xi=f[Si+-6]),Ei=yi-xi;f[Si]=Ti+wi,f[Si+-2]=Ti-wi;var Ii=f[Si+-3]-f[Si+-7];f[Si+-4]=Bi+Ii,f[Si+-6]=Bi-Ii;var Ci=(yi=f[Si+-1])-(xi=f[Si+-5]),Ai=yi+xi,Li=f[Si+-3]+f[Si+-7];f[Si+-1]=Ai+Li,f[Si+-3]=Ai-Li,f[Si+-5]=Ci-Ei,f[Si+-7]=Ci+Ei,si-=16}for(var Ri=0,$i=h-4,Fi=o-4;$i>=0;){var Vi=_[Ri];v[Fi+3]=f[Vi],v[Fi+2]=f[Vi+1],v[$i+3]=f[Vi+2],v[$i+2]=f[Vi+3],Vi=_[Ri+1],v[Fi+1]=f[Vi],v[Fi]=f[Vi+1],v[$i+1]=f[Vi+2],v[$i]=f[Vi+3],$i-=4,Fi-=4,Ri+=2}for(var Ni=0,Pi=0,Mi=o-4;Pi=0;){var Qi=u[ji+6]*s[zi+7]-u[ji+7]*s[zi+6],Ji=-u[ji+6]*s[zi+6]-u[ji+7]*s[zi+7];e[Ki]=Qi,e[Xi+3]=-Qi,e[Yi]=Ji,e[Zi+3]=Ji;var qi=u[ji+4]*s[zi+5]-u[ji+5]*s[zi+4],er=-u[ji+4]*s[zi+4]-u[ji+5]*s[zi+5];e[Ki+1]=qi,e[Xi+2]=-qi,e[Yi+1]=er,e[Zi+2]=er,Qi=u[ji+2]*s[zi+3]-u[ji+3]*s[zi+2],Ji=-u[ji+2]*s[zi+2]-u[ji+3]*s[zi+3],e[Ki+2]=Qi,e[Xi+1]=-Qi,e[Yi+2]=Ji,e[Zi+1]=Ji,qi=u[ji]*s[zi+1]-u[ji+1]*s[zi],er=-u[ji]*s[zi]-u[ji+1]*s[zi+1],e[Ki+3]=qi,e[Xi]=-qi,e[Yi+3]=er,e[Zi]=er,zi-=8,ji-=8,Ki+=4,Yi+=4,Xi-=4,Zi-=4}},decodePacket:function(){var e=this.decodeInitial();return null==e?null:this.decodePacketRest(e)},decodeInitial:function(){for(this.channelBufferStart=this.channelBufferEnd=0;;){if(!this.decodeState.maybeStartPacket())return null;var e,t=this.decodeState;if(t.validBits<0)e=0;else if(t.validBits<1){for(0==t.validBits&&(t.acc=0);;){if(0==t.bytesInSeg&&(t.lastSeg||0==t.next())){t.validBits=-1;break}if(t.bytesInSeg--,t.inputPosition+=1,t.acc=t.acc+(t.input.readByte()<>>1,t.validBits-=1,e=a}}else{var i=1&t.acc;t.acc=t.acc>>>1,t.validBits-=1,e=i}if(0==e)break;for(;;){var r,s=this.decodeState;if(0!=s.bytesInSeg||!s.lastSeg&&0!=s.next()?(s.bytesInSeg--,s.inputPosition+=1,r=s.input.readByte()):r=-1,s.validBits=0,-1==r)break}}var n,_=this.decodeState,o=this.header.modes.length-1,h=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4],l=o<16384?o<16?h[o]:o<512?5+h[o>>5]:10+h[o>>10]:o<16777216?o<524288?15+h[o>>15]:20+h[o>>20]:o<536870912?25+h[o>>25]:o<-2147483648?30+h[o>>30]:0;if(_.validBits<0)n=0;else if(_.validBits24)n=_.readBits(24)+(_.readBits(l-24)<<24);else{for(0==_.validBits&&(_.acc=0);;){if(0==_.bytesInSeg&&(_.lastSeg||0==_.next())){_.validBits=-1;break}if(_.bytesInSeg--,_.inputPosition+=1,_.acc=_.acc+(_.input.readByte()<<_.validBits),_.validBits+=8,!(_.validBits>>l,_.validBits-=l,n=u}}else{var c=_.acc&(1<>>l,_.validBits-=l,n=c}if(-1==n||n>=this.header.modes.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED,null,{fileName:"VorbisDecoder.hx",lineNumber:519,className:"kha.audio2.ogg.vorbis.VorbisDecoder",methodName:"decodeInitial"}));var d,p,g,f=this.header.modes[n];if(f.blockflag){d=this.header.blocksize1;var v=this.decodeState;if(v.validBits<0)p=0;else if(v.validBits<1){for(0==v.validBits&&(v.acc=0);;){if(0==v.bytesInSeg&&(v.lastSeg||0==v.next())){v.validBits=-1;break}if(v.bytesInSeg--,v.inputPosition+=1,v.acc=v.acc+(v.input.readByte()<>>1,v.validBits-=1,p=k}}else{var m=1&v.acc;v.acc=v.acc>>>1,v.validBits-=1,p=m}var b=this.decodeState;if(b.validBits<0)g=0;else if(b.validBits<1){for(0==b.validBits&&(b.acc=0);;){if(0==b.bytesInSeg&&(b.lastSeg||0==b.next())){b.validBits=-1;break}if(b.bytesInSeg--,b.inputPosition+=1,b.acc=b.acc+(b.input.readByte()<>>1,b.validBits-=1,g=S}}else{var y=1&b.acc;b.acc=b.acc>>>1,b.validBits-=1,g=y}}else p=g=0,d=this.header.blocksize0;var x=d>>1;return{mode:n,left:f.blockflag&&0==p?{start:d-this.header.blocksize0>>2,end:d+this.header.blocksize0>>2}:{start:0,end:x},right:f.blockflag&&0==g?{start:3*d-this.header.blocksize0>>2,end:3*d+this.header.blocksize0>>2}:{start:x,end:d}}},decodePacketRest:function(e){for(var t=this.header.modes[e.mode],a=new Array(256),i=new Array(256),r=t.blockflag?this.header.blocksize1:this.header.blocksize0,s=this.header.mapping[t.mapping],n=r>>1,_=[256,128,86,64],o=this.header.codebooks,h=0,l=this.header.channel;h>>1,f.validBits-=1,p=v}}else{var k=1&f.acc;f.acc=f.acc>>>1,f.validBits-=1,p=k}if(0!=p){var m=[],b=new Array(256),S=_[g.floor1Multiplier-1],y=2;m=this.finalY[u];var x,B=this.decodeState,T=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4],w=(S<16384?S<16?T[S]:S<512?5+T[S>>5]:10+T[S>>10]:S<16777216?S<524288?15+T[S>>15]:20+T[S>>20]:S<536870912?25+T[S>>25]:S<-2147483648?30+T[S>>30]:0)-1;if(B.validBits<0)x=0;else if(B.validBits24)x=B.readBits(24)+(B.readBits(w-24)<<24);else{for(0==B.validBits&&(B.acc=0);;){if(0==B.bytesInSeg&&(B.lastSeg||0==B.next())){B.validBits=-1;break}if(B.bytesInSeg--,B.inputPosition+=1,B.acc=B.acc+(B.input.readByte()<>>w,B.validBits-=w,x=E}}else{var I=B.acc&(1<>>w,B.validBits-=w,x=I}m[0]=x;var C,A=this.decodeState,L=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4],R=(S<16384?S<16?L[S]:S<512?5+L[S>>5]:10+L[S>>10]:S<16777216?S<524288?15+L[S>>15]:20+L[S>>20]:S<536870912?25+L[S>>25]:S<-2147483648?30+L[S>>30]:0)-1;if(A.validBits<0)C=0;else if(A.validBits24)C=A.readBits(24)+(A.readBits(R-24)<<24);else{for(0==A.validBits&&(A.acc=0);;){if(0==A.bytesInSeg&&(A.lastSeg||0==A.next())){A.validBits=-1;break}if(A.bytesInSeg--,A.inputPosition+=1,A.acc=A.acc+(A.input.readByte()<>>R,A.validBits-=R,C=$}}else{var F=A.acc&(1<>>R,A.validBits-=R,C=F}m[1]=C;for(var V=0,N=g.partitions;V=0){var K=G.codewordLengths[j];W.acc=W.acc>>>K,W.validBits-=K,W.validBits<0?(W.validBits=0,z=-1):z=j}else z=W.decodeScalarRaw(G);G.sparse&&(z=G.sortedValues[z]),H=z}for(var X=g.subclassBooks[M],Y=0,Z=O;Y>=D;var J,q=y++;if(Q>=0){var ee=this.decodeState,te=o[Q];ee.validBits<10&&ee.prepHuffman();var ae,ie=te.fastHuffman[1023&ee.acc];if(ie>=0){var re=te.codewordLengths[ie];ee.acc=ee.acc>>>re,ee.validBits-=re,ee.validBits<0?(ee.validBits=0,ae=-1):ae=ie}else ae=ee.decodeScalarRaw(te);te.sparse&&(ae=te.sortedValues[ae]),J=ae}else J=0;m[q]=J}}if(-1==this.decodeState.validBits){a[u]=!0;continue}b[0]=b[1]=!0;for(var se=g.neighbors,ne=g.xlist,_e=2,oe=g.values;_e=be?me>ve?ke-ve+ve:ve-ke+me-1:0!=(1&ke)?ve-(ke+1>>1):ve+(ke>>1)):(b[he]=!1,m[he]=ve)}for(var Se=0,ye=g.values;Se>1;--Ue>=0;)for(var Ge=this.channelBuffers[s.chan[Ue].magnitude],We=this.channelBuffers[s.chan[Ue].angle],ze=0,je=He;ze0?We[Ye]>0?(Xe=Ge[Ye],Ke=Ge[Ye]-We[Ye]):(Ke=Ge[Ye],Xe=Ge[Ye]+We[Ye]):We[Ye]>0?(Xe=Ge[Ye],Ke=Ge[Ye]+We[Ye]):(Ke=Ge[Ye],Xe=Ge[Ye]-We[Ye]),Ge[Ye]=Xe,We[Ye]=Ke}for(var Ze=0,Qe=this.header.channel;Zea&&e[o]e[t]&&(s=o,i=e[o])}return{low:r,high:s}},kha_audio2_ogg_vorbis_VorbisTools.floatUnpack=function(e){var t=_$UInt_UInt_$Impl_$.toFloat(2097151&e),a=(2145386496&e)>>>21;return(0!=(-2147483648&e)?-t:t)*Math.pow(2,a-788)},kha_audio2_ogg_vorbis_VorbisTools.bitReverse=function(e){return e=(-1431655766&e)>>>1|(1431655765&e)<<1,e=(-858993460&e)>>>2|(858993459&e)<<2,e=(-252645136&e)>>>4|(252645135&e)<<4,(e=(-16711936&e)>>>8|(16711935&e)<<8)>>>16|e<<16},kha_audio2_ogg_vorbis_VorbisTools.pointCompare=function(e,t){return e.xt.x?1:0},kha_audio2_ogg_vorbis_VorbisTools.uintAsc=function(e,t){return _$UInt_UInt_$Impl_$.gt(t,e)?-1:e==t?0:1},kha_audio2_ogg_vorbis_VorbisTools.lookup1Values=function(e,t){var a=0|Math.exp(Math.log(e)/t);if((0|Math.pow(a+1,t))<=e&&++a,!(Math.pow(a+1,t)>e))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"VorbisTools.hx",lineNumber:155,className:"kha.audio2.ogg.vorbis.VorbisTools",methodName:"lookup1Values"}));if((0|Math.pow(a,t))>e)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"VorbisTools.hx",lineNumber:156,className:"kha.audio2.ogg.vorbis.VorbisTools",methodName:"lookup1Values"}));return a},kha_audio2_ogg_vorbis_VorbisTools.computeWindow=function(e,t){for(var a=e>>1,i=0,r=a;i>5]:10+a[e>>10]:e<16777216?e<524288?15+a[e>>15]:20+a[e>>20]:e<536870912?25+a[e>>25]:e<-2147483648?30+a[e>>30]:0)-1,r=0,s=e>>3;r>>1|(1431655765&_)<<1))>>>2|(858993459&_)<<2))>>>4|(252645135&_)<<4))>>>8|(16711935&_)<<8,t[n]=(_>>>16|_<<16)>>>32-i+3<<2}},kha_audio2_ogg_vorbis_VorbisTools.computeTwiddleFactors=function(e,t,a,i){for(var r=e>>3,s=0,n=0,_=e>>2;n<_;){var o=n++;t[s]=Math.cos(4*o*3.141592653589793/e),t[s+1]=-Math.sin(4*o*3.141592653589793/e),a[s]=.5*Math.cos(3.141592653589793*(s+1)/e/2),a[s+1]=.5*Math.sin(3.141592653589793*(s+1)/e/2),s+=2}for(var h=0,l=0,u=r;ls&&(i=s);var S=k,y=e;y[S]=y[S]*kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[m];for(var x=k+1,B=i;x=f?(b-=f,m+=p):m+=d;var w=T,E=e;E[w]=E[w]*kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE[m]}},kha_audio2_ogg_vorbis_VorbisTools.predictPoint=function(e,t,a,i,r){var s=r-i,n=a-t,_=Math.abs(s)*(e-t)/n|0;return s<0?i-_:i+_},kha_audio2_ogg_vorbis_VorbisTools.emptyFloatVector=function(e){return new Array(e)},kha_audio2_ogg_vorbis_VorbisTools.copyVector=function(e){for(var t=e.length,a=new Array(t),i=0,r=e.length;i>>8,e.validBits-=8,i=s}}else{var n=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,i=n}if(66==i){var _;if(e.validBits<0)_=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,_=o}}else{var h=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,_=h}a=67!=_}else a=!0;if(a)t=!0;else{var l;if(e.validBits<0)l=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,l=u}}else{var c=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,l=c}t=86!=l}if(t)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Codebook.hx",lineNumber:40,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"read"}));var d;if(e.validBits<0)d=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,d=p}}else{var g=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,d=g}var f;if(e.validBits<0)f=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,f=v}}else{var k=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,f=k}r.dimensions=(f<<8)+d;var m;if(e.validBits<0)m=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,m=b}}else{var S=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,m=S}var y;if(e.validBits<0)y=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,y=x}}else{var B=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,y=B}var T;if(e.validBits<0)T=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,T=w}}else{var E=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,T=E}r.entries=(T<<16)+(y<<8)+m;var I;if(e.validBits<0)I=0;else if(e.validBits<1){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>1,e.validBits-=1,I=C}}else{var A=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,I=A}var L;if(0!=I)L=!1;else{var R;if(e.validBits<0)R=0;else if(e.validBits<1){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>1,e.validBits-=1,R=$}}else{var F=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,R=F}L=0!=R}r.sparse=L;var V=r.entries,N=new Array(V);r.sparse||(r.codewordLengths=N);var P=0;if(0!=I){var M,O=0;if(e.validBits<0)M=0;else if(e.validBits<5){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>5,e.validBits-=5,M=D}}else{var U=31&e.acc;e.acc=e.acc>>>5,e.validBits-=5,M=U}for(var H=M+1;O>5]:10+z[W>>10]:W<16777216?W<524288?15+z[W>>15]:20+z[W>>20]:W<536870912?25+z[W>>25]:W<-2147483648?30+z[W>>30]:0;if(e.validBits<0)G=0;else if(e.validBits24)G=e.readBits(24)+(e.readBits(j-24)<<24);else{for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>j,e.validBits-=j,G=K}}else{var X=e.acc&(1<>>j,e.validBits-=j,G=X}if(O+G>r.entries)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook entrys",{fileName:"Codebook.hx",lineNumber:67,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"read"}));for(var Y=0,Z=G;Y>>1,e.validBits-=1,q=te}}else{var ae=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,q=ae}else q=1;if(0!=q){var ie;if(e.validBits<0)ie=0;else if(e.validBits<5){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>5,e.validBits-=5,ie=re}}else{var se=31&e.acc;e.acc=e.acc>>>5,e.validBits-=5,ie=se}N[ee]=ie+1,++P}else N[ee]=255}r.sparse&&P>=r.entries>>2&&(r.codewordLengths=N,r.sparse=!1);var ne;if(r.sparse)ne=P;else{for(var _e=0,oe=0,he=r.entries;oe10&&255!=le&&++_e}ne=_e}r.sortedEntries=ne;var ue=null;if(r.sparse){if(0!=r.sortedEntries){var ce=r.sortedEntries,de=new Array(ce);r.codewordLengths=de;var pe=r.entries,ge=new Array(pe);r.codewords=ge;var fe=r.entries;ue=new Array(fe)}r.entries,r.sortedEntries}else{var ve=r.entries,ke=new Array(ve);r.codewords=ke}if(!r.computeCodewords(N,r.entries,ue))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"compute codewords",{fileName:"Codebook.hx",lineNumber:120,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"read"}));if(0!=r.sortedEntries){r.sortedCodewords=[];var me=r.sortedEntries,be=new Array(me);r.sortedValues=be,r.computeSortedHuffman(N,ue)}r.sparse&&(ue=null,r.codewords=null,N=null),r.computeAcceleratedHuffman();var Se;if(e.validBits<0)Se=0;else if(e.validBits<4){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>4,e.validBits-=4,Se=ye}}else{var xe=15&e.acc;e.acc=e.acc>>>4,e.validBits-=4,Se=xe}if(r.lookupType=Se,r.lookupType>2)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"codebook lookup type",{fileName:"Codebook.hx",lineNumber:143,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"read"}));if(r.lookupType>0){var Be;if(e.validBits<0)Be=0;else if(e.validBits<32)Be=e.readBits(24)+(e.readBits(8)<<24);else{var Te=-1&e.acc;e.acc=e.acc>>>32,e.validBits-=32,Be=Te}var we=_$UInt_UInt_$Impl_$.toFloat(2097151&Be),Ee=(2145386496&Be)>>>21,Ie=0!=(-2147483648&Be)?-we:we;r.minimumValue=Ie*Math.pow(2,Ee-788);var Ce;if(e.validBits<0)Ce=0;else if(e.validBits<32)Ce=e.readBits(24)+(e.readBits(8)<<24);else{var Ae=-1&e.acc;e.acc=e.acc>>>32,e.validBits-=32,Ce=Ae}var Le=_$UInt_UInt_$Impl_$.toFloat(2097151&Ce),Re=(2145386496&Ce)>>>21,$e=0!=(-2147483648&Ce)?-Le:Le;r.deltaValue=$e*Math.pow(2,Re-788);var Fe;if(e.validBits<0)Fe=0;else if(e.validBits<4){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>4,e.validBits-=4,Fe=Ve}}else{var Ne=15&e.acc;e.acc=e.acc>>>4,e.validBits-=4,Fe=Ne}r.valueBits=Fe+1;var Pe;if(e.validBits<0)Pe=0;else if(e.validBits<1){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>1,e.validBits-=1,Pe=Me}}else{var Oe=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,Pe=Oe}r.sequenceP=0!=Pe,1==r.lookupType?r.lookupValues=kha_audio2_ogg_vorbis_VorbisTools.lookup1Values(r.entries,r.dimensions):r.lookupValues=r.entries*r.dimensions;for(var De=r.lookupValues,Ue=new Array(De),He=0,Ge=r.lookupValues;He24)We=e.readBits(24)+(e.readBits(je-24)<<24);else{for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>je,e.validBits-=je,We=Ke}}else{var Xe=e.acc&(1<>>je,e.validBits-=je,We=Xe}if(-1==We)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"fail lookup",{fileName:"Codebook.hx",lineNumber:161,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"read"}));Ue[ze]=We}var Ye=r.lookupValues,Ze=new Array(Ye);r.multiplicands=Ze;for(var Qe=0,Je=r.lookupValues;Qe10},computeCodewords:function(e,t,a){for(var i=new Array(32),r=0;r<32;)i[r++]=0;for(var s=0;s0&&0==i[h];)--h;if(0==h)return!1;var l=i[h];i[h]=0;var u=l,c=(u=(-16711936&(u=(-252645136&(u=(-858993460&(u=(-1431655766&u)>>>1|(1431655765&u)<<1))>>>2|(858993459&u)<<2))>>>4|(252645135&u)<<4))>>>8|(16711935&u)<<8)>>>16|u<<16,d=n++;if(this.sparse?(this.codewords[d]=c,this.codewordLengths[d]=e[o],a[d]=o):this.codewords[o]=c,h!=e[o])for(var p=e[o];p>h;){if(0!=i[p])throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"Codebook.hx",lineNumber:272,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"computeCodewords"}));i[p]=l+(1<<32-p),--p}}}return!0},computeSortedHuffman:function(e,t){if(this.sparse)for(var a=0,i=this.sortedEntries;a>>1|(1431655765&s)<<1))>>>2|(858993459&s)<<2))>>>4|(252645135&s)<<4))>>>8|(16711935&s)<<8,this.sortedCodewords[r]=s>>>16|s<<16}else{for(var n=0,_=0,o=this.entries;_10;if(h){var c=this.codewords[l];c=(-16711936&(c=(-252645136&(c=(-858993460&(c=(-1431655766&c)>>>1|(1431655765&c)<<1))>>>2|(858993459&c)<<2))>>>4|(252645135&c)<<4))>>>8|(16711935&c)<<8,this.sortedCodewords[n++]=c>>>16|c<<16}}if(n!=this.sortedEntries)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER,"",{fileName:"Codebook.hx",lineNumber:296,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"computeSortedHuffman"}))}this.sortedCodewords[this.sortedEntries]=-1,this.sortedCodewords.sort(kha_audio2_ogg_vorbis_VorbisTools.uintAsc);for(var d=0,p=this.sparse?this.sortedEntries:this.entries;d10;if(g){for(var k=this.codewords[f],m=(k=(-16711936&(k=(-252645136&(k=(-858993460&(k=(-1431655766&k)>>>1|(1431655765&k)<<1))>>>2|(858993459&k)<<2))>>>4|(252645135&k)<<4))>>>8|(16711935&k)<<8)>>>16|k<<16,b=0,S=this.sortedEntries;S>1;){var y=b+(S>>1);_$UInt_UInt_$Impl_$.gte(m,this.sortedCodewords[y])?(b=y,S-=S>>1):S>>=1}this.sparse?(this.sortedValues[b]=t[f],this.codewordLengths[b]=v):this.sortedValues[b]=f}}},computeAcceleratedHuffman:function(){var e=new Array(1024);this.fastHuffman=e,this.fastHuffman[0]=-1;for(var t=0;t<1024;){var a=t++;this.fastHuffman[a]=-1}for(var i=0,r=this.sparse?this.sortedEntries:this.entries;i>>1|(1431655765&_)<<1))>>>2|(858993459&_)<<2))>>>4|(252645135&_)<<4))>>>8|(16711935&_)<<8)>>>16|_<<16}else n=this.codewords[s];for(;n<1024;)this.fastHuffman[n]=s,n+=1<=0){var n=this.codewordLengths[s];e.acc=e.acc>>>n,e.validBits-=n,e.validBits<0?(e.validBits=0,r=-1):r=s}else r=e.decodeScalarRaw(this);this.sparse&&(r=this.sortedValues[r]);var _=r,o=this.lookupValues,h=this.sequenceP,l=this.multiplicands,u=this.minimumValue;if(_<0)return!1;if(i>this.dimensions&&(i=this.dimensions),1==this.lookupType){for(var c=1,d=0,p=0,g=i;p=0){var _=this.codewordLengths[n];e.acc=e.acc>>>_,e.validBits-=_,e.validBits<0?(e.validBits=0,s=-1):s=n}else s=e.decodeScalarRaw(this);this.sparse&&(s=this.sortedValues[s]);var o=s,h=0;if(o<0)return!1;i>this.dimensions&&(i=this.dimensions);var l=this.lookupValues,u=this.sequenceP,c=this.multiplicands;if(1==this.lookupType){for(var d=1,p=0,g=i;p=0){var i=this.codewordLengths[a];e.acc=e.acc>>>i,e.validBits-=i,e.validBits<0?(e.validBits=0,t=-1):t=a}else t=e.decodeScalarRaw(this);return this.sparse&&(t=this.sortedValues[t]),t},decodeDeinterleaveRepeat:function(e,t,a,i,r,s,n){var _=this.dimensions;if(0==this.lookupType)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{fileName:"Codebook.hx",lineNumber:488,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"decodeDeinterleaveRepeat"}));for(var o=this.multiplicands,h=this.sequenceP,l=this.lookupValues;n>0;){var u=0;e.validBits<10&&e.prepHuffman();var c,d=this.fastHuffman[1023&e.acc];if(d>=0){var p=this.codewordLengths[d];e.acc=e.acc>>>p,e.validBits-=p,e.validBits<0?(e.validBits=0,c=-1):c=d}else c=e.decodeScalarRaw(this);this.sparse&&(c=this.sortedValues[c]);var g=c;if(g<0){if(0==e.bytesInSeg&&e.lastSeg)return null;throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{fileName:"Codebook.hx",lineNumber:503,className:"kha.audio2.ogg.vorbis.data.Codebook",methodName:"decodeDeinterleaveRepeat"}))}if(i+r*a+_>s*a&&(_=s*a-(r*a-i)),1==this.lookupType){var f=1;if(h)for(var v=0,k=_;v>>16,e.validBits-=16,a=r}}else{var s=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,a=s}if(i.type=a,i.type>1)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Floor.hx",lineNumber:28,className:"kha.audio2.ogg.vorbis.data.Floor",methodName:"read"}));if(0==i.type){var n,_=i.floor0=new kha_audio2_ogg_vorbis_data_Floor0;if(e.validBits<0)n=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,n=o}}else{var h=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,n=h}_.order=n;var l;if(e.validBits<0)l=0;else if(e.validBits<16){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>16,e.validBits-=16,l=u}}else{var c=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,l=c}_.rate=l;var d;if(e.validBits<0)d=0;else if(e.validBits<16){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>16,e.validBits-=16,d=p}}else{var g=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,d=g}_.barkMapSize=d;var f;if(e.validBits<0)f=0;else if(e.validBits<6){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>6,e.validBits-=6,f=v}}else{var k=63&e.acc;e.acc=e.acc>>>6,e.validBits-=6,f=k}_.amplitudeBits=f;var m;if(e.validBits<0)m=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,m=b}}else{var S=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,m=S}_.amplitudeOffset=m;var y;if(e.validBits<0)y=0;else if(e.validBits<4){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>4,e.validBits-=4,y=x}}else{var B=15&e.acc;e.acc=e.acc>>>4,e.validBits-=4,y=B}_.numberOfBooks=y+1;for(var T=0,w=_.numberOfBooks;T>>8,e.validBits-=8,E=A}}else{var L=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,E=L}C[I]=E}throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED,null,{fileName:"Floor.hx",lineNumber:41,className:"kha.audio2.ogg.vorbis.data.Floor",methodName:"read"}))}var R,$=[],F=i.floor1=new kha_audio2_ogg_vorbis_data_Floor1,V=-1;if(e.validBits<0)R=0;else if(e.validBits<5){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>5,e.validBits-=5,R=N}}else{var P=31&e.acc;e.acc=e.acc>>>5,e.validBits-=5,R=P}F.partitions=R;var M=F.partitions,O=new Array(M);F.partitionClassList=O;for(var D=0,U=F.partitions;D>>4,e.validBits-=4,H=z}}else{var j=15&e.acc;e.acc=e.acc>>>4,e.validBits-=4,H=j}W[G]=H,F.partitionClassList[G]>V&&(V=F.partitionClassList[G])}var K=new Array(V+1);F.classDimensions=K;var X=new Array(V+1);F.classMasterbooks=X;var Y=new Array(V+1);F.classSubclasses=Y;var Z=new Array(V+1);F.subclassBooks=Z;for(var Q=0,J=V+1;Q>>3,e.validBits-=3,q=ae}}else{var ie=7&e.acc;e.acc=e.acc>>>3,e.validBits-=3,q=ie}te[ee]=q+1;var re,se=F.classSubclasses;if(e.validBits<0)re=0;else if(e.validBits<2){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>2,e.validBits-=2,re=ne}}else{var _e=3&e.acc;e.acc=e.acc>>>2,e.validBits-=2,re=_e}if(se[ee]=re,0!=F.classSubclasses[ee]){var oe,he=F.classMasterbooks;if(e.validBits<0)oe=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,oe=le}}else{var ue=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,oe=ue}if(he[ee]=oe,F.classMasterbooks[ee]>=t.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Floor.hx",lineNumber:64,className:"kha.audio2.ogg.vorbis.data.Floor",methodName:"read"}))}var ce=1<>>8,e.validBits-=8,ve=be}}else{var Se=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,ve=Se}if(me[ke]=ve-1,F.subclassBooks[ee][ke]>=t.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Floor.hx",lineNumber:73,className:"kha.audio2.ogg.vorbis.data.Floor",methodName:"read"}))}}var ye;if(e.validBits<0)ye=0;else if(e.validBits<2){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>2,e.validBits-=2,ye=xe}}else{var Be=3&e.acc;e.acc=e.acc>>>2,e.validBits-=2,ye=Be}F.floor1Multiplier=ye+1;var Te;if(e.validBits<0)Te=0;else if(e.validBits<4){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>4,e.validBits-=4,Te=we}}else{var Ee=15&e.acc;e.acc=e.acc>>>4,e.validBits-=4,Te=Ee}F.rangebits=Te;var Ie=new Array(250);F.xlist=Ie,F.xlist[0]=0,F.xlist[1]=1<24)Ve=e.readBits(24)+(e.readBits(Me-24)<<24);else{for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>Me,e.validBits-=Me,Ve=Oe}}else{var De=e.acc&(1<>>Me,e.validBits-=Me,Ve=De}Ne[Pe]=Ve,F.values++}for(var Ue=0,He=F.values;Ueit&&at[ht]at[tt]&&(nt=ht,rt=at[ht])}qe=st,et=nt;var lt=F.neighbors,ut=F.values,ct=new Array(ut);lt[tt]=ct,F.neighbors[tt][0]=qe,F.neighbors[tt][1]=et}return i},kha_audio2_ogg_vorbis_data_Floor.prototype={floor0:null,floor1:null,type:null,__class__:kha_audio2_ogg_vorbis_data_Floor};var kha_audio2_ogg_vorbis_data_Floor0=$hxClasses["kha.audio2.ogg.vorbis.data.Floor0"]=function(){};kha_audio2_ogg_vorbis_data_Floor0.__name__=!0,kha_audio2_ogg_vorbis_data_Floor0.prototype={order:null,rate:null,barkMapSize:null,amplitudeBits:null,amplitudeOffset:null,numberOfBooks:null,bookList:null,__class__:kha_audio2_ogg_vorbis_data_Floor0};var kha_audio2_ogg_vorbis_data_Floor1=$hxClasses["kha.audio2.ogg.vorbis.data.Floor1"]=function(){};kha_audio2_ogg_vorbis_data_Floor1.__name__=!0,kha_audio2_ogg_vorbis_data_Floor1.prototype={partitions:null,partitionClassList:null,classDimensions:null,classSubclasses:null,classMasterbooks:null,subclassBooks:null,xlist:null,sortedOrder:null,neighbors:null,floor1Multiplier:null,rangebits:null,values:null,__class__:kha_audio2_ogg_vorbis_data_Floor1};var kha_audio2_ogg_vorbis_data_Header=$hxClasses["kha.audio2.ogg.vorbis.data.Header"]=function(){};kha_audio2_ogg_vorbis_data_Header.__name__=!0,kha_audio2_ogg_vorbis_data_Header.read=function(e){var t=e.page;if(t.start(e),0==(2&t.flag))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"not firstPage",{fileName:"Header.hx",lineNumber:46,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(0!=(4&t.flag))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"lastPage",{fileName:"Header.hx",lineNumber:49,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(0!=(1&t.flag))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"continuedPacket",{fileName:"Header.hx",lineNumber:52,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(e.firstPageValidate(),e.inputPosition+=1,1!=e.input.readByte())throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"decodeState head",{fileName:"Header.hx",lineNumber:57,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));for(var a=new haxe_io_Bytes(new ArrayBuffer(6)),i=0;i<6;){var r,s=i++;0!=e.bytesInSeg||!e.lastSeg&&0!=e.next()?(e.bytesInSeg--,e.inputPosition+=1,r=e.input.readByte()):r=-1,e.validBits=0,a.b[s]=255&r}if("vorbis"!=a.toString())throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"vorbis header",{fileName:"VorbisDecodeState.hx",lineNumber:300,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"vorbisValidate"}));e.inputPosition+=4;var n=e.input.readInt32();if(0!=n)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"vorbis version : "+n,{fileName:"Header.hx",lineNumber:66,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));var _=new kha_audio2_ogg_vorbis_data_Header;if(e.inputPosition+=1,_.channel=e.input.readByte(),0==_.channel)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no channel",{fileName:"Header.hx",lineNumber:73,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(_.channel>16)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS,"too many channels",{fileName:"Header.hx",lineNumber:75,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(e.inputPosition+=4,_.sampleRate=e.input.readInt32(),0==_.sampleRate)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,"no sampling rate",{fileName:"Header.hx",lineNumber:80,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));e.inputPosition+=4,_.maximumBitRate=e.input.readInt32(),e.inputPosition+=4,_.nominalBitRate=e.input.readInt32(),e.inputPosition+=4,_.minimumBitRate=e.input.readInt32(),e.inputPosition+=1;var o=e.input.readByte(),h=15&o,l=o>>4;if(_.blocksize0=1<13)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Header.hx",lineNumber:93,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(l<6||l>13)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Header.hx",lineNumber:96,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(h>l)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Header.hx",lineNumber:99,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));e.inputPosition+=1;var u=e.input.readByte();if(0==(1&u))throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE,null,{fileName:"Header.hx",lineNumber:105,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));e.page.start(e),e.startPacket();for(var c=0,d=new haxe_io_BytesOutput;;){if(0==(c=e.next()))break;e.inputPosition+=c,d.write(e.input.read(c)),e.bytesInSeg=0}var p=new haxe_io_BytesInput(d.getBytes());p.readByte(),p.read(6);var g=p.readInt32();_.vendor=p.readString(g),_.comment=new kha_audio2_ogg_vorbis_data_Comment;for(var f=0,v=p.readInt32();f>>8,e.validBits-=8,w=E}}else{var I=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,w=I}var C=w+1,A=new Array(C);_.codebooks=A;for(var L=0,R=C;L>>6,e.validBits-=6,F=V}}else{var N=63&e.acc;e.acc=e.acc>>>6,e.validBits-=6,F=N}for(var P=0,M=u=F+1;P>>16,e.validBits-=16,O=D}}else{var U=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,O=U}if(0!=O)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Header.hx",lineNumber:165,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}))}var H;if(e.validBits<0)H=0;else if(e.validBits<6){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>6,e.validBits-=6,H=G}}else{var W=63&e.acc;e.acc=e.acc>>>6,e.validBits-=6,H=W}var z=H+1,j=new Array(z);_.floorConfig=j;for(var K=0,X=z;K>>6,e.validBits-=6,Z=Q}}else{var J=63&e.acc;e.acc=e.acc>>>6,e.validBits-=6,Z=J}var q=Z+1,ee=new Array(q);_.residueConfig=ee;for(var te=0,ae=q;te>>6,e.validBits-=6,re=se}}else{var ne=63&e.acc;e.acc=e.acc>>>6,e.validBits-=6,re=ne}var _e=re+1,oe=new Array(_e);_.mapping=oe;for(var he=0,le=_e;he=_.floorConfig.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Header.hx",lineNumber:191,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}));if(ce.submapResidue[ge]>=_.residueConfig.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Header.hx",lineNumber:194,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}))}}var fe;if(e.validBits<0)fe=0;else if(e.validBits<6){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>6,e.validBits-=6,fe=ve}}else{var ke=63&e.acc;e.acc=e.acc>>>6,e.validBits-=6,fe=ke}var me=fe+1,be=new Array(me);_.modes=be;for(var Se=0,ye=me;Se=_.mapping.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Header.hx",lineNumber:205,className:"kha.audio2.ogg.vorbis.data.Header",methodName:"read"}))}for(;0!=e.bytesInSeg||!e.lastSeg&&0!=e.next();)e.bytesInSeg--,e.inputPosition+=1,e.input.readByte();return _},kha_audio2_ogg_vorbis_data_Header.prototype={maximumBitRate:null,nominalBitRate:null,minimumBitRate:null,sampleRate:null,channel:null,blocksize0:null,blocksize1:null,codebooks:null,floorConfig:null,residueConfig:null,mapping:null,modes:null,comment:null,vendor:null,__class__:kha_audio2_ogg_vorbis_data_Header};var kha_audio2_ogg_vorbis_data_IntPoint=$hxClasses["kha.audio2.ogg.vorbis.data.IntPoint"]=function(){};kha_audio2_ogg_vorbis_data_IntPoint.__name__=!0,kha_audio2_ogg_vorbis_data_IntPoint.prototype={x:null,y:null,__class__:kha_audio2_ogg_vorbis_data_IntPoint};var kha_audio2_ogg_vorbis_data_Mapping=$hxClasses["kha.audio2.ogg.vorbis.data.Mapping"]=function(){};kha_audio2_ogg_vorbis_data_Mapping.__name__=!0,kha_audio2_ogg_vorbis_data_Mapping.read=function(e,t){var a,i=new kha_audio2_ogg_vorbis_data_Mapping;if(e.validBits<0)a=0;else if(e.validBits<16){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>16,e.validBits-=16,a=r}}else{var s=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,a=s}if(0!=a)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,"mapping type "+a,{fileName:"Mapping.hx",lineNumber:22,className:"kha.audio2.ogg.vorbis.data.Mapping",methodName:"read"}));var n=new Array(t);i.chan=n;for(var _=0,o=t;_>>1,e.validBits-=1,l=u}}else{var c=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,l=c}if(0!=l){var d;if(e.validBits<0)d=0;else if(e.validBits<4){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>4,e.validBits-=4,d=p}}else{var g=15&e.acc;e.acc=e.acc>>>4,e.validBits-=4,d=g}i.submaps=d+1}else i.submaps=1;var f;if(e.validBits<0)f=0;else if(e.validBits<1){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>1,e.validBits-=1,f=v}}else{var k=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,f=k}if(0!=f){var m;if(e.validBits<0)m=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,m=b}}else{var S=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,m=S}i.couplingSteps=m+1;for(var y=0,x=i.couplingSteps;y>5]:10+I[E>>10]:E<16777216?E<524288?15+I[E>>15]:20+I[E>>20]:E<536870912?25+I[E>>25]:E<-2147483648?30+I[E>>30]:0;if(e.validBits<0)B=0;else if(e.validBits24)B=e.readBits(24)+(e.readBits(C-24)<<24);else{for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>C,e.validBits-=C,B=A}}else{var L=e.acc&(1<>>C,e.validBits-=C,B=L}w.magnitude=B;var R,$=i.chan[T],F=t-1,V=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4],N=F<16384?F<16?V[F]:F<512?5+V[F>>5]:10+V[F>>10]:F<16777216?F<524288?15+V[F>>15]:20+V[F>>20]:F<536870912?25+V[F>>25]:F<-2147483648?30+V[F>>30]:0;if(e.validBits<0)R=0;else if(e.validBits24)R=e.readBits(24)+(e.readBits(N-24)<<24);else{for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>N,e.validBits-=N,R=P}}else{var M=e.acc&(1<>>N,e.validBits-=N,R=M}if($.angle=R,i.chan[T].magnitude>=t)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Mapping.hx",lineNumber:46,className:"kha.audio2.ogg.vorbis.data.Mapping",methodName:"read"}));if(i.chan[T].angle>=t)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Mapping.hx",lineNumber:49,className:"kha.audio2.ogg.vorbis.data.Mapping",methodName:"read"}));if(i.chan[T].magnitude==i.chan[T].angle)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Mapping.hx",lineNumber:52,className:"kha.audio2.ogg.vorbis.data.Mapping",methodName:"read"}))}}else i.couplingSteps=0;var O;if(e.validBits<0)O=0;else if(e.validBits<2){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>2,e.validBits-=2,O=D}}else{var U=3&e.acc;e.acc=e.acc>>>2,e.validBits-=2,O=U}if(0!=O)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Mapping.hx",lineNumber:61,className:"kha.audio2.ogg.vorbis.data.Mapping",methodName:"read"}));if(i.submaps>1)for(var H=0,G=t;H>>4,e.validBits-=4,W=K}}else{var X=15&e.acc;e.acc=e.acc>>>4,e.validBits-=4,W=X}if(j.mux=W,i.chan[z].mux>=i.submaps)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Mapping.hx",lineNumber:67,className:"kha.audio2.ogg.vorbis.data.Mapping",methodName:"read"}))}else for(var Y=0,Z=t;Y=0)if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<=0){e.acc;e.acc=e.acc>>>8,e.validBits-=8}}else{e.acc;e.acc=e.acc>>>8,e.validBits-=8}var se,ne=i.submapFloor;if(e.validBits<0)se=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,se=_e}}else{var oe=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,se=oe}ne[re]=se;var he,le=i.submapResidue;if(e.validBits<0)he=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,he=ue}}else{var ce=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,he=ce}le[re]=he}return i},kha_audio2_ogg_vorbis_data_Mapping.prototype={couplingSteps:null,chan:null,submaps:null,submapFloor:null,submapResidue:null,doFloor:function(e,t,a,i,r,s){var n=a>>1,_=this.chan[t].mux,o=e[this.submapFloor[_]];if(0==o.type)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM,null,{fileName:"Mapping.hx",lineNumber:94,className:"kha.audio2.ogg.vorbis.data.Mapping",methodName:"doFloor"}));for(var h=o.floor1,l=0,u=r[0]*h.floor1Multiplier,c=1,d=h.values;c=0){var f=r[g]*h.floor1Multiplier,v=h.xlist[g];kha_audio2_ogg_vorbis_VorbisTools.drawLine(i,l,u,v,f,n),l=v,u=f}}if(l>>1,e.validBits-=1,t=i}}else{var r=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,t=r}a.blockflag=0!=t;var s;if(e.validBits<0)s=0;else if(e.validBits<16){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>16,e.validBits-=16,s=n}}else{var _=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,s=_}a.windowtype=s;var o;if(e.validBits<0)o=0;else if(e.validBits<16){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>16,e.validBits-=16,o=h}}else{var l=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,o=l}a.transformtype=o;var u;if(e.validBits<0)u=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,u=c}}else{var d=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,u=d}if(a.mapping=u,0!=a.windowtype)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Mode.hx",lineNumber:22,className:"kha.audio2.ogg.vorbis.data.Mode",methodName:"read"}));if(0!=a.transformtype)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Mode.hx",lineNumber:25,className:"kha.audio2.ogg.vorbis.data.Mode",methodName:"read"}));return a},kha_audio2_ogg_vorbis_data_Mode.prototype={blockflag:null,mapping:null,windowtype:null,transformtype:null,__class__:kha_audio2_ogg_vorbis_data_Mode};var kha_audio2_ogg_vorbis_data_Page=$hxClasses["kha.audio2.ogg.vorbis.data.Page"]=function(){};kha_audio2_ogg_vorbis_data_Page.__name__=!0,kha_audio2_ogg_vorbis_data_Page.prototype={flag:null,clone:function(){var e=new kha_audio2_ogg_vorbis_data_Page;return e.flag=this.flag,e},start:function(e){var t,a,i;if(e.inputPosition+=1,79==e.input.readByte()?(e.inputPosition+=1,i=103!=e.input.readByte()):i=!0,i?a=!0:(e.inputPosition+=1,a=103!=e.input.readByte()),a?t=!0:(e.inputPosition+=1,t=83!=e.input.readByte()),t)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN,null,{fileName:"VorbisDecodeState.hx",lineNumber:323,className:"kha.audio2.ogg.vorbis.VorbisDecodeState",methodName:"capturePattern"}));this.startWithoutCapturePattern(e)},startWithoutCapturePattern:function(e){e.inputPosition+=1;var t=e.input.readByte();if(0!=t)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION,""+t,{fileName:"Page.hx",lineNumber:34,className:"kha.audio2.ogg.vorbis.data.Page",methodName:"startWithoutCapturePattern"}));e.inputPosition+=1,this.flag=e.input.readByte(),e.inputPosition+=4;var a=e.input.readInt32();e.inputPosition+=4;var i=e.input.readInt32();e.inputPosition+=4,e.input.readInt32(),e.inputPosition+=4,e.input.readInt32(),e.inputPosition+=4,e.input.readInt32(),e.setup(a,i)},__class__:kha_audio2_ogg_vorbis_data_Page};var kha_audio2_ogg_vorbis_data_PageFlag=$hxClasses["kha.audio2.ogg.vorbis.data.PageFlag"]=function(){};kha_audio2_ogg_vorbis_data_PageFlag.__name__=!0;var kha_audio2_ogg_vorbis_data_ProbedPage=$hxClasses["kha.audio2.ogg.vorbis.data.ProbedPage"]=function(){};kha_audio2_ogg_vorbis_data_ProbedPage.__name__=!0,kha_audio2_ogg_vorbis_data_ProbedPage.prototype={pageStart:null,pageEnd:null,afterPreviousPageStart:null,firstDecodedSample:null,lastDecodedSample:null,__class__:kha_audio2_ogg_vorbis_data_ProbedPage};var kha_audio2_ogg_vorbis_data_ReaderError=$hxClasses["kha.audio2.ogg.vorbis.data.ReaderError"]=function(e,t,a){null==t&&(t=""),this.type=e,this.message=t,this.posInfos=a};kha_audio2_ogg_vorbis_data_ReaderError.__name__=!0,kha_audio2_ogg_vorbis_data_ReaderError.prototype={type:null,message:null,posInfos:null,__class__:kha_audio2_ogg_vorbis_data_ReaderError};var kha_audio2_ogg_vorbis_data_ReaderErrorType=$hxClasses["kha.audio2.ogg.vorbis.data.ReaderErrorType"]={__ename__:!0,__constructs__:["NEED_MORE_DATA","INVALID_API_MIXING","OUTOFMEM","FEATURE_NOT_SUPPORTED","TOO_MANY_CHANNELS","FILE_OPEN_FAILURE","SEEK_WITHOUT_LENGTH","UNEXPECTED_EOF","SEEK_INVALID","INVALID_SETUP","INVALID_STREAM","MISSING_CAPTURE_PATTERN","INVALID_STREAM_STRUCTURE_VERSION","CONTINUED_PACKET_FLAG_INVALID","INCORRECT_STREAM_SERIAL_NUMBER","INVALID_FIRST_PAGE","BAD_PACKET_TYPE","CANT_FIND_LAST_PAGE","SEEK_FAILED","OTHER"]};kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA=["NEED_MORE_DATA",0],kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.NEED_MORE_DATA.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING=["INVALID_API_MIXING",1],kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_API_MIXING.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM=["OUTOFMEM",2],kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.OUTOFMEM.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED=["FEATURE_NOT_SUPPORTED",3],kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.FEATURE_NOT_SUPPORTED.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS=["TOO_MANY_CHANNELS",4],kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.TOO_MANY_CHANNELS.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE=["FILE_OPEN_FAILURE",5],kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.FILE_OPEN_FAILURE.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH=["SEEK_WITHOUT_LENGTH",6],kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_WITHOUT_LENGTH.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF=["UNEXPECTED_EOF",7],kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.UNEXPECTED_EOF.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID=["SEEK_INVALID",8],kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_INVALID.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP=["INVALID_SETUP",9],kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM=["INVALID_STREAM",10],kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN=["MISSING_CAPTURE_PATTERN",11],kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.MISSING_CAPTURE_PATTERN.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION=["INVALID_STREAM_STRUCTURE_VERSION",12],kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID=["CONTINUED_PACKET_FLAG_INVALID",13],kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.CONTINUED_PACKET_FLAG_INVALID.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER=["INCORRECT_STREAM_SERIAL_NUMBER",14],kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.INCORRECT_STREAM_SERIAL_NUMBER.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE=["INVALID_FIRST_PAGE",15],kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_FIRST_PAGE.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE=["BAD_PACKET_TYPE",16],kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.BAD_PACKET_TYPE.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE=["CANT_FIND_LAST_PAGE",17],kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.CANT_FIND_LAST_PAGE.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED=["SEEK_FAILED",18],kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.SEEK_FAILED.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType,kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER=["OTHER",19],kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER.toString=$estr,kha_audio2_ogg_vorbis_data_ReaderErrorType.OTHER.__enum__=kha_audio2_ogg_vorbis_data_ReaderErrorType;var kha_audio2_ogg_vorbis_data_Residue=$hxClasses["kha.audio2.ogg.vorbis.data.Residue"]=function(){};kha_audio2_ogg_vorbis_data_Residue.__name__=!0,kha_audio2_ogg_vorbis_data_Residue.read=function(e,t){var a,i=new kha_audio2_ogg_vorbis_data_Residue;if(e.validBits<0)a=0;else if(e.validBits<16){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>16,e.validBits-=16,a=r}}else{var s=65535&e.acc;e.acc=e.acc>>>16,e.validBits-=16,a=s}if(i.type=a,i.type>2)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Residue.hx",lineNumber:29,className:"kha.audio2.ogg.vorbis.data.Residue",methodName:"read"}));var n,_=new Array(64);if(e.validBits<0)n=0;else if(e.validBits<24){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>24,e.validBits-=24,n=o}}else{var h=16777215&e.acc;e.acc=e.acc>>>24,e.validBits-=24,n=h}i.begin=n;var l;if(e.validBits<0)l=0;else if(e.validBits<24){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>24,e.validBits-=24,l=u}}else{var c=16777215&e.acc;e.acc=e.acc>>>24,e.validBits-=24,l=c}i.end=l;var d;if(e.validBits<0)d=0;else if(e.validBits<24){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>24,e.validBits-=24,d=p}}else{var g=16777215&e.acc;e.acc=e.acc>>>24,e.validBits-=24,d=g}i.partSize=d+1;var f;if(e.validBits<0)f=0;else if(e.validBits<6){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>6,e.validBits-=6,f=v}}else{var k=63&e.acc;e.acc=e.acc>>>6,e.validBits-=6,f=k}var m,b=i.classifications=f+1;if(e.validBits<0)m=0;else if(e.validBits<8){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>8,e.validBits-=8,m=S}}else{var y=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,m=y}i.classbook=m;for(var x=0,B=i.classifications;x>>3,e.validBits-=3,T=I}}else{var C=7&e.acc;e.acc=e.acc>>>3,e.validBits-=3,T=C}var A;if(e.validBits<0)A=0;else if(e.validBits<1){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>1,e.validBits-=1,A=L}}else{var R=1&e.acc;e.acc=e.acc>>>1,e.validBits-=1,A=R}if(0!=A)if(e.validBits<0)E=0;else if(e.validBits<5){for(0==e.validBits&&(e.acc=0);;){if(0==e.bytesInSeg&&(e.lastSeg||0==e.next())){e.validBits=-1;break}if(e.bytesInSeg--,e.inputPosition+=1,e.acc=e.acc+(e.input.readByte()<>>5,e.validBits-=5,E=$}}else{var F=31&e.acc;e.acc=e.acc>>>5,e.validBits-=5,E=F}_[w]=8*E+T}var V=i.classifications,N=new Array(V);i.residueBooks=N;for(var P=0,M=i.classifications;P>>8,e.validBits-=8,W=j}}else{var K=255&e.acc;e.acc=e.acc>>>8,e.validBits-=8,W=K}if(z[G]=W,i.residueBooks[O][G]>=t.length)throw new js__$Boot_HaxeError(new kha_audio2_ogg_vorbis_data_ReaderError(kha_audio2_ogg_vorbis_data_ReaderErrorType.INVALID_SETUP,null,{fileName:"Residue.hx",lineNumber:55,className:"kha.audio2.ogg.vorbis.data.Residue",methodName:"read"}))}else i.residueBooks[O][G]=-1}}var X=t[i.classbook].entries,Y=t[i.classbook].dimensions,Z=new Array(X);i.classdata=Z;for(var Q=0,J=X;Q=0;)re[te]=ee%b,ee=ee/b|0;return i},kha_audio2_ogg_vorbis_data_Residue.prototype={begin:null,end:null,partSize:null,classifications:null,classbook:null,classdata:null,residueBooks:null,type:null,decode:function(e,t,a,i,r,s,n){for(var _=t.codebooks,o=_[this.classbook].dimensions,h=this.end-this.begin,l=this.partSize,u=_$UInt_UInt_$Impl_$.toFloat(h)/_$UInt_UInt_$Impl_$.toFloat(l)|0,c=t.channel*u+1,d=new Array(c),p=0,g=i;p=0){var C=w.codewordLengths[I];e.acc=e.acc>>>C,e.validBits-=C,e.validBits<0?(e.validBits=0,E=-1):E=I}else E=e.decodeScalarRaw(w);w.sparse&&(E=w.sortedValues[E]);var A=E;if(-1==A)return;for(var L=o;--L>=0;)d[T*u+L+y]=A%this.classifications,A=A/this.classifications|0}}for(var R=0,$=o;R<$;){R++;if(y>=u)break;for(var F=0,V=i;F=0){var O=a[N],D=this.begin+y*l,U=l;if(!_[M].residueDecode(e,O,D,U,this.type))return}}}++y}}else{for(var H=0,G=i;H>>1;if(0==j){var Q=_[this.classbook];e.validBits<10&&e.prepHuffman();var J,q=Q.fastHuffman[1023&e.acc];if(q>=0){var ee=Q.codewordLengths[q];e.acc=e.acc>>>ee,e.validBits-=ee,e.validBits<0?(e.validBits=0,J=-1):J=q}else J=e.decodeScalarRaw(Q);Q.sparse&&(J=Q.sortedValues[J]);var te=J;if(-1==te)return;for(var ae=o;--ae>=0;)d[ae+K]=te%this.classifications,te=te/this.classifications|0}for(var ie=0,re=o;ie=u)break;var se=this.begin+K*l,ne=d[K],_e=this.residueBooks[ne][j];if(_e>=0){var oe=_[_e].decodeDeinterleaveRepeat(e,a,i,Y,Z,r,l);if(null==oe)return;Y=oe.cInter,Z=oe.pInter}else Y=1&(se+=l),Z=se>>>1;++K}}else if(1==i)for(;K=0){var pe=ue.codewordLengths[de];e.acc=e.acc>>>pe,e.validBits-=pe,e.validBits<0?(e.validBits=0,ce=-1):ce=de}else ce=e.decodeScalarRaw(ue);ue.sparse&&(ce=ue.sortedValues[ce]);var ge=ce;if(-1==ge)return;for(var fe=o;--fe>=0;)d[fe+K]=ge%this.classifications,ge=ge/this.classifications|0}for(var ve=0,ke=o;ve=u)break;var me=this.begin+K*l,be=this.residueBooks[d[K]][j];if(be>=0){var Se=_[be].decodeDeinterleaveRepeat(e,a,i,he,le,r,l);if(null==Se)return;he=Se.cInter,le=Se.pInter}else he=0,le=me+=l;++K}}else for(;K=0){var Ie=Te.codewordLengths[Ee];e.acc=e.acc>>>Ie,e.validBits-=Ie,e.validBits<0?(e.validBits=0,we=-1):we=Ee}else we=e.decodeScalarRaw(Te);Te.sparse&&(we=Te.sortedValues[we]);var Ce=we;if(-1==Ce)return;for(var Ae=o;--Ae>=0;)d[Ae+K]=Ce%this.classifications,Ce=Ce/this.classifications|0}for(var Le=0,Re=o;Le=u)break;var $e=this.begin+K*l,Fe=this.residueBooks[d[K]][j];if(Fe>=0){var Ve=_[Fe].decodeDeinterleaveRepeat(e,a,i,xe,Be,r,l);if(null==Ve)return;xe=Ve.cInter,Be=Ve.pInter}else $e+=l,xe=_$UInt_UInt_$Impl_$.toFloat($e)%_$UInt_UInt_$Impl_$.toFloat(i)|0,Be=_$UInt_UInt_$Impl_$.toFloat($e)/_$UInt_UInt_$Impl_$.toFloat(i)|0;++K}}}}},__class__:kha_audio2_ogg_vorbis_data_Residue};var kha_audio2_ogg_vorbis_data_Setting=$hxClasses["kha.audio2.ogg.vorbis.data.Setting"]=function(){};kha_audio2_ogg_vorbis_data_Setting.__name__=!0;var kha_graphics1_Graphics=$hxClasses["kha.graphics1.Graphics"]=function(){};kha_graphics1_Graphics.__name__=!0,kha_graphics1_Graphics.prototype={begin:null,end:null,setPixel:null,__class__:kha_graphics1_Graphics};var kha_graphics2_Graphics=$hxClasses["kha.graphics2.Graphics"]=function(){this.transformations=[],this.transformations.push(new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1)),this.opacities=[],this.opacities.push(1),this.myFontSize=12,this.myFontGlyphs=[];for(var e=32;e<256;){var t=e++;this.myFontGlyphs.push(t)}this.pipe=null};kha_graphics2_Graphics.__name__=!0,kha_graphics2_Graphics.prototype={begin:function(e,t){null==e&&(e=!0)},end:function(){},flush:function(){},clear:function(e){},drawImage:function(e,t,a){this.drawSubImage(e,t,a,0,0,e.get_width(),e.get_height())},drawSubImage:function(e,t,a,i,r,s,n){this.drawScaledSubImage(e,i,r,s,n,t,a,s,n)},drawScaledImage:function(e,t,a,i,r){this.drawScaledSubImage(e,0,0,e.get_width(),e.get_height(),t,a,i,r)},drawScaledSubImage:function(e,t,a,i,r,s,n,_,o){},drawRect:function(e,t,a,i,r){null==r&&(r=1)},fillRect:function(e,t,a,i){},drawString:function(e,t,a){},drawLine:function(e,t,a,i,r){null==r&&(r=1)},drawVideo:function(e,t,a,i,r){},fillTriangle:function(e,t,a,i,r,s){},get_imageScaleQuality:function(){return kha_graphics2_ImageScaleQuality.Low},set_imageScaleQuality:function(e){return kha_graphics2_ImageScaleQuality.High},get_mipmapScaleQuality:function(){return kha_graphics2_ImageScaleQuality.Low},set_mipmapScaleQuality:function(e){return kha_graphics2_ImageScaleQuality.High},get_color:function(){return-16777216},set_color:function(e){return-16777216},get_font:function(){return null},set_font:function(e){return null},get_fontSize:function(){return this.myFontSize},set_fontSize:function(e){return this.myFontSize=e},get_fontGlyphs:function(){return this.myFontGlyphs},set_fontGlyphs:function(e){return this.myFontGlyphs=e},pushTransformation:function(e){var t=new kha_math_FastMatrix3(1,0,0,0,1,0,0,0,1);t._00=e._00,t._10=e._10,t._20=e._20,t._01=e._01,t._11=e._11,t._21=e._21,t._02=e._02,t._12=e._12,t._22=e._22,this.setTransformation(t),this.transformations.push(t)},popTransformation:function(){var e=this.transformations.pop();return this.setTransformation(this.transformations[this.transformations.length-1]),e},get_transformation:function(){return this.transformations[this.transformations.length-1]},set_transformation:function(e){this.setTransformation(e);var t=this.transformations[this.transformations.length-1];return t._00=e._00,t._10=e._10,t._20=e._20,t._01=e._01,t._11=e._11,t._21=e._21,t._02=e._02,t._12=e._12,t._22=e._22,e},translation:function(e,t){var a,i;i=e,a=t;var r=this.transformations[this.transformations.length-1];return new kha_math_FastMatrix3(1*r._00+0*r._01+i*r._02,1*r._10+0*r._11+i*r._12,1*r._20+0*r._21+i*r._22,0*r._00+1*r._01+a*r._02,0*r._10+1*r._11+a*r._12,0*r._20+1*r._21+a*r._22,0*r._00+0*r._01+1*r._02,0*r._10+0*r._11+1*r._12,0*r._20+0*r._21+1*r._22)},translate:function(e,t){var a,i;i=e,a=t;var r=this.transformations[this.transformations.length-1],s=new kha_math_FastMatrix3(1*r._00+0*r._01+i*r._02,1*r._10+0*r._11+i*r._12,1*r._20+0*r._21+i*r._22,0*r._00+1*r._01+a*r._02,0*r._10+1*r._11+a*r._12,0*r._20+1*r._21+a*r._22,0*r._00+0*r._01+1*r._02,0*r._10+0*r._11+1*r._12,0*r._20+0*r._21+1*r._22);this.setTransformation(s);var n=this.transformations[this.transformations.length-1];n._00=s._00,n._10=s._10,n._20=s._20,n._01=s._01,n._11=s._11,n._21=s._21,n._02=s._02,n._12=s._12,n._22=s._22},pushTranslation:function(e,t){var a,i;i=e,a=t;var r=this.transformations[this.transformations.length-1];this.pushTransformation(new kha_math_FastMatrix3(1*r._00+0*r._01+i*r._02,1*r._10+0*r._11+i*r._12,1*r._20+0*r._21+i*r._22,0*r._00+1*r._01+a*r._02,0*r._10+1*r._11+a*r._12,0*r._20+1*r._21+a*r._22,0*r._00+0*r._01+1*r._02,0*r._10+0*r._11+1*r._12,0*r._20+0*r._21+1*r._22))},rotation:function(e,t,a){var i,r,s,n,_,o,h,l,u,c,d,p,g,f,v,k,m,b,S;S=t,b=a;var y,x,B,T=Math.cos(e);x=-Math.sin(e);var w,E;u=1*(m=1*T+0*(B=Math.sin(e))+0*S)+0*(f=1*x+0*(y=Math.cos(e))+0*S)+0*(d=0+1*S),o=0*m+1*f+0*d,s=m*(E=-t)+f*(w=-a)+1*d,l=1*(k=0*T+1*B+0*b)+0*(g=0*x+1*y+0*b)+0*(c=0+1*b),_=0*k+1*g+0*c,r=k*E+g*w+1*c,h=1*(v=0*T+0*B+0)+0*(p=0*x+0*y+0)+0,n=0*v+1*p+0,i=v*E+p*w+1;var I=this.transformations[this.transformations.length-1];return new kha_math_FastMatrix3(u*I._00+o*I._01+s*I._02,u*I._10+o*I._11+s*I._12,u*I._20+o*I._21+s*I._22,l*I._00+_*I._01+r*I._02,l*I._10+_*I._11+r*I._12,l*I._20+_*I._21+r*I._22,h*I._00+n*I._01+i*I._02,h*I._10+n*I._11+i*I._12,h*I._20+n*I._21+i*I._22)},rotate:function(e,t,a){var i,r,s,n,_,o,h,l,u,c,d,p,g,f,v,k,m,b,S,y,x,B,T,w,E,I,C,A;A=t,C=a;var L,R,$,F=Math.cos(e);R=-Math.sin(e);var V,N;b=1*(I=1*F+0*($=Math.sin(e))+0*A)+0*(T=1*R+0*(L=Math.cos(e))+0*A)+0*(y=0+1*A),v=0*I+1*T+0*y,p=I*(N=-t)+T*(V=-a)+1*y,m=1*(E=0*F+1*$+0*C)+0*(B=0*R+1*L+0*C)+0*(S=0+1*C),f=0*E+1*B+0*S,d=E*N+B*V+1*S,k=1*(w=0*F+0*$+0)+0*(x=0*R+0*L+0)+0,g=0*w+1*x+0,c=w*N+x*V+1;var P=this.transformations[this.transformations.length-1];u=b*P._00+v*P._01+p*P._02,o=b*P._10+v*P._11+p*P._12,s=b*P._20+v*P._21+p*P._22,l=m*P._00+f*P._01+d*P._02,_=m*P._10+f*P._11+d*P._12,r=m*P._20+f*P._21+d*P._22,h=k*P._00+g*P._01+c*P._02,n=k*P._10+g*P._11+c*P._12,i=k*P._20+g*P._21+c*P._22,this.transformations[this.transformations.length-1]._00=u,this.transformations[this.transformations.length-1]._01=l,this.transformations[this.transformations.length-1]._02=h,this.transformations[this.transformations.length-1]._10=o,this.transformations[this.transformations.length-1]._11=_,this.transformations[this.transformations.length-1]._12=n,this.transformations[this.transformations.length-1]._20=s,this.transformations[this.transformations.length-1]._21=r,this.transformations[this.transformations.length-1]._22=i},pushRotation:function(e,t,a){var i,r,s,n,_,o,h,l,u,c,d,p,g,f,v,k,m,b,S;S=t,b=a;var y,x,B,T=Math.cos(e);x=-Math.sin(e);var w,E;u=1*(m=1*T+0*(B=Math.sin(e))+0*S)+0*(f=1*x+0*(y=Math.cos(e))+0*S)+0*(d=0+1*S),o=0*m+1*f+0*d,s=m*(E=-t)+f*(w=-a)+1*d,l=1*(k=0*T+1*B+0*b)+0*(g=0*x+1*y+0*b)+0*(c=0+1*b),_=0*k+1*g+0*c,r=k*E+g*w+1*c,h=1*(v=0*T+0*B+0)+0*(p=0*x+0*y+0)+0,n=0*v+1*p+0,i=v*E+p*w+1;var I=this.transformations[this.transformations.length-1];this.pushTransformation(new kha_math_FastMatrix3(u*I._00+o*I._01+s*I._02,u*I._10+o*I._11+s*I._12,u*I._20+o*I._21+s*I._22,l*I._00+_*I._01+r*I._02,l*I._10+_*I._11+r*I._12,l*I._20+_*I._21+r*I._22,h*I._00+n*I._01+i*I._02,h*I._10+n*I._11+i*I._12,h*I._20+n*I._21+i*I._22))},pushOpacity:function(e){this.setOpacity(e),this.opacities.push(e)},popOpacity:function(){var e=this.opacities.pop();return this.setOpacity(this.get_opacity()),e},get_opacity:function(){return this.opacities[this.opacities.length-1]},set_opacity:function(e){return this.setOpacity(e),this.opacities[this.opacities.length-1]=e},scissor:function(e,t,a,i){},disableScissor:function(){},pipe:null,get_pipeline:function(){return this.pipe},set_pipeline:function(e){return this.setPipeline(e),this.pipe=e},transformations:null,opacities:null,myFontSize:null,myFontGlyphs:null,setTransformation:function(e){},setOpacity:function(e){},setPipeline:function(e){},__class__:kha_graphics2_Graphics};var kha_graphics2_Graphics1=$hxClasses["kha.graphics2.Graphics1"]=function(e){this.canvas=e};kha_graphics2_Graphics1.__name__=!0,kha_graphics2_Graphics1.__interfaces__=[kha_graphics1_Graphics],kha_graphics2_Graphics1.prototype={canvas:null,texture:null,pixels:null,begin:function(){null==this.texture&&(this.texture=kha_Image.create(this.canvas.get_width(),this.canvas.get_height(),kha_graphics4_TextureFormat.RGBA32,kha_graphics4_Usage.ReadableUsage)),this.pixels=this.texture.lock()},end:function(){this.texture.unlock(),this.canvas.get_g2().begin(),this.canvas.get_g2().drawImage(this.texture,0,0),this.canvas.get_g2().end()},setPixel:function(e,t,a){this.pixels.setInt32(t*this.texture.get_realWidth()*4+4*e,a)},__class__:kha_graphics2_Graphics1};var kha_graphics2_ImageScaleQuality=$hxClasses["kha.graphics2.ImageScaleQuality"]={__ename__:!0,__constructs__:["Low","High"]};kha_graphics2_ImageScaleQuality.Low=["Low",0],kha_graphics2_ImageScaleQuality.Low.toString=$estr,kha_graphics2_ImageScaleQuality.Low.__enum__=kha_graphics2_ImageScaleQuality,kha_graphics2_ImageScaleQuality.High=["High",1],kha_graphics2_ImageScaleQuality.High.toString=$estr,kha_graphics2_ImageScaleQuality.High.__enum__=kha_graphics2_ImageScaleQuality;var kha_graphics2_truetype_VectorOfIntPointer=$hxClasses["kha.graphics2.truetype.VectorOfIntPointer"]=function(){};kha_graphics2_truetype_VectorOfIntPointer.__name__=!0,kha_graphics2_truetype_VectorOfIntPointer.prototype={value:null,__class__:kha_graphics2_truetype_VectorOfIntPointer};var kha_graphics2_truetype_Stbtt_$temp_$rect=$hxClasses["kha.graphics2.truetype.Stbtt_temp_rect"]=function(){};kha_graphics2_truetype_Stbtt_$temp_$rect.__name__=!0,kha_graphics2_truetype_Stbtt_$temp_$rect.prototype={x0:null,y0:null,x1:null,y1:null,__class__:kha_graphics2_truetype_Stbtt_$temp_$rect};var kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics=$hxClasses["kha.graphics2.truetype.Stbtt_temp_glyph_h_metrics"]=function(){};kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics.__name__=!0,kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics.prototype={advanceWidth:null,leftSideBearing:null,__class__:kha_graphics2_truetype_Stbtt_$temp_$glyph_$h_$metrics};var kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics=$hxClasses["kha.graphics2.truetype.Stbtt_temp_font_v_metrics"]=function(){};kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics.__name__=!0,kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics.prototype={ascent:null,descent:null,lineGap:null,__class__:kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics};var kha_graphics2_truetype_Stbtt_$temp_$region=$hxClasses["kha.graphics2.truetype.Stbtt_temp_region"]=function(){};kha_graphics2_truetype_Stbtt_$temp_$region.__name__=!0,kha_graphics2_truetype_Stbtt_$temp_$region.prototype={width:null,height:null,xoff:null,yoff:null,__class__:kha_graphics2_truetype_Stbtt_$temp_$region};var kha_graphics2_truetype_Stbtt_$bakedchar=$hxClasses["kha.graphics2.truetype.Stbtt_bakedchar"]=function(){};kha_graphics2_truetype_Stbtt_$bakedchar.__name__=!0,kha_graphics2_truetype_Stbtt_$bakedchar.prototype={x0:null,y0:null,x1:null,y1:null,xoff:null,yoff:null,xadvance:null,__class__:kha_graphics2_truetype_Stbtt_$bakedchar};var kha_graphics2_truetype_Stbtt_$aligned_$quad=$hxClasses["kha.graphics2.truetype.Stbtt_aligned_quad"]=function(){};kha_graphics2_truetype_Stbtt_$aligned_$quad.__name__=!0,kha_graphics2_truetype_Stbtt_$aligned_$quad.prototype={x0:null,y0:null,s0:null,t0:null,x1:null,y1:null,s1:null,t1:null,__class__:kha_graphics2_truetype_Stbtt_$aligned_$quad};var kha_graphics2_truetype_Stbtt_$packedchar=$hxClasses["kha.graphics2.truetype.Stbtt_packedchar"]=function(){};kha_graphics2_truetype_Stbtt_$packedchar.__name__=!0,kha_graphics2_truetype_Stbtt_$packedchar.prototype={x0:null,y0:null,x1:null,y1:null,xoff:null,yoff:null,xadvance:null,xoff2:null,yoff2:null,__class__:kha_graphics2_truetype_Stbtt_$packedchar};var kha_graphics2_truetype_Stbtt_$pack_$range=$hxClasses["kha.graphics2.truetype.Stbtt_pack_range"]=function(){};kha_graphics2_truetype_Stbtt_$pack_$range.__name__=!0,kha_graphics2_truetype_Stbtt_$pack_$range.prototype={font_size:null,first_unicode_codepoint_in_range:null,array_of_unicode_codepoints:null,num_chars:null,chardata_for_range:null,h_oversample:null,v_oversample:null,__class__:kha_graphics2_truetype_Stbtt_$pack_$range};var kha_graphics2_truetype_Stbtt_$pack_$context=$hxClasses["kha.graphics2.truetype.Stbtt_pack_context"]=function(){};kha_graphics2_truetype_Stbtt_$pack_$context.__name__=!0,kha_graphics2_truetype_Stbtt_$pack_$context.prototype={width:null,height:null,stride_in_bytes:null,padding:null,h_oversample:null,v_oversample:null,pixels:null,__class__:kha_graphics2_truetype_Stbtt_$pack_$context};var kha_graphics2_truetype_Stbtt_$fontinfo=$hxClasses["kha.graphics2.truetype.Stbtt_fontinfo"]=function(){};kha_graphics2_truetype_Stbtt_$fontinfo.__name__=!0,kha_graphics2_truetype_Stbtt_$fontinfo.prototype={data:null,fontstart:null,numGlyphs:null,loca:null,head:null,glyf:null,hhea:null,hmtx:null,kern:null,index_map:null,indexToLocFormat:null,__class__:kha_graphics2_truetype_Stbtt_$fontinfo};var kha_graphics2_truetype_Stbtt_$vertex=$hxClasses["kha.graphics2.truetype.Stbtt_vertex"]=function(){};kha_graphics2_truetype_Stbtt_$vertex.__name__=!0,kha_graphics2_truetype_Stbtt_$vertex.prototype={x:null,y:null,cx:null,cy:null,type:null,padding:null,__class__:kha_graphics2_truetype_Stbtt_$vertex};var kha_graphics2_truetype_Stbtt_$_$bitmap=$hxClasses["kha.graphics2.truetype.Stbtt__bitmap"]=function(){};kha_graphics2_truetype_Stbtt_$_$bitmap.__name__=!0,kha_graphics2_truetype_Stbtt_$_$bitmap.prototype={w:null,h:null,stride:null,pixels:null,pixels_offset:null,__class__:kha_graphics2_truetype_Stbtt_$_$bitmap};var kha_graphics2_truetype_Stbtt_$_$edge=$hxClasses["kha.graphics2.truetype.Stbtt__edge"]=function(){};kha_graphics2_truetype_Stbtt_$_$edge.__name__=!0,kha_graphics2_truetype_Stbtt_$_$edge.prototype={x0:null,y0:null,x1:null,y1:null,invert:null,__class__:kha_graphics2_truetype_Stbtt_$_$edge};var kha_graphics2_truetype_Stbtt_$_$active_$edge=$hxClasses["kha.graphics2.truetype.Stbtt__active_edge"]=function(){};kha_graphics2_truetype_Stbtt_$_$active_$edge.__name__=!0,kha_graphics2_truetype_Stbtt_$_$active_$edge.prototype={next:null,fx:null,fdx:null,fdy:null,direction:null,sy:null,ey:null,__class__:kha_graphics2_truetype_Stbtt_$_$active_$edge};var kha_graphics2_truetype_Stbtt_$_$point=$hxClasses["kha.graphics2.truetype.Stbtt__point"]=function(){};kha_graphics2_truetype_Stbtt_$_$point.__name__=!0,kha_graphics2_truetype_Stbtt_$_$point.prototype={x:null,y:null,__class__:kha_graphics2_truetype_Stbtt_$_$point};var kha_graphics2_truetype_StbTruetype=$hxClasses["kha.graphics2.truetype.StbTruetype"]=function(){};kha_graphics2_truetype_StbTruetype.__name__=!0,kha_graphics2_truetype_StbTruetype.STBTT_assert=function(e){if(!e)throw new js__$Boot_HaxeError("Error")},kha_graphics2_truetype_StbTruetype.STBTT_POINT_SIZE=function(e){return-e},kha_graphics2_truetype_StbTruetype.ttBYTE=function(e,t){return null==t&&(t=0),e.readU8(t)},kha_graphics2_truetype_StbTruetype.ttCHAR=function(e,t){null==t&&(t=0);var a=e.readU8(t);return a>=128?a-256:a},kha_graphics2_truetype_StbTruetype.ttUSHORT=function(e,t){null==t&&(t=0);var a=e.readU8(t);return e.readU8(t+1)|a<<8},kha_graphics2_truetype_StbTruetype.ttSHORT=function(e,t){null==t&&(t=0);var a=e.readU8(t),i=e.readU8(t+1)|a<<8;return 0!=(32768&i)?i-65536:i},kha_graphics2_truetype_StbTruetype.ttULONG=function(e,t){null==t&&(t=0);var a=e.readU8(t),i=e.readU8(t+1),r=e.readU8(t+2);return e.readU8(t+3)|r<<8|i<<16|a<<24},kha_graphics2_truetype_StbTruetype.ttLONG=function(e,t){null==t&&(t=0);var a=e.readU8(t),i=e.readU8(t+1),r=e.readU8(t+2);return e.readU8(t+3)|r<<8|i<<16|a<<24},kha_graphics2_truetype_StbTruetype.ttFixed=function(e,t){null==t&&(t=0);var a=e.readU8(t),i=e.readU8(t+1),r=e.readU8(t+2);return e.readU8(t+3)|r<<8|i<<16|a<<24},kha_graphics2_truetype_StbTruetype.stbtt_tag4=function(e,t,a,i,r,s){return e.readU8(t)==a&&e.readU8(t+1)==i&&e.readU8(t+2)==r&&e.readU8(t+3)==s},kha_graphics2_truetype_StbTruetype.stbtt_tag=function(e,t,a){var i=HxOverrides.cca(a,0),r=HxOverrides.cca(a,1),s=HxOverrides.cca(a,2),n=HxOverrides.cca(a,3);return e.readU8(t)==i&&e.readU8(t+1)==r&&e.readU8(t+2)==s&&e.readU8(t+3)==n},kha_graphics2_truetype_StbTruetype.stbtt__isfont=function(e){var t=HxOverrides.cca("1",0);if(e.readU8(0)==t&&0==e.readU8(1)&&0==e.readU8(2)&&0==e.readU8(3))return!0;var a=HxOverrides.cca("typ1",0),i=HxOverrides.cca("typ1",1),r=HxOverrides.cca("typ1",2),s=HxOverrides.cca("typ1",3);if(e.readU8(0)==a&&e.readU8(1)==i&&e.readU8(2)==r&&e.readU8(3)==s)return!0;var n=HxOverrides.cca("OTTO",0),_=HxOverrides.cca("OTTO",1),o=HxOverrides.cca("OTTO",2),h=HxOverrides.cca("OTTO",3);return e.readU8(0)==n&&e.readU8(1)==_&&e.readU8(2)==o&&e.readU8(3)==h||0==e.readU8(0)&&1==e.readU8(1)&&0==e.readU8(2)&&0==e.readU8(3)},kha_graphics2_truetype_StbTruetype.stbtt__find_table=function(e,t,a){for(var i=t+4,r=e.readU8(i),s=t+12,n=0,_=e.readU8(i+1)|r<<8;n<_;){var o=s+16*n++,h=HxOverrides.cca(a,0),l=HxOverrides.cca(a,1),u=HxOverrides.cca(a,2),c=HxOverrides.cca(a,3);if(e.readU8(o)==h&&e.readU8(o+1)==l&&e.readU8(o+2)==u&&e.readU8(o+3)==c){var d=o+8,p=e.readU8(d),g=e.readU8(d+1),f=e.readU8(d+2);return e.readU8(d+3)|f<<8|g<<16|p<<24}}return 0},kha_graphics2_truetype_StbTruetype.stbtt_GetFontOffsetForIndex=function(e,t){if(kha_graphics2_truetype_StbTruetype.stbtt__isfont(e))return 0==t?0:-1;var a=HxOverrides.cca("ttcf",0),i=HxOverrides.cca("ttcf",1),r=HxOverrides.cca("ttcf",2),s=HxOverrides.cca("ttcf",3);if(e.readU8(0)==a&&e.readU8(1)==i&&e.readU8(2)==r&&e.readU8(3)==s){var n,_=e.readU8(4),o=e.readU8(5),h=e.readU8(6);if(65536!=(e.readU8(7)|h<<8|o<<16|_<<24)){var l=e.readU8(4),u=e.readU8(5),c=e.readU8(6);n=131072==(e.readU8(7)|c<<8|u<<16|l<<24)}else n=!0;if(n){var d=e.readU8(8),p=e.readU8(9),g=e.readU8(10);if(t>=(e.readU8(11)|g<<8|p<<16|d<<24))return-1;var f=12+4*t,v=e.readU8(f),k=e.readU8(f+1),m=e.readU8(f+2);return e.readU8(f+3)|m<<8|k<<16|v<<24}}return-1},kha_graphics2_truetype_StbTruetype.stbtt_InitFont=function(e,t,a){var i,r,s;if(e.data=t,e.fontstart=a,i=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"cmap"),e.loca=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"loca"),e.head=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"head"),e.glyf=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"glyf"),e.hhea=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"hhea"),e.hmtx=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"hmtx"),e.kern=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"kern"),0==i||0==e.loca||0==e.head||0==e.glyf||0==e.hhea||0==e.hmtx)return!1;if(0!=(r=kha_graphics2_truetype_StbTruetype.stbtt__find_table(t,a,"maxp"))){var n=r+4,_=t.readU8(n),o=t.readU8(n+1);e.numGlyphs=o|_<<8}else e.numGlyphs=65535;var h=i+2,l=t.readU8(h);s=t.readU8(h+1)|l<<8,e.index_map=0;for(var u=0,c=s;u=l&&t>1,m=i+8,b=a.readU8(m),S=(a.readU8(m+1)|b<<8)>>1,y=i+10,x=a.readU8(y),B=a.readU8(y+1)|x<<8,T=i+12,w=a.readU8(T),E=(a.readU8(T+1)|w<<8)>>1,I=i+14,C=I;if(t>65535)return 0;var A=C+2*E,L=a.readU8(A);for(t>=(a.readU8(A+1)|L<<8)&&(C+=2*E),C-=2;0!=B;){var R=C+2*(S>>=1),$=a.readU8(R);t>(a.readU8(R+1)|$<<8)&&(C+=2*S),--B}var F,V,N=(C+=2)-I>>1,P=I+2*N,M=a.readU8(P);if(t>(a.readU8(P+1)|M<<8))throw new js__$Boot_HaxeError("Error");var O=i+14+2*k+2+2*N,D=a.readU8(O);if(V=a.readU8(O+1)|D<<8,t>1),te=i+16+12*ee,ae=a.readU8(te),ie=a.readU8(te+1),re=a.readU8(te+2),se=a.readU8(te+3)|re<<8|ie<<16|ae<<24,ne=i+16+12*ee+4,_e=a.readU8(ne),oe=a.readU8(ne+1),he=a.readU8(ne+2),le=a.readU8(ne+3)|he<<8|oe<<16|_e<<24;if(tle)){var ue=i+16+12*ee+8,ce=a.readU8(ue),de=a.readU8(ue+1),pe=a.readU8(ue+2),ge=a.readU8(ue+3)|pe<<8|de<<16|ce<<24;return 12==s?ge+t-se:ge}X=ee+1}}return 0}throw new js__$Boot_HaxeError("Error")},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointShape=function(e,t){return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(e,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,t))},kha_graphics2_truetype_StbTruetype.stbtt_setvertex=function(e,t,a,i,r,s){e.type=t,e.x=a,e.y=i,e.cx=r,e.cy=s},kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset=function(e,t){var a,i;if(t>=e.numGlyphs)return-1;if(e.indexToLocFormat>=2)return-1;if(0==e.indexToLocFormat){var r=e.glyf,s=e.data,n=e.loca+2*t,_=s.readU8(n);a=r+2*(s.readU8(n+1)|_<<8);var o=e.glyf,h=e.data,l=e.loca+2*t+2,u=h.readU8(l);i=o+2*(h.readU8(l+1)|u<<8)}else{var c=e.glyf,d=e.data,p=e.loca+4*t,g=d.readU8(p),f=d.readU8(p+1),v=d.readU8(p+2);a=c+(d.readU8(p+3)|v<<8|f<<16|g<<24);var k=e.glyf,m=e.data,b=e.loca+4*t+4,S=m.readU8(b),y=m.readU8(b+1),x=m.readU8(b+2);i=k+(m.readU8(b+3)|x<<8|y<<16|S<<24)}return a==i?-1:a},kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox=function(e,t,a){var i=kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(e,t);if(i<0)return!1;var r=e.data,s=i+2,n=r.readU8(s),_=r.readU8(s+1)|n<<8;a.x0=0!=(32768&_)?_-65536:_;var o=e.data,h=i+4,l=o.readU8(h),u=o.readU8(h+1)|l<<8;a.y0=0!=(32768&u)?u-65536:u;var c=e.data,d=i+6,p=c.readU8(d),g=c.readU8(d+1)|p<<8;a.x1=0!=(32768&g)?g-65536:g;var f=e.data,v=i+8,k=f.readU8(v),m=f.readU8(v+1)|k<<8;return a.y1=0!=(32768&m)?m-65536:m,!0},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBox=function(e,t,a){return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox(e,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,t),a)},kha_graphics2_truetype_StbTruetype.stbtt_IsGlyphEmpty=function(e,t){var a=kha_graphics2_truetype_StbTruetype.stbtt__GetGlyfOffset(e,t);if(a<0)return!0;var i=e.data,r=i.readU8(a),s=i.readU8(a+1)|r<<8;return 0==(0!=(32768&s)?s-65536:s)},kha_graphics2_truetype_StbTruetype.stbtt__close_shape=function(e,t,a,i,r,s,n,_,o,h){return i?(a&&kha_graphics2_truetype_StbTruetype.stbtt_setvertex(e[t++],3,o+n>>1,h+_>>1,o,h),kha_graphics2_truetype_StbTruetype.stbtt_setvertex(e[t++],3,r,s,n,_)):a?kha_graphics2_truetype_StbTruetype.stbtt_setvertex(e[t++],3,r,s,o,h):kha_graphics2_truetype_StbTruetype.stbtt_setvertex(e[t++],2,r,s,0,0),t},kha_graphics2_truetype_StbTruetype.copyVertices=function(e,t,a,i){for(var r=0,s=i;r0){var l,u,c,d,p,g,f,v,k,m,b,S,y,x=0,B=0,T=0,w=0,E=!1,I=!1,C=0;i=r.sub(_+10,r.get_length()-(_+10));var A=_+10+2*a,L=r.readU8(A);u=r.readU8(A+1)|L<<8,y=r.sub(_+10+2*a+2+u,r.get_length()-(_+10+2*a+2+u));var R=2*a-2,$=i.readU8(R);if(c=(d=1+(i.readU8(R+1)|$<<8))+2*a,null==(s=new Array(c)))return null;for(var F=0,V=s.length;F>1,m=g+s[w+Q+1].y>>1):(k=s[w+Q+1].x,m=s[w+Q+1].y,++Q)):(k=p,m=g),kha_graphics2_truetype_StbTruetype.stbtt_setvertex(s[n++],1,k,m,0,0),E=!1;var J=2*B,q=i.readU8(J);T=1+(i.readU8(J+1)|q<<8),++B}else 0==(1&x)?(E&&kha_graphics2_truetype_StbTruetype.stbtt_setvertex(s[n++],3,f+p>>1,v+g>>1,f,v),f=p,v=g,E=!0):(E?kha_graphics2_truetype_StbTruetype.stbtt_setvertex(s[n++],3,p,g,f,v):kha_graphics2_truetype_StbTruetype.stbtt_setvertex(s[n++],2,p,g,0,0),E=!1);++Q}n=kha_graphics2_truetype_StbTruetype.stbtt__close_shape(s,n,E,I,k,m,b,S,f,v)}else if(-1==a){var ee=1,te=r.sub(_+10,r.get_length()-(_+10)),ae=0;for(n=0,s=null;0!=ee;){var ie,re,se,ne,_e=0,oe=null,he=null,le=1,ue=0,ce=0,de=1,pe=0,ge=0,fe=te.readU8(ae),ve=te.readU8(ae+1)|fe<<8;ie=0!=(32768&ve)?ve-65536:ve,ae+=2;var ke=te.readU8(ae),me=te.readU8(ae+1)|ke<<8;if(re=0!=(32768&me)?me-65536:me,ae+=2,0==(2&ie))throw new js__$Boot_HaxeError("Error");if(0!=(1&ie)){var be=te.readU8(ae),Se=te.readU8(ae+1)|be<<8;pe=0!=(32768&Se)?Se-65536:Se,ae+=2;var ye=te.readU8(ae),xe=te.readU8(ae+1)|ye<<8;ge=0!=(32768&xe)?xe-65536:xe,ae+=2}else{var Be=te.readU8(ae);pe=Be>=128?Be-256:Be,++ae;var Te=te.readU8(ae);ge=Te>=128?Te-256:Te,++ae}if(0!=(8&ie)){var we=te.readU8(ae),Ee=te.readU8(ae+1)|we<<8;le=de=(0!=(32768&Ee)?Ee-65536:Ee)/16384,ae+=2,ue=ce=0}else if(0!=(64&ie)){var Ie=te.readU8(ae),Ce=te.readU8(ae+1)|Ie<<8;le=(0!=(32768&Ce)?Ce-65536:Ce)/16384,ae+=2,ue=ce=0;var Ae=te.readU8(ae),Le=te.readU8(ae+1)|Ae<<8;de=(0!=(32768&Le)?Le-65536:Le)/16384,ae+=2}else if(0!=(128&ie)){var Re=te.readU8(ae),$e=te.readU8(ae+1)|Re<<8;le=(0!=(32768&$e)?$e-65536:$e)/16384,ae+=2;var Fe=te.readU8(ae),Ve=te.readU8(ae+1)|Fe<<8;ue=(0!=(32768&Ve)?Ve-65536:Ve)/16384,ae+=2;var Ne=te.readU8(ae),Pe=te.readU8(ae+1)|Ne<<8;ce=(0!=(32768&Pe)?Pe-65536:Pe)/16384,ae+=2;var Me=te.readU8(ae),Oe=te.readU8(ae+1)|Me<<8;de=(0!=(32768&Oe)?Oe-65536:Oe)/16384,ae+=2}if(se=Math.sqrt(le*le+ue*ue),ne=Math.sqrt(ce*ce+de*de),oe=kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(e,re),(_e=null==oe?0:oe.length)>0){for(var De=0,Ue=_e;De0&&kha_graphics2_truetype_StbTruetype.copyVertices(s,he,0,n),kha_graphics2_truetype_StbTruetype.copyVertices(oe,he,n,_e),s=he,n+=_e}ee=32&ie}}else if(a<0)throw new js__$Boot_HaxeError("Error");if(null==s)return null;if(s.length>1),d=o.readU8(c),p=o.readU8(c+1),g=o.readU8(c+2);if(r=o.readU8(c+3)|g<<8|p<<16|d<<24,ir)){var f=22+6*_,v=o.readU8(f),k=o.readU8(f+1)|v<<8;return 0!=(32768&k)?k-65536:k}s=_+1}}return 0},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointKernAdvance=function(e,t,a){return 0==e.kern?0:kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphKernAdvance(e,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,t),kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,a))},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointHMetrics=function(e,t){return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphHMetrics(e,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,t))},kha_graphics2_truetype_StbTruetype.stbtt_GetFontVMetrics=function(e){var t=new kha_graphics2_truetype_Stbtt_$temp_$font_$v_$metrics,a=e.data,i=e.hhea+4,r=a.readU8(i),s=a.readU8(i+1)|r<<8;t.ascent=0!=(32768&s)?s-65536:s;var n=e.data,_=e.hhea+6,o=n.readU8(_),h=n.readU8(_+1)|o<<8;t.descent=0!=(32768&h)?h-65536:h;var l=e.data,u=e.hhea+8,c=l.readU8(u),d=l.readU8(u+1)|c<<8;return t.lineGap=0!=(32768&d)?d-65536:d,t},kha_graphics2_truetype_StbTruetype.stbtt_GetFontBoundingBox=function(e){var t=new kha_graphics2_truetype_Stbtt_$temp_$rect,a=e.data,i=e.head+36,r=a.readU8(i),s=a.readU8(i+1)|r<<8;t.x0=0!=(32768&s)?s-65536:s;var n=e.data,_=e.head+38,o=n.readU8(_),h=n.readU8(_+1)|o<<8;t.y0=0!=(32768&h)?h-65536:h;var l=e.data,u=e.head+40,c=l.readU8(u),d=l.readU8(u+1)|c<<8;t.x1=0!=(32768&d)?d-65536:d;var p=e.data,g=e.head+42,f=p.readU8(g),v=p.readU8(g+1)|f<<8;return t.y1=0!=(32768&v)?v-65536:v,t},kha_graphics2_truetype_StbTruetype.stbtt_ScaleForPixelHeight=function(e,t){var a=e.data,i=e.hhea+4,r=a.readU8(i),s=a.readU8(i+1)|r<<8,n=e.data,_=e.hhea+6,o=n.readU8(_),h=n.readU8(_+1)|o<<8;return t/((0!=(32768&s)?s-65536:s)-(0!=(32768&h)?h-65536:h))},kha_graphics2_truetype_StbTruetype.stbtt_ScaleForMappingEmToPixels=function(e,t){var a=e.data,i=e.head+18,r=a.readU8(i);return t/(a.readU8(i+1)|r<<8)},kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel=function(e,t,a,i,r,s){var n=new kha_graphics2_truetype_Stbtt_$temp_$rect;if(kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBox(e,t,n)){var _=n.x0,o=n.x1,h=n.y0,l=n.y1;n.x0=Math.floor(_*a+r),n.y0=Math.floor(-l*i+s),n.x1=Math.ceil(o*a+r),n.y1=Math.ceil(-h*i+s)}else n.x0=0,n.y0=0,n.x1=0,n.y1=0;return n},kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBox=function(e,t,a,i){return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(e,t,a,i,0,0)},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBoxSubpixel=function(e,t,a,i,r,s){return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(e,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,t),a,i,r,s)},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBox=function(e,t,a,i){return kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapBoxSubpixel(e,t,a,i,0,0)},kha_graphics2_truetype_StbTruetype.stbtt__new_active=function(e,t,a,i){var r=new kha_graphics2_truetype_Stbtt_$_$active_$edge,s=(e[t].x1-e[t].x0)/(e[t].y1-e[t].y0);return null==r?r:(r.fdx=s,r.fdy=0!=s?1/s:0,r.fx=e[t].x0+s*(i-e[t].y0),r.fx-=a,r.direction=e[t].invert?1:-1,r.sy=e[t].y0,r.ey=e[t].y1,r.next=null,r)},kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge=function(e,t,a,i,r,s,n,_){if(s!=_){if(!(s<_))throw new js__$Boot_HaxeError("Error");if(!(i.sy<=i.ey))throw new js__$Boot_HaxeError("Error");if(!(s>i.ey||_i.ey&&(n+=(n-r)*(i.ey-_)/(_-s),_=i.ey),r==a){if(!(n<=a+1))throw new js__$Boot_HaxeError("Error")}else if(r==a+1){if(!(n>=a))throw new js__$Boot_HaxeError("Error")}else if(r<=a){if(!(n<=a))throw new js__$Boot_HaxeError("Error")}else if(r>=a+1){if(!(n>=a+1))throw new js__$Boot_HaxeError("Error")}else if(!(n>=a&&n<=a+1))throw new js__$Boot_HaxeError("Error");if(r<=a&&n<=a){var o=t+a,h=e;h[o]=h[o]+i.direction*(_-s)}else if(!(r>=a+1&&n>=a+1)){if(!(r>=a&&r<=a+1&&n>=a&&n<=a+1))throw new js__$Boot_HaxeError("Error");var l=t+a,u=e;u[l]=u[l]+i.direction*(_-s)*(1-(r-a+(n-a))/2)}}}},kha_graphics2_truetype_StbTruetype.stbtt__fill_active_edges_new=function(e,t,a,i,r,s){for(var n=s+1;null!=r;){if(!(r.ey>=s))throw new js__$Boot_HaxeError("Error");if(0==r.fdx){var _=r.fx;_=0?(kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,0|_,r,_,s,_,n),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(t,a-1,_+1|0,r,_,s,_,n)):kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(t,a-1,0,r,_,s,_,n))}else{var o,h,l,u,c=r.fx,d=r.fdx,p=c+d,g=r.fdy;if(!(r.sy<=n&&r.ey>=s))throw new js__$Boot_HaxeError("Error");if(r.sy>s?(o=c+d*(r.sy-s),l=r.sy):(o=c,l=s),r.ey=0&&h>=0&&o=0&&vh){var I;I=l=n-(l-s),l=u=n-(u-s),u=I,I=h,h=o,o=I,d=-d,g=-g,I=c,c=p,p=I}x=0|h,B=((y=0|o)+1-c)*g+s,E=(w=r.direction)*(B-l);var C=y,A=e;A[C]=A[C]+E*(1-(o-y+(y+1-y))/2),T=w*g;for(var L=y+1,R=x;Lj?(kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,c,W,z,U),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,z,U,j,H),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,j,H,K,X)):Kj?(kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,c,W,j,H),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,j,H,z,U),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,z,U,K,X)):cz?(kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,c,W,z,U),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,z,U,K,X)):Kz?(kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,c,W,z,U),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,z,U,K,X)):cj?(kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,c,W,j,H),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,j,H,K,X)):Kj?(kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,c,W,j,H),kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,j,H,K,X)):kha_graphics2_truetype_StbTruetype.stbtt__handle_clipped_edge(e,0,G,r,c,W,K,X)}}r=r.next}},kha_graphics2_truetype_StbTruetype.stbtt__rasterize_sorted_edges=function(e,t,a,i,r,s){var n,_,o,h=null,l=0,u=0,c=0;if(e.w>64){var d=2*e.w+1;_=new Array(d)}else _=new Array(129);for(o=_,u=e.w,n=s,t[c+a].y0=s+e.h+1;l=f))throw new js__$Boot_HaxeError("Error");x.next=h,h=x}++c}null!=h&&kha_graphics2_truetype_StbTruetype.stbtt__fill_active_edges_new(_,o,u+1,e.w,h,f);for(var B=0,T=0,w=e.w;T255&&(I=255),e.pixels.writeU8(e.pixels_offset+l*e.stride+C,I)}for(g=null,p=h;null!=p;){var A=p;A.fx+=A.fdx,g=p,p=p.next}++n,++l}},kha_graphics2_truetype_StbTruetype.STBTT__COMPARE=function(e,t){return e.y00;){var o=e[a-1];if(!kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(_,o))break;e[a]=e[a-1],--a}s!=a&&(e[a]=n)}},kha_graphics2_truetype_StbTruetype.stbtt__sort_edges_quicksort=function(e,t,a){for(;a>12;){var i,r,s,n,_,o;if(n=a>>1,r=kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(e[t],e[t+n]),s=kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(e[t+n],e[t+a-1]),r!=s){var h;i=e[t+(h=kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(e[t],e[t+a-1])==s?0:a-1)],e[t+h]=e[t+n],e[t+n]=i}for(i=e[t],e[t]=e[t+n],e[t+n]=i,_=1,o=a-1;;){for(;kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(e[t+_],e[t]);)++_;for(;kha_graphics2_truetype_StbTruetype.STBTT__COMPARE(e[t],e[t+o]);)--o;if(_>=o)break;i=e[t+_],e[t+_]=e[t+o],e[t+o]=i,++_,--o}ox[B+E].y:x[B+d].y16?1:(c*c+d*d>o?(kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(e,t,a,i,(a+r)/2,(i+s)/2,l,u,o,h+1),kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(e,t,l,u,(r+n)/2,(s+_)/2,n,_,o,h+1)):(kha_graphics2_truetype_StbTruetype.stbtt__add_point(e,t.value,n,_),t.value+=1),1)},kha_graphics2_truetype_StbTruetype.stbtt_FlattenCurves=function(e,t,a,i,r){for(var s=null,n=0,_=a*a,o=0,h=0,l=0,u=t;l=0&&(i.value[o]=n-h),++o,h=n,p=e[b].x,g=e[b].y,kha_graphics2_truetype_StbTruetype.stbtt__add_point(s,n++,p,g);break;case 2:p=e[b].x,g=e[b].y,kha_graphics2_truetype_StbTruetype.stbtt__add_point(s,n++,p,g);break;case 3:var S={value:n};kha_graphics2_truetype_StbTruetype.stbtt__tesselate_curve(s,S,p,g,e[b].cx,e[b].cy,e[b].x,e[b].y,_,0),n=S.value,p=e[b].x,g=e[b].y}}i.value[o]=n-h}return s},kha_graphics2_truetype_StbTruetype.stbtt_Rasterize=function(e,t,a,i,r,s,n,_,o,h,l){var u=r>s?s:r,c=0,d=null,p={value:c},g=new kha_graphics2_truetype_VectorOfIntPointer,f=kha_graphics2_truetype_StbTruetype.stbtt_FlattenCurves(a,i,t/u,g,p);c=p.value,d=g.value,null!=f&&kha_graphics2_truetype_StbTruetype.stbtt__rasterize(e,f,d,c,r,s,n,_,o,h,l)},kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel=function(e,t,a,i,r,s,n){var _,o,h,l,u=new kha_graphics2_truetype_Stbtt_$_$bitmap,c=kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(e,s),d=c.length;if(0==t&&(t=a),0==a){if(0==t)return null;a=t}var p=kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(e,s,t,a,i,r);return _=p.x0,o=p.y0,h=p.x1,l=p.y1,u.w=h-_,u.h=l-o,u.pixels=null,n.width=u.w,n.height=u.h,n.xoff=_,n.yoff=o,0!=u.w&&0!=u.h&&(u.pixels=kha_internal_BytesBlob.alloc(u.w*u.h),null!=u.pixels&&(u.stride=u.w,kha_graphics2_truetype_StbTruetype.stbtt_Rasterize(u,.35,c,d,t,a,i,r,_,o,!0))),u.pixels},kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmap=function(e,t,a,i,r){return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel(e,t,a,0,0,i,r)},kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel=function(e,t,a,i,r,s,n,_,o,h,l){var u=0,c=0,d=kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphShape(e,l),p=null==d?0:d.length,g=new kha_graphics2_truetype_Stbtt_$_$bitmap,f=kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapBoxSubpixel(e,l,n,_,o,h);u=f.x0,c=f.y0,g.pixels=t,g.pixels_offset=a,g.w=i,g.h=r,g.stride=s,0!=g.w&&0!=g.h&&kha_graphics2_truetype_StbTruetype.stbtt_Rasterize(g,.35,d,p,n,_,o,h,u,c,!0)},kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmap=function(e,t,a,i,r,s,n,_,o){kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel(e,t,a,i,r,s,n,_,0,0,o)},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapSubpixel=function(e,t,a,i,r,s,n){return kha_graphics2_truetype_StbTruetype.stbtt_GetGlyphBitmapSubpixel(e,t,a,i,r,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,s),n)},kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmapSubpixel=function(e,t,a,i,r,s,n,_,o,h,l){kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmapSubpixel(e,t,a,i,r,s,n,_,o,h,kha_graphics2_truetype_StbTruetype.stbtt_FindGlyphIndex(e,l))},kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmap=function(e,t,a,i,r){return kha_graphics2_truetype_StbTruetype.stbtt_GetCodepointBitmapSubpixel(e,t,a,0,0,i,r)},kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmap=function(e,t,a,i,r,s,n,_,o){kha_graphics2_truetype_StbTruetype.stbtt_MakeCodepointBitmapSubpixel(e,t,a,i,r,s,n,_,0,0,o)},kha_graphics2_truetype_StbTruetype.stbtt_BakeFontBitmap=function(e,t,a,i,r,s,n,_){var o,h,l,u,c=new kha_graphics2_truetype_Stbtt_$fontinfo;if(!kha_graphics2_truetype_StbTruetype.stbtt_InitFont(c,e,t))return-1;for(var d=0,p=r*s;d=r&&(l=u,h=1),l+T+1>=s)return-f;if(h+B>=r)throw new js__$Boot_HaxeError("Error");if(l+T>=s)throw new js__$Boot_HaxeError("Error");kha_graphics2_truetype_StbTruetype.stbtt_MakeGlyphBitmap(c,i,h+l*r,B,T,r,o,o,w),_[f].x0=h,_[f].y0=l,_[f].x1=h+B,_[f].y1=l+T,_[f].xadvance=o*m,_[f].xoff=b,_[f].yoff=S,h=h+B+1,l+T+1>u&&(u=l+T+1),++f}return u},kha_graphics2_truetype_StbTruetype.stbtt_GetBakedQuad=function(e,t,a,i,r,s,n,_){var o=_?0:-.5,h=1/t,l=1/a,u=e[i],c=Math.floor(r.value+u.xoff+.5),d=Math.floor(s.value+u.yoff+.5);n.x0=c+o,n.y0=d+o,n.x1=c+u.x1-u.x0+o,n.y1=d+u.y1-u.y0+o,n.s0=u.x0*h,n.t0=u.y0*l,n.s1=u.x1*h,n.t1=u.y1*l,r.value+=u.xadvance};var kha_graphics4_BlendingFactor=$hxClasses["kha.graphics4.BlendingFactor"]={__ename__:!0,__constructs__:["Undefined","BlendOne","BlendZero","SourceAlpha","DestinationAlpha","InverseSourceAlpha","InverseDestinationAlpha","SourceColor","DestinationColor","InverseSourceColor","InverseDestinationColor"]};kha_graphics4_BlendingFactor.Undefined=["Undefined",0],kha_graphics4_BlendingFactor.Undefined.toString=$estr,kha_graphics4_BlendingFactor.Undefined.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.BlendOne=["BlendOne",1],kha_graphics4_BlendingFactor.BlendOne.toString=$estr,kha_graphics4_BlendingFactor.BlendOne.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.BlendZero=["BlendZero",2],kha_graphics4_BlendingFactor.BlendZero.toString=$estr,kha_graphics4_BlendingFactor.BlendZero.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.SourceAlpha=["SourceAlpha",3],kha_graphics4_BlendingFactor.SourceAlpha.toString=$estr,kha_graphics4_BlendingFactor.SourceAlpha.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.DestinationAlpha=["DestinationAlpha",4],kha_graphics4_BlendingFactor.DestinationAlpha.toString=$estr,kha_graphics4_BlendingFactor.DestinationAlpha.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.InverseSourceAlpha=["InverseSourceAlpha",5],kha_graphics4_BlendingFactor.InverseSourceAlpha.toString=$estr,kha_graphics4_BlendingFactor.InverseSourceAlpha.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.InverseDestinationAlpha=["InverseDestinationAlpha",6],kha_graphics4_BlendingFactor.InverseDestinationAlpha.toString=$estr,kha_graphics4_BlendingFactor.InverseDestinationAlpha.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.SourceColor=["SourceColor",7],kha_graphics4_BlendingFactor.SourceColor.toString=$estr,kha_graphics4_BlendingFactor.SourceColor.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.DestinationColor=["DestinationColor",8],kha_graphics4_BlendingFactor.DestinationColor.toString=$estr,kha_graphics4_BlendingFactor.DestinationColor.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.InverseSourceColor=["InverseSourceColor",9],kha_graphics4_BlendingFactor.InverseSourceColor.toString=$estr,kha_graphics4_BlendingFactor.InverseSourceColor.__enum__=kha_graphics4_BlendingFactor,kha_graphics4_BlendingFactor.InverseDestinationColor=["InverseDestinationColor",10],kha_graphics4_BlendingFactor.InverseDestinationColor.toString=$estr,kha_graphics4_BlendingFactor.InverseDestinationColor.__enum__=kha_graphics4_BlendingFactor;var kha_graphics4_BlendingOperation=$hxClasses["kha.graphics4.BlendingOperation"]={__ename__:!0,__constructs__:["Add","Subtract","ReverseSubtract","Min","Max"]};kha_graphics4_BlendingOperation.Add=["Add",0],kha_graphics4_BlendingOperation.Add.toString=$estr,kha_graphics4_BlendingOperation.Add.__enum__=kha_graphics4_BlendingOperation,kha_graphics4_BlendingOperation.Subtract=["Subtract",1],kha_graphics4_BlendingOperation.Subtract.toString=$estr,kha_graphics4_BlendingOperation.Subtract.__enum__=kha_graphics4_BlendingOperation,kha_graphics4_BlendingOperation.ReverseSubtract=["ReverseSubtract",2],kha_graphics4_BlendingOperation.ReverseSubtract.toString=$estr,kha_graphics4_BlendingOperation.ReverseSubtract.__enum__=kha_graphics4_BlendingOperation,kha_graphics4_BlendingOperation.Min=["Min",3],kha_graphics4_BlendingOperation.Min.toString=$estr,kha_graphics4_BlendingOperation.Min.__enum__=kha_graphics4_BlendingOperation,kha_graphics4_BlendingOperation.Max=["Max",4],kha_graphics4_BlendingOperation.Max.toString=$estr,kha_graphics4_BlendingOperation.Max.__enum__=kha_graphics4_BlendingOperation;var kha_graphics4_CompareMode=$hxClasses["kha.graphics4.CompareMode"]={__ename__:!0,__constructs__:["Always","Never","Equal","NotEqual","Less","LessEqual","Greater","GreaterEqual"]};kha_graphics4_CompareMode.Always=["Always",0],kha_graphics4_CompareMode.Always.toString=$estr,kha_graphics4_CompareMode.Always.__enum__=kha_graphics4_CompareMode,kha_graphics4_CompareMode.Never=["Never",1],kha_graphics4_CompareMode.Never.toString=$estr,kha_graphics4_CompareMode.Never.__enum__=kha_graphics4_CompareMode,kha_graphics4_CompareMode.Equal=["Equal",2],kha_graphics4_CompareMode.Equal.toString=$estr,kha_graphics4_CompareMode.Equal.__enum__=kha_graphics4_CompareMode,kha_graphics4_CompareMode.NotEqual=["NotEqual",3],kha_graphics4_CompareMode.NotEqual.toString=$estr,kha_graphics4_CompareMode.NotEqual.__enum__=kha_graphics4_CompareMode,kha_graphics4_CompareMode.Less=["Less",4],kha_graphics4_CompareMode.Less.toString=$estr,kha_graphics4_CompareMode.Less.__enum__=kha_graphics4_CompareMode,kha_graphics4_CompareMode.LessEqual=["LessEqual",5],kha_graphics4_CompareMode.LessEqual.toString=$estr,kha_graphics4_CompareMode.LessEqual.__enum__=kha_graphics4_CompareMode,kha_graphics4_CompareMode.Greater=["Greater",6],kha_graphics4_CompareMode.Greater.toString=$estr,kha_graphics4_CompareMode.Greater.__enum__=kha_graphics4_CompareMode,kha_graphics4_CompareMode.GreaterEqual=["GreaterEqual",7],kha_graphics4_CompareMode.GreaterEqual.toString=$estr,kha_graphics4_CompareMode.GreaterEqual.__enum__=kha_graphics4_CompareMode;var kha_graphics4_ConstantLocation=$hxClasses["kha.graphics4.ConstantLocation"]=function(){};kha_graphics4_ConstantLocation.__name__=!0;var kha_graphics4_CubeMap=$hxClasses["kha.graphics4.CubeMap"]=function(e){this.texture_=e};kha_graphics4_CubeMap.__name__=!0,kha_graphics4_CubeMap.__interfaces__=[kha_Resource,kha_Canvas],kha_graphics4_CubeMap.getRenderTargetFormat=function(e){switch(e[1]){case 0:return 0;case 2:return 3;case 3:return 4;case 4:return 1;default:return 0}},kha_graphics4_CubeMap.getDepthBufferBits=function(e){switch(e){case 0:return-1;case 1:case 2:case 3:return 24;case 4:return 32;case 5:return 16}},kha_graphics4_CubeMap.getStencilBufferBits=function(e){switch(e){case 0:case 1:return-1;case 2:case 3:case 4:return 8;case 5:return 0}},kha_graphics4_CubeMap.getTextureFormat=function(e){switch(e[1]){case 0:return 0;case 2:return 3;case 4:return 4;case 5:return 5;default:return 1}},kha_graphics4_CubeMap.createRenderTarget=function(e,t,a,i){null==i&&(i=0),null==a&&(a=0),null==t&&(t=kha_graphics4_TextureFormat.RGBA32);var r=new kha_graphics4_CubeMap(null);return r.format=t,r.renderTarget_=Krom.createRenderTargetCubeMap(e,kha_graphics4_CubeMap.getDepthBufferBits(a),kha_graphics4_CubeMap.getRenderTargetFormat(t),kha_graphics4_CubeMap.getStencilBufferBits(a),i),r},kha_graphics4_CubeMap.prototype={texture_:null,renderTarget_:null,format:null,graphics4:null,unload:function(){},lock:function(e){return null==e&&(e=0),null},unlock:function(){},width:null,get_width:function(){return null==this.texture_?this.renderTarget_.width:this.texture_.width},height:null,get_height:function(){return null==this.texture_?this.renderTarget_.height:this.texture_.height},g1:null,get_g1:function(){return null},g2:null,get_g2:function(){return null},g4:null,get_g4:function(){return null==this.graphics4&&(this.graphics4=new kha_krom_Graphics(this)),this.graphics4},__class__:kha_graphics4_CubeMap};var kha_graphics4_CullMode=$hxClasses["kha.graphics4.CullMode"]={__ename__:!0,__constructs__:["Clockwise","CounterClockwise","None"]};kha_graphics4_CullMode.Clockwise=["Clockwise",0],kha_graphics4_CullMode.Clockwise.toString=$estr,kha_graphics4_CullMode.Clockwise.__enum__=kha_graphics4_CullMode,kha_graphics4_CullMode.CounterClockwise=["CounterClockwise",1],kha_graphics4_CullMode.CounterClockwise.toString=$estr,kha_graphics4_CullMode.CounterClockwise.__enum__=kha_graphics4_CullMode,kha_graphics4_CullMode.None=["None",2],kha_graphics4_CullMode.None.toString=$estr,kha_graphics4_CullMode.None.__enum__=kha_graphics4_CullMode;var kha_graphics4_FragmentShader=$hxClasses["kha.graphics4.FragmentShader"]=function(e,t){null!=e&&(this.shader=Krom.createFragmentShader(e[0].bytes.b.bufferValue,t[0]))};kha_graphics4_FragmentShader.__name__=!0,kha_graphics4_FragmentShader.fromSource=function(e){var t=new kha_graphics4_FragmentShader(null,null);return t.shader=Krom.createFragmentShaderFromSource(e),t},kha_graphics4_FragmentShader.prototype={shader:null,delete:function(){Krom.deleteShader(this.shader),this.shader=null},__class__:kha_graphics4_FragmentShader};var kha_graphics4_GeometryShader=$hxClasses["kha.graphics4.GeometryShader"]=function(e,t){this.shader=Krom.createGeometryShader(e[0].bytes.b.bufferValue,t[0])};kha_graphics4_GeometryShader.__name__=!0,kha_graphics4_GeometryShader.prototype={shader:null,delete:function(){Krom.deleteShader(this.shader),this.shader=null},__class__:kha_graphics4_GeometryShader};var kha_graphics4_Graphics=$hxClasses["kha.graphics4.Graphics"]=function(){};kha_graphics4_Graphics.__name__=!0,kha_graphics4_Graphics.prototype={begin:null,beginFace:null,beginEye:null,end:null,vsynced:null,refreshRate:null,clear:null,viewport:null,scissor:null,disableScissor:null,setVertexBuffer:null,setVertexBuffers:null,setIndexBuffer:null,setTexture:null,setTextureDepth:null,setVideoTexture:null,setImageTexture:null,setTextureParameters:null,setTexture3DParameters:null,setCubeMap:null,setCubeMapDepth:null,renderTargetsInvertedY:null,instancedRenderingAvailable:null,setPipeline:null,setBool:null,setInt:null,setFloat:null,setFloat2:null,setFloat3:null,setFloat4:null,setFloats:null,setVector2:null,setVector3:null,setVector4:null,setMatrix:null,setMatrix3:null,drawIndexedVertices:null,drawIndexedVerticesInstanced:null,flush:null,__class__:kha_graphics4_Graphics};var kha_graphics4_ImageShaderPainter=$hxClasses["kha.graphics4.ImageShaderPainter"]=function(e){this.destinationBlend=kha_graphics4_BlendingFactor.Undefined,this.sourceBlend=kha_graphics4_BlendingFactor.Undefined,this.myPipeline=null,this.bilinearMipmaps=!1,this.bilinear=!1,this.g=e,this.bufferIndex=0,kha_graphics4_ImageShaderPainter.initShaders(),this.initBuffers(),this.projectionLocation=kha_graphics4_ImageShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"),this.textureLocation=kha_graphics4_ImageShaderPainter.shaderPipeline.getTextureUnit("tex")};kha_graphics4_ImageShaderPainter.__name__=!0,kha_graphics4_ImageShaderPainter.initShaders=function(){null==kha_graphics4_ImageShaderPainter.shaderPipeline&&(kha_graphics4_ImageShaderPainter.shaderPipeline=new kha_graphics4_PipelineState,kha_graphics4_ImageShaderPainter.shaderPipeline.fragmentShader=kha_Shaders.painter_image_frag,kha_graphics4_ImageShaderPainter.shaderPipeline.vertexShader=kha_Shaders.painter_image_vert,kha_graphics4_ImageShaderPainter.structure=new kha_graphics4_VertexStructure,kha_graphics4_ImageShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3),kha_graphics4_ImageShaderPainter.structure.add("texPosition",kha_graphics4_VertexData.Float2),kha_graphics4_ImageShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4),kha_graphics4_ImageShaderPainter.shaderPipeline.inputLayout=[kha_graphics4_ImageShaderPainter.structure],kha_graphics4_ImageShaderPainter.shaderPipeline.blendSource=kha_graphics4_BlendingFactor.BlendOne,kha_graphics4_ImageShaderPainter.shaderPipeline.blendDestination=kha_graphics4_BlendingFactor.InverseSourceAlpha,kha_graphics4_ImageShaderPainter.shaderPipeline.alphaBlendSource=kha_graphics4_BlendingFactor.SourceAlpha,kha_graphics4_ImageShaderPainter.shaderPipeline.alphaBlendDestination=kha_graphics4_BlendingFactor.InverseSourceAlpha,kha_graphics4_ImageShaderPainter.shaderPipeline.compile())},kha_graphics4_ImageShaderPainter.prototype={projectionMatrix:null,projectionLocation:null,textureLocation:null,bufferIndex:null,rectVertexBuffer:null,rectVertices:null,indexBuffer:null,lastTexture:null,bilinear:null,bilinearMipmaps:null,g:null,myPipeline:null,sourceBlend:null,destinationBlend:null,get_pipeline:function(){return this.myPipeline},set_pipeline:function(e){return null==e?(this.projectionLocation=kha_graphics4_ImageShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"),this.textureLocation=kha_graphics4_ImageShaderPainter.shaderPipeline.getTextureUnit("tex")):(this.projectionLocation=e.getConstantLocation("projectionMatrix"),this.textureLocation=e.getTextureUnit("tex")),this.myPipeline=e},setProjection:function(e){this.projectionMatrix=e},initBuffers:function(){this.rectVertexBuffer=new kha_graphics4_VertexBuffer(4*kha_graphics4_ImageShaderPainter.bufferSize,kha_graphics4_ImageShaderPainter.structure,kha_graphics4_Usage.DynamicUsage),this.rectVertices=this.rectVertexBuffer.lock(),this.indexBuffer=new kha_graphics4_IndexBuffer(3*kha_graphics4_ImageShaderPainter.bufferSize*2,kha_graphics4_Usage.StaticUsage);for(var e=this.indexBuffer.lock(),t=0,a=kha_graphics4_ImageShaderPainter.bufferSize;t=kha_graphics4_ImageShaderPainter.bufferSize||null!=this.lastTexture&&u!=this.lastTexture)&&this.drawBuffer();var c=.00392156862745098*((16711680&l)>>>16),d=.00392156862745098*((65280&l)>>>8),p=.00392156862745098*(255&l),g=.00392156862745098*(l>>>24)*h,f=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[f+5]=c,this.rectVertices[f+6]=d,this.rectVertices[f+7]=p,this.rectVertices[f+8]=g,this.rectVertices[f+14]=c,this.rectVertices[f+15]=d,this.rectVertices[f+16]=p,this.rectVertices[f+17]=g,this.rectVertices[f+23]=c,this.rectVertices[f+24]=d,this.rectVertices[f+25]=p,this.rectVertices[f+26]=g,this.rectVertices[f+32]=c,this.rectVertices[f+33]=d,this.rectVertices[f+34]=p,this.rectVertices[f+35]=g;var v=u.get_width()/u.get_realWidth(),k=u.get_height()/u.get_realHeight(),m=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[m+3]=0,this.rectVertices[m+4]=k,this.rectVertices[m+12]=0,this.rectVertices[m+13]=0,this.rectVertices[m+21]=v,this.rectVertices[m+22]=0,this.rectVertices[m+30]=v,this.rectVertices[m+31]=k;var b=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[b]=t,this.rectVertices[b+1]=a,this.rectVertices[b+2]=-5,this.rectVertices[b+9]=i,this.rectVertices[b+10]=r,this.rectVertices[b+11]=-5,this.rectVertices[b+18]=s,this.rectVertices[b+19]=n,this.rectVertices[b+20]=-5,this.rectVertices[b+27]=_,this.rectVertices[b+28]=o,this.rectVertices[b+29]=-5,++this.bufferIndex,this.lastTexture=u},drawImage2:function(e,t,a,i,r,s,n,_,o,h,l,u,c,d,p){var g=e;(this.bufferIndex+1>=kha_graphics4_ImageShaderPainter.bufferSize||null!=this.lastTexture&&g!=this.lastTexture)&&this.drawBuffer();var f=t/g.get_realWidth(),v=a/g.get_realHeight(),k=(t+i)/g.get_realWidth(),m=(a+r)/g.get_realHeight(),b=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[b+3]=f,this.rectVertices[b+4]=m,this.rectVertices[b+12]=f,this.rectVertices[b+13]=v,this.rectVertices[b+21]=k,this.rectVertices[b+22]=v,this.rectVertices[b+30]=k,this.rectVertices[b+31]=m;var S=.00392156862745098*((16711680&p)>>>16),y=.00392156862745098*((65280&p)>>>8),x=.00392156862745098*(255&p),B=.00392156862745098*(p>>>24)*d,T=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[T+5]=S,this.rectVertices[T+6]=y,this.rectVertices[T+7]=x,this.rectVertices[T+8]=B,this.rectVertices[T+14]=S,this.rectVertices[T+15]=y,this.rectVertices[T+16]=x,this.rectVertices[T+17]=B,this.rectVertices[T+23]=S,this.rectVertices[T+24]=y,this.rectVertices[T+25]=x,this.rectVertices[T+26]=B,this.rectVertices[T+32]=S,this.rectVertices[T+33]=y,this.rectVertices[T+34]=x,this.rectVertices[T+35]=B;var w=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[w]=s,this.rectVertices[w+1]=n,this.rectVertices[w+2]=-5,this.rectVertices[w+9]=_,this.rectVertices[w+10]=o,this.rectVertices[w+11]=-5,this.rectVertices[w+18]=h,this.rectVertices[w+19]=l,this.rectVertices[w+20]=-5,this.rectVertices[w+27]=u,this.rectVertices[w+28]=c,this.rectVertices[w+29]=-5,++this.bufferIndex,this.lastTexture=g},drawImageScale:function(e,t,a,i,r,s,n,_,o,h,l){var u=e;(this.bufferIndex+1>=kha_graphics4_ImageShaderPainter.bufferSize||null!=this.lastTexture&&u!=this.lastTexture)&&this.drawBuffer();var c=t/u.get_realWidth(),d=a/u.get_realHeight(),p=(t+i)/u.get_realWidth(),g=(a+r)/u.get_realHeight(),f=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[f+3]=c,this.rectVertices[f+4]=g,this.rectVertices[f+12]=c,this.rectVertices[f+13]=d,this.rectVertices[f+21]=p,this.rectVertices[f+22]=d,this.rectVertices[f+30]=p,this.rectVertices[f+31]=g;var v=.00392156862745098*((16711680&l)>>>16),k=.00392156862745098*((65280&l)>>>8),m=.00392156862745098*(255&l),b=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[b+5]=v,this.rectVertices[b+6]=k,this.rectVertices[b+7]=m,this.rectVertices[b+8]=h,this.rectVertices[b+14]=v,this.rectVertices[b+15]=k,this.rectVertices[b+16]=m,this.rectVertices[b+17]=h,this.rectVertices[b+23]=v,this.rectVertices[b+24]=k,this.rectVertices[b+25]=m,this.rectVertices[b+26]=h,this.rectVertices[b+32]=v,this.rectVertices[b+33]=k,this.rectVertices[b+34]=m,this.rectVertices[b+35]=h;var S=this.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;this.rectVertices[S]=s,this.rectVertices[S+1]=o,this.rectVertices[S+2]=-5,this.rectVertices[S+9]=s,this.rectVertices[S+10]=n,this.rectVertices[S+11]=-5,this.rectVertices[S+18]=_,this.rectVertices[S+19]=n,this.rectVertices[S+20]=-5,this.rectVertices[S+27]=_,this.rectVertices[S+28]=o,this.rectVertices[S+29]=-5,++this.bufferIndex,this.lastTexture=u},end:function(){this.bufferIndex>0&&this.drawBuffer(),this.lastTexture=null},__class__:kha_graphics4_ImageShaderPainter};var kha_graphics4_ColoredShaderPainter=$hxClasses["kha.graphics4.ColoredShaderPainter"]=function(e){this.destinationBlend=kha_graphics4_BlendingFactor.Undefined,this.sourceBlend=kha_graphics4_BlendingFactor.Undefined,this.myPipeline=null,this.g=e,this.bufferIndex=0,this.triangleBufferIndex=0,kha_graphics4_ColoredShaderPainter.initShaders(),this.initBuffers(),this.projectionLocation=kha_graphics4_ColoredShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix")};kha_graphics4_ColoredShaderPainter.__name__=!0,kha_graphics4_ColoredShaderPainter.initShaders=function(){null==kha_graphics4_ColoredShaderPainter.shaderPipeline&&(kha_graphics4_ColoredShaderPainter.shaderPipeline=new kha_graphics4_PipelineState,kha_graphics4_ColoredShaderPainter.shaderPipeline.fragmentShader=kha_Shaders.painter_colored_frag,kha_graphics4_ColoredShaderPainter.shaderPipeline.vertexShader=kha_Shaders.painter_colored_vert,kha_graphics4_ColoredShaderPainter.structure=new kha_graphics4_VertexStructure,kha_graphics4_ColoredShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3),kha_graphics4_ColoredShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4),kha_graphics4_ColoredShaderPainter.shaderPipeline.inputLayout=[kha_graphics4_ColoredShaderPainter.structure],kha_graphics4_ColoredShaderPainter.shaderPipeline.blendSource=kha_graphics4_BlendingFactor.SourceAlpha,kha_graphics4_ColoredShaderPainter.shaderPipeline.blendDestination=kha_graphics4_BlendingFactor.InverseSourceAlpha,kha_graphics4_ColoredShaderPainter.shaderPipeline.alphaBlendSource=kha_graphics4_BlendingFactor.SourceAlpha,kha_graphics4_ColoredShaderPainter.shaderPipeline.alphaBlendDestination=kha_graphics4_BlendingFactor.InverseSourceAlpha,kha_graphics4_ColoredShaderPainter.shaderPipeline.compile())},kha_graphics4_ColoredShaderPainter.prototype={projectionMatrix:null,projectionLocation:null,bufferIndex:null,rectVertexBuffer:null,rectVertices:null,indexBuffer:null,triangleBufferIndex:null,triangleVertexBuffer:null,triangleVertices:null,triangleIndexBuffer:null,g:null,myPipeline:null,sourceBlend:null,destinationBlend:null,get_pipeline:function(){return this.myPipeline},set_pipeline:function(e){return this.projectionLocation=null==e?kha_graphics4_ColoredShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"):e.getConstantLocation("projectionMatrix"),this.myPipeline=e},setProjection:function(e){this.projectionMatrix=e},initBuffers:function(){this.rectVertexBuffer=new kha_graphics4_VertexBuffer(4*kha_graphics4_ColoredShaderPainter.bufferSize,kha_graphics4_ColoredShaderPainter.structure,kha_graphics4_Usage.DynamicUsage),this.rectVertices=this.rectVertexBuffer.lock(),this.indexBuffer=new kha_graphics4_IndexBuffer(3*kha_graphics4_ColoredShaderPainter.bufferSize*2,kha_graphics4_Usage.StaticUsage);for(var e=this.indexBuffer.lock(),t=0,a=kha_graphics4_ColoredShaderPainter.bufferSize;t>>24));this.rectVertices[a+3]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+4]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+5]=.00392156862745098*(255&t),this.rectVertices[a+6]=i,this.rectVertices[a+10]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+11]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+12]=.00392156862745098*(255&t),this.rectVertices[a+13]=i,this.rectVertices[a+17]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+18]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+19]=.00392156862745098*(255&t),this.rectVertices[a+20]=i,this.rectVertices[a+24]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+25]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+26]=.00392156862745098*(255&t),this.rectVertices[a+27]=i},setTriVertices:function(e,t,a,i,r,s){var n=7*this.triangleBufferIndex*3;this.triangleVertices[n]=e,this.triangleVertices[n+1]=t,this.triangleVertices[n+2]=-5,this.triangleVertices[n+7]=a,this.triangleVertices[n+8]=i,this.triangleVertices[n+9]=-5,this.triangleVertices[n+14]=r,this.triangleVertices[n+15]=s,this.triangleVertices[n+16]=-5},setTriColors:function(e,t){var a=7*this.triangleBufferIndex*3,i=e*(.00392156862745098*(t>>>24));this.triangleVertices[a+3]=.00392156862745098*((16711680&t)>>>16),this.triangleVertices[a+4]=.00392156862745098*((65280&t)>>>8),this.triangleVertices[a+5]=.00392156862745098*(255&t),this.triangleVertices[a+6]=i,this.triangleVertices[a+10]=.00392156862745098*((16711680&t)>>>16),this.triangleVertices[a+11]=.00392156862745098*((65280&t)>>>8),this.triangleVertices[a+12]=.00392156862745098*(255&t),this.triangleVertices[a+13]=i,this.triangleVertices[a+17]=.00392156862745098*((16711680&t)>>>16),this.triangleVertices[a+18]=.00392156862745098*((65280&t)>>>8),this.triangleVertices[a+19]=.00392156862745098*(255&t),this.triangleVertices[a+20]=i},drawBuffer:function(e){e||this.triangleBufferIndex>0&&this.drawTriBuffer(!0),this.rectVertexBuffer.unlock(),this.g.setVertexBuffer(this.rectVertexBuffer),this.g.setIndexBuffer(this.indexBuffer),this.g.setPipeline(null==this.get_pipeline()?kha_graphics4_ColoredShaderPainter.shaderPipeline:this.get_pipeline()),this.g.setMatrix(this.projectionLocation,this.projectionMatrix),this.g.drawIndexedVertices(0,2*this.bufferIndex*3),this.bufferIndex=0,this.rectVertices=this.rectVertexBuffer.lock()},drawTriBuffer:function(e){e||this.bufferIndex>0&&this.drawBuffer(!0),this.triangleVertexBuffer.unlock(),this.g.setVertexBuffer(this.triangleVertexBuffer),this.g.setIndexBuffer(this.triangleIndexBuffer),this.g.setPipeline(null==this.get_pipeline()?kha_graphics4_ColoredShaderPainter.shaderPipeline:this.get_pipeline()),this.g.setMatrix(this.projectionLocation,this.projectionMatrix),this.g.drawIndexedVertices(0,3*this.triangleBufferIndex),this.triangleBufferIndex=0,this.triangleVertices=this.triangleVertexBuffer.lock()},fillRect:function(e,t,a,i,r,s,n,_,o,h){this.triangleBufferIndex>0&&this.drawTriBuffer(!0),this.bufferIndex+1>=kha_graphics4_ColoredShaderPainter.bufferSize&&this.drawBuffer(!1),this.setRectColors(e,t),this.setRectVertices(a,i,r,s,n,_,o,h),++this.bufferIndex},fillTriangle:function(e,t,a,i,r,s,n,_){this.bufferIndex>0&&this.drawBuffer(!0),this.triangleBufferIndex+1>=kha_graphics4_ColoredShaderPainter.triangleBufferSize&&this.drawTriBuffer(!1),this.setTriColors(e,t),this.setTriVertices(a,i,r,s,n,_),++this.triangleBufferIndex},endTris:function(e){this.triangleBufferIndex>0&&this.drawTriBuffer(e)},endRects:function(e){this.bufferIndex>0&&this.drawBuffer(e)},end:function(){this.triangleBufferIndex>0&&this.drawTriBuffer(!1),this.bufferIndex>0&&this.drawBuffer(!1)},__class__:kha_graphics4_ColoredShaderPainter};var kha_graphics4_TextShaderPainter=$hxClasses["kha.graphics4.TextShaderPainter"]=function(e){this.destinationBlend=kha_graphics4_BlendingFactor.Undefined,this.sourceBlend=kha_graphics4_BlendingFactor.Undefined,this.bilinear=!1,this.myPipeline=null,this.g=e,this.bufferIndex=0,kha_graphics4_TextShaderPainter.initShaders(),this.initBuffers(),this.projectionLocation=kha_graphics4_TextShaderPainter.shaderPipeline.getConstantLocation("projectionMatrix"),this.textureLocation=kha_graphics4_TextShaderPainter.shaderPipeline.getTextureUnit("tex")};kha_graphics4_TextShaderPainter.__name__=!0,kha_graphics4_TextShaderPainter.initShaders=function(){null==kha_graphics4_TextShaderPainter.shaderPipeline&&(kha_graphics4_TextShaderPainter.shaderPipeline=new kha_graphics4_PipelineState,kha_graphics4_TextShaderPainter.shaderPipeline.fragmentShader=kha_Shaders.painter_text_frag,kha_graphics4_TextShaderPainter.shaderPipeline.vertexShader=kha_Shaders.painter_text_vert,kha_graphics4_TextShaderPainter.structure=new kha_graphics4_VertexStructure,kha_graphics4_TextShaderPainter.structure.add("vertexPosition",kha_graphics4_VertexData.Float3),kha_graphics4_TextShaderPainter.structure.add("texPosition",kha_graphics4_VertexData.Float2),kha_graphics4_TextShaderPainter.structure.add("vertexColor",kha_graphics4_VertexData.Float4),kha_graphics4_TextShaderPainter.shaderPipeline.inputLayout=[kha_graphics4_TextShaderPainter.structure],kha_graphics4_TextShaderPainter.shaderPipeline.blendSource=kha_graphics4_BlendingFactor.SourceAlpha,kha_graphics4_TextShaderPainter.shaderPipeline.blendDestination=kha_graphics4_BlendingFactor.InverseSourceAlpha,kha_graphics4_TextShaderPainter.shaderPipeline.alphaBlendSource=kha_graphics4_BlendingFactor.SourceAlpha,kha_graphics4_TextShaderPainter.shaderPipeline.alphaBlendDestination=kha_graphics4_BlendingFactor.InverseSourceAlpha,kha_graphics4_TextShaderPainter.shaderPipeline.compile())},kha_graphics4_TextShaderPainter.findIndex=function(e,t){for(var a=0,i=t.length;a>>24));this.rectVertices[a+5]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+6]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+7]=.00392156862745098*(255&t),this.rectVertices[a+8]=i,this.rectVertices[a+14]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+15]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+16]=.00392156862745098*(255&t),this.rectVertices[a+17]=i,this.rectVertices[a+23]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+24]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+25]=.00392156862745098*(255&t),this.rectVertices[a+26]=i,this.rectVertices[a+32]=.00392156862745098*((16711680&t)>>>16),this.rectVertices[a+33]=.00392156862745098*((65280&t)>>>8),this.rectVertices[a+34]=.00392156862745098*(255&t),this.rectVertices[a+35]=i},drawBuffer:function(){this.rectVertexBuffer.unlock(),this.g.setVertexBuffer(this.rectVertexBuffer),this.g.setIndexBuffer(this.indexBuffer),this.g.setPipeline(null==this.get_pipeline()?kha_graphics4_TextShaderPainter.shaderPipeline:this.get_pipeline()),this.g.setTexture(this.textureLocation,this.lastTexture),this.g.setMatrix(this.projectionLocation,this.projectionMatrix),this.g.setTextureParameters(this.textureLocation,kha_graphics4_TextureAddressing.Clamp,kha_graphics4_TextureAddressing.Clamp,this.bilinear?kha_graphics4_TextureFilter.LinearFilter:kha_graphics4_TextureFilter.PointFilter,this.bilinear?kha_graphics4_TextureFilter.LinearFilter:kha_graphics4_TextureFilter.PointFilter,kha_graphics4_MipMapFilter.NoMipFilter),this.g.drawIndexedVertices(0,2*this.bufferIndex*3),this.g.setTexture(this.textureLocation,null),this.bufferIndex=0,this.rectVertices=this.rectVertexBuffer.lock()},setBilinearFilter:function(e){this.end(),this.bilinear=e},setFont:function(e){this.font=js_Boot.__cast(e,kha_Kravur)},text:null,startString:function(e){this.text=e},charCodeAt:function(e){return HxOverrides.cca(this.text,e)},stringLength:function(){return this.text.length},endString:function(){this.text=null},drawString:function(e,t,a,i,r,s,n){var _=this.font._get(this.fontSize,n),o=_.getTexture();null!=this.lastTexture&&o!=this.lastTexture&&this.drawBuffer(),this.lastTexture=o;var h=i,l=r;this.startString(e);for(var u=0,c=this.stringLength();u=kha_graphics4_TextShaderPainter.bufferSize&&this.drawBuffer(),this.setRectColors(t,a),this.setRectTexCoords(p.s0*o.get_width()/o.get_realWidth(),p.t0*o.get_height()/o.get_realHeight(),p.s1*o.get_width()/o.get_realWidth(),p.t1*o.get_height()/o.get_realHeight());var g,f,v,k=p.x0;v=p.y1;var m=s._02*k+s._12*v+s._22;f=(s._00*k+s._10*v+s._20)/m,g=(s._01*k+s._11*v+s._21)/m;var b,S,y,x=p.x0;y=p.y0;var B=s._02*x+s._12*y+s._22;S=(s._00*x+s._10*y+s._20)/B,b=(s._01*x+s._11*y+s._21)/B;var T,w,E,I=p.x1;E=p.y0;var C=s._02*I+s._12*E+s._22;w=(s._00*I+s._10*E+s._20)/C,T=(s._01*I+s._11*E+s._21)/C;var A,L,R,$=p.x1;R=p.y1;var F=s._02*$+s._12*R+s._22;L=(s._00*$+s._10*R+s._20)/F,A=(s._01*$+s._11*R+s._21)/F,this.setRectVertices(f,g,S,b,w,T,L,A),h+=p.xadvance,++this.bufferIndex}}this.endString()},end:function(){this.bufferIndex>0&&this.drawBuffer(),this.lastTexture=null},__class__:kha_graphics4_TextShaderPainter};var kha_graphics4_Graphics2=$hxClasses["kha.graphics4.Graphics2"]=function(e){if(this.myMipmapScaleQuality=kha_graphics2_ImageScaleQuality.High,this.myImageScaleQuality=kha_graphics2_ImageScaleQuality.High,kha_graphics2_Graphics.call(this),this.set_color(-1),this.canvas=e,this.g=e.get_g4(),this.imagePainter=new kha_graphics4_ImageShaderPainter(this.g),this.coloredPainter=new kha_graphics4_ColoredShaderPainter(this.g),this.textPainter=new kha_graphics4_TextShaderPainter(this.g),this.textPainter.fontSize=this.get_fontSize(),this.setProjection(),null==kha_graphics4_Graphics2.videoPipeline){kha_graphics4_Graphics2.videoPipeline=new kha_graphics4_PipelineState,kha_graphics4_Graphics2.videoPipeline.fragmentShader=kha_Shaders.painter_video_frag,kha_graphics4_Graphics2.videoPipeline.vertexShader=kha_Shaders.painter_video_vert;var t=new kha_graphics4_VertexStructure;t.add("vertexPosition",kha_graphics4_VertexData.Float3),t.add("texPosition",kha_graphics4_VertexData.Float2),t.add("vertexColor",kha_graphics4_VertexData.Float4),kha_graphics4_Graphics2.videoPipeline.inputLayout=[t],kha_graphics4_Graphics2.videoPipeline.compile()}};kha_graphics4_Graphics2.__name__=!0,kha_graphics4_Graphics2.upperPowerOfTwo=function(e){return--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,++e},kha_graphics4_Graphics2.__super__=kha_graphics2_Graphics,kha_graphics4_Graphics2.prototype=$extend(kha_graphics2_Graphics.prototype,{myColor:null,myFont:null,projectionMatrix:null,imagePainter:null,coloredPainter:null,textPainter:null,canvas:null,g:null,setProjection:function(){var e=this.canvas.get_width(),t=this.canvas.get_height();js_Boot.__instanceof(this.canvas,kha_Framebuffer)?this.projectionMatrix=kha_math_FastMatrix4.orthogonalProjection(0,e,t,0,.1,1e3):(kha_Image.get_nonPow2Supported()||(e=kha_graphics4_Graphics2.upperPowerOfTwo(e),t=kha_graphics4_Graphics2.upperPowerOfTwo(t)),this.g.renderTargetsInvertedY()?this.projectionMatrix=kha_math_FastMatrix4.orthogonalProjection(0,e,0,t,.1,1e3):this.projectionMatrix=kha_math_FastMatrix4.orthogonalProjection(0,e,t,0,.1,1e3)),this.imagePainter.setProjection(this.projectionMatrix),this.coloredPainter.setProjection(this.projectionMatrix),this.textPainter.setProjection(this.projectionMatrix)},drawImage:function(e,t,a){var i=this.coloredPainter;i.triangleBufferIndex>0&&i.drawTriBuffer(!1),i.bufferIndex>0&&i.drawBuffer(!1),this.textPainter.end();var r,s,n,_=t+e.get_width(),o=a+e.get_height(),h=this.transformations[this.transformations.length-1],l=t;n=o;var u=h._02*l+h._12*n+h._22;s=(h._00*l+h._10*n+h._20)/u,r=(h._01*l+h._11*n+h._21)/u;var c,d,p,g=this.transformations[this.transformations.length-1],f=t;p=a;var v=g._02*f+g._12*p+g._22;d=(g._00*f+g._10*p+g._20)/v,c=(g._01*f+g._11*p+g._21)/v;var k,m,b,S=this.transformations[this.transformations.length-1],y=_;b=a;var x=S._02*y+S._12*b+S._22;m=(S._00*y+S._10*b+S._20)/x,k=(S._01*y+S._11*b+S._21)/x;var B,T,w,E=this.transformations[this.transformations.length-1],I=_;w=o;var C=E._02*I+E._12*w+E._22;T=(E._00*I+E._10*w+E._20)/C,B=(E._01*I+E._11*w+E._21)/C;var A=this.imagePainter,L=this.get_opacity(),R=this.get_color(),$=e;(A.bufferIndex+1>=kha_graphics4_ImageShaderPainter.bufferSize||null!=A.lastTexture&&$!=A.lastTexture)&&A.drawBuffer();var F=.00392156862745098*((16711680&R)>>>16),V=.00392156862745098*((65280&R)>>>8),N=.00392156862745098*(255&R),P=.00392156862745098*(R>>>24)*L,M=A.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;A.rectVertices[M+5]=F,A.rectVertices[M+6]=V,A.rectVertices[M+7]=N,A.rectVertices[M+8]=P,A.rectVertices[M+14]=F,A.rectVertices[M+15]=V,A.rectVertices[M+16]=N,A.rectVertices[M+17]=P,A.rectVertices[M+23]=F,A.rectVertices[M+24]=V,A.rectVertices[M+25]=N,A.rectVertices[M+26]=P,A.rectVertices[M+32]=F,A.rectVertices[M+33]=V,A.rectVertices[M+34]=N,A.rectVertices[M+35]=P;var O=$.get_width()/$.get_realWidth(),D=$.get_height()/$.get_realHeight(),U=A.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;A.rectVertices[U+3]=0,A.rectVertices[U+4]=D,A.rectVertices[U+12]=0,A.rectVertices[U+13]=0,A.rectVertices[U+21]=O,A.rectVertices[U+22]=0,A.rectVertices[U+30]=O,A.rectVertices[U+31]=D;var H=A.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;A.rectVertices[H]=s,A.rectVertices[H+1]=r,A.rectVertices[H+2]=-5,A.rectVertices[H+9]=d,A.rectVertices[H+10]=c,A.rectVertices[H+11]=-5,A.rectVertices[H+18]=m,A.rectVertices[H+19]=k,A.rectVertices[H+20]=-5,A.rectVertices[H+27]=T,A.rectVertices[H+28]=B,A.rectVertices[H+29]=-5,++A.bufferIndex,A.lastTexture=$},drawScaledSubImage:function(e,t,a,i,r,s,n,_,o){var h=this.coloredPainter;h.triangleBufferIndex>0&&h.drawTriBuffer(!1),h.bufferIndex>0&&h.drawBuffer(!1),this.textPainter.end();var l,u,c,d=this.transformations[this.transformations.length-1],p=s;c=n+o;var g=d._02*p+d._12*c+d._22;u=(d._00*p+d._10*c+d._20)/g,l=(d._01*p+d._11*c+d._21)/g;var f,v,k,m=this.transformations[this.transformations.length-1],b=s;k=n;var S=m._02*b+m._12*k+m._22;v=(m._00*b+m._10*k+m._20)/S,f=(m._01*b+m._11*k+m._21)/S;var y,x,B,T=this.transformations[this.transformations.length-1],w=s+_;B=n;var E=T._02*w+T._12*B+T._22;x=(T._00*w+T._10*B+T._20)/E,y=(T._01*w+T._11*B+T._21)/E;var I,C,A,L=this.transformations[this.transformations.length-1],R=s+_;A=n+o;var $=L._02*R+L._12*A+L._22;C=(L._00*R+L._10*A+L._20)/$,I=(L._01*R+L._11*A+L._21)/$;var F=this.imagePainter,V=this.get_opacity(),N=this.get_color(),P=e;(F.bufferIndex+1>=kha_graphics4_ImageShaderPainter.bufferSize||null!=F.lastTexture&&P!=F.lastTexture)&&F.drawBuffer();var M=t/P.get_realWidth(),O=a/P.get_realHeight(),D=(t+i)/P.get_realWidth(),U=(a+r)/P.get_realHeight(),H=F.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;F.rectVertices[H+3]=M,F.rectVertices[H+4]=U,F.rectVertices[H+12]=M,F.rectVertices[H+13]=O,F.rectVertices[H+21]=D,F.rectVertices[H+22]=O,F.rectVertices[H+30]=D,F.rectVertices[H+31]=U;var G=.00392156862745098*((16711680&N)>>>16),W=.00392156862745098*((65280&N)>>>8),z=.00392156862745098*(255&N),j=.00392156862745098*(N>>>24)*V,K=F.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;F.rectVertices[K+5]=G,F.rectVertices[K+6]=W,F.rectVertices[K+7]=z,F.rectVertices[K+8]=j,F.rectVertices[K+14]=G,F.rectVertices[K+15]=W,F.rectVertices[K+16]=z,F.rectVertices[K+17]=j,F.rectVertices[K+23]=G,F.rectVertices[K+24]=W,F.rectVertices[K+25]=z,F.rectVertices[K+26]=j,F.rectVertices[K+32]=G,F.rectVertices[K+33]=W,F.rectVertices[K+34]=z,F.rectVertices[K+35]=j;var X=F.bufferIndex*kha_graphics4_ImageShaderPainter.vertexSize*4;F.rectVertices[X]=u,F.rectVertices[X+1]=l,F.rectVertices[X+2]=-5,F.rectVertices[X+9]=v,F.rectVertices[X+10]=f,F.rectVertices[X+11]=-5,F.rectVertices[X+18]=x,F.rectVertices[X+19]=y,F.rectVertices[X+20]=-5,F.rectVertices[X+27]=C,F.rectVertices[X+28]=I,F.rectVertices[X+29]=-5,++F.bufferIndex,F.lastTexture=P},get_color:function(){return this.myColor},set_color:function(e){return this.myColor=e},drawRect:function(e,t,a,i,r){null==r&&(r=1),this.imagePainter.end(),this.textPainter.end();var s,n=this.transformations[this.transformations.length-1],_=e-r/2;s=t+r/2;var o,h=n._02*_+n._12*s+n._22,l=(n._00*_+n._10*s+n._20)/h,u=(n._01*_+n._11*s+n._21)/h,c=new kha_math_FastVector2(l,u),d=this.transformations[this.transformations.length-1],p=e-r/2;o=t-r/2;var g,f=d._02*p+d._12*o+d._22,v=(d._00*p+d._10*o+d._20)/f,k=(d._01*p+d._11*o+d._21)/f,m=new kha_math_FastVector2(v,k),b=this.transformations[this.transformations.length-1],S=e+a+r/2;g=t-r/2;var y,x=b._02*S+b._12*g+b._22,B=(b._00*S+b._10*g+b._20)/x,T=(b._01*S+b._11*g+b._21)/x,w=new kha_math_FastVector2(B,T),E=this.transformations[this.transformations.length-1],I=e+a+r/2;y=t+r/2;var C=E._02*I+E._12*y+E._22,A=(E._00*I+E._10*y+E._20)/C,L=(E._01*I+E._11*y+E._21)/C,R=new kha_math_FastVector2(A,L);this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),c.x,c.y,m.x,m.y,w.x,w.y,R.x,R.y);var $,F=this.transformations[this.transformations.length-1],V=e-r/2;$=t+i+r/2;var N=F._02*V+F._12*$+F._22,P=(F._00*V+F._10*$+F._20)/N,M=(F._01*V+F._11*$+F._21)/N;c=new kha_math_FastVector2(P,M);var O,D=this.transformations[this.transformations.length-1],U=e+r/2;O=t-r/2;var H=D._02*U+D._12*O+D._22,G=(D._00*U+D._10*O+D._20)/H,W=(D._01*U+D._11*O+D._21)/H;w=new kha_math_FastVector2(G,W);var z,j=this.transformations[this.transformations.length-1],K=e+r/2;z=t+i+r/2;var X=j._02*K+j._12*z+j._22,Y=(j._00*K+j._10*z+j._20)/X,Z=(j._01*K+j._11*z+j._21)/X;R=new kha_math_FastVector2(Y,Z),this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),c.x,c.y,m.x,m.y,w.x,w.y,R.x,R.y);var Q,J=this.transformations[this.transformations.length-1],q=e-r/2;Q=t+i-r/2;var ee=J._02*q+J._12*Q+J._22,te=(J._00*q+J._10*Q+J._20)/ee,ae=(J._01*q+J._11*Q+J._21)/ee;m=new kha_math_FastVector2(te,ae);var ie,re=this.transformations[this.transformations.length-1],se=e+a+r/2;ie=t+i-r/2;var ne=re._02*se+re._12*ie+re._22,_e=(re._00*se+re._10*ie+re._20)/ne,oe=(re._01*se+re._11*ie+re._21)/ne;w=new kha_math_FastVector2(_e,oe);var he,le=this.transformations[this.transformations.length-1],ue=e+a+r/2;he=t+i+r/2;var ce=le._02*ue+le._12*he+le._22,de=(le._00*ue+le._10*he+le._20)/ce,pe=(le._01*ue+le._11*he+le._21)/ce;R=new kha_math_FastVector2(de,pe),this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),c.x,c.y,m.x,m.y,w.x,w.y,R.x,R.y);var ge,fe=this.transformations[this.transformations.length-1],ve=e+a-r/2;ge=t+i+r/2;var ke=fe._02*ve+fe._12*ge+fe._22,me=(fe._00*ve+fe._10*ge+fe._20)/ke,be=(fe._01*ve+fe._11*ge+fe._21)/ke;c=new kha_math_FastVector2(me,be);var Se,ye=this.transformations[this.transformations.length-1],xe=e+a-r/2;Se=t-r/2;var Be=ye._02*xe+ye._12*Se+ye._22,Te=(ye._00*xe+ye._10*Se+ye._20)/Be,we=(ye._01*xe+ye._11*Se+ye._21)/Be;m=new kha_math_FastVector2(Te,we);var Ee,Ie=this.transformations[this.transformations.length-1],Ce=e+a+r/2;Ee=t-r/2;var Ae=Ie._02*Ce+Ie._12*Ee+Ie._22,Le=(Ie._00*Ce+Ie._10*Ee+Ie._20)/Ae,Re=(Ie._01*Ce+Ie._11*Ee+Ie._21)/Ae;w=new kha_math_FastVector2(Le,Re);var $e,Fe=this.transformations[this.transformations.length-1],Ve=e+a+r/2;$e=t+i+r/2;var Ne=Fe._02*Ve+Fe._12*$e+Fe._22,Pe=(Fe._00*Ve+Fe._10*$e+Fe._20)/Ne,Me=(Fe._01*Ve+Fe._11*$e+Fe._21)/Ne;R=new kha_math_FastVector2(Pe,Me),this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),c.x,c.y,m.x,m.y,w.x,w.y,R.x,R.y)},fillRect:function(e,t,a,i){this.imagePainter.end(),this.textPainter.end();var r,s,n,_=this.transformations[this.transformations.length-1],o=e;n=t+i;var h=_._02*o+_._12*n+_._22;s=(_._00*o+_._10*n+_._20)/h,r=(_._01*o+_._11*n+_._21)/h;var l,u,c,d=this.transformations[this.transformations.length-1],p=e;c=t;var g=d._02*p+d._12*c+d._22;u=(d._00*p+d._10*c+d._20)/g,l=(d._01*p+d._11*c+d._21)/g;var f,v,k,m=this.transformations[this.transformations.length-1],b=e+a;k=t;var S=m._02*b+m._12*k+m._22;v=(m._00*b+m._10*k+m._20)/S,f=(m._01*b+m._11*k+m._21)/S;var y,x,B,T=this.transformations[this.transformations.length-1],w=e+a;B=t+i;var E=T._02*w+T._12*B+T._22;x=(T._00*w+T._10*B+T._20)/E,y=(T._01*w+T._11*B+T._21)/E,this.coloredPainter.fillRect(this.get_opacity(),this.get_color(),s,r,u,l,v,f,x,y)},drawString:function(e,t,a){this.imagePainter.end();var i=this.coloredPainter;i.triangleBufferIndex>0&&i.drawTriBuffer(!1),i.bufferIndex>0&&i.drawBuffer(!1),this.textPainter.drawString(e,this.get_opacity(),this.get_color(),t,a,this.transformations[this.transformations.length-1],this.get_fontGlyphs())},get_font:function(){return this.myFont},set_font:function(e){return this.textPainter.setFont(e),this.myFont=e},set_fontSize:function(e){return kha_graphics2_Graphics.prototype.set_fontSize.call(this,this.textPainter.fontSize=e)},drawLine:function(e,t,a,i,r){null==r&&(r=1),this.imagePainter.end(),this.textPainter.end();var s;(s=i==t?new kha_math_FastVector2(0,-1):new kha_math_FastVector2(1,-(a-e)/(i-t))).set_length(r);var n=new kha_math_FastVector2(e+.5*s.x,t+.5*s.y),_=new kha_math_FastVector2(a+.5*s.x,i+.5*s.y),o=new kha_math_FastVector2(n.x-s.x,n.y-s.y),h=new kha_math_FastVector2(_.x-s.x,_.y-s.y),l=this.transformations[this.transformations.length-1],u=l._02*n.x+l._12*n.y+l._22,c=(l._00*n.x+l._10*n.y+l._20)/u,d=(l._01*n.x+l._11*n.y+l._21)/u;n=new kha_math_FastVector2(c,d);var p=this.transformations[this.transformations.length-1],g=p._02*_.x+p._12*_.y+p._22,f=(p._00*_.x+p._10*_.y+p._20)/g,v=(p._01*_.x+p._11*_.y+p._21)/g;_=new kha_math_FastVector2(f,v);var k=this.transformations[this.transformations.length-1],m=k._02*o.x+k._12*o.y+k._22,b=(k._00*o.x+k._10*o.y+k._20)/m,S=(k._01*o.x+k._11*o.y+k._21)/m;o=new kha_math_FastVector2(b,S);var y=this.transformations[this.transformations.length-1],x=y._02*h.x+y._12*h.y+y._22,B=(y._00*h.x+y._10*h.y+y._20)/x,T=(y._01*h.x+y._11*h.y+y._21)/x;h=new kha_math_FastVector2(B,T),this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),n.x,n.y,_.x,_.y,o.x,o.y),this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),o.x,o.y,_.x,_.y,h.x,h.y)},fillTriangle:function(e,t,a,i,r,s){this.imagePainter.end(),this.textPainter.end();var n,_,o,h=this.transformations[this.transformations.length-1],l=e;o=t;var u=h._02*l+h._12*o+h._22;_=(h._00*l+h._10*o+h._20)/u,n=(h._01*l+h._11*o+h._21)/u;var c,d,p,g=this.transformations[this.transformations.length-1],f=a;p=i;var v=g._02*f+g._12*p+g._22;d=(g._00*f+g._10*p+g._20)/v,c=(g._01*f+g._11*p+g._21)/v;var k,m,b,S=this.transformations[this.transformations.length-1],y=r;b=s;var x=S._02*y+S._12*b+S._22;m=(S._00*y+S._10*b+S._20)/x,k=(S._01*y+S._11*b+S._21)/x,this.coloredPainter.fillTriangle(this.get_opacity(),this.get_color(),_,n,d,c,m,k)},myImageScaleQuality:null,get_imageScaleQuality:function(){return this.myImageScaleQuality},set_imageScaleQuality:function(e){return this.imagePainter.setBilinearFilter(e==kha_graphics2_ImageScaleQuality.High),this.textPainter.setBilinearFilter(e==kha_graphics2_ImageScaleQuality.High),this.myImageScaleQuality=e},myMipmapScaleQuality:null,get_mipmapScaleQuality:function(){return this.myMipmapScaleQuality},set_mipmapScaleQuality:function(e){return this.imagePainter.setBilinearMipmapFilter(e==kha_graphics2_ImageScaleQuality.High),this.myMipmapScaleQuality=e},setPipeline:function(e){this.flush(),this.imagePainter.set_pipeline(e),this.coloredPainter.set_pipeline(e),this.textPainter.set_pipeline(e),null!=e&&this.g.setPipeline(e)},scissor:function(e,t,a,i){this.flush(),this.g.scissor(e,t,a,i)},disableScissor:function(){this.flush(),this.g.disableScissor()},begin:function(e,t){null==e&&(e=!0),this.g.begin(),e&&this.clear(t),this.setProjection()},clear:function(e){this.flush(),this.g.clear(null==e?-16777216:e)},flush:function(){this.imagePainter.end(),this.textPainter.end();var e=this.coloredPainter;e.triangleBufferIndex>0&&e.drawTriBuffer(!1),e.bufferIndex>0&&e.drawBuffer(!1)},end:function(){this.flush(),this.g.end()},drawVideoInternal:function(e,t,a,i,r){},drawVideo:function(e,t,a,i,r){this.setPipeline(kha_graphics4_Graphics2.videoPipeline),this.drawVideoInternal(e,t,a,i,r),this.setPipeline(null)},__class__:kha_graphics4_Graphics2});var kha_graphics4_IndexBuffer=$hxClasses["kha.graphics4.IndexBuffer"]=function(e,t,a){null==a&&(a=!1),this.indexCount=e;var i=new Uint32Array(e);this._data=i,this.buffer=Krom.createIndexBuffer(e)};kha_graphics4_IndexBuffer.__name__=!0,kha_graphics4_IndexBuffer.prototype={buffer:null,_data:null,indexCount:null,delete:function(){Krom.deleteIndexBuffer(this.buffer),this.buffer=null},lock:function(e,t){return null==e&&(e=0),null==t&&(t=this.indexCount),this._data.subarray(e,e+t)},unlock:function(){Krom.setIndices(this.buffer,this._data)},set:function(){Krom.setIndexBuffer(this.buffer)},count:function(){return this.indexCount},__class__:kha_graphics4_IndexBuffer};var kha_graphics4_MipMapFilter=$hxClasses["kha.graphics4.MipMapFilter"]={__ename__:!0,__constructs__:["NoMipFilter","PointMipFilter","LinearMipFilter"]};kha_graphics4_MipMapFilter.NoMipFilter=["NoMipFilter",0],kha_graphics4_MipMapFilter.NoMipFilter.toString=$estr,kha_graphics4_MipMapFilter.NoMipFilter.__enum__=kha_graphics4_MipMapFilter,kha_graphics4_MipMapFilter.PointMipFilter=["PointMipFilter",1],kha_graphics4_MipMapFilter.PointMipFilter.toString=$estr,kha_graphics4_MipMapFilter.PointMipFilter.__enum__=kha_graphics4_MipMapFilter,kha_graphics4_MipMapFilter.LinearMipFilter=["LinearMipFilter",2],kha_graphics4_MipMapFilter.LinearMipFilter.toString=$estr,kha_graphics4_MipMapFilter.LinearMipFilter.__enum__=kha_graphics4_MipMapFilter;var kha_graphics4_PipelineStateBase=$hxClasses["kha.graphics4.PipelineStateBase"]=function(){this.inputLayout=null,this.interleavedLayout=!0,this.vertexShader=null,this.fragmentShader=null,this.geometryShader=null,this.tessellationControlShader=null,this.tessellationEvaluationShader=null,this.cullMode=kha_graphics4_CullMode.None,this.depthWrite=!1,this.depthMode=kha_graphics4_CompareMode.Always,this.stencilMode=kha_graphics4_CompareMode.Always,this.stencilBothPass=kha_graphics4_StencilAction.Keep,this.stencilDepthFail=kha_graphics4_StencilAction.Keep,this.stencilFail=kha_graphics4_StencilAction.Keep,this.stencilReferenceValue=0,this.stencilReadMask=255,this.stencilWriteMask=255,this.blendSource=kha_graphics4_BlendingFactor.BlendOne,this.blendDestination=kha_graphics4_BlendingFactor.BlendZero,this.blendOperation=kha_graphics4_BlendingOperation.Add,this.alphaBlendSource=kha_graphics4_BlendingFactor.BlendOne,this.alphaBlendDestination=kha_graphics4_BlendingFactor.BlendZero,this.alphaBlendOperation=kha_graphics4_BlendingOperation.Add,this.colorWriteMaskRed=this.colorWriteMaskBlue=this.colorWriteMaskGreen=this.colorWriteMaskAlpha=!0,this.conservativeRasterization=!1};kha_graphics4_PipelineStateBase.__name__=!0,kha_graphics4_PipelineStateBase.prototype={inputLayout:null,interleavedLayout:null,vertexShader:null,fragmentShader:null,geometryShader:null,tessellationControlShader:null,tessellationEvaluationShader:null,cullMode:null,depthWrite:null,depthMode:null,stencilMode:null,stencilBothPass:null,stencilDepthFail:null,stencilFail:null,stencilReferenceValue:null,stencilReadMask:null,stencilWriteMask:null,blendSource:null,blendDestination:null,blendOperation:null,alphaBlendSource:null,alphaBlendDestination:null,alphaBlendOperation:null,colorWriteMaskRed:null,colorWriteMaskGreen:null,colorWriteMaskBlue:null,colorWriteMaskAlpha:null,set_colorWriteMask:function(e){return this.colorWriteMaskRed=this.colorWriteMaskBlue=this.colorWriteMaskGreen=this.colorWriteMaskAlpha=e},conservativeRasterization:null,__class__:kha_graphics4_PipelineStateBase};var kha_graphics4_PipelineState=$hxClasses["kha.graphics4.PipelineState"]=function(){kha_graphics4_PipelineStateBase.call(this),this.pipeline=Krom.createPipeline()};kha_graphics4_PipelineState.__name__=!0,kha_graphics4_PipelineState.convertCullMode=function(e){switch(e[1]){case 0:return 0;case 1:return 1;case 2:return 2}},kha_graphics4_PipelineState.convertCompareMode=function(e){switch(e[1]){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;case 5:return 5;case 6:return 6;case 7:return 7}},kha_graphics4_PipelineState.convertStencilAction=function(e){switch(e[1]){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;case 5:return 5;case 6:return 6;case 7:return 7}},kha_graphics4_PipelineState.convertBlendingFactor=function(e){switch(e[1]){case 0:case 1:return 0;case 2:return 1;case 3:return 2;case 4:return 3;case 5:return 4;case 6:return 5;case 7:return 6;case 8:return 7;case 9:return 8;case 10:return 9}},kha_graphics4_PipelineState.__super__=kha_graphics4_PipelineStateBase,kha_graphics4_PipelineState.prototype=$extend(kha_graphics4_PipelineStateBase.prototype,{pipeline:null,delete:function(){Krom.deletePipeline(this.pipeline),this.pipeline=null},compile:function(){var e=this.inputLayout.length>0?this.inputLayout[0].elements:null,t=this.inputLayout.length>1?this.inputLayout[1].elements:null,a=this.inputLayout.length>2?this.inputLayout[2].elements:null,i=this.inputLayout.length>3?this.inputLayout[3].elements:null,r=null!=this.geometryShader?this.geometryShader.shader:null,s=null!=this.tessellationControlShader?this.tessellationControlShader.shader:null,n=null!=this.tessellationEvaluationShader?this.tessellationEvaluationShader.shader:null;Krom.compilePipeline(this.pipeline,e,t,a,i,this.inputLayout.length,this.vertexShader.shader,this.fragmentShader.shader,r,s,n,{interleavedLayout:this.interleavedLayout,cullMode:kha_graphics4_PipelineState.convertCullMode(this.cullMode),depthWrite:this.depthWrite,depthMode:kha_graphics4_PipelineState.convertCompareMode(this.depthMode),stencilMode:kha_graphics4_PipelineState.convertCompareMode(this.stencilMode),stencilBothPass:kha_graphics4_PipelineState.convertStencilAction(this.stencilBothPass),stencilDepthFail:kha_graphics4_PipelineState.convertStencilAction(this.stencilDepthFail),stencilFail:kha_graphics4_PipelineState.convertStencilAction(this.stencilFail),stencilReferenceValue:this.stencilReferenceValue,stencilReadMask:this.stencilReadMask,stencilWriteMask:this.stencilWriteMask,blendSource:kha_graphics4_PipelineState.convertBlendingFactor(this.blendSource),blendDestination:kha_graphics4_PipelineState.convertBlendingFactor(this.blendDestination),alphaBlendSource:kha_graphics4_PipelineState.convertBlendingFactor(this.alphaBlendSource),alphaBlendDestination:kha_graphics4_PipelineState.convertBlendingFactor(this.alphaBlendDestination),colorWriteMaskRed:this.colorWriteMaskRed,colorWriteMaskGreen:this.colorWriteMaskGreen,colorWriteMaskBlue:this.colorWriteMaskBlue,colorWriteMaskAlpha:this.colorWriteMaskAlpha,conservativeRasterization:this.conservativeRasterization})},set:function(){Krom.setPipeline(this.pipeline)},getConstantLocation:function(e){return Krom.getConstantLocation(this.pipeline,e)},getTextureUnit:function(e){return Krom.getTextureUnit(this.pipeline,e)},__class__:kha_graphics4_PipelineState});var kha_graphics4_StencilAction=$hxClasses["kha.graphics4.StencilAction"]={__ename__:!0,__constructs__:["Keep","Zero","Replace","Increment","IncrementWrap","Decrement","DecrementWrap","Invert"]};kha_graphics4_StencilAction.Keep=["Keep",0],kha_graphics4_StencilAction.Keep.toString=$estr,kha_graphics4_StencilAction.Keep.__enum__=kha_graphics4_StencilAction,kha_graphics4_StencilAction.Zero=["Zero",1],kha_graphics4_StencilAction.Zero.toString=$estr,kha_graphics4_StencilAction.Zero.__enum__=kha_graphics4_StencilAction,kha_graphics4_StencilAction.Replace=["Replace",2],kha_graphics4_StencilAction.Replace.toString=$estr,kha_graphics4_StencilAction.Replace.__enum__=kha_graphics4_StencilAction,kha_graphics4_StencilAction.Increment=["Increment",3],kha_graphics4_StencilAction.Increment.toString=$estr,kha_graphics4_StencilAction.Increment.__enum__=kha_graphics4_StencilAction,kha_graphics4_StencilAction.IncrementWrap=["IncrementWrap",4],kha_graphics4_StencilAction.IncrementWrap.toString=$estr,kha_graphics4_StencilAction.IncrementWrap.__enum__=kha_graphics4_StencilAction,kha_graphics4_StencilAction.Decrement=["Decrement",5],kha_graphics4_StencilAction.Decrement.toString=$estr,kha_graphics4_StencilAction.Decrement.__enum__=kha_graphics4_StencilAction,kha_graphics4_StencilAction.DecrementWrap=["DecrementWrap",6],kha_graphics4_StencilAction.DecrementWrap.toString=$estr,kha_graphics4_StencilAction.DecrementWrap.__enum__=kha_graphics4_StencilAction,kha_graphics4_StencilAction.Invert=["Invert",7],kha_graphics4_StencilAction.Invert.toString=$estr,kha_graphics4_StencilAction.Invert.__enum__=kha_graphics4_StencilAction;var kha_graphics4_TessellationControlShader=$hxClasses["kha.graphics4.TessellationControlShader"]=function(e,t){this.shader=Krom.createTessellationControlShader(e[0].bytes.b.bufferValue,t[0])};kha_graphics4_TessellationControlShader.__name__=!0,kha_graphics4_TessellationControlShader.prototype={shader:null,delete:function(){Krom.deleteShader(this.shader),this.shader=null},__class__:kha_graphics4_TessellationControlShader};var kha_graphics4_TessellationEvaluationShader=$hxClasses["kha.graphics4.TessellationEvaluationShader"]=function(e,t){this.shader=Krom.createTessellationEvaluationShader(e[0].bytes.b.bufferValue,t[0])};kha_graphics4_TessellationEvaluationShader.__name__=!0,kha_graphics4_TessellationEvaluationShader.prototype={shader:null,delete:function(){Krom.deleteShader(this.shader),this.shader=null},__class__:kha_graphics4_TessellationEvaluationShader};var kha_graphics4_TexDir=$hxClasses["kha.graphics4.TexDir"]={__ename__:!0,__constructs__:["U","V"]};kha_graphics4_TexDir.U=["U",0],kha_graphics4_TexDir.U.toString=$estr,kha_graphics4_TexDir.U.__enum__=kha_graphics4_TexDir,kha_graphics4_TexDir.V=["V",1],kha_graphics4_TexDir.V.toString=$estr,kha_graphics4_TexDir.V.__enum__=kha_graphics4_TexDir;var kha_graphics4_TextureAddressing=$hxClasses["kha.graphics4.TextureAddressing"]={__ename__:!0,__constructs__:["Repeat","Mirror","Clamp"]};kha_graphics4_TextureAddressing.Repeat=["Repeat",0],kha_graphics4_TextureAddressing.Repeat.toString=$estr,kha_graphics4_TextureAddressing.Repeat.__enum__=kha_graphics4_TextureAddressing,kha_graphics4_TextureAddressing.Mirror=["Mirror",1],kha_graphics4_TextureAddressing.Mirror.toString=$estr,kha_graphics4_TextureAddressing.Mirror.__enum__=kha_graphics4_TextureAddressing,kha_graphics4_TextureAddressing.Clamp=["Clamp",2],kha_graphics4_TextureAddressing.Clamp.toString=$estr,kha_graphics4_TextureAddressing.Clamp.__enum__=kha_graphics4_TextureAddressing;var kha_graphics4_TextureFilter=$hxClasses["kha.graphics4.TextureFilter"]={__ename__:!0,__constructs__:["PointFilter","LinearFilter","AnisotropicFilter"]};kha_graphics4_TextureFilter.PointFilter=["PointFilter",0],kha_graphics4_TextureFilter.PointFilter.toString=$estr,kha_graphics4_TextureFilter.PointFilter.__enum__=kha_graphics4_TextureFilter,kha_graphics4_TextureFilter.LinearFilter=["LinearFilter",1],kha_graphics4_TextureFilter.LinearFilter.toString=$estr,kha_graphics4_TextureFilter.LinearFilter.__enum__=kha_graphics4_TextureFilter,kha_graphics4_TextureFilter.AnisotropicFilter=["AnisotropicFilter",2],kha_graphics4_TextureFilter.AnisotropicFilter.toString=$estr,kha_graphics4_TextureFilter.AnisotropicFilter.__enum__=kha_graphics4_TextureFilter;var kha_graphics4_TextureFormat=$hxClasses["kha.graphics4.TextureFormat"]={__ename__:!0,__constructs__:["RGBA32","L8","RGBA128","DEPTH16","RGBA64","A32","A16"]};kha_graphics4_TextureFormat.RGBA32=["RGBA32",0],kha_graphics4_TextureFormat.RGBA32.toString=$estr,kha_graphics4_TextureFormat.RGBA32.__enum__=kha_graphics4_TextureFormat,kha_graphics4_TextureFormat.L8=["L8",1],kha_graphics4_TextureFormat.L8.toString=$estr,kha_graphics4_TextureFormat.L8.__enum__=kha_graphics4_TextureFormat,kha_graphics4_TextureFormat.RGBA128=["RGBA128",2],kha_graphics4_TextureFormat.RGBA128.toString=$estr,kha_graphics4_TextureFormat.RGBA128.__enum__=kha_graphics4_TextureFormat,kha_graphics4_TextureFormat.DEPTH16=["DEPTH16",3],kha_graphics4_TextureFormat.DEPTH16.toString=$estr,kha_graphics4_TextureFormat.DEPTH16.__enum__=kha_graphics4_TextureFormat,kha_graphics4_TextureFormat.RGBA64=["RGBA64",4],kha_graphics4_TextureFormat.RGBA64.toString=$estr,kha_graphics4_TextureFormat.RGBA64.__enum__=kha_graphics4_TextureFormat,kha_graphics4_TextureFormat.A32=["A32",5],kha_graphics4_TextureFormat.A32.toString=$estr,kha_graphics4_TextureFormat.A32.__enum__=kha_graphics4_TextureFormat,kha_graphics4_TextureFormat.A16=["A16",6],kha_graphics4_TextureFormat.A16.toString=$estr,kha_graphics4_TextureFormat.A16.__enum__=kha_graphics4_TextureFormat;var kha_graphics4_TextureUnit=$hxClasses["kha.graphics4.TextureUnit"]=function(){};kha_graphics4_TextureUnit.__name__=!0;var kha_graphics4_Usage=$hxClasses["kha.graphics4.Usage"]={__ename__:!0,__constructs__:["StaticUsage","DynamicUsage","ReadableUsage"]};kha_graphics4_Usage.StaticUsage=["StaticUsage",0],kha_graphics4_Usage.StaticUsage.toString=$estr,kha_graphics4_Usage.StaticUsage.__enum__=kha_graphics4_Usage,kha_graphics4_Usage.DynamicUsage=["DynamicUsage",1],kha_graphics4_Usage.DynamicUsage.toString=$estr,kha_graphics4_Usage.DynamicUsage.__enum__=kha_graphics4_Usage,kha_graphics4_Usage.ReadableUsage=["ReadableUsage",2],kha_graphics4_Usage.ReadableUsage.toString=$estr,kha_graphics4_Usage.ReadableUsage.__enum__=kha_graphics4_Usage;var kha_graphics4_VertexBuffer=$hxClasses["kha.graphics4.VertexBuffer"]=function(e,t,a,i,r){null==r&&(r=!1),null==i&&(i=0),this.vertexCount=e,this.structure=t,this.buffer=Krom.createVertexBuffer(e,t.elements,i);var s=new Float32Array(e*(t.byteSize()/4|0));this._data=s};kha_graphics4_VertexBuffer.__name__=!0,kha_graphics4_VertexBuffer.prototype={buffer:null,_data:null,vertexCount:null,structure:null,delete:function(){Krom.deleteVertexBuffer(this.buffer),this.buffer=null},lock:function(e,t){return this._data},unlock:function(){Krom.setVertices(this.buffer,this._data)},stride:function(){return this.structure.byteSize()},count:function(){return this.vertexCount},set:function(e){return Krom.setVertexBuffer(this.buffer),0},__class__:kha_graphics4_VertexBuffer};var kha_graphics4_VertexData=$hxClasses["kha.graphics4.VertexData"]={__ename__:!0,__constructs__:["Float1","Float2","Float3","Float4","Float4x4"]};kha_graphics4_VertexData.Float1=["Float1",0],kha_graphics4_VertexData.Float1.toString=$estr,kha_graphics4_VertexData.Float1.__enum__=kha_graphics4_VertexData,kha_graphics4_VertexData.Float2=["Float2",1],kha_graphics4_VertexData.Float2.toString=$estr,kha_graphics4_VertexData.Float2.__enum__=kha_graphics4_VertexData,kha_graphics4_VertexData.Float3=["Float3",2],kha_graphics4_VertexData.Float3.toString=$estr,kha_graphics4_VertexData.Float3.__enum__=kha_graphics4_VertexData,kha_graphics4_VertexData.Float4=["Float4",3],kha_graphics4_VertexData.Float4.toString=$estr,kha_graphics4_VertexData.Float4.__enum__=kha_graphics4_VertexData,kha_graphics4_VertexData.Float4x4=["Float4x4",4],kha_graphics4_VertexData.Float4x4.toString=$estr,kha_graphics4_VertexData.Float4x4.__enum__=kha_graphics4_VertexData;var kha_graphics4_VertexElement=$hxClasses["kha.graphics4.VertexElement"]=function(e,t){this.name=e,this.data=t};kha_graphics4_VertexElement.__name__=!0,kha_graphics4_VertexElement.prototype={name:null,data:null,__class__:kha_graphics4_VertexElement};var kha_graphics4_VertexShader=$hxClasses["kha.graphics4.VertexShader"]=function(e,t){null!=e&&(this.shader=Krom.createVertexShader(e[0].bytes.b.bufferValue,t[0]))};kha_graphics4_VertexShader.__name__=!0,kha_graphics4_VertexShader.fromSource=function(e){var t=new kha_graphics4_VertexShader(null,null);return t.shader=Krom.createVertexShaderFromSource(e),t},kha_graphics4_VertexShader.prototype={shader:null,delete:function(){Krom.deleteShader(this.shader),this.shader=null},__class__:kha_graphics4_VertexShader};var kha_graphics4_VertexStructure=$hxClasses["kha.graphics4.VertexStructure"]=function(){this.elements=[]};kha_graphics4_VertexStructure.__name__=!0,kha_graphics4_VertexStructure.prototype={elements:null,add:function(e,t){this.elements.push(new kha_graphics4_VertexElement(e,t))},size:function(){return this.elements.length},byteSize:function(){for(var e=0,t=0,a=this.elements.length;t=kha_input_Gamepad.instances.length?null:kha_input_Gamepad.instances[e]},kha_input_Gamepad.prototype={index:null,notify:function(e,t){null!=e&&this.axisListeners.push(e),null!=t&&this.buttonListeners.push(t)},remove:function(e,t){null!=e&&HxOverrides.remove(this.axisListeners,e),null!=t&&HxOverrides.remove(this.buttonListeners,t)},axisListeners:null,buttonListeners:null,id:null,get_id:function(){return kha_SystemImpl.getGamepadId(this.index)},sendAxisEvent:function(e,t){for(var a=0,i=this.axisListeners;a>23&255,i=8388607&e;switch(a){case 0:return 0;case 255:return 0!=i?NaN:t>0?1/0:-1/0;default:return t*((i+8388608)/8388608)*Math.pow(2,a-127)}},kha_internal_BytesBlob.bit=function(e,t){if(1==(e>>>t&1)){return 0,!0}return 0,!1},kha_internal_BytesBlob.prototype={bytes:null,buffer:null,myFirstLine:null,sub:function(e,t){return new kha_internal_BytesBlob(this.bytes.sub(e,t))},length:null,get_length:function(){return this.bytes.length},writeU8:function(e,t){this.bytes.b[e]=255&t},readU8:function(e){var t=this.bytes.b[e];return++e,t},readS8:function(e){var t=this.bytes.b[e];++e;var a=0==(128&t)?1:-1;return t&=127,a*t},readU16BE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1];return e+=2,256*t+a},readU16LE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1];return e+=2,256*a+t},readU32LE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1],i=this.bytes.b[e+2],r=this.bytes.b[e+3];return e+=4,t+256*a+256*i*256+256*r*256*256},readU32BE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1],i=this.bytes.b[e+2],r=this.bytes.b[e+3];return e+=4,r+256*i+256*a*256+256*t*256*256},readS16BE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1];e+=2;var i=0==(128&t)?1:-1;return t&=127,-1==i?256*t-32767+a:256*t+a},readS16LE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1],i=0==(128&a)?1:-1;return a&=127,e+=2,-1==i?256*a-32767+t:256*a+t},readS32LE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1],i=this.bytes.b[e+2],r=this.bytes.b[e+3],s=0==(128&r)?1:-1;return r&=127,e+=4,-1==s?-2147483647+t+256*a+256*i*256+256*r*256*256:t+256*a+256*i*256+256*r*256*256},readS32BE:function(e){var t=this.bytes.b[e],a=this.bytes.b[e+1],i=this.bytes.b[e+2],r=this.bytes.b[e+3],s=0==(128&t)?1:-1;return t&=127,e+=4,-1==s?-2147483647+r+256*i+256*a*256+256*t*256*256:r+256*i+256*a*256+256*t*256*256},readF32LE:function(e){return kha_internal_BytesBlob.readF32(this.readS32LE(e))},readF32BE:function(e){return kha_internal_BytesBlob.readF32(this.readS32BE(e))},toString:function(){return this.bytes.toString()},readUtf8Char:function(e){if(e.value>=this.get_length())return-1;var t=this.readU8(e.value);++e.value;var a=0;if(kha_internal_BytesBlob.bit(t,7))if(kha_internal_BytesBlob.bit(t,7)&&kha_internal_BytesBlob.bit(t,6)&&!kha_internal_BytesBlob.bit(t,5)){var i=31&t,r=this.readU8(e.value);++e.value,a=i<<6|63&r}else kha_internal_BytesBlob.bit(t,7)&&kha_internal_BytesBlob.bit(t,6)&&kha_internal_BytesBlob.bit(t,5)&&!kha_internal_BytesBlob.bit(t,4)?e.value+=2:kha_internal_BytesBlob.bit(t,7)&&kha_internal_BytesBlob.bit(t,6)&&kha_internal_BytesBlob.bit(t,5)&&kha_internal_BytesBlob.bit(t,4)&&!kha_internal_BytesBlob.bit(t,3)&&(e.value+=3);else a=t;return a},readUtf8Block:function(e){var t=0;if(e.value>=this.get_length())return"";for(;t<2e3;){var a=this.readUtf8Char(e);if(a<0)break;this.buffer[t]=a,++t}if(this.myFirstLine&&(this.myFirstLine=!1,t>2&&239==this.buffer[0]&&187==this.buffer[1]&&191==this.buffer[2])){for(var i=[],r=3,s=t-3;r>>16)}),"R",0,1,!0),r=e.slider(t.nest(1,{value:.00392156862745098*((65280&t.color)>>>8)}),"G",0,1,!0),s=e.slider(t.nest(2,{value:.00392156862745098*(255&t.color)}),"B",0,1,!0),n=.00392156862745098*(t.color>>>24);a&&(n=e.slider(t.nest(3,{value:n}),"A",0,1,!0));var _=kha__$Color_Color_$Impl_$.fromFloats(i,r,s,n);return e.text("",2,_),_},zui_Ext.initPath=function(e,t){e.text="Windows"==t?"C:\\Users":"/"},zui_Ext.fileBrowser=function(e,t){var a="ls ",i=kha_System.get_systemId();""==t.text&&(zui_Ext.initPath(t,i),"Windows"==i&&(a="dir "));var r="Linux"==i?"/tmp":Krom.savePath();r+="/dir.txt",Krom.sysCommand(a+t.text+' > "'+r+'"');var s=haxe_io_Bytes.ofData(Krom.loadBlob(r)).toString().split("\n");(-1!=t.text.indexOf("/",1)||-1!=t.text.indexOf("\\",2))&&e.button("..",0)&&(t.text=t.text.substring(0,t.text.lastIndexOf("/")));for(var n=0;n0||this.isScrolling||this.isTyping){e.dragEnabled&&(this.g.set_color(this.t.SEPARATOR_COL),this.g.fillRect(0,0,this._windowW,15));var t=this._y-e.scrollOffset;if(t0?e.scrollOffset=0:t+e.scrollOffset0&&(this.g.set_color(1==a?this.t.PANEL_BG1_COL:this.t.PANEL_BG2_COL),this.g.fillRect(this._x,this._y,this._w,this.t._ELEMENT_H*this.SCALE)),this.drawArrow(e.selected,i),this.g.set_color(i?this.t.PANEL_TEXT_COL_HOVER:this.t.PANEL_TEXT_COL),this.g.set_opacity(1),a>0?this.drawString(this.g,t,this.titleOffsetX,0):this.drawStringSmall(this.g,t,this.titleOffsetX,0),this.endElement(),e.selected},image:function(e,t){null==t&&(t=-1);var a=this._w-2*this.buttonOffsetY,i=this._x+this.buttonOffsetY;if(!(null!=this.currentWindow&&this.currentWindow.scrollEnabled)){var r=-1==this.curRatio?1:this.ratios[this.curRatio];a-=(this.t._SCROLL_W*this.SCALE|0)*r,i+=(this.t._SCROLL_W*this.SCALE|0)*r/2}var s=a/e.get_width(),n=e.get_height()*s;if(!this.isVisible(n))return this.endElement(n),0;var _=this.getStarted(n),o=this.getPushed(n),h=this.getReleased(n);return this.g.set_color(t),this.g.drawScaledImage(e,i,this._y,a,n),this.endElement(n),_?1:h?3:o?2:0},text:function(e,t,a){null==a&&(a=0),null==t&&(t=0),this.isVisible(this.t._ELEMENT_H*this.SCALE)?(0!=a&&(this.g.set_color(a),this.g.fillRect(this._x+this.buttonOffsetY,this._y+this.buttonOffsetY,this._w-2*this.buttonOffsetY,this.t._BUTTON_H*this.SCALE)),this.g.set_color(this.t.TEXT_COL),this.drawStringSmall(this.g,e,this.t._DEFAULT_TEXT_OFFSET_X*this.SCALE,0,t),this.endElement()):this.endElement()},textInput:function(e,t,a){if(null==a&&(a=0),null==t&&(t=""),!this.isVisible(this.t._ELEMENT_H*this.SCALE))return this.endElement(),e.text;this.submitTextHandle==e?(e.text=this.textToSubmit,e.changed=this.changed=!0,this.textToSubmit="",this.submitTextHandle=null,this.textSelectedCurrentText=""):e.changed=!1;var i=this.getHover();this.g.set_color(i?this.t.TEXT_INPUT_BG_COL_HOVER:this.t.TEXT_INPUT_BG_COL);var r=this.g,s=this._x+this.buttonOffsetY,n=this._y+this.buttonOffsetY,_=this._w-2*this.buttonOffsetY,o=this.t._BUTTON_H*this.SCALE;if(this.t.FILL_TEXT_INPUT_BG?r.fillRect(s,n,_,o):r.drawRect(s,n,_,o,this.t._LINE_STRENGTH*this.SCALE),this.textSelectedHandle!=e&&this.getReleased()&&(this.isTyping=!0,this.submitTextHandle=this.textSelectedHandle,this.textToSubmit=this.textSelectedCurrentText,this.textSelectedHandle=e,this.textSelectedCurrentText=e.text,this.cursorX=e.text.length,this.cursorY=0,null!=kha_input_Keyboard.get()&&kha_input_Keyboard.get().show()),this.textSelectedHandle==e){var h=this.textSelectedCurrentText;if(this.isKeyDown&&(37==this.key?this.cursorX>0&&this.cursorX--:39==this.key?this.cursorX0&&(h=HxOverrides.substr(h,0,this.cursorX-1)+HxOverrides.substr(h,this.cursorX,null),this.cursorX--):13==this.key?this.deselectText():16!=this.key&&20!=this.key&&null!=this.char&&""!=this.char&&HxOverrides.cca(this.char,0)>=32&&127!=HxOverrides.cca(this.char,0)&&(h=HxOverrides.substr(h,0,this.cursorX)+this.char+HxOverrides.substr(h,this.cursorX,null),this.cursorX++)),kha_Scheduler.time()%(2*this.t.TEXT_CURSOR_FLASH_SPEED)=t.length&&(e.position=0),e.changed=this.changed=!0):e.changed=!1;var a=this.getHover();return this.drawInlineRadio(t[e.position],a),this.endElement(),e.position},combo:function(e,t,a,i,r){if(null==r&&(r=0),null==i&&(i=!1),null==a&&(a=""),!this.isVisible(this.t._ELEMENT_H*this.SCALE))return this.endElement(),e.position;this.getReleased()&&null==this.comboSelectedHandle&&(this.inputEnabled=!1,this.comboSelectedHandle=e,this.comboSelectedWindow=this.currentWindow,this.comboSelectedAlign=r,this.comboSelectedTexts=t,this.comboSelectedLabel=a,this.comboSelectedX=this._x+this._windowX|0,this.comboSelectedY=this._y+this._windowY+this.t._ELEMENT_H*this.SCALE+this.t._ELEMENT_SEPARATOR_SIZE*this.SCALE|0,this.comboSelectedW=0|this._w),e==this.submitComboHandle?(e.position=this.comboToSubmit,this.submitComboHandle=null,e.changed=this.changed=!0):e.changed=!1,this.getHover()?(this.g.set_color(this.t.RADIO_COL_HOVER),this.g.drawRect(this._x+this.buttonOffsetY,this._y+this.buttonOffsetY,this._w-2*this.buttonOffsetY,this.t._BUTTON_H*this.SCALE)):(this.g.set_color(this.t.RADIO_COL),this.g.drawRect(this._x+this.buttonOffsetY,this._y+this.buttonOffsetY,this._w-2*this.buttonOffsetY,this.t._BUTTON_H*this.SCALE));var s=this._x+this._w-this.arrowOffsetX-8,n=this._y+this.arrowOffsetY+3;return this.g.fillTriangle(s,n,s+this.t._ARROW_W*this.SCALE,n,s+this.t._ARROW_W*this.SCALE/2,n+this.t._ARROW_H*this.SCALE/2),this.g.set_color(this.t.TEXT_COL),i&&""!=a&&(0==r&&(this._x-=15),this.drawStringSmall(this.g,a,null,null,0==r?2:0),0==r&&(this._x+=15)),2==r&&(this._x-=15),this.drawStringSmall(this.g,t[e.position],null,null,r),2==r&&(this._x+=15),this.endElement(),e.position},slider:function(e,t,a,i,r,s,n,_){if(null==_&&(_=2),null==n&&(n=!0),null==s&&(s=100),null==r&&(r=!1),null==i&&(i=1),null==a&&(a=0),!this.isVisible(this.t._ELEMENT_H*this.SCALE))return this.endElement(),e.value;if(this.getStarted()&&(e.scrolling=!0,this.scrollingHandle=e,this.isScrolling=!0),e.scrolling){var o=i-a,h=this._x+this._windowX+this.buttonOffsetY,l=o/(this._w-2*this.buttonOffsetY),u=a+(this.inputX-h)*l;e.value=(u*s|0)/s,e.valuei&&(e.value=i),e.changed=this.changed=!0}else e.changed=!1;var c=this.getHover();return this.drawSlider(e.value,a,i,r,c),this.g.set_color(this.t.DEFAULT_LABEL_COL),this.drawStringSmall(this.g,t,null,0,_),n&&(this.g.set_color(this.t.TEXT_COL),this.drawStringSmall(this.g,e.value+"",null,0,0==_?2:0)),this.endElement(),e.value},separator:function(){this.isVisible(this.t._ELEMENT_H*this.SCALE)?(this.g.set_color(this.t.SEPARATOR_COL),this.g.fillRect(this._x,this._y,this._w-this.t._DEFAULT_TEXT_OFFSET_X*this.SCALE,this.t._LINE_STRENGTH*this.SCALE),this._y+=2):this._y+=2},drawArrow:function(e,t){var a=this._x+this.arrowOffsetX,i=this._y+this.arrowOffsetY;this.g.set_color(t?this.t.ARROW_COL_HOVER:this.t.ARROW_COL),e?this.g.fillTriangle(a,i,a+this.t._ARROW_W*this.SCALE,i,a+this.t._ARROW_W*this.SCALE/2,i+this.t._ARROW_H*this.SCALE):this.g.fillTriangle(a,i,a,i+this.t._ARROW_H*this.SCALE,a+this.t._ARROW_W*this.SCALE,i+this.t._ARROW_H*this.SCALE/2)},drawCheck:function(e,t){var a=this._x+this.checkOffsetX,i=this._y+this.checkOffsetY;this.g.set_color(t?this.t.CHECK_COL_HOVER:this.t.CHECK_COL);var r=this.g,s=this.t._CHECK_W*this.SCALE,n=this.t._CHECK_H*this.SCALE;this.t.FILL_CHECK_BG?r.fillRect(a,i,s,n):r.drawRect(a,i,s,n,this.t._LINE_STRENGTH*this.SCALE),e&&(this.g.set_color(-1),this.g.drawImage(zui_Zui.checkSelectImage,a+this.checkSelectOffsetX,i+this.checkSelectOffsetY))},drawRadio:function(e,t){var a=this._x+this.radioOffsetX,i=this._y+this.radioOffsetY;this.g.set_color(t?this.t.RADIO_COL_HOVER:this.t.RADIO_COL);var r=this.g,s=this.t._RADIO_W*this.SCALE,n=this.t._RADIO_H*this.SCALE;this.t.FILL_RADIO_BG?r.fillRect(a,i,s,n):r.drawRect(a,i,s,n,this.t._LINE_STRENGTH*this.SCALE),e&&(this.g.set_color(this.t.RADIO_SELECT_COL),this.g.fillRect(a+this.radioSelectOffsetX,i+this.radioSelectOffsetY,this.t._RADIO_SELECT_W*this.SCALE,this.t._RADIO_SELECT_H*this.SCALE))},drawInlineRadio:function(e,t){t?(this.g.set_color(this.t.RADIO_COL_HOVER),this.g.fillRect(this._x+this.buttonOffsetY,this._y+this.buttonOffsetY,this._w-2*this.buttonOffsetY,this.t._BUTTON_H*this.SCALE)):(this.g.set_color(this.t.RADIO_COL),this.g.drawRect(this._x+this.buttonOffsetY,this._y+this.buttonOffsetY,this._w-2*this.buttonOffsetY,this.t._BUTTON_H*this.SCALE)),this.g.set_color(t?this.t.TEXT_COL_HOVER:this.t.TEXT_COL),this.drawStringSmall(this.g,e,this.titleOffsetX,0,1)},drawSlider:function(e,t,a,i,r){var s=this._x+this.buttonOffsetY,n=this._y+this.buttonOffsetY,_=this._w-2*this.buttonOffsetY;this.g.set_color(r?this.t.CHECK_COL_HOVER:this.t.CHECK_COL);var o=this.g,h=this.t._BUTTON_H*this.SCALE;this.t.FILL_SLIDER_BG?o.fillRect(s,n,_,h):o.drawRect(s,n,_,h,this.t._LINE_STRENGTH*this.SCALE),this.g.set_color(r?this.t.SLIDER_COL_HOVER:this.t.SLIDER_COL);var l=(e-t)/(a-t),u=8*this.SCALE,c=i?s:s+(_-u)*l,d=i?_*l:u;this.g.fillRect(c,n,d,this.t._BUTTON_H*this.SCALE)},drawCombo:function(){var e=this.g;this.globalG.set_color(-14540254);var t=this.t._ELEMENT_H*this.SCALE+this.t._ELEMENT_SEPARATOR_SIZE*this.SCALE;this.globalG.begin(!1),this.globalG.fillRect(this.comboSelectedX,this.comboSelectedY,this.comboSelectedW,(this.comboSelectedTexts.length+1)*t),this.beginLayout(this.globalG,this.comboSelectedX,this.comboSelectedY,this.comboSelectedW),this.inputEnabled=!0;for(var a=0,i=this.comboSelectedTexts.length;as&&(t=t.substring(0,s)+".."),null==a&&(a=this.t._DEFAULT_TEXT_OFFSET_X),a*=this.SCALE,e.set_font(this.ops.font),e.set_fontSize(this.fontSize),1==r?a=this._w/2-this.ops.font.width(this.fontSize,t)/2:2==r&&(a=this._w-this.ops.font.width(this.fontSize,t)-this.t._DEFAULT_TEXT_OFFSET_X*this.SCALE),e.drawString(t,this._x+a,this._y+this.fontOffsetY+i)},drawStringSmall:function(e,t,a,i,r){null==r&&(r=0),null==i&&(i=0);var s=this._w/(this.fontSmallSize/2|0)|0;t.length>s&&(t=t.substring(0,s)+".."),null==a&&(a=this.t._DEFAULT_TEXT_OFFSET_X),a*=this.SCALE,e.set_font(this.ops.font),e.set_fontSize(this.fontSmallSize),1==r?a=this._w/2-this.ops.font.width(this.fontSmallSize,t)/2:2==r&&(a=this._w-this.ops.font.width(this.fontSmallSize,t)-this.t._DEFAULT_TEXT_OFFSET_X*this.SCALE),e.drawString(t,this._x+a,this._y+this.fontSmallOffsetY+i)},endElement:function(e){null!=this.currentWindow?0==this.currentWindow.layout?-1==this.curRatio||null!=this.ratios&&this.curRatio==this.ratios.length-1?(null==e&&(e=this.t._ELEMENT_H*this.SCALE+this.t._ELEMENT_SEPARATOR_SIZE*this.SCALE),this._y+=e,null!=this.ratios&&this.curRatio==this.ratios.length-1&&(this.curRatio=-1,this.ratios=null,this._x=this.xBeforeSplit,this._w=this.wBeforeSplit)):(this.curRatio++,this._x+=this._w,this._w=this.wBeforeSplit*this.ratios[this.curRatio]|0):this._x+=this._w+this.t._ELEMENT_SEPARATOR_SIZE*this.SCALE:this._y+=this.t._ELEMENT_H*this.SCALE+this.t._ELEMENT_SEPARATOR_SIZE*this.SCALE},row:function(e){this.ratios=e,this.curRatio=0,this.xBeforeSplit=this._x,this.wBeforeSplit=this._w,this._w=this._w*e[this.curRatio]|0},indent:function(){this._x+=this.t._TAB_W*this.SCALE|0,this._w-=this.t._TAB_W*this.SCALE|0},unindent:function(){this._x-=this.t._TAB_W*this.SCALE|0,this._w+=this.t._TAB_W*this.SCALE|0},drawRect:function(e,t,a,i,r,s,n){null==n&&(n=1),t?e.fillRect(a,i,r,s):e.drawRect(a,i,r,s,this.t._LINE_STRENGTH*this.SCALE)},isVisible:function(e){return null==this.currentWindow||this._y+e>0&&this._y=this._windowX+this._x&&this.inputInitialX=this._windowY+this._y)&&this.inputInitialY=this._windowX+this._x&&this.inputX=this._windowY+this._y)&&this.inputY=e*r&&this.inputX<(e+a)*r&&this.inputY>=t*r)&&this.inputY<(t+i)*r},onMouseDown:function(e,t,a){this.inputStarted=!0,0==e?this.inputDown=!0:this.inputDownR=!0,this.setInitialInputPosition(t*this.ops.scaleTexture|0,a*this.ops.scaleTexture|0)},onMouseUp:function(e,t,a){this.isScrolling?(this.isScrolling=!1,null!=this.scrollingHandle&&(this.scrollingHandle.scrolling=!1)):this.inputReleased=!0,0==e?this.inputDown=!1:this.inputDownR=!1,this.setInputPosition(t*this.ops.scaleTexture|0,a*this.ops.scaleTexture|0),this.deselectText()},onMouseMove:function(e,t,a,i){this.setInputPosition(e*this.ops.scaleTexture|0,t*this.ops.scaleTexture|0)},onMouseWheel:function(e){this.inputWheelDelta=e},setInitialInputPosition:function(e,t){this.setInputPosition(e,t),this.inputInitialX=e,this.inputInitialY=t},setInputPosition:function(e,t){this.inputDX+=e-this.inputX,this.inputDY+=t-this.inputY,this.inputX=e,this.inputY=t},onKeyDown:function(e){this.isKeyDown=!0,this.key=e,32==e&&(this.char=" ")},onKeyUp:function(e){},onKeyPress:function(e){this.isKeyDown=!0,this.char=e},ELEMENT_W:function(){return this.t._ELEMENT_W*this.SCALE},ELEMENT_H:function(){return this.t._ELEMENT_H*this.SCALE},ELEMENT_SEPARATOR_SIZE:function(){return this.t._ELEMENT_SEPARATOR_SIZE*this.SCALE},ARROW_W:function(){return this.t._ARROW_W*this.SCALE},ARROW_H:function(){return this.t._ARROW_H*this.SCALE},BUTTON_H:function(){return this.t._BUTTON_H*this.SCALE},CHECK_W:function(){return this.t._CHECK_W*this.SCALE},CHECK_H:function(){return this.t._CHECK_H*this.SCALE},CHECK_SELECT_W:function(){return this.t._CHECK_SELECT_W*this.SCALE},CHECK_SELECT_H:function(){return this.t._CHECK_SELECT_H*this.SCALE},RADIO_W:function(){return this.t._RADIO_W*this.SCALE},RADIO_H:function(){return this.t._RADIO_H*this.SCALE},RADIO_SELECT_W:function(){return this.t._RADIO_SELECT_W*this.SCALE},RADIO_SELECT_H:function(){return this.t._RADIO_SELECT_H*this.SCALE},SCROLL_W:function(){return this.t._SCROLL_W*this.SCALE|0},SCROLL_BAR_W:function(){return this.t._SCROLL_BAR_W*this.SCALE},DEFAULT_TEXT_OFFSET_X:function(){return this.t._DEFAULT_TEXT_OFFSET_X*this.SCALE},TAB_W:function(){return this.t._TAB_W*this.SCALE|0},LINE_STRENGTH:function(){return this.t._LINE_STRENGTH*this.SCALE},resize:function(e,t,a,i){null==i&&(i=0),e.redraws=2,null!=e.texture&&e.texture.unload(),e.texture=kha_Image.createRenderTarget(t,a,kha_graphics4_TextureFormat.RGBA32,0,1,i),e.texture.get_g2().set_imageScaleQuality(kha_graphics2_ImageScaleQuality.High)},__class__:zui_Zui};var zui_Handle=$hxClasses["zui.Handle"]=function(e){this.changed=!1,this.dragY=0,this.dragX=0,this.dragEnabled=!1,this.dragging=!1,this.lastMaxY=0,this.lastMaxX=0,this.layout=0,this.scrollEnabled=!1,this.scrollOffset=0,this.scrolling=!1,this.redraws=2,this.texture=null,this.text="",this.value=0,this.b=0,this.g=0,this.r=0,this.color=-1,this.position=0,this.selected=!1,null!=e&&(null!=e.selected&&(this.selected=e.selected),null!=e.position&&(this.position=e.position),null!=e.value&&(this.value=e.value),null!=e.text&&(this.text=e.text),null!=e.color&&(this.color=e.color),null!=e.layout&&(this.layout=e.layout))};zui_Handle.__name__=!0,zui_Handle.prototype={selected:null,position:null,color:null,r:null,g:null,b:null,value:null,text:null,texture:null,redraws:null,scrolling:null,scrollOffset:null,scrollEnabled:null,layout:null,lastMaxX:null,lastMaxY:null,dragging:null,dragEnabled:null,dragX:null,dragY:null,changed:null,children:null,nest:function(e,t){for(null==this.children&&(this.children=[]);this.children.length<=e;)this.children.push(null);return null==this.children[e]&&(this.children[e]=new zui_Handle(t)),this.children[e]},__class__:zui_Handle};var $_,$fid=0;$hxClasses.Math=Math,String.prototype.__class__=$hxClasses.String=String,String.__name__=!0,$hxClasses.Array=Array,Array.__name__=!0,Date.prototype.__class__=$hxClasses.Date=Date,Date.__name__=["Date"];var Int=$hxClasses.Int={__name__:["Int"]},Dynamic=$hxClasses.Dynamic={__name__:["Dynamic"]},Float=$hxClasses.Float=Number;Float.__name__=["Float"];var Bool=$hxClasses.Bool=Boolean;Bool.__ename__=["Bool"];var Class=$hxClasses.Class={__name__:["Class"]},Enum={},__map_reserved={},ArrayBuffer=$global.ArrayBuffer||js_html_compat_ArrayBuffer;null==ArrayBuffer.prototype.slice&&(ArrayBuffer.prototype.slice=js_html_compat_ArrayBuffer.sliceImpl);var DataView=$global.DataView||js_html_compat_DataView,Float32Array=$global.Float32Array||js_html_compat_Float32Array._new,Uint8Array=$global.Uint8Array||js_html_compat_Uint8Array._new;Elements.uiw=240,Elements.coff=40,haxe_Unserializer.DEFAULT_RESOLVER=new haxe__$Unserializer_DefaultResolver,haxe_Unserializer.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",haxe_ds_ObjectMap.count=0,haxe_io_FPHelper.i64tmp=new haxe__$Int64__$_$_$Int64(0,0),js_Boot.__toStr={}.toString,js_html_compat_Float32Array.BYTES_PER_ELEMENT=4,js_html_compat_Uint8Array.BYTES_PER_ELEMENT=1,kha_Assets.images=new kha__$Assets_ImageList,kha_Assets.sounds=new kha__$Assets_SoundList,kha_Assets.blobs=new kha__$Assets_BlobList,kha_Assets.fonts=new kha__$Assets_FontList,kha_Assets.videos=new kha__$Assets_VideoList,kha__$Color_Color_$Impl_$.Black=-16777216,kha__$Color_Color_$Impl_$.White=-1,kha__$Color_Color_$Impl_$.Red=-65536,kha__$Color_Color_$Impl_$.Blue=-16776961,kha__$Color_Color_$Impl_$.Green=-16711936,kha__$Color_Color_$Impl_$.Magenta=-65281,kha__$Color_Color_$Impl_$.Yellow=-256,kha__$Color_Color_$Impl_$.Cyan=-16711681,kha__$Color_Color_$Impl_$.Purple=-8388480,kha__$Color_Color_$Impl_$.Pink=-16181,kha__$Color_Color_$Impl_$.Orange=-23296,kha__$Color_Color_$Impl_$.Transparent=0,kha__$Color_Color_$Impl_$.invMaxChannelValue=.00392156862745098,kha_FontStyle.Default=new kha_FontStyle(!1,!1,!1),kha_Scheduler.timeWarpSaveTime=1,kha_Scheduler.DIF_COUNT=3,kha_Scheduler.maxframetime=.5,kha_Scheduler.startTime=0,kha_Shaders.painter_colored_fragData0="s274:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgpvdXQgdmVjNCBGcmFnQ29sb3I7CmluIHZlYzQgZnJhZ21lbnRDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIEZyYWdDb2xvciA9IGZyYWdtZW50Q29sb3I7Cn0KCg",kha_Shaders.painter_colored_vertData0="s439:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWM0IGZyYWdtZW50Q29sb3I7CmluIHZlYzQgdmVydGV4Q29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2ZWM0KHZlcnRleFBvc2l0aW9uLCAxLjApOwogICAgZnJhZ21lbnRDb2xvciA9IHZlcnRleENvbG9yOwp9Cgo",kha_Shaders.painter_image_fragData0="s506:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgp1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CgppbiB2ZWMyIHRleENvb3JkOwppbiB2ZWM0IGNvbG9yOwpvdXQgdmVjNCBGcmFnQ29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZSh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgRnJhZ0NvbG9yID0gdGV4Y29sb3I7Cn0KCg",kha_Shaders.painter_image_vertData0="s508:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWMyIHRleENvb3JkOwppbiB2ZWMyIHRleFBvc2l0aW9uOwpvdXQgdmVjNCBjb2xvcjsKaW4gdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHRleFBvc2l0aW9uOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK",kha_Shaders.painter_text_fragData0="s402:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgp1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CgpvdXQgdmVjNCBGcmFnQ29sb3I7CmluIHZlYzQgZnJhZ21lbnRDb2xvcjsKaW4gdmVjMiB0ZXhDb29yZDsKCnZvaWQgbWFpbigpCnsKICAgIEZyYWdDb2xvciA9IHZlYzQoZnJhZ21lbnRDb2xvci54eXosIHRleHR1cmUodGV4LCB0ZXhDb29yZCkueCAqIGZyYWdtZW50Q29sb3Iudyk7Cn0KCg",kha_Shaders.painter_text_vertData0="s530:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWMyIHRleENvb3JkOwppbiB2ZWMyIHRleFBvc2l0aW9uOwpvdXQgdmVjNCBmcmFnbWVudENvbG9yOwppbiB2ZWM0IHZlcnRleENvbG9yOwoKdm9pZCBtYWluKCkKewogICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2ZXJ0ZXhQb3NpdGlvbiwgMS4wKTsKICAgIHRleENvb3JkID0gdGV4UG9zaXRpb247CiAgICBmcmFnbWVudENvbG9yID0gdmVydGV4Q29sb3I7Cn0KCg",kha_Shaders.painter_video_fragData0="s506:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgp1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7CgppbiB2ZWMyIHRleENvb3JkOwppbiB2ZWM0IGNvbG9yOwpvdXQgdmVjNCBGcmFnQ29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWM0IHRleGNvbG9yID0gdGV4dHVyZSh0ZXgsIHRleENvb3JkKSAqIGNvbG9yOwogICAgdmVjMyBfMzIgPSB0ZXhjb2xvci54eXogKiBjb2xvci53OwogICAgdGV4Y29sb3IgPSB2ZWM0KF8zMi54LCBfMzIueSwgXzMyLnosIHRleGNvbG9yLncpOwogICAgRnJhZ0NvbG9yID0gdGV4Y29sb3I7Cn0KCg",kha_Shaders.painter_video_vertData0="s508:I3ZlcnNpb24gMzMwCiNpZmRlZiBHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV80MjBwYWNrCiNleHRlbnNpb24gR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfNDIwcGFjayA6IHJlcXVpcmUKI2VuZGlmCgp1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCmluIHZlYzMgdmVydGV4UG9zaXRpb247Cm91dCB2ZWMyIHRleENvb3JkOwppbiB2ZWMyIHRleFBvc2l0aW9uOwpvdXQgdmVjNCBjb2xvcjsKaW4gdmVjNCB2ZXJ0ZXhDb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZlYzQodmVydGV4UG9zaXRpb24sIDEuMCk7CiAgICB0ZXhDb29yZCA9IHRleFBvc2l0aW9uOwogICAgY29sb3IgPSB2ZXJ0ZXhDb2xvcjsKfQoK",kha_System.renderListeners=[],kha_System.foregroundListeners=[],kha_System.resumeListeners=[],kha_System.pauseListeners=[],kha_System.backgroundListeners=[],kha_System.shutdownListeners=[],kha_System.dropFilesListeners=[],kha_SystemImpl.maxGamepads=4,kha_audio2_Audio1.channelCount=16,kha_audio2_ogg_tools_Crc32.POLY=79764919,kha_audio2_ogg_vorbis_VorbisDecodeState.INVALID_BITS=-1,kha_audio2_ogg_vorbis_VorbisTools.EOP=-1,kha_audio2_ogg_vorbis_VorbisTools.M__PI=3.141592653589793,kha_audio2_ogg_vorbis_VorbisTools.DIVTAB_NUMER=32,kha_audio2_ogg_vorbis_VorbisTools.DIVTAB_DENOM=64,kha_audio2_ogg_vorbis_VorbisTools.INVERSE_DB_TABLE=[1.0649863e-7,1.1341951e-7,1.2079015e-7,1.2863978e-7,1.3699951e-7,1.4590251e-7,1.5538408e-7,1.6548181e-7,1.7623575e-7,1.8768855e-7,1.9988561e-7,2.128753e-7,2.2670913e-7,2.4144197e-7,2.5713223e-7,2.7384213e-7,2.9163793e-7,3.1059021e-7,3.3077411e-7,3.5226968e-7,3.7516214e-7,3.9954229e-7,4.255068e-7,4.5315863e-7,4.8260743e-7,5.1396998e-7,5.4737065e-7,5.8294187e-7,6.2082472e-7,6.6116941e-7,7.0413592e-7,7.4989464e-7,7.9862701e-7,8.505263e-7,9.0579828e-7,9.6466216e-7,10273513e-13,10941144e-13,11652161e-13,12409384e-13,13215816e-13,14074654e-13,14989305e-13,15963394e-13,17000785e-13,18105592e-13,19282195e-13,20535261e-13,21869758e-13,23290978e-13,24804557e-13,26416497e-13,2813319e-12,29961443e-13,31908506e-13,33982101e-13,36190449e-13,38542308e-13,41047004e-13,4371447e-12,46555282e-13,49580707e-13,5280274e-12,5623416e-12,59888572e-13,63780469e-13,67925283e-13,72339451e-13,77040476e-13,82047e-10,87378876e-13,93057248e-13,99104632e-13,10554501e-12,11240392e-12,11970856e-12,12748789e-12,13577278e-12,14459606e-12,15399272e-12,16400004e-12,17465768e-12,18600792e-12,19809576e-12,21096914e-12,22467911e-12,23928002e-12,25482978e-12,27139006e-12,28902651e-12,30780908e-12,32781225e-12,34911534e-12,37180282e-12,39596466e-12,42169667e-12,4491009e-11,47828601e-12,50936773e-12,54246931e-12,57772202e-12,61526565e-12,65524908e-12,69783085e-12,74317983e-12,79147585e-12,8429104e-11,89768747e-12,95602426e-12,.00010181521,.00010843174,.00011547824,.00012298267,.00013097477,.00013948625,.00014855085,.00015820453,.00016848555,.00017943469,.00019109536,.00020351382,.00021673929,.00023082423,.00024582449,.00026179955,.00027881276,.00029693158,.00031622787,.00033677814,.00035866388,.00038197188,.00040679456,.00043323036,.00046138411,.00049136745,.00052329927,.00055730621,.00059352311,.00063209358,.00067317058,716917e-9,.0007635063,.00081312324,.00086596457,.00092223983,.00098217216,.0010459992,.0011139742,.0011863665,.0012634633,.0013455702,.0014330129,.0015261382,.0016253153,.0017309374,.0018434235,.0019632195,.0020908006,.0022266726,.0023713743,.0025254795,.0026895994,.0028643847,.0030505286,.0032487691,.0034598925,.0036847358,.0039241906,.0041792066,.004450795,.0047400328,.0050480668,.0053761186,.0057254891,.0060975636,.0064938176,.0069158225,.0073652516,.0078438871,.0083536271,.0088964928,.009474637,.010090352,.01074608,.011444421,.012188144,.012980198,.013823725,.014722068,.015678791,.016697687,.017782797,.018938423,.020169149,.021479854,.022875735,.02436233,.025945531,.027631618,.029427276,.031339626,.033376252,.035545228,.037855157,.040315199,.042935108,.045725273,.048696758,.051861348,.055231591,.05882085,.062643361,.066714279,.071049749,.075666962,.080584227,.085821044,.091398179,.097337747,.1036633,.11039993,.11757434,.12521498,.13335215,.14201813,.15124727,.16107617,.1715438,.18269168,.19456402,.20720788,.22067342,.23501402,.25028656,.26655159,.28387361,.30232132,.32196786,.34289114,.36517414,.38890521,.41417847,.44109412,.4697589,.50028648,.53279791,.56742212,.6042964,.64356699,.68538959,.72993007,.77736504,.8278826,.88168307,.9389798,1],kha_audio2_ogg_vorbis_data_Codebook.NO_CODE=255,kha_audio2_ogg_vorbis_data_Codebook.delay=0,kha_audio2_ogg_vorbis_data_Header.PACKET_ID=1,kha_audio2_ogg_vorbis_data_Header.PACKET_COMMENT=3,kha_audio2_ogg_vorbis_data_Header.PACKET_SETUP=5,kha_audio2_ogg_vorbis_data_PageFlag.CONTINUED_PACKET=1,kha_audio2_ogg_vorbis_data_PageFlag.FIRST_PAGE=2,kha_audio2_ogg_vorbis_data_PageFlag.LAST_PAGE=4,kha_audio2_ogg_vorbis_data_Setting.MAX_CHANNELS=16,kha_audio2_ogg_vorbis_data_Setting.PUSHDATA_CRC_COUNT=4,kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_LENGTH=10,kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_TABLE_SIZE=1024,kha_audio2_ogg_vorbis_data_Setting.FAST_HUFFMAN_TABLE_MASK=1023,kha_graphics2_truetype_StbTruetype.STBTT_vmove=1,kha_graphics2_truetype_StbTruetype.STBTT_vline=2,kha_graphics2_truetype_StbTruetype.STBTT_vcurve=3,kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_DONTCARE=0,kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_BOLD=1,kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_ITALIC=2,kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_UNDERSCORE=4,kha_graphics2_truetype_StbTruetype.STBTT_MACSTYLE_NONE=8,kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_UNICODE=0,kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_MAC=1,kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_ISO=2,kha_graphics2_truetype_StbTruetype.STBTT_PLATFORM_ID_MICROSOFT=3,kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_1_0=0,kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_1_1=1,kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_ISO_10646=2,kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_2_0_BMP=3,kha_graphics2_truetype_StbTruetype.STBTT_UNICODE_EID_UNICODE_2_0_FULL=4,kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_SYMBOL=0,kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_UNICODE_BMP=1,kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_SHIFTJIS=2,kha_graphics2_truetype_StbTruetype.STBTT_MS_EID_UNICODE_FULL=10,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_ROMAN=0,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_ARABIC=4,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_JAPANESE=1,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_HEBREW=5,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_CHINESE_TRAD=2,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_GREEK=6,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_KOREAN=3,kha_graphics2_truetype_StbTruetype.STBTT_MAC_EID_RUSSIAN=7,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_ENGLISH=1033,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_ITALIAN=1040,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_CHINESE=2052,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_JAPANESE=1041,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_DUTCH=1043,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_KOREAN=1042,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_FRENCH=1036,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_RUSSIAN=1049,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_GERMAN=1031,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_SPANISH=1033,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_HEBREW=1037,kha_graphics2_truetype_StbTruetype.STBTT_MS_LANG_SWEDISH=1053,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ENGLISH=0,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_JAPANESE=11,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ARABIC=12,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_KOREAN=23,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_DUTCH=4,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_RUSSIAN=32,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_FRENCH=1,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_SPANISH=6,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_GERMAN=2,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_SWEDISH=5,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_HEBREW=10,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_CHINESE_SIMPLIFIED=33,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_ITALIAN=3,kha_graphics2_truetype_StbTruetype.STBTT_MAC_LANG_CHINESE_TRAD=19,kha_graphics2_truetype_StbTruetype.STBTT_MAX_OVERSAMPLE=8,kha_graphics2_truetype_StbTruetype.STBTT_RASTERIZER_VERSION=2,kha_graphics4_ImageShaderPainter.bufferSize=1500,kha_graphics4_ImageShaderPainter.vertexSize=9,kha_graphics4_ColoredShaderPainter.bufferSize=100,kha_graphics4_ColoredShaderPainter.triangleBufferSize=100,kha_graphics4_TextShaderPainter.bufferSize=100,kha_input_Gamepad.__meta__={fields:{sendAxisEvent:{input:null},sendButtonEvent:{input:null}}},kha_input_Gamepad.instances=[],kha_input_Keyboard.__meta__={fields:{sendDownEvent:{input:null},sendUpEvent:{input:null},sendPressEvent:{input:null}}},kha_input_Mouse.__meta__={fields:{sendLeaveEvent:{input:null},sendDownEvent:{input:null},sendUpEvent:{input:null},sendMoveEvent:{input:null},sendWheelEvent:{input:null}}},kha_math_FastMatrix3.width=3,kha_math_FastMatrix3.height=3,kha_math_FastMatrix4.width=4,kha_math_FastMatrix4.height=4,kha_math_Matrix3.width=3,kha_math_Matrix3.height=3,kha_math_Matrix4.width=4,kha_math_Matrix4.height=4,kha_network_ControllerBuilder.nextId=0,zui_Canvas.events=[],zui_Canvas.elemId=-1,zui_Ext.kx=1,zui_Ext.ky=.6666666666666666,zui_Ext.kz=.3333333333333333,zui_Ext.kw=3,zui_Ext.ar=[0,0,0],zui_Ext.Kx=0,zui_Ext.Ky=-.3333333333333333,zui_Ext.Kz=.6666666666666666,zui_Ext.Kw=-1,zui_Ext.e=1e-10,zui_Id.i=0,zui_Themes.light={_FONT_SIZE:15,_FONT_SMALL_SIZE:15,_ELEMENT_W:100,_ELEMENT_H:26,_ELEMENT_SEPARATOR_SIZE:2,_ARROW_W:9,_ARROW_H:9,_BUTTON_H:19,_CHECK_W:15,_CHECK_H:15,_CHECK_SELECT_W:8,_CHECK_SELECT_H:8,_RADIO_W:15,_RADIO_H:15,_RADIO_SELECT_W:8,_RADIO_SELECT_H:8,_SCROLL_W:12,_SCROLL_BAR_W:8,_DEFAULT_TEXT_OFFSET_X:8,_TAB_W:12,_LINE_STRENGTH:1,WINDOW_BG_COL:-1776412,WINDOW_TINT_COL:-1,SCROLL_BG_COL:-1776412,SCROLL_COL:-15658735,SCROLL_HOVER_COL:-10055985,PANEL_BG1_COL:-16777216,PANEL_BG2_COL:-16777216,PANEL_TEXT_COL:-13421773,PANEL_TEXT_COL_HOVER:-13421773,BUTTON_BG_COL:-11175241,BUTTON_TEXT_COL:-15658735,BUTTON_BG_COL_HOVER:-10055985,BUTTON_BG_COL_PRESSED:-3299061,TEXT_INPUT_BG_COL:-13355978,TEXT_INPUT_BG_COL_HOVER:-12303290,TEXT_CURSOR_COL:-15658735,TEXT_CURSOR_FLASH_SPEED:.5,CHECK_COL:-13355978,CHECK_COL_HOVER:-7829368,CHECK_SELECT_COL:-13355978,RADIO_COL:-13355978,RADIO_COL_HOVER:-7829368,RADIO_SELECT_COL:-13355978,SLIDER_COL:-9069865,SLIDER_COL_HOVER:-10055985,TEXT_COL:-15658735,TEXT_COL_HOVER:-15658735,DEFAULT_LABEL_COL:-14540254,ARROW_COL:-4539977,ARROW_COL_HOVER:-3487289,SEPARATOR_COL:-5592406,FILL_WINDOW_BG:!0,FILL_TEXT_INPUT_BG:!1,FILL_BUTTON_BG:!1,FILL_CHECK_BG:!1,FILL_RADIO_BG:!1,FILL_SLIDER_BG:!1},zui_Themes.dark={_FONT_SIZE:15,_FONT_SMALL_SIZE:15,_ELEMENT_W:100,_ELEMENT_H:26,_ELEMENT_SEPARATOR_SIZE:2,_ARROW_W:9,_ARROW_H:9,_BUTTON_H:19,_CHECK_W:15,_CHECK_H:15,_CHECK_SELECT_W:8,_CHECK_SELECT_H:8,_RADIO_W:15,_RADIO_H:15,_RADIO_SELECT_W:8,_RADIO_SELECT_H:8,_SCROLL_W:12,_SCROLL_BAR_W:8,_DEFAULT_TEXT_OFFSET_X:8,_TAB_W:12,_LINE_STRENGTH:1,WINDOW_BG_COL:-15658735,WINDOW_TINT_COL:-1,SCROLL_BG_COL:-15724528,SCROLL_COL:-11974327,SCROLL_HOVER_COL:-2894893,PANEL_BG1_COL:-16777216,PANEL_BG2_COL:-16777216,PANEL_TEXT_COL:-1118482,PANEL_TEXT_COL_HOVER:-1118482,BUTTON_BG_COL:-11175241,BUTTON_TEXT_COL:-3487289,BUTTON_BG_COL_HOVER:-10055985,BUTTON_BG_COL_PRESSED:-3299061,TEXT_INPUT_BG_COL:-13355978,TEXT_INPUT_BG_COL_HOVER:-12303290,TEXT_CURSOR_COL:-3487289,TEXT_CURSOR_FLASH_SPEED:.5,CHECK_COL:-13355978,CHECK_COL_HOVER:-12303290,CHECK_SELECT_COL:-2697514,RADIO_COL:-13355978,RADIO_COL_HOVER:-12303290,RADIO_SELECT_COL:-2697514,SLIDER_COL:-13355978,SLIDER_COL_HOVER:-12303290,TEXT_COL:-3487289,TEXT_COL_HOVER:-3487289,DEFAULT_LABEL_COL:-5592406,ARROW_COL:-3487289,ARROW_COL_HOVER:-3487289,SEPARATOR_COL:-14540513,FILL_WINDOW_BG:!1,FILL_TEXT_INPUT_BG:!1,FILL_BUTTON_BG:!1,FILL_CHECK_BG:!1,FILL_RADIO_BG:!1,FILL_SLIDER_BG:!1},zui_Zui.comboFirst=!0,zui_Handle.global=new zui_Handle,Main.main(); \ No newline at end of file