From fb1b99c49730094cb059f166fbf301bd100d2003 Mon Sep 17 00:00:00 2001 From: Volodymyr Shymanskyy Date: Mon, 11 Nov 2019 01:53:07 +0200 Subject: [PATCH] Add CoreMark --- test/benchmark/coremark/README.md | 35 +++++++++++++++++++++ test/benchmark/coremark/coremark-wasi.wasm | Bin 0 -> 43614 bytes test/benchmark/coremark/coremark.html | 1 + test/benchmark/coremark/coremark.js | 19 +++++++++++ test/benchmark/coremark/coremark.wasm | Bin 0 -> 26922 bytes 5 files changed, 55 insertions(+) create mode 100644 test/benchmark/coremark/README.md create mode 100755 test/benchmark/coremark/coremark-wasi.wasm create mode 100644 test/benchmark/coremark/coremark.html create mode 100644 test/benchmark/coremark/coremark.js create mode 100644 test/benchmark/coremark/coremark.wasm diff --git a/test/benchmark/coremark/README.md b/test/benchmark/coremark/README.md new file mode 100644 index 0000000..0d67f18 --- /dev/null +++ b/test/benchmark/coremark/README.md @@ -0,0 +1,35 @@ +# CoreMark + +The `coremark` files in this directory were produced by: + +```sh +$ make compile PORT_DIR=linux CC=emcc EXE=.html XCFLAGS="-O3 --llvm-lto 3 --closure 1" +$ make compile PORT_DIR=linux CC=wasicc EXE=-wasi.wasm XCFLAGS="-Ofast -flto" +``` + + +### Running + +```sh +export ENGINES_PATH=/opt/wasm_engines + +# WAC => 101.895252 +$ENGINES_PATH/wac/wax coremark-wasi.wasm + +# wasm-micro-runtime => [fails] +#$ENGINES_PATH/wasm-micro-runtime/core/iwasm/products/linux/build/iwasm coremark-wasi.wasm + +# Wasmer => 7126.660188 +wasmer run coremark-wasi.wasm + +# V8 (Node.js) => 10962.508222 +node ./coremark.js + +# WAVM => 20273.009866 +$ENGINES_PATH/wasm-jit-prototype/_build/bin/wavm run coremark-wasi.wasm + +# Native on the same machine => 26704.052340 +make compile PORT_DIR=linux64 CC=gcc EXE=.elf XCFLAGS="-O3 -flto" +./coremark.elf +``` + diff --git a/test/benchmark/coremark/coremark-wasi.wasm b/test/benchmark/coremark/coremark-wasi.wasm new file mode 100755 index 0000000000000000000000000000000000000000..309a948fa26f860d5ab86ae27cfe5700617a5c13 GIT binary patch literal 43614 zcmeIbeUx11ecyNQotK^2*~QMj09arF;+YFb0YxsjBtQTJX%QDB!8b`{B-+QPZL(VI z4#=Hd?90q72s#vZWihtWq%jlAiRCykt*Di3%MI%&36she+~ZU0G;$B?CZ}rZ6@40tgb{8Pz(5-V0LGH}G&+G5~<$0caCzxwp34GV0!Jelpw)_@gpUrT_MggW!_|uF|%fGz(}Iy|@{^82vBN(D3tft;N}m zl~#N1(sF&z<%QX`W}Tb%?6dWD5cOA&_f#(|HfLAnuGE8|zs+cU&9J6R=r!l`Q_F5rP=o4mAXxt>j$d5)?A&RtzTPg2l@V*VNklf za3h3E)G~6b9u)e!4N%dl*O!7~f4Mq5-&}0hgMr-HGo@0Ykk3a^zEsGUqC$zkpgdSA zL{T9O3qghIU?2zzg$M>mQ4|dELGwbm78VMHTo^>f5?oELe>Gnj7>|lq>Q`2qFGN9c z7KoeeV7NRO21!`SfAB-c?-~4ee=9l@1(ko93-g;txA+$%)ulK%W|!3;w}MdQT?<^ zAE8-PeMOf;`AS;VNP=@gpqACotEQIA+PK_suHr%ljUyL6u8Lada*qs$73MWym^K+| zRDVz%hl9kR2$HCs|>`D(!a$Z+JCh$|c4ko}7`QdFt_6AV6 zFEVU>mJwiomE!S6vbN55^qn@QMGRXZ*uuc>DPvc~zO z)Tl8Y@{m6smExi+Bwx1LxbUcPElOT;x#!nU`{|&krhY|DT=B_+uHcHNqmrZF>1e3p z^3J9xCb{P6D9>%N5%Xp8r;;Jsm{*%jt`2m(yL|mAHe40@a4) z5_pUqFh{I;*;rFXmtC3K^3tCK@uicm{imR1Vpx!XTw8}YwY)3TiZXHFT09Bw-u*2$H>xtJsKUa;Q3^_=zJ19%480Jj7b5iz=)BnbgYLPfC^$1 z;9yN|EXPQUj7Z_THzIw+sRf`QADBDeE2QB4c&&gOA-L5Tc!9^{xn`ag+c^bEfL|A= zD(D$ft|XIC?3hdVBKjdvlO`El3}He_+k~3pUZE~Ys6nu6p@zzmD-%|@as{9}N-K&U(IOyr?dN2nt&)Fp=O02(7gkBhs)6JbF{twY)ja3!7)6f2I2*xUjYL zGT#4sa3=Z2q{BvU$$h_s72$`?h<C|a##qu&zz3lR-X>yuj|gNiHG(zyT>bF-&`JQU`+#@vJKxqKteF-0m!cp z=e=V>QzD+0n-nFK_x}na`IJQoZg`xxYme>SmeG2iIS0Z&4~7MH3eT0 z)F^pOG8UL;m38p5|E}gb9sQ)AU3A)EPY7EY$yvq63U8)^AtGC32j}Kh(zJ+}2mSUF z%bwZ9#Mk)S<9jg7$vyB@;f@RGhfvVoJk9c(WT=7UTJvN#x%DIj5Ionl_1b_a%H=!C{w$cS<$Ti; zx=Q1#ak-l`#CaJWIRE594M=Wo7zsqn6v*hx-Ha~sZPGqD`lyGZ1+0KVU_34`P1ec= z1eZh1=_6@{EMlyePinxP{($6j4u(;Gf!c{8a>9Us&c_top~w-95En&-IgD=>aHuKy zZG+H0QozBz44P`~2GJoh+fI~f0~;G)CJ->jFv-2px8OQUXzfM{S5B(Qgex-x zXiZ_st&gM=OvyiOMA;|-}sN#P|EDetrRN@+T@ z8{$j+@t!1avyx)4c%u|U!Bv)G808LCw@q^ptHCUrE(ofuC?xxt#53TYjM0t-s~Z$#8N)KqPT zJco(yA&gXqNikpqa=S1?G%3h)xB*;7o&`X3pyMgf0oy1)tyTxQgzTOC{=+md0m=Y-1ZM1wM`4Hq^pHEIP*8%1uX0a3s^`_)8(=SEJUN%yP$;z%OO|r%Gj%dd4L)K zK{PL?0GnVBx{Je%mpK)~VUkf&#Du2EjJ)GiwyB*KM&z_|=ZRdhwJsm=O7WzBrg+NJ zQ@27W6ZlYuFv^5XL`x?W2{o@KWH>310SV((PPNxM!%<|XD_SS3j@DVIHJFJvBOQ+p zVQzO5Z&o*vE)(xE;?4SYk8lr~a1VAOBH!4AyW|GFa5J_ogGxqI;ij1)qF&*aq-Vly z)g~BuFWf*c(anS#oOTK~t1*_ir@=C}sc<8jKHL&drAIegJ2!oY@me`|k@qfKbYy$S z+PO(H+>>l$dPI2;tJtR= zp{)eU(OI5A$01vw;6htF=6s=2=6quugv5(|9P|}gD(=V=2D*8IPflFgr=UE69-@!m z{81ppM3ZT}{si;#SsR9yini4RF%PVkU``G5*xLj--s zh`6MxB*8K3KcZYM)EYrLK&Z7c!!}~;E8Fbw?olH%UidC~ZD(+(pGnrE!#Rv!28q8k zksCp9I;~uHhMT6oJu_q|frxYUj-36Np6YMmQ=@D#%KI5;hQVZTIRSK>$sWMqk#eTPr z;%i@ej3{JMPzxmU9c~lRVIJFYYUtr~$I$z=2A@WNIotl;wDVQcth%EwcWmj?*d|pJ zgI*E8DCEzw<8AQ^^X-gZcFiILk7dW0dS%B^Z~P)F>I0XM{kYUlbUnD=N)e_OiCT)x z%xN?O7DzNq>qax7qI$d(iZ5J+q)?V@)0BV)Ajl&kpGS}lE1+Q^J%>Z+1T^Hy5XEN_ z0vbA?DOo^+1f+Q~#;7wBblf(z=Iq2Y28&rE-_R!o#sR@-VT}yU@pK`VtpK{%qORj$ zM`9UlEd)#~E0MIkFTJt+^vafhE0y^$#OaEQ(sf&CV)S4c4ESoYbb&7w3pSC3U`2+V zodw!Q{)C1P(dDP71LBnQKm{GD|43dPlMz&2jF{u4?unh~n7MyHEx=t6?MjX652=R@ z2#=67+nQl7*q>5y(e1fXoV&2~xqtH;xve;VCMTA$lHyBV`qYP&zbnGfl9-=@$tw(1 z{b7w9RPq5IwLsWb|B|0fSWA+7=BuoQQA!hlOM;JpKV%+KJkqgcT(J)+Iw-UvW`TE{ zl?iiF}G?**!t^ZwbQcSM*uAA1&OWAF1(8-uMNYfLB=kDZ^db(h=~m@^c}_ z;Q%>|&Wnwo<4hLeFfjaqgrgP#i(L_us|wxKe>vEjyv^CGK#J>Rz>;4BZ%RXm$~9=% zW<;n$hP#fmrkl0?GSnD!t^t}lZz@$e^dQl4I5A!3y*r|lGnq|A|17`iHir4;0ft4>Gmw)Y(}Bzyfpbv)iBiQ=uW=*nnc%_m$i!H(Q%eV zf%0^8TtbgqP+?WOHk#I1{eu3*MQx~-AiDE+qr^u%Tc0EOYl zJ8%dbgJVK7>uv(k*wiTr2DKsZJ5G@>h%3@&9u9{P6en+lnM4PbuYIIAiGk+8EQe-0 zM=RfEpRACwr;xl6HIh=3V;F_xOrxd+A1hm8N5WT@o3%2RuM`@!LB4;5_Cp+(;qq*w zHUx2o`P;+aNLK)BRX3t=;hh1uXX%OI(2ck~joKdH0CH53u6RT=smhc2a&_U9niY>E zA9z$p6KkXVji?2+p}C?D$Rdr@LM_jYQbv=J=^(0&(IP^^Ya?zfQKMAIM``9bPTB=1 z9(`hXfDyeh1{A0#P=GS1{ylL9?=~`AH0k$fx$w>)jK`Cw8}UR^*1qp%ZLe9KB-fxH z>JlZ#F2-Y1Og{lnxY(P7Zdez?43y($Y^rf*5Y)ycQTv#GJo%(F@(8&hwPBm+6b z8muFtjf8~_iov9|-&x}v$D|$I;#d* z!(?z7cRkjC$6mg|r6;Cp6YvWpO$IPn`^AJB&4l$>GH9#z6LN1_#i)%i^0-lEznFhQ z0=2&egtbW~XUhFz_E?vI+($hGq*rbi0`3QQCbh)c)gHM;M~VF`{vqTjh?$1%IDFQ7G2PwF=@ zC`NHKnP|iRhu};}crUY=}w zIGbqJ2fd4`KP`Q&AXe|Z^B30R{cfL^FwEiJbY_KSQk)UI09{6OkbrED%dx5WV2ack zq#@}va&)Mqe@MyJK9qs-b(q%5Yua1@qsxMGb4)f9I=-_BTeO1^@CBF^8L5)S) z+jD1YhuJQmR2EC7Z#3b6Ba11$|GCjUr67!Q`6GoQc(TlM*6o2-L$~$b9L{dOf_oi0 zl-=DQ218TX4JX=%w06}Q;Xrm{omi?FPfGfGa;i2C8}JHylkWtzgMEO*27w+Qep=>x zs8-d+%t86N5#1p!RfPyuclb*p^qc=hDj060sU!7=FXTTPAHEQLTq{+~fwg1fkpZ9P z`(Tpa@C0hq4kb}-N|uE|yL0*}`z9G!PiE4gbDg34Ku+h0+_)R^o`5i7+>Ky3#&Hsz z(JyR%FXOX%?hbz{K8*aKAsvQ!3EZ1(Rb`;9=65_RrGdYzOAk7;!OE$r+97X<4|D2m zYpePnG4$cuZALL{X+NnT%ivag+l9fGKJ}#zHnML&6@DLdy{&c_f25e}wlA4~>=Hoo zJh&nwx4e}09Kp=XUC?o#cL#1#yc(CnVJY{Ts<^#w5*KNDH)7Uh45=`x zQHSz($To=VSl`cZC) zIv@+rp;)xBZ+H)$NOT^OSRpOfIgh-b4ij!f>1H9h&Ph0@+a*lwR)n$LiXM+gr_!`q z;h}sy`ZOjp;6~{+_6TzwkbzeL;w5(ap%@{HS*)w~9d13|r#@rJ)=Tn$wk(d3B&5O# zgzL2f;=!0ASR2N%y^}>gOra1ALXJwzGNNoFi5qRi1YY(4j^p4~8bf)ybq9l;5UNT9 zHX@fGqU=`yAXl&(Nr(<28StGXsqR9OeYZxEY6UPL$@nfL8HXhJ4oISiq?aW7dawXg zfs4Tyu@j}pCNWLmCWqyU?!b~Cfj-3PZ$-wmBfscv$&sI^9YG^p^0v%it;Q5kpvQ=~ zK@g-@2N+#TRznqOP z#XUqF>6f!H5f$lY1ni3&eMB}xd{@EElZMorE}GdZjF6LqvJXFWt^3X}B_ zMq%!na~*{eng+-mNr{aP zc4h8A6!M6Z`ZJj`v5|02!+Hz2cob-Zt?HU)LZlZxW%AveC{JwzKjn~phiz7}HuGO?RE|AksCp)kFFijZ&= z#*d-Yj58$zFfFBy-I1Sg@lU^s;7gy5xcF6WYezUAks35?^;;2v+WzFoMm$2`*D{xu z+8awSF)m3(Y1IzjHVSe|_~hcMSbwZH5I`8xQuQJ;1u)6mn4*xeWQL%lf}TW8i*m7s zlTcu!p;$yslIi3QKnWh3Qi%c*2C&4}%pW*l{b@lQR>Lg)<(fEffZZVYNVLb zfo`m`&jOMoZuB4hbcdQ>s2zb)DFJW z)+ieKQ|qO+nPI8vW0_6p7+;i8A?RCC8r%AtWPvnDmbjy~uO%3PN>Wr9IaNCfE8j*% z2Z>IwKk<~0X0QjDn!laQcdmorvW0y|evTN#a(Hbk}e_ZCRl7L7$iC%)EX+I*bz6GTG_@4*E$uwUcixWzk16pZ0yk(+po zQhJk!2~a82v1AJ(nuvj{k_KzwM#W#RAyz2umIy*!DFGY=LsNryew3kz+Z5y=VEZb6 z9I=34kXnpK)>!dTwC&@5WPVgpA*)o%q{mH@0Ys`vGLtTAD5)ov~KYMW+=;&xudF2>KHsB;EuWx%)?P{MSTkvly`4r zL6$q}!z}+q8T}75V${QO7{Aa{RCaL7 z85hqE(LN1?_PPDGC+AZQ+&MCAQa57h7o%ECYZl9{EP}C>t)6Bgb(aYvOfa(4<&Za5 z``i?JZ)#~Pnw{p!kJ>^&*lkafqds275Mx;Z$*c|KhW{w$LnR$hMX2p7siRq%$p)e{ zCq+b$hj#kyKyf=BM+r#yBk$@&^xQw+hz&kDF6=NsDwwEHLy)hdl0L{kDs|DvE#+TF z--~=D$9&4aWFO&?t)&7CRxg8}3L`J8u=4p9SRI;T<7m{jE6Xx$8J*LmM7cYk*o+Y? zbOcR-LAGqIY#jGysXeX}O;)JT?N!z~qAgi^`{+}9Ka(4k0P+-@wzIte_B6^W5J0Wc z0$N9KFnT>gqdR7y0p2NP1^exC`nC$SL&^}+>XJFJP9wP+XoZh?qL1S;#z#dJ&+h&5 z_P9ma)RgPp)b9TWu1m^#xDM<6!f==CJ%n%{#JPO1M?1kwc0XO#?Xi-|?XZ&L5@UVb zk{FM_7hFDdESrqf2v$PkZRrJD`fJSPw; zXah5xX6ux#f5}YfpU)jGLWyBBt$S!5fhqro9-FpxDkyQ6`#2BoZl zj7A4aVR?-Dh@cN5=-fdq#3-4IDGt zsgm7iyeGWjj3;kgH51&h*WLY9-xV<1(0|vy@7kbqF6+A@`;CXKa@=Q28!J1xiZN%g zqEb1;;mZGUVUH>#HdtCB1H6n3}VJJ7yvpU*LIF0 zHsQwK@YXP*n$B1(tWGN%Vf}Li! zxT4C78?RH6WP|N{L>%p{r_gOdGeMJ$XP#6^SXCxq)DvgV#~zenI)NW;~5N zo%cTOdO&wigP&2AZuEG=dE!t55y=3=67R3kVdu(ca%!Rg*H9N)Rzd0JyR_)sFjV=qL+JO+{1vK?YuojK^tn`Stz zUbz$giO4dT%d&9(P*99flUhgULpX)U=4++0-n9Z-VG`B? z{_DJRo_9y;yrSX_kc6nx_JJqk(o`JUfoRGGK(#cr#9QkGo)yF4B|YfEGsR0f?k}Kp zEVjf;WKzgVK*1|ABmkm4O>V3xj%S4X$X2XOr{31PL`hDVK8~cPNqjs6FkUt)UzLA! zK`j&;p+x%dm#z>)nPJ}QA{mgBK`anXAK0c^PnT%|$fyUX>}e=U*tqa5mEy@bb4aBn zzx9Xz&+`oq=Y0AHU%n>OpghLB8PkL|jmB4=-8*i2wBH09g2Uvc%0aU{iO_i6%N3=J z5lvOTTnS65Dli6JMmB)<%6jt28gH}%1;+Dn5v|#URI1y#m$V=Rvs)9s(k4;XB&7w7A-YbUpdNmH zzQ8E5jF93E*$^LykWZZUwnW1?O7yh5$RTd-$pscxXesZGiPKg62RgD+9-URt@xp3nxP{hTL2!Sc7*fX59p?hxzoM)B zxd4-(E5ub#Cva6f7a*s)8aNm5{uEu6&IR&3T$RrSWq(C*G3c)<=Q0HtIv1Funhu7~ z1;f5}&$(cazZxL}L6Cbi-h=DICL7*Nm0e}JG#!}!SlM?6xY>x*V)%(VredcZ5N_Ki zk|AMUvnPIlTQ(#lN&Pklhf?{2D9Z5z5i%PxSy(eO%q~Fp5xev@v2Ap#v{=iVsZXWV zIn*s{I3Sy34fQ&m7dz!;E5}&`OETU#C1F7lmEed<%USGzQCdn~wED<;%g*Ez>rDqA zY$&k6?p*UZGv-6??VVFg-}dhz8n1phW(RpQy_PB1^W^0qU=j&QBAVxlrM!)hRjE>a%ZW_zphNUSVq(jKT(ojv3 z;??B3?t&!p6HvDGnyCgC=XK&)=VENUPFK?x{gl9))-@ZbGjftMZ_WT)FE&_5e-IK{ zqpSt77W0f|K5J+3oyx!M8o;e9944OqH8r%0P};_>^8D9YaC_x z;jPWj*fTjW@a+d*{(24L98_Kz5BFz_9dGd3!sr;)TY*^Tg1f>1(6&;O1%KC5$EbvY zDR|vF53-9`#4lHQ?g{bBw|Rw_f1SK5?1_SqY4nmGM40d~yemA5|Kuy;Nn5@Gp0Xu; z;H~|r$&6n7PF{>E+s$O>hL;?6Yq;susP&AC^mW#M@d_T@O_HAIr4mFk@sl+((eBfKRK?gwRutT#PPeCK$w3rfNz=ZP2_MKg;3>Ev3?wGN55*Yye-FSqgLptp(={H9F(8y+l`-(H}1+VsKk!1jX4 z?FDDI7qC9rKgOx;1-vb)zr{>n!GKYrdR-#%AMU5uv=0x5Sc3fh;fEE?n(EoJ=u)`j zvEHYPa%_FFiSC7Hgfvw9x~J@_N`4Tw?J4&m3h%U3VYH?bAQgr$+nZH+y9FxDTL*dK z5&f)1gY5qM|8=^s3zeXd?FsuuQCiLJofJ@Pq=|84UJ(ldtNZx~_VkMJ4?s*)$nO^70~ z>LtpA-oFV^B!An8GOo59W)`7xeHu zmxROKCQnFtAL+(D>5xwGu@AKUYP+9JUPuR2y`-D)q?=4hC*=~^#PCePsypTDkD*{3 zp4RavDOewDW<@gH8MUbh$Vqp-Ia=D)9F002lN!Z%fDi}y3?Z*AZX(4*0Y70|`kyb{ z`RU)Yy{E@h00HLp0Sv0y+XobZ`C!NQzCS$c6eMl^5fX=^4fLy21XfJ|)#?(jb~%Q} z*}?`?ekpJ3cDCLcvq?q>#<)a8@ZGOkf`Bc|kuWm}u@x-U+8G&@?2tIs{7&bJCk zs9`>y9F9aK*6wnO+IVer7lI;VurO~Rb1)x}`Ak>`>43v&a(l=6K<_jVFG5r84c6V! zT*^+8q<$h0P78ld-$SfOj4lfzC6IJM7)UP5Fy9z!XXwgGH7$RVfVfiS_j0UzBM6-K zkCIPce~ATW<_KD>JWNr-Z=}5=p~(3Z-wRh1C8*y;y=GD2ISLbhDUATF5akpw{ zVA#O~s=?3=py}m znhn89Y&)rL=%oXQUTqL_GRW2rnHwRVT&K2xC<)?0zdw*RKu8f`M69J>S;23czR(`)$wRT27(6N@_W}kTnj`ucDCGzaPpo%g9OtJ(2)+M3F^Q`RH<;% zR)WtaJ2ImAO*B)$Oq}fvn+TF35K|AYF(4^jN#lz>-OkpxrWfcNBnGQ&P$4OoBI4~cjiWU4PBVMFZ6BR?42&MIlR`n;J3_T zXJi+X5mgbD>frwHRohY}PSTGA@d6*hqUnIA@h-;t6+sSt@zlgr_JctfD=KL?qX>!@ z!L#)3ikM24gTBLgC@OIVx~3k?^I7m>4^t`|&nG|SjapJ58q!;}bJ#z?QP#|lIkc0> z4aWZ&wk6a#2ArhKk$>VhUZTMJX8imNf~nS9E@M^-tf{2HUamy|!=}I8>W4+7bQ-_g z$X?fG)_&W>%reLZ>C@Rnh6|#}U^&i- zzK}fPbhLmdh~}rmFYs9#l+jXr`aa#?bGi@S4~>yOwnMzI8{zK{znBU8(ECJx&xu|T zeIa>)AVq?$mC!ze!mMY*epcKuZ6kVxnP|A=5gQEPZ&u}@FSjd_57!*yNX0T>ZSToo$F=i+=D1IUgil*2; zff*E<5|J=yk3r$rF1(R3gHmCs@@t}SQO~kLVXa2LPvKjn@U74{E^@XCvn(qOsVj+P z)|^&39bHe|D1m)WZ(Fyp%N(gc%VGCAc^oD`_Pgc<-C)|t2K;S&E$YF3ifohr#y8~g z?Roa@5Ll&4+V|qs-oz#2Y8o!kzVRR5C1W)IxGq_NEgD3s*HsR= zey0*!2q46D5@FCvZAe|52xel1u>D`9&PwE@u&uBz@TbQi)B&FRviQJd~~xhqZl) z+{04L)v!*_z(V_Vaz^Cbk$zgItW$Y5=zy!}nr#m2;$Kd#;lld~wsn*u-vVw7xfUn~ z)|(i34wIEEU{8V2L?|4y=pE(~Bo-Es9!R3!gkuv$1PhbG3R)1>@)-DnNg86KgTN%1 zlC>fOCtG_sy01CkVKKBRzUx=zq}Mic?co70rjktf;U}sOOX0ws1A9+z(+W zGpFqVl;D|!z_0!fC^{)f@Db8wt=Fu^>E0xO@RPf^ZY7}UPEoqaMgk>S_R^vLP^1^S z#jJ6l50r3{>Mjxy6D6(D1(HIiA2I|GPJzifv;GXy5Sn;M$HSz5bTlzWdNp22;>}U0 zMslZGK!t`0xfZy=!`84^z5?xba!5xvzRANuK?5PyXjhY=bzL(kGL^iQ)j>geI~^+1 zE5+^C!VRn>(Ct$8!x+(dNyyh&+=C?G{xv?$2H-@AvaH}uJvWlPuFvX^YN_dGRUDp z2p#Ijrg&h!(F06$J_&BmS&1$T&QD$V-GP@9Rvh0j*txi_i>2iH%inY5D=+@zhyUPb z{_U@S^wQH0ejy%zIIw?jKX_TQiWqiY#=DG8EpNBVuCupWjsKiAlqeu(zH36@VS2Cv z%tpQpS`Hhuh0T z?*)}}US@pj(p%x#JO&_fgp|oum2Yjwa zF`m(ur$OakMB2PhzOBI z4@Yl=$v;V}_~nO`9`u^%)5rUA*Tdx3({|T8?IK=>^{`jfAgG&xFlBw+jsM;Ia<7HS z|DJZ?CpyxhB`aBz?j?`R){BKW z@iZMw1W!lLB>#8XiEZc(DNUR#n!sCj`!SgM{RW$j4<~;Eao1$mZ_qCl5zWULJ@xxd z`khLCA?-JlO(%wPIPMr@(bgsZecHff4P+FcvP=QA|36fn(VlcjFGB0kmVvBM<@x$*-$rIzQFP zZ}r@R%5jpD^jCl)z3T879N)IWzM39u6KJe&CMNN1m8I6uJ-G z&g#P6eesFv*$-Dv-933%Qoe8W=tK8hI9JGj@c5q@{?Kjr4jg=J{Mbj{34%{-%+J?b zt>E$H<@&R8%kI((?Ye8#*Ei}b^Y!52)hlz0E3V#bt~P^@*IOIQZMU-8cFp=)v)-z& zwC64@*MpByGUwXu7lNnj%`1zo*5c}lTd1!r))#`O*6Pi&S1E@2o_ImaCg~VsbA6fps~8qq}8R3)(gSoD{ZjbSOX^4 zdZE>>Uvcwu%gfzXl&q~b=bDSlFSw1BxvO)F%ZBvhD_7^17wJ^5F9i=ZS6i*=g}SD5 z%Zn>Z^q*UpUR|M+Vd#er9?q~dYA`Z1duVlK1=K|%(X3)`!O>-=+z%L^`(H#N!#q3OHg)}31{ZmH|?>ikmg3?1QGfd8s=&#!JU z`0D)pMl<+Cdk*dL3N*iZ70r$G@(yz=I2nvWr{9ttavF=|HUh7 z%XQJxtI`#iJ%>IZ@E}W%X3$xni`=~X)2Ur6l4wi=lEE?{rqZkNs6-o-Gl7D zSBrMj%oX3SR}tqfW$xS@+Pv_BG#J5r zR@&TS5PC}yDumRe{<*o81qABPZmePw>(}P%^#!p7tG)Q#>YAIw@?vr*dT4HK?$YA& zVtdiFrv=!H^NUhVWZJAf6MG%TE(O8#9nQI#@1MCA9ADX3UcSBSl@0`h!GQw@R8a7x zWqnorbr2i~MhB_S4Gsk1RGG&SgL09|N>Egvv}e{>-+QtfMjlrEa1ca6S;b{lcIvZs zo$uaMY+R-G!ErSGy%D(u7Y5{uI;1ji}~!W?`g{AzMk8?y0(w9FXof~Kj9V3wA2d# z`u;3-j*o@a4eXV}?`=qIkmikM6QM!<78YBwWeX<;pFx0DbnO<~cgm2u>E-$9wdUeV zyM-;A)=1OoNbObEe$G2gl;8?xodJ4aw_azq|diarx(=*?H$ISO5 zi_H4*gOxedIQdv`BDm*C0l7$IU|w|t9hz(6MR4^k!)$&Pb2!&r zvZe$jhADQ|HE-4yyJTwiY#lp&3uB*Nx@9nEddpx0ul=+0Ctqkx{LU}`Zy*1q&ySYA z?|(Y-=)j|Y{_FRB@n4_&t1tg&|M3Sl{@f!U|M*iMuX*=6-<*d^ADB6H%}u-3bLNgN z)zhNEpr<(=ySaGH-FkK-@!)Meo^eR&y`L7|#$oUNi+ z1t4A$)7DQ5>$+Pb5EWo8=Dn|6k(16Q>zQBEV80-@$fOq7#XB95nOJ~0V0G&5d88wiI6^#ta!V^j z95kD2%kG>A9)sMndavLev%gol*57OC-*vw8w8{QTTyOu=7!Tl96aFsp_auLl{MGpT z5Pv86`!?hJA%AkeBmBL=_5aM@Z}InU_f-4}!DXHGnG#~shC2X{Yn^2Dk7 zsUHYVo;op8pMK`g2lt-1cV?!3$H`#&1lGAeeNQlb_DubbvnTHf?wC1on(p@mCuwx* z)XYqvCZ}j0Oy7O?%!xBxsEt+Ki*XNBt^TKiJMO;c9)N%2p2}Nc8cPVHAhgf^kBHkG zf5(e_h$iX3tnD^0l2zaE`)Np_fA2Q0rqaA;w@n~;^iPL7{MD^}enazqyO>vw6TVe^ zDA+qY`}|yMarW}UtWsd~>l~9~!j=S7w!d&uS^4HC&u!yk>h(@d{y*(-BvvvaLhz1cRsp4{)DTVA|0 zKfAcH*cS1XU>Ssx_LVti&hna$AwEIUbl^H||B zSFH~W&dw^4yu7^n{0E0;q1VFVs;Bs$DJ+Z7$A_{~-Q8ZAoh4Lbt>!~8gw`x7%o_dg z&`6h;XT|P2JAK6A>GJGsd(|49$ZOKOD7b9**Jg_T;_jl|U%jUTgWaDjg7d=0+9`dL z$=^G`_X-!Mi#VqFwHMCln?;YacK=-SK2OJU%&Emscripten-Generated Codeimage/svg+xml
Downloading...
Resize canvasLock/hide mouse pointer    
\ No newline at end of file diff --git a/test/benchmark/coremark/coremark.js b/test/benchmark/coremark/coremark.js new file mode 100644 index 0000000..e53e04f --- /dev/null +++ b/test/benchmark/coremark/coremark.js @@ -0,0 +1,19 @@ +var b;b||(b=typeof Module !== 'undefined' ? Module : {});var l={},n;for(n in b)b.hasOwnProperty(n)&&(l[n]=b[n]);var p=[],r="./this.program";function t(a,c){throw c;}var u=!1,v=!1,w=!1,ca=!1,da=!1;u="object"===typeof window;v="function"===typeof importScripts;w=(ca="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node)&&!u&&!v;da=!u&&!w&&!v;var x="",B,C; +if(w){x=__dirname+"/";var D,E;B=function(a,c){D||(D=require("fs"));E||(E=require("path"));a=E.normalize(a);a=D.readFileSync(a);return c?a:a.toString()};C=function(a){a=B(a,!0);a.buffer||(a=new Uint8Array(a));a.buffer||F("Assertion failed: undefined");return a};1=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4}var g=c+1;c=ja(g);d=c;e=ka;if(0=f){var k=a.charCodeAt(++h);f=65536+((f&1023)<<10)|k&1023}if(127>=f){if(d>=g)break;e[d++]=f}else{if(2047>=f){if(d+1>=g)break;e[d++]=192|f>>6}else{if(65535>=f){if(d+2>=g)break;e[d++]=224|f>>12}else{if(d+3>=g)break; +e[d++]=240|f>>18;e[d++]=128|f>>12&63}e[d++]=128|f>>6&63}e[d++]=128|f&63}}e[d]=0}return c}var buffer,ka,M,N,O=b.TOTAL_MEMORY||16777216;b.wasmMemory?K=b.wasmMemory:K=new WebAssembly.Memory({initial:O/65536,maximum:O/65536});K&&(buffer=K.buffer);O=buffer.byteLength;var P=buffer;buffer=P;b.HEAP8=ka=new Int8Array(P);b.HEAP16=new Int16Array(P);b.HEAP32=N=new Int32Array(P);b.HEAPU8=M=new Uint8Array(P);b.HEAPU16=new Uint16Array(P);b.HEAPU32=new Uint32Array(P);b.HEAPF32=new Float32Array(P);b.HEAPF64=new Float64Array(P); +N[1292]=5248240;function Q(a){for(;0>2]=28),-1;N[c>>2]=a/1E3|0;N[c+4>>2]=a%1E3*1E6|0;return 0},b:function(a,c,d){M.set(M.subarray(c,c+d),a)},c:function(){F("OOM")},d:function(a,c,d,e){try{for(var g=0,h=0;h>2],k=N[c+(8*h+4)>>2],X=0;X=z);)++A;if(16m)z+=String.fromCharCode(m);else{var sa=m-65536;z+=String.fromCharCode(55296|sa>>10,56320|sa&1023)}}}else z+=String.fromCharCode(m)}qa=z}Da(qa);Z.length= +0}else Z.push(Y)}g+=k}N[e>>2]=g;return 0}catch(ba){return"undefined"!==typeof FS&&ba instanceof FS.l||F(ba),ba.m}},memory:K,table:fa},Aa=function(){function a(a){b.asm=a.exports;R--;b.monitorRunDependencies&&b.monitorRunDependencies(R);0==R&&(null!==S&&(clearInterval(S),S=null),T&&(a=T,T=null,a()))}function c(c){a(c.instance)}function d(a){return wa().then(function(a){return WebAssembly.instantiate(a,e)}).then(a,function(a){H("failed to asynchronously prepare wasm: "+a);F(a)})}var e={env:za,wasi_unstable:za}; +R++;b.monitorRunDependencies&&b.monitorRunDependencies(R);if(b.instantiateWasm)try{return b.instantiateWasm(e,a)}catch(g){return H("Module.instantiateWasm callback failed with error: "+g),!1}(function(){if(I||"function"!==typeof WebAssembly.instantiateStreaming||ta()||"function"!==typeof fetch)return d(c);fetch(U,{credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,e).then(c,function(a){H("wasm streaming compile failed: "+a);H("falling back to ArrayBuffer instantiation"); +d(c)})})})();return{}}();b.asm=Aa;var xa=b.___wasm_call_ctors=function(){return b.asm.e.apply(null,arguments)};b._main=function(){return b.asm.f.apply(null,arguments)};b.___errno_location=function(){return b.asm.g.apply(null,arguments)};var ja=b.stackAlloc=function(){return b.asm.h.apply(null,arguments)};b.asm=Aa;var W;function G(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}T=function Ba(){W||Ca();W||(T=Ba)}; +function Ca(a){function c(){if(!W&&(W=!0,!L)){Q(ma);Q(na);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(Ea){var c=a;c=c||[];var e=c.length+1,g=ja(4*(e+1));N[g>>2]=ia(r);for(var h=1;h>2)+h]=ia(c[h-1]);N[(g>>2)+e]=0;try{var f=b._main(e,g);if(!J||0!==f){if(!J&&(L=!0,b.onExit))b.onExit(f);t(f,new G(f))}}catch(k){k instanceof G||("SimulateInfiniteLoop"==k?J=!0:((c=k)&&"object"===typeof k&&k.stack&&(c=[k,k.stack]),H("exception thrown: "+c),t(1,k)))}finally{}}if(b.postRun)for("function"== +typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;)c=b.postRun.shift(),oa.unshift(c);Q(oa)}}a=a||p;if(!(0zh_xO)wOLlA$Lqi#e*Q;k+ zZ&!czk7NOkc9Xa?bSM~N7|0ZG5@wQuX*|;~q$LoQNlRu3Q!}I_WkTzgQrsysbu++Z zrY-L0`#bl&xB8oy(m~RD_rCM@_y6}hzjN-Dn_oSiIOmdQw>*)pudgTTPgK^Q<3@L> zeV2+~j*>*h&OK39S!_JGQ*Xx@=hl;RMZJ3><=6TX*||8}bL+`-PuOsdk*K9ddbpDH zPMk^RU24}SowMtLE4QAVUp@A|(Qkvt=GoO)q1;}meaJ9v}n;NJ6EaH!704*sq<-G zohT(ecOZGn?M|L{-;q4yI`u~4LXwyE-!gM^<74NO{ntA0rkx9Z`GL}$PkicKd+W|T ze>O?h-|oUjy4Wr6a_Jlu*~2a8OJU=DX_=d{HO>~hl%y(7AL=Gk?Qw5arFCB_tIuL5 z$>vl>gLX;n&h_c?W^$zEa-VRsoVQE4)%SO~d=hv<`wU-izL_oiq+M^<^P3_t?Zs}o z%Q0#)n>ND>le<$IGlpyL@M&nPJAjRP=3mc}be#stnQj_BaQ@sXed(|olI5wcikT!? z9@Qo4Oo6ImqjcCPivwf~m!9$IRjRYASC_6{UA}sC<#N@&01jv&S*V^lct!MT1!7mg zzJB%U#?`Cyt5-L#UfsHS_1LA=aQy@4(^YYJ8P<)1cYZf4zsGfwbS}KI8wu&c@_tuh z(q4N+;?Yi9F1-HsFf*IFus)vC%scLVntv!sGqgRO^X}da{cY$+ zFw8>Q2kXpd(=I`lzu^u}Q4LtSr$vA~jQdz$!X6rr3d!(`>+xs#NGpxlmeweiI=Jvp z*O{6Q(9wnZ;i*0Yq#E7&bk5m}un!3o(Zgn`@H2;w7th^tMxVwKJ(;V|B#bS{ zfj48+PIlp#IYWR*V@)I~!24Y=1kuS@_Ivu}79oqsG*u4pqK{NWi_uMXrw<4BuF`r) zRJAjm3+oK&+BZs6WL?^~9-0d7!In#5`m{R|8VA9Jev^`;-D&$#{bcr}KbuZ+Z6E{S zM$avI{ws}SoUuDK?{=rVIw^y=y-BHC3CV*pv7M$h?KD9=?UamzO@uSFPYbL$ic7oG z(!M11O*4WATbWAWddoFampidXO<<}Y6A4xyXdypE6A`FW(id#8;nHqK9jwTFS%RLa zCQ7J*SCZ);7p=#AN=qBsbgI?wv;=KimF)s9*DZ(o8DCzO)~Q9Dy8HlCDfu!3XcDF< z?hpYAaBN;X7S}EkH3qX~ZXjnEHNPq5Yxiu^M3N)#8s@a?- zO4s9uj_xq1qz|-8zN!guTl}s9SEm}MU`&yPCW)`=3tUT`ijXfMNpJHNeLt*P>t(da zI}MBjz0|d&@<=TesVZlHM69TQYKk=Z3Usr1U@r)ZtYEx`Xi2fa`A92k;yiO0+MuM; zNtzA;iT}j5bj^=1ib-`Z8IbS`&O~C2!Qj`dAl6JJN-3~eoK0p_nS*apIM*KrwoKSE zI|Lpxtf!rmfQs2&368(%51GgA<1-d5M+j}X=@!BRZ`85(%!^@n!JCz2H3-< z0uI=7pdF$Tp*G-6GYxpqfKq6nF&2i^_*D3ahp^Kz5oGLJIZDwfo4l9_LskV3vW&c> zzH0JP&7o~3ZXt5jPU9kZNu#`gbjdfOyg&$U;c$a#>C2b}T@v3g3JRCR6slYHWpM81 zp+-D{O66hWue0TqyP*Sox>6N=ASPduvN)H`lWSN+O4{O6!4OS@ic}?8sYuH3Q<5@- zwve(6#y}=X8FX6fRDGdhM?g%H(ap@9hz}Pr$rzHENr|i*mrx>65Ukv(41_X=$96xw z{?9Z`qsK*;9IVB4WdQ9HbF1-^hRmEvIJdbR!3yu+Tp;&ajSZjMT#j&ty2_Di?-oP0 z+$}K+8U?k(2R`_GZK-Qm)6ka|!*fK0IQqaKR$TPP56z}%o-SY(&KA{4SQ|FnVbiO{ z_SkSTUfS`}q}!=sx256TGsC;1gP}mKv>djtbQ6N!;0^p=CFt-!;>*v&La@hCBFTv_ z-=1xcmv+3=;sx;uUfwhfPY@7<>lJe6-z=Ceje_alnMlWB4$FX7-D0=03p1h6`(dQy z_I_uQ%N_mB79>28rI1$OMdUX{TK-hAJ%>wk3bwve8oAyXmry2t98ZJf;fTA4Ycw-v zei>r(U!P-Lx>ZSCEJiTlS+^$nMZYy#E!=Pj4KQt&w@%`3AXOMt6Szn-mRpswvo$Ev z2shx;3DK%PU*xxAJm=-Wv8G9D0#I>z^bw4L&~ElHI6+gx+&_bbT?)67SZp1(hOASS zPGR^FAtr}9Rl3v2btlA!27EB+Yeox<5a6tJTj584zqE`Fz*51E?~1Vd){0X}5BwItU!p8d*a(2d`!B&9D z`hs<9Ya7^X?hBBd=I0tW>%O_y-&qV3Z9pO6Be@!U)^38Kb%p7xfo!Wd63c z2;eNxHb=7=8AXRUpo)PeVX{7g-1rj}!EjJ36BI>VH8@!7v_J%Phwb6>#4~puVV;7o z6Y8lN{P;u%R{B=BYpEap$5xBtYnZ=KL*bF_2U=ST!LNm_;%qytWAB^S%C|$dgqTK7 zzV8thsb|K|Y^{G&=5EjC1P!vyAfh+d35Y(o$b@P8+6eIkDuAy3@N&0-E*N{3r!2~8 zh8HIZ`L+m1Ad>th;e9MGL4JHWWCy3XZ7J;j6w9KC;2&uvz^Wh$MhR&|y<(ys{(x1- zq_4~IL8rN9mZO2m;#jsd*;*^03?5m*^R&z6mE?z-qWw+T+&eM5+=Uu)MzAhwbDx|4 zW=_#t-bs#?xhu${Z?vz$p}GgV4Ky_Ob)PI^{V*0K+`fML9DW{wlqvDDSk-84gGPda zN}#Y%Oaz2>Tv`TsWbRT86fl=0CIQ$y{>N-f0AZaN|K~m((hWi(rl*9db5e?83z^D8uwctXf;D(9zxD) zu!cm00z)Z`MT` zNy0na?Lb%elN}@oGg701;_kM4*Z-dE-o4Imdw+KuvM(f%;3n}RQr%w04XNa(RT6$? zk}Aq^CC#a3IS%5tw5J)i8fuu~GE;8>0)S-I4H&Sfu9o$H_=MUKeyS<9j5T#fMgchJ zg3DcQ?-`DhS@~lG$XJ#$%*rw7rZ zu8tMQEEqDKZRTC-sMEH`6tr#WfQu|lodTm8(iCZi{ftuI#OOfH2E}#XcyOv)lfI1c zx5W?WU@GT)+c(J)lE{GnlxcA&Jy8K-L8gy;^toY;{GgF3lhg#7YIQBK1w+CXa)Q2@ zpCh9}6hr{l-AUy~xtkBnp)Yq0`>f0r)^blAPDO!l5fDxT%F2cu5 z3n|euX}_IrDkX^|)G*O3Oj)4jpDHD_^%(e;4XM=ndbUkwdthE677cLOmWT}503zMhoQOadQDN^ddBAWwx2wcp>ZU^Zh66e+fl zD@jt9=7ANO_^)+G&AdXK8gwj45r0WBhQng!DzO%Y159i-W1uZ**lV$rGzGQ_0~@|- zkZl^^5eCr88=|GbuY^B!>W4QS^~)F%yQB5vXyQk(GFAHF4bxyqrR3hYPZlkoBZ#r# zOxz4g35Y2w+iqoihw7%$ut=G#N_F!bjfWTz7Xq^^K8t9KSP~NWXoC)rhgS@`_aLJw zDX*-G7;^}W5Q2ooWF7HIW$hWJZfwoZrR+JJ^X@mh*}Vro{K@de$j}?TKjZ z0EFce8PR~)A#K2g=mG8F;FOAzVR_#&I7v|bveJHPG-Fj)7+G#g%h}m|<#UzUhZdF8- zv?9(Z1A;a}MD1jKFMD39pLU1goiZZqG#s|};w1r%Aj96!RofWsLAcv3mnZPGRuMj2 zzy}N{oPqzW8uA9vgs)Du-OhOXs@;A?PRhG|32C0Nk!buZyy=#s%|@N8%jA8vZAW=_ zhBW|XY!Rd@N{nH%=zs>3i7;QH1d*~+;M3LT2+M_i$sO(MB|iI-cba2L?@rz+j;KcE zyVKqJI-svT`kL{jb{Ah+i@n|cX9_PVs9K<6#!@1Gf=P$n#(_v zBo%pIsKlB&B#)Hlm=i%S0WrBboELIhrT}x?=d04k+bR7d^G9~BWWJSLa6jx(G1+(= zJ{uEqffhMieiZ+gu7&GFrB}CV`3&0ZFgBNMDXpbhIlN&N_-y)lTjP**4^+M zZ`~fx^ADC_$L7on+|9fq+}pF=gf?@FxDtkqBn%s$_Yn^Li(6(snVuf4}0Vsa7Dhp3VDdTP;;^$ zRZYqQCfbN^35aN3p^enxazNPZa7wszU7Q)&_Ss-&R255a=niL=7?sObdAuq+yzhJaJIqiIq+Zc+tb9n8N1= z8EOF1IFeY575pAR)n(JgRJDN3eiV3KFbL={NVjT<6O#NIPWGy_WO65Dt~3rlf3S2tq@q4k$8Q6~JMYIlw^#svCj8XbC+;0K~E(M$D}-E~1e}Bj06oW`Bbz zK(MJPh6pw)Jv^9-i%iTI_U71XLhx!H+4o-Px|J-C;vX*D4lj%B$I3 zTd}0wO)9*zyY1R?vb*aP`PrSHO?|xEHJk2=ce`hav8;BF;#0fhB+N{_J1|S|Wo38F zrgy}+( zWFcdeknT`G&ptlerb?1=ZiV0AVRBBfQDKr46ePC_6MHHoT{?9E{299vusD2%sLN~| zygLU~6@w7BvQR?ii1)1)eJ2a117St)M4NBM_SB9-mcthWz1Z}HT|Q&L@Y!Abqs;3- znPwP`JK%pSWBO>b&&R7Kio&6x&KE<`=rdOsYBPxJGIOvE0W-j&Tmf$r)^L${f%X~U zZsOIgA{tRTO&&@Y30V?_3}WkO!=|RTUYB(-nTsTiGKXn5aUHgf6MqxAD_;JZog%A4g5R13KS&CALiQ0SG&#G99Ll9c zzT#R&oP^`+(KeuCi2Pa?`GjFF?-Cf6F0hn4%X&^TVQD3yaui&e0xe!-34kDDktmI0 zOqskI^C0Xy!}Xe+eR_P*PR31GI^V-ttTUt+x>^!oyf$9D-bzX=_t%g&;_?mh-Ly$L zMzN-&Tms0KR&1|?wFtv(>z~1Ru7vB@1qKA%QDG-KNy@QI3BDFEo)N2t)+@WP992UL zOB+?Izyu4SvlK#4x-QSI)4s`>MZT{;IJFkd6xPgk0!c$-4NPqgn)iL%nGO>XLC{X> zQd(Bz-;UV1qR6s!0$@z3~#V7nw9OPL1EgQ8!qj@H@ zDHINbuE-x<)HDS#1+~auvLfNqZ_+AA-vz&QYCF~!NM}Q&3kDjlS+s})T)V{yy8*TZ zpG|+*Bv8(@!PmlX>{zam0NI9O=FfSUMGDvUC*ti=W#wOrRy%$MNE zK$$t87^PmaEw0$9DH$3q;5Er#}^iY>H1oRba+4c4@{xjUSv(;d- z)a;fIog*mL#MHYOyOafu(C~~ps=^#LC%T+RNtLOnZ zZZ@kJT5Qi|vx+mvtU{s{pJ7&!_ca`!yTGj0Ht{2qXK)>J2rS~UkF1EWkF{tYwU%y84(Ya09z#YaQ0!0ht^w`ycXGwUQv=95i-X(`VSb&m8f>Bv;ht}X= z2JMV1D*}Uj(HangHJVP!*ccIiUs>0Y2kE+u*jv=~5fwTFrzUjS+-9*u=pGV~QllwQ zgzvgRdW4Wt-U*}y-Q0wL@EaDQ;4wNYFKP!E5!udC);2Gi7Jf&2p$dG%1+rO$;3k{w zeVfQd>o3)a!Y0`?>B}UWY{hzXO0pRnGNXmx(0(YJ6^kj^xGZcdCW+N+VOU%`2lb?5 zp{-I(1D1n@CV?<1r>@y0ZQu-IV3N;jpxS8Ius*c5Ip}RyDhVsi%5!(2m50)18Ko;0 z5hK%Oj{5K;0-~^Ull9!H_?utKfTK_r2@4 zGwg?V-@EaWp3W%g*Ymr5PAZ!uV)*JW|GQr-5pVR{l<9R@Wdgczyh3IB;>#t zl^*kT61*KeG54h3kHr0NAm>hk9|N~+yYo!Cc~;cIzW;x z41XPsNx6VmREhAC_mewf8B-wx>DbAp7gND7o#lxq5f`O~!$DAY!D3)XXmxr!G3`+Z z1p~A@poP(}k0b%uUE~F$Gst2eV&cESq5uymZgUP9%Z=!8hM>ayw5cq%8#}dk%@~JT zWo=PA(%7nF0ZL-V%GtVyS+9!=p(KyU5@j%OLV`x*6A_hgh|qw7fZ_t_uvO)-yHCK8 zLz+k((I&=W;Wdpb`F!n0Tl}#!zC1G{T@-u3N49BnR(;4u*5Xm`!I?=(eoV>YeGZuy zz~JM;8#mgaeT2gb2XS6_bypN2emNg+iAt2K z65gxdXF-|$I6;9PayQjgUP6PjR)t=~K>U!u9jY69u;hN&Zrv4Ll=xAvL#uuQWB}DW+z?%S^3sr=X@%Ljx)z zi4qmbPih(#ITgR5n6bl|j79CT1AGH46mwjlm&`4_jQmv2X{4FBIyS51G>lVR#Pf(V zpj}F0S%!hlN~uo^f}{mOAcwCnDlEW?k-WAB&_cE$r3U!}bT$%6UbhGni!4DA z;}w4Bk`92&UZpWnT_vpqr96>CcVvlZrIG3;E-fvFk^|TjmXeA>@3pp1FUk^>hFJo- z#0V78ipQ1B6EboVyH>;r9IAM6VM>6&TE{o(U!SDvn2Hr3>y2P*wp>U&~B{3si3g2r+x*xs^ z>kY${h-KNHhAHJFQ?dj%rIw+Q&9mDYWmMRaolBfb;XtV0j+~)3E&w7SE$t81>U0-Hu4u+7h>3h$Ac4ziB2);wWRm>|8cwqD&ky?b+s3R7t6* z!J3KL-^!ZFl2fBp6f!ngGo^zylPIz|6@_N#C{7`cNjeb6GywKmw=zgYq0T0bh6DIW zmn_j-vc(lP8>w_rDxveGQdv5vC#IrQ(s~VU45ZS`m`NpztC)9^P%52R5KQEg;v(Wo zJejPTVrbVG6ePfAmQB^kQg9p@ek+tJy4XN4SbWH07Z^Td2aAXpwBx6U^CbSBL4UBTxh;ms-W!*xB`Y===0fjVMsK99&fyk(2kxa-6sZ<)d2o+2!F$nQ2 zo>c%y7NrvSFO*6}{1-{3D6}a7Nf=v5C4T1Ov?DETFNnp+FzpEU%5cv|3&$P;x5mFs zdkC<@qBZKwR3IIqBr1a$v9zPGR&D{ZE4VSz@|Y*S%uesTme_j>$O;YfVo+NOX`ALP zha9llfEW@y_Q@fH? zJ0;nP-<9KAUzH>KKmY65{&Lvh>CUsuHevLM>W|K{!a-y^(B9%SO?D;dXvxx!O%#{^ zgkeYsVmeV^6>;KBVe!@krAmq|;{_%6Lhg- zs$?jV10OmY#9UMycCBMXr26X*+imY*c zDebxy%L+Q2gZQbZBa-mbuk%}Czal25;lH}O>5Hgw6)3vCM1;V-9*0nV~LKWOxOnOXM&e0%R~`h^h$=`tFZ ztJwfBMzn^JULdyu8edHNZ6Cn~V4gFu)KKiAQC0PswEb<6W;YBmF$oyF&k5=zg9+f) z;1t{E(l(oJgj(5GAr5kG?PZ{>Q5s%KIaJf;3I2V_S5qCK{VIb4fy&oM<=xC`?5zYy z-rdO`fi46^660~9ygkKHVkA1es_(_{dUYv$%?iF83(i0PoyYsXe!tV7xu2N(M0Y&i zyEpDx2+6A9AY@G3K`eqA8f=yfTZV<m~ADC56^JOxM67TI=FCjiON&PRBUa25sr zZt#vL^dhIpU)4GY>t4zD@E*Chd%Szr!7AwJi9KIMI}`94XO^G;t3(IhYvJqrmGP>D zPyalMl=1vaCH(KU(m1v7mw%A47!O~W;QoUz%FXWN?jQV>HRKFwczHr=9kR{g)wYPo zyA;Ad8_U}*$diRHY=?c!p@W1F^~2;Zn&|77@SiQNKgE^DGwqO8NwkbAmvT2$GFV9q z%hhs`X#G)2&SXqS%Iys*sc+1tKPy4QXTGQ_zU759{1fu7;RR$Lbyv675NDiV)M*XR z11!uW4VF8h#n&`&>%xIQTnzktG4Mtj{!jyNdQv=sYct%LSf%+&A z`3qfv_>Cm|6z`=7ZzPw47%PWQ8c@{C22M$@v*_|_9c`6VbQ}#JrPs6RYf1QRjrLkG z8j?3E<^ zXoHbn(MY%+c112T+^)HWI9&KhyUn{^;0<HfQfTacjfl8b(q4R|pA;bnUu_Zq*|9?1Qb?cvkg zktI%WFk&_pKCwM~lJ%Qj6_7kR6|%OTU*HE1jr7~wP{-t@ZZb4mPcjA12lMO?>jKbG zYJ=SG1S9&D?w0VMEU$Y_sQ3LfDqHSy`dkn4W+6wF1M5C^f-nfhh<>iK0}a_x{G6Hl zcxML=jx|R`ia$UVtXrH@(=0(?7O;wN6mPZ&6CFIB?zr@Ixh#H+vR zC)#oPZU`#QXb5Dvuk=-o|N9>hOjJp_4u;P4| zM)VVX-(IAvcnYC3B?V-+^KO(76OM7;DjwEAN0UpLtqr*bCd@#bi8@c?3M6wxEXYwfzu0;D>gan;Z+Xp zaAJlh(8uDN9Yp_v25%5_4(^MfGZ_S(S^>jHmUEWq{Orf9Pw)4BFMNEnI736I--rju zYi#q6#W$aDf!&SpHhmtP>a@fotxVa))zR?QuXeWI>pIucsDeI{_jz;tL%wnwlWzZ! z=epNQM_>H!U&}U7b-OwD{&!MWDTd(4Lhi5qq@EHdeW*gVh_z;Cyqf0FOF67Dn;%+V z6O%-``4*4pi*9;E1;X$eH0s#YRrHyM9sN*0jx*^@`YkNl4tCnvT)^^h;)q7ig2^^8 z;dv7+)yc9$AbSX!HwTyy3ueFVOo!J>_-$*ffO$)b>+pa^Bz}C0hgz_IA_`}|wd}{2 zXdzm&$!;$Zyl7;-PYc`?T8ael1Whc^*;a@FFP`!3DHf;ptQ(CH1O)fApX99ubVUS& zDZtbU1Q?P|Y7=-6rWP6k6KZvN@*ft7k|G3oCwez{)=ETIG6cDZ#F<*;`e*K-$__0f z&rCX249MfidZr)?8((B+uLV^Zmv`5U^~3W|5O~{kE$ZvMDAMAU8XRC!%>^Vy5L34U z?dcqoR(w+=nmp*6f^yuCd)_qJ^1NxX+nyR)#MkZ_NcZ688~516e+)Z)Z#@W&R=7u6ma~Gk78pJ3@PvX0|+Uy7-J?i znWur0b37kqr4T?efw+JhPaCOaQv%BdmYx@g!fWLkPN*3mcz+-GimA5iDeJvOHisAXtRm60@c9(_#iL%e z@WY4Y0JV>;x1yYr544BBWc0gRa8`A*Vl6{KMP-UYSKeph}zRNd4lKqyIF7JCf z#QQ+Z4`3ScT>2aa6*=T_&8L&YEIBF1KawKP2L2JjjWQb@t~{lqWd*2B+0a$|u4`zWgo~F}nIJNtjjRb2hLD+P(nQfhRYP*hirI;u9ZW6b{259+#5|f> zkr>9&d`5PpZo+q%>;0Yb`!vue<@`)aW4d z(KUI!Z;|DmteP{GET143Mjji2s|n4iWFx~@A7y1%X0)&|wj3vVlP4EfcsfV#a`t*> z3Tb^CNqk_CnsC90A>EdcB3m#}sk+8iIa^1(TUYOa)pVFY8$o+EI`=Ys53HJje21i( zo-Y->?GChrvNJ11lzmNlTq3SD&e4Yln66W<)KVb zD!$i~(0A}&Po56GQWbs3lNImvjB{yJr?Wv) z+E{APvH!ubU@;gv>Fu#3)Q~E20Z0hz%PJ&jP*mbg*N!t${2RTg^Q^sx!d}He%pw`u z*8~V4PVQZ43b+~f3n7K=XX|xFskoIQa5{CNM6g(FuSm3G+q?C2Bh<<` zMcU4~I{v$pRkl$ttmhCEVxwAN-3ZTtsob8J@J^HOx#Ej9hOhZOj97q$ojp)SUR&1m z1RZU`1t}ugTHGi}M#N?@hZ`CB8!#0Kwa*5CaLQ!rNVlf4Qo(w`u{8L~__Z!<)bbBD z-m^Bpc5J~t*qcA)xL;UwuY7s#)*tLo{@K6!lkdCX^!GpT?sq@>?v7tNwz}pQRu=rs z*&AjKob}Uw^_i2WmyY@;dqq*hxp)88&rQ_6=PTDAs&49ee12`^*x7H|_s|b~{?1?e z)4P8B`G35rFaM{)TJM{6z3=2o?~(bHMgN{-Kh*R5xy#?Mbh_alKe;x);t^$>XPvE%jFXncm7Oy)^4; z!yUTszWbKuPdx4S&+O%|-@Wh2eXIMP-FIwd-@^RDGrfIJA6whE@XX4|ZjwtOKT^+ek?4VTs^(g^ZUJ@URqgmkJx`=;g?P>7-a^%A6x3pulD?@(`)|d z{Mx*a|JTK+*)zSBUZY;G@9yn=daqwNd9>$`o$x@g`pll#1A0A!#QEOZ!cA_q*E=fF z8veO!C{o{d!_n`j%A_w=Us6}dmufGmi}GU~FR6R#7<9gP%%Lpphj)?-zYn(Z&)JQ; z<%mBszjO?&#qyQYC;X}TmHFd6xVGw_I=KR}E4||g<6d{){D~7M*9Ogd{^Y4bzO3Ea zGd(CM%+=y_Z*`A96{(6CFlNs`iv;+U-sYuUA$i9iy2FSbInJ`uFsD{@o9R`yY8=@A0Dsf}o#2ag;euom^QvhRm*< zMi?14s{A9TQTg84-oj~gP`J&nd4afwYy%J%Tpmb=6u{}(+wZtD+LWYyazl#)$L>j