From 485c04250b74e6b7fb5a3304d47de7bcf625854f Mon Sep 17 00:00:00 2001 From: yusshu Date: Thu, 15 Feb 2024 21:01:07 -0500 Subject: [PATCH] chore: initial commit --- .github/load-plugin-from-file.png | Bin 0 -> 15374 bytes .github/paste-api-key.png | Bin 0 -> 60156 bytes .gitignore | 5 + .idea/.gitignore | 8 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + blockbench-wakatime.iml | 8 + package-lock.json | 279 ++++++++++++++++++++++++++++++ package.json | 11 ++ readme.md | 15 ++ wakatime.js | 124 +++++++++++++ 12 files changed, 470 insertions(+) create mode 100644 .github/load-plugin-from-file.png create mode 100644 .github/paste-api-key.png create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 blockbench-wakatime.iml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 readme.md create mode 100644 wakatime.js diff --git a/.github/load-plugin-from-file.png b/.github/load-plugin-from-file.png new file mode 100644 index 0000000000000000000000000000000000000000..a264ea7261837cd62cef9c8c89971dfe1b0919a2 GIT binary patch literal 15374 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 WDE^!Wn}d6JA*96QMQeo(1OEpwni|{y literal 0 HcmV?d00001 diff --git a/.github/paste-api-key.png b/.github/paste-api-key.png new file mode 100644 index 0000000000000000000000000000000000000000..3307fd9697ca57cc0e0eea83cd1528e4c66217c8 GIT binary patch literal 60156 zcma%jWl&wg(k)JKclQK$mk`_o!QI{6NgxCg9D=*MyF-A3yA#~qUEe0Tx$k{HzN)vY zC^($Mp4l_g-K$rx=KDu^2_$%YcrY+9Bq>QzB``3kN-!{pp*JwVZwMwy9e{7(PD&CV zz{*Al_kb5rX2Np9U|^LI2#*HPz-u^rNew43FyyY+FYsQw0%I_+{U|9>VP$vS!zE~M zOfw9aQ<`IV#W&cb4b9Cm?{ou|f|T}ki}aRSb20bD5g4#a8k+f_5Kt-My03mG9tKi& zORYkTwzt!{HG3U+HKr!J=_Y3ksIak4Oe$upQlO&!=hC3~9qLR<(d8{B`k%`<(0a=c zFVyhgC!(;bp>aFN|6K>BFqOD{|6Y+FIZLlP`t;+wfx$y?^4Rg@X zG~}a&^*gh)3BP|IE3lp_)4%|Ke%>yA>}O}SF*sZlXi1Ctb&N#|lN2y8vI_p>FiKRP ztx%q(5mA=PM^U26Ko}C-aW|))TBZ?0eR_J@aUYh9N`RB!B`vd5!Tfc)EG)Y>+~DO4 zoN2w$iTSHI{Exlm*IeQr)Y3}tJl3Z`;@ zsw}MIy`SuzC9m(@k=x;NGm7H4Vu4ycGX7L~&=H>-IT=}{Y=HU$3SoB(^b5=9f2*Y| zZf#@pv00VD#zZaKvz8xH1HGfkVM;P}duYB|z0y*pt&`EA$I_6BhQ?^+`3e7{W|KEh z3xDfag|C1U{l6uSRg(xO?s5}){)$1PU>PaxuYz7v)koYBZDFkGp&-oYMXhRLM8#z@ z|AWnJBuNAu78aJ>b_y(CA-(5Vz>8_1dw;P~;JD3*Q0dbr``uHt3!RRx80svYjb-X%{qal}?)AJ1#i-<+lTc6Jevuw5?v|0b?O%7WG35iMJCh^L{Omezx; z4_CaKS|KfIGPf{ixj&a{K3RkXb9q$Ex0ZPwNMo8al;nk66X8zONqn9JC3B3N8Q78))bSgpl0#L@3Mv7tt%xk{^eo;+jAz?rd(>5}>C%99RZ zdfg_>w4ZeMaYx@ z<-f&^O&cWcmX?+6E^i<0rqPq_d?4}j4@!53Kk>VSBM&Fx%75Dk9L>)8c`3GL%3I}j zU7e#l=JTm{VW&Dj@Yr5DnA)H6_G}{rx#1!NEu+pqN*c}3Fe;uY3203vqJ@t4 zDG&d5_bs_&u((_p)oXl>9yntS8&sJeZOutvvN57)&xBE>R?s!{_*5sfiyhmcpF> z&w-Ff>46PqQGTH>Ml?KHsD>?LWNh#~eec5ny%JBa1w%t4vB+af|4oCH`7tJ`w8*GUt? zv#;;1(Y4+}GTFaf*Fh!3gkn+{<%d+qo`=+6Ep5psCabSNJcmjRQcUl8iQ zMwYq`8bd=7l?&9{5Ps57Q)el5!4#;lVIm_VOUlUsRzu=^vYuHiZxva}zuhzI`i3Z8TQps>>*eVQGmA*vFZI; znDN*S+5hDZ)p9a2VohhH|GmHJQ1`!|$%}hQvHz{Ch5$_Ezp?uES%Uus1X0z9|7~{F zg}A6cqoUG~+drc^MY?flG)3{<}!VSJrG3Y>~G7|K1EPiIszH?+CrTbcTXbVS&}a znE`G=t3y@z-Nec&gg_!f{2;E>;6&dJxpj4SoZ{B)SR3%#2E$Dp+hfJBR)5!3$0K(+ zWo&v{g+x@;`D%BpOn}$z5K%!vp`i&k{i2arK76EL^&lkKwgEhq*O`6g?>Z=ZN^=BH zx9RY;T%Xh3NA3WByGLn1mEkMGZaMdcqiB{nNLQDUaipTMl0|Q8ba)tvD-_>F3{oSF zI1PXeQ#-M=Dj#}&U|sS2S?^do*D~AVQ4?e1j-{?aLS^rXq0O0OyG|EKSS#$f>S{K8 z0xqq#wzjz{7dqo-s@Mcn6u_}wV4;oIW~&Y_xSLM|G;D#i#&SQIIq#3b2{c{3PuFc- z+ui-D)9e2<{%XH#WMqUe`jf0IA~Fe2$z^)AasV=&5!KhhQZP1|e-=PI{l&Is_@mh99ngQqX(~J!Rk9uC6L93>t@nR=5xq@Ol zAu#6ob4h8Jq@=W0AK$ipQ_1qGK=imWALI{9pyiP{9)wozAa zzhfkQpU!h3fWq_3{u&d5VLA1thuBCU+bGLLU6BRjkNNHn&?%zQxm|Sr(w4sX0GQdX zCfnt`fw_7+IPy1=?gP8lFV%{Q+qkBAJ8)o!8i0KFoXcbUWigsAv zgmc>M2`3itpKDN`o1X`ePcNb8Q6zm$e3~CPfPse5BBNLJJjI*tXk%L9*03i^J|cEUDOA@h*Ld z<4{0R2qoZyc}3lkvgifTO$IBzFFL9)$&Ym9CJj`PTN@kMVi$I;d)P?${~1C*StGsZ zR;LC7O>sW*eI!(Yj}YqERcYv$6n}!v zK`$q!sHp1h1(Q(kI#tM($A)+q^IF=&>C}coreFKBW*|x2Cblmj>$ z&8?*l8=XwIqM|dRKO+6^d-C0nb9XA-_s|c8D)dMQxa_*MPTB$=sO36@oSvsG9-Uc3y8Df-#FH}y76%29ZN%uuN$_V$ zu}HGjfTyw^O%u4ios2l$WK-DRn4Z<^X}UUaUUU=k_5uQc+Q5W~Or=flwNhd8+eG6* zHTu^m2wYJduhG4Luo)XtBRcoGQ-Wl@T?`>ACE5^~p$+f{3A{e|*Sg!wM1L?uf$^dC z5`S8ZUiH#q>yU7u)m#R+yP=^0KYftn3h=|Gh`;0P@{}y4SyOZtht$LJoL}!D2ObuSY?JiKY(z^u4fYMK`7vfxieyRt-Q6j z_I)6hPER>vv%4RI+vmRKuE>7eOrf)9cIR^V;`rU&-P%;)r|sgFSoUBShX3HH z-2o#xdh)DdNds_ta$2HRuj}skbe}Kf`SM*k564_VaYE4=9xJUF%r*ncEe|t%=8FZD zJl_Bh*mutixb$88F4>ZGBWl%oPxA>#e10hznXZ#+-(DcuOEzNMK0Xf5C-Fn??CcDV zi0GwB_shE)KmXLMic2kzTRv>ig%Y^Yh@&@#{w7}9U!CGx*yn%%NKWg;U^gN6QNmAk z_)~VD;ck`@)Ns_CB+qhla#nZr{6Hxl7mP_Oz`;6umLS=6dbKL6u0No!DJz_aFR$l5 zmn~s+ReF1@1sYbxzgc2CLTiL^WFbmc_`?U<&YpR(bO}NsU0U#x;_t^1-n?I45n&Z4 z)qd)!qv6R{0JRlUwqocW%<&n_pI==~r$tZ&$0j9x17cvJ5#vmojurrPB$GSm=jO~g zXNowAhbwWcfL!>OWspVO?1GC`h1V#t(@<{zGQ!0f1`WJ+&;+K_G2u1t?+V9hT6(?4 z^(=|nB9*nhz3*SYLV3STq9pLyEsIT-s5heXxgLrtIiioG2pF~G^ZG+TqG1t*CHf7~ z#t@6W9)4+&Mss;dV2UAf8$W`E;RaQK7?!~OEO>i+yE?Tu>Aq3QRqHm`(&x;O#3kV= z&TDOB&9QpEpk=rD8zV2bFbm2>@cD2OBAFPwH`Y>KJpqSCD56NEm|T#In8f#yrOsx> zH2gIOr+q0AdXf&HV|(vp&2I`a;%DgcX$*q<%}T*AARCiVGzCVFmF z?Z0SU$G7DBD^OJX`Ivx>hgUdybaaG{_6d3(vo}w6?jK4`|l{66^&qh<^4r+hz?@J9Ve7T>;AG63Kawk6zC z*|zSPLP0^9W6uDd&q&@yI3JnFA%rC?JKHGj;-}9ete+&aCjY zkFzs7HlyxWp_e3`O(R8sM)6-ZnwRI1XnVdUpx3Cw^u?kx9P1D^U#`JhTwHY4w$`Sf zDbooe@w?Lq2mw-E_RiHW0cc8%RmXJm^#Fy`srT|2Hf=SN@M%loy5A+BY?3u_vH zK|p+Xj(x?E^|tfy0?jw?d*HDut!`{{a&z~cP5LLhh{6asXRajWrN;H8Y<;|L#Bx{l zQ$qQ_>zO_lb&>!H<{a*e&0>pGNQ>EQoeRO&z(6t}79*6OthBEXLOLJMp~XvKcw;=CcCl5GG4y)P_}Mq~to2YOT;bXxX|- zNugVNt5T~3y{?aE$R9C|@gjH)T&k`U`Hh!yJ&8o2Ef^7^i*Mrn&&ghC-MXPMc-z94B@G2BboZ zcc8n-tVyi{3JMCHQ40bi5`b=1ly?QipYLo&CE2`udL_=7{MYFkKJfuVt1cko^}hkErkul(pr2xzR{?5gxdDJ z+WlTxA08M{A5j*-p0C~HU08`+U1|Hoo0FU0Ri2ez76KK1cxY4UqP3=>Vglf6IJob- zzk9i1Y>zz!AD??=jZ)+BjI3++@(vODC!(KbvbEf5Y^S9m?da6Xf0egCeQSNVwtO#h z9oEWXvo#P~X*J6z+ADhS$Uyno1qdydPpqQ}3AiPk*X4xiCUmN#f{esiw8~?o>6b;j zJ8I)|W(UJ=J8}?e=p6$@p*7-F;Q;WzU!37&yOjWrdE%kA_EI|Avo`Cizxo+*j@=!7 zSnPG&A_IvGqayES9UJ|1TzE$r9g-9;5^?TENU zrc^dHu-_fcC+#7CpPsmpKHcsc&jv7Sth`#YstppkR16Q?j4{e*VELPV&%Ipj&rI(O zhTTYStGm)rP`E5@V4yR*EGTZ~E z=t^Uv9H|W1i$OcK(=9bU^2aeUo!Q!h8T^O&Pt_I1?J^ke;fRR^T!-e`Pb^|2=gR_M zQ4E)wu0W6bd*>;k8?MifcZ9uih=)R8I=n739#WH_*%i-EH|6v)+tnTi*z|gp5H9;u zU&F*lX-H0T z7Cuk`fi7E^F~kU9_|FkW*Lq%BzjjH4Cx|%R+l~J!F}!$w_640=?OkN;P8Or!b6OV+ zuTUE8#pAIJvEWEv{8H2PLsAfUVCS@5Fh(AhO4`z3?eO;YuF+VFrR1pgeX@bs9!fPr zZd`2_3$X`~nh)bn2vo!J!)j~D^$Cz5v$73OOk6euDvx-i(5V#VfYbMHNBi8&r zImQ?Ous#H)laiuXqdIRpAtX09-p6UKN-1qNH8{9{p7~FFjE!9FoMSOURc&@veae_1 zzlgaTc$A^zj{9A?fhH*>HC{qu5f_&VRYS<$aSnSLqaF+WB2txbxmlm(dIsI=7U+oDXng8v3v4@-D5z#_qWJLW5KxYz4h> z8>^p&yau=9<{Kcfy=t6_u8Lg!2~{Y1yC%W|@i8v#IcHwq{A&MRTe*xdYZ#F#!|}1( z!O47FDn@n>di;YWHSy;LWkA%y9J35Qp`!Eby$46VS zc=UX}gi-m7m~l*@#`zq!Q+?jhQ-ws|fRs0>{G3K?jKpt~#ryFYw&AJH0RSo*s-&_> z8~vU+X4(XD1OER0tCpPLt>@NbRbo~Q@Grw$la(G9)WCrhMmXG|zG`NLEZ_uPLX*(J z4RLaYpG8xJoOYqCSi%@=fWrRN6qIrQ5Um4^@1`VmfRl;X#kYLdqD(^fQtq`%fg#T#n)^K(GHQH#fu~C-%adtvA?LT&13TQlEw{ts z7aQB#KYoDjYCHz1ZPuIIPHZVDDM`5_s6z@1->J8HQpJ_4|1hrRvG)D&p=kXuaWY9b zAt52SREyIJOm+n4bzcep?yL6THbYIMyG37LU&k}#!|6Ou`X0cfFjetu*jmKgt0+NA zS7|-cDo^Q0w70j1$CTtOg1>WEUG>#bu(M-QhAV_1u_I|{YTRdrbKG*hA#$^{3sEwY zt~EtN+_K3hEWeK~P! zO<@L9+w#My5C6rZ@#EE~9*?I|OPnMstst3j`rw(6%RVNMA*kjAL6L=MLFw$k%e zH=0Vu(&F;pdTyj3jIAomI@ch_zu%d!Hd`e@%_x_V-cH5~9&RZc5lszjt@P%qAIhM6 zh4-PaTzZzHY*n~FgiQV{FWkNLTn!r2^NF8&nk zf#R^&*t z*7>=YJbW$nX1RBbLSm?risr!j-R5&|x*xCuAF6vbYt6rd!W=nqVz&L|2)L%fQZYr+ zSzX{?LrQq7s}w3N=XHzV&FLv~xX-*P4iFaoW3scaznLq(YhWD_PyLeZz$oRaeVv!0 z2&!G(UpH-|73{Bbba4^Z90(k0GTvyBlb0XZmx=+r7d+^-$e_rBt=akwTcBMz4r~UN z#7BKI6kDT=zMY*25vA9I?YHzktkfsEJrBlr@6aBuNygS1iNb=%NTZFXB*z9vNA=Qs zdwMJ~X!+nAH7tXU<{GO-6V)22@^e-rfI6t{lcx{Eg?58^6mq=&&}ZK#rzsQ!PK4=@ zE(v6#lQy6Gl#GWD5E9|x;pQ_ni99vd-6Z= zo|}_rZo~C@Qt|#8YUOH12H|j~G)0IR;sgzBPv8<*OgOmKL3G^BPH)1=XPcP$=2Ig-kE zda~#@td@vP|A^vseK@|8$zf?uI{0gF@>8`pJVoz&&u+SbdtHVZySdK^2}2!*0We5o z`D!FSx}2=`ecVDh^09;{{e96sz7zcM0L-{rtgfhSzbqe)CfnWiBugFyJw^aK@Z;Ox zQ#bUx;VdrC;VueHMVO=P96^7H%NHVv!$Nbl#UzEky+-Q#r}2g)jOs9cCNF)vr#d$J zYP3z^>H)$#C?-nWIKE=pefr$IoPDQv1!-z)S7Z1bEO&eP;{|Jh%PERf|CC zSE`|*v{Gob!>B2$o5GFvy*o$LhmoU&@?(55JCFC_n#4Fzwy=qFFOA$zD4s2uc%pFu zl@YL`E;Ts=C%?q0Hyk>gY3Ta~O-*9@CAxZ{(wnTT>_}9S2!K_#`IY3e;^pBEP5gAT;99 zJF4DV-%&YS?xIoBP+8fNF*8?m0FN8jq(0%TP}NKMCa(Ei=3Ju{%}9bv8?9PVX#XgG zh%h8fmhjV1NqRo9AG(6zb%LpZ6sl~Tj#5>LO0n8OQy=fu(WF+;$?tZY-iY+Eo#-d0 z7at6VuDYDW;fW zUi{Vb>C(*=On5;KCE%Or;I#WMWRUb@vHF{$JyolatK^}lyQ;XIZ-Y5WYFZ@x_0bUr zak3Iun`H!Hp z67p6UWWt;W^Yz<@vBpnkw-0xFm*~5LlB3Ny!@o?-uhq=W3n~elOY*)tIGlmbcuWXG zs6mzXqCh!+ZGYSUO?Ca?LTwkb`zfk>gV*lCqvW?)msun+q-xj2D2kv}t;{Uj2&mm8 zcALDNLMVNJn<}se-9Tt5< z%r|%~(2e;^nMwfA;cUk1#C+}dV!2Ef`?jz%l_Y2q5`zYhE24RDyR9HlV1Cs>t>>IYE=L}>ZOHpb9tAO`Hj|Q( z5g#qo^&}+QP3v7O)LZ3Wk>q#;vOD2A9pEC_hT(D&3N*P$I7+i36AqOSO;iX>1je zUeOK<_CIMN5_8Wrc;J;EOpG?5Me7~a+x{-%qKP}JDg$uM)ZJkDk8=d$YY)^|*rSCS z;Z|N37PDnSK&U1YvL_vX8y$7^$QFa9#3Oo8p)NU@rDfZKr&VVQFoUV~vqx^LKp}Xw zNjRWZbvUk6E9z%Tj__NL_VRKR011`p?9^LLsnUVKBsh1_eA&EFBC-6_U zYk`A&KzaX4Jvr^jr{93DDmO0Zaw zr_Z0y>wdIzLr;K*N1Q_J1`>QzpSF-_n2N8DNSbwqJjg_h+%i9QrKM#C={NOsrED01 z2tCm4`c>_{q~x0|Oi* zk=x^-6Z_*uo|fmCWL&pdB2d^Z|5TX{!Mpxgszgb;yvIpfiGH}V@lknsV&7H;26wV#sOOD*UG4# zU7k)#YE)cWc(tNgO@HrUyP471#A7m_ROG?NsNncr-z7lA0cxex+sXJLLt5ti&+^zDPypf~{Q#(;Z`B`uG9{?qifBW;D zM0w8(HbXZc2K<=ss;;Wf(2RV1-2ey40(%sq^rT zONR6yktSXAq0Z)N<@Myy#}5y@)(>_a*HTBYNQb#89|p*&sWp?oNUE)0Y>)PyZJ@cY zK1(fZxt1nz3>TiymRNk^KVR)yaGJkuKKW7|5&}~NkAaDqgGWA*dNcbe-$cOJcVcmz z)%T=Lz+>hk8Lh(pYD`kEKJ6MEnRnLVay?Udy!7{B*gHEI(@un7fq6bK&sw7Nl*O|0dFAjTp@O*$=zG{k2%gOOLu2vAr zmV;=2KGs?kc-FOEQoUT?r}Ak}O>MoSr@7;=U?HYcEp6Fd@Yx*?;t&ZbV~~ks>=CZU zUf&`gjM+lh;N$zbfpY~m#FdhiO_UG$j z&S`|wwD}Ud-tbg=2Up?2IEI?Jdr%mGvwN~?Df=#;%L4o1Tw-Fs3L%w8yLJp9;dx)< zKtwE*R$Z82EG`XW78{9*)PUB{Q>nk^2Qu@_;>oe@cQp1Gn#euxn7Lj4xe@^}BRiup z1JGi@jQXg91CmbJ%_l7gox+_9pE8Z@B}w1W?jwd14wvweCz3k`B&S6Gz%98mvMh;$&-^}q zzR^fx<6BD@%w+IDNR!LH<)>eAT8x+cZ|kg=^5nAiXRR{IXKmE;<>2{hY|35o023?h z+Q3+^O-$2{a7^vvKv!+93#SX-$}225iRaZu+UFXxux;EkZLL!))AS(w7|9UKAdn_K zT-JQt@F~FgoOo|a7`|;1(4X$Bs5g0AB*MlSKUWcI5G#6+2|V)5@onE_r`ATf{B$uX z{|f9OPPLQEg}b~Zdt;-Xwo@P@Al9{6wOni&K+2D_9ixLL;K~EVzg+B$>aojudRk6b z#lmF6AmP5DF*AGQyx?Mh^4UJb8~zcEuR0;t-W^qUJojyeLCa`2@?gBi;*<4ajRu?K zuPzirKopHXW@$5|0HG)o$I!Za)%Nt@Oa#cE!`4KCG8M{~LBkao*N001eV_6xe0q^} z>dSPR4Et6OP_6k_YE0N@Z&f>h0!mfgm%bz^`(8k*#b!1v3IHS?%;50v;$8PwKmm#s zko1P-9OK%#rOdz0VQY)-HB|4ZvY$&zr;C*(|8M=Ttr%zn6!IG7(KpUQPVT zKJQ!{rNTWdCq{8EjMk9`PT1>{@{=g5`@SfOdtzFF?{H`Kt`2N^8caMdIq?G-9UbVi zO|-$@dXX0jo@22)&Re3t^2t2@efB4S*;XbjvB-waMzQL`<^dZ)iRL1r>w|59d z=(%8Sc(%}59YRgn5uG`@<2A0tqC6%By>h1H;Cc1SKCnQjpsURbWF<*VABqR3KOn_Z zN7UEh9Uf!7ruy@7>(}zFa`5>?%Gd|nq1h6xV!0`+se;VmZW(ERRiWoc4Bz`JGZ?v& zV0JR&n30L-Ogs(XNEtu<(FPWvZWZzv*eYH6O`W2dPd3%ge4{IBXy7i$1cy4EZf6uE1QFP`n)AHfx4ryE_7{6K_YJ=WEp;n~!JZ z-VJ!xHrG=wx>(wWVIO0EDp(1)`$KUOr54Jwa=#Z@73*z!QVe&4oED(MGZnTB> zR}ne;d7<@#VzrFRVNx^71J1W(kwN(fxKd`%dsILc_$sR$w3MGaO_X#(MbnXr`c(1~ z@113Zl#CI_(BEx2U4-@gUZ@W42fqe^C~Yt8%9as z*(0G8-O?%1V@)?y0IiKmY$u6G%U7k-a-o1w>K|>9-)SFj>FwW3QqQc`dl{|#3Q)ga zwggmPe>cjz!pXtKPreBodG|3Gs0o(kG$83Ej0X2n3;*pr(f5u$+1y1Qe%l`wRfl;Jz0j;o*3-nw@b@J_Ri;t(E%8 zvd`-7?&nYW@_Wo=Cw9|KNb)Jc@5|FbUaYLIwGN`4-OXS@pL2B{8r{9UUB7?B3V2?=AB-y<%MkXF9F53Vkgx=Q+@H3>JxCAz-0|LdZvr|D zpW_=)gnG?@T1*HYu8;D+l+Dczz1Pw0`a#RU;3R~pGD(1+VcCpY@@P#YZ`)pB=V-;9 z!x+7xRAIL4iv))BU`?vcpE`b=hP`_xN>f8P356B9_7MMda8?3}<4wn^+kM6X#nHH@ zHk-1|C%mX;d85;2pO4j6E)6QqV#$0-*~_07xLdYyi)xXCNAvj(E?N0&tT<8@9pD}E zH<&bib<1<})J}Gqvu3Mx#;(h@&6yjJ(GAhp8fit1DFRsmrHTVlJ7DvbQK_jF6g;UoF#tVpM zDSu=0_>=v$J?qZIQ?071*x z;ad_t68cBGOcqWNJui1p{k>=^-qyh8X1*rZqi-$;Gi$eJZ+w;-op4HYTj6&`(kDHR zms_<0jDJ-T4psmwXuV!- z_jZ-~%kEA4@tmMly{Svsts$yX%p|+{&nQ>244NF$X0Oj$UxwlMgyxW^`BXcHzQ2&( zOUeSjDXuN{w~eUntwK>X8hwQ1)tzzZuo9@es!s)3M14`+NHVw!vZ}C|DJwbqbG)3d z^Z^+z8k$DxW{xpXDd?EysK(pL6j`%(a|w!ws5jM+s&35=ir8&9G&C}DpgqSdQY|bh ze|ma~ijMZ*-Np6M!L_Jz-@dfCJeWmcNUHx_EMsa4>&2@aJye&gdzXW9N36ZPEJZXP;0>62_E+9Oy@NRk#kP zriXLs)5v$M=MyAo`)q*QA`-fWrOmD%M;IR(TuL+S2AqoV=|6-kdDRC_9)D3q#qnSs zoPfwk+SBv%xcg0R-*eIJK5b;e#RzyTx{m2-tXNt#(0H~4dx0{hg@uKBr6ct7^8r&% zPM%@MXW^tPsspF>Zn&W&4vb_jJMq^0D;E1zQg=^J)3$MG>lY`k7Fv(2o$6GM&sYn& zNicD)PtBt#SLjD#ae!tEm)UuT(Nf+-2CE4*+M+uW-N_xi>?yY=Eu2yV2cYNA9 zXI5Mjj6yoNNzk(}&IWb-EHT6eH=Z~@u|NC(plzA&pTHJ1?cnAX&>RFik|tn;+}{z^ z6@-RK7#c~df=YxH*8R05c`8+aAa`DEx=1akIhikZoRQ99MH%#w^?~8 zL&i})<68@dRrHWCeI%z?t>uyu65P`!20Q#tI-Q+j@#;qKk=-_KrlV-GIgbYhbUkm* zK&M#jh2##^VAS7C=OW<5B}6Z4ZJaW*TQtQ!2I$}oWzh+j2o)>8Mf?#qmvR1i#&N8j z&CTGkv7`m%vGH*@K%F8g?T8MjfGy?0356U8>o_?JRC8&=37Z?{u#!OUC*nN`4!NPzZktAny?@AS6vgn0$`w4<>dQ3?+7zm$s4 z&WauBX7bv&qAw1PoNGcj^m3-ZuO`6X^Ah`*4OWvrCcRVd*H1>7svv%mjBn*6{my*l z_!!&%#%MI_6~`d(;i%p0Y|hHL5&^j8XZ_Sq!P5-t(wp+PsDQyy`h2^6b5};fS z$_}6avbfjSeWdfz-$Kb;*Ixq}#QhGQ1j7fJ(YDNdJ_|aD!^&3n6C^A$;h6tvbgIgd zdK^??PGqy#wE=4w=8tlf;yO-+pSlQK)^lJAObViDq4bW-L*xvlt7+Jy#}OaG?L(5dvo zlloQ}G_BXn}$Ecb7(Hib* z{(-k>8ny6PwEEq_0Hm&CsI#6gk$X9xY!iVsT2Q?A2J+>5Cctx}=@9)%7;^ISy9V>K z{_4DpoIX@>zI!JXd1B|hm*XZ48#KXG@jBz&h{QkrJ6oZtrLA|Nj951S{#U%~{L^Nn z$YW$>2Fu3>qsJI~C^8=pd|p}bX9JJHM|+M7KrXC!=gd#O=&i~OJcU(kTHLpqOJz<5 zdTNUgZ(s8XU@oytuXZ}l@t=OFtn+~X+pGKk*|YTjc2xb3W~2YKBLUFp|FbP>lv6-} z2oG;>Tjup|{#*xt6}f+Y{-2Fp)n}!+kz~Vgtv*k~!eSVh+QY9|in1V4#2c=3EP67= znOnX+v$iIF7-h$SCMM{3OBd);s5tBG%zIS~n6IeBXF9}Fg-;&jT z50>V0?!eD)k;SulUR7HwHcd+gP)Y1TsA!57UNvo8%jUY^47A)DHefP+P5rzBO#{3@ z4hSqHm8qdlR#exwEV*LrgqxKQk54DsPUd;Z5)mJ&^TI9&X-=%>Ti%&I-{HiSs#_p4 zq(D_36LMjnot?Q~EZq!eQW+)21BxjgN*eh-?PIy4}sNU==628XgdOUF>DL&t&!2i8) zvVG?7NHD7ZcO<<=I76vbv-jmR8h{S;OF)3YFBB4gAY?*7LJqOKYEnZDY`HP8a=!q!Opahx_C+P( zFG~jG!+&IdkgThR>!!%G_$U#BpE_!NTbmlLKm=p$b|hbC3c&4{n7Dbl&7A}gJQ%x- zwZrzO$18pK*sVX3uNKw#e>@34^p7B-rYirE@SNDK8I- z%I2RaJE0p+sg_3RIo;^EBq+24?u9UcV$RTY}+$x<<%KI;+C;ii8XY=ApfP67}j z1}*j9%QgxpJx=0H<&rvPXJM1;tcMrk4td?IBOZ<$2^bj}n_53uS_!zn_!MB_7YR33 za;<6H&HK|ctR5{6TR3aJBUL{3qAGXI(agYrSdb?IuOIbA7^(#(YID9Lw zZsoZ=mz0(1&88z?Ju;3MI7Z$c3-PJp1N|WwfWub8i6H~=&TW|!d&9O>%u3n>MH5Rr zFZQO-%Y>M1jtQJ|JBZWxej8F>`fw5bk{;cFs3mpK?I za!`s|+1M<#K@t-mK=_|v~CJ4tBseAy8?E6Nqg849g zKPmj_%_M19pU%|NVxyCKttnET?-SCp?+fH3{|1-$LzjYjgYmnRl$7xn3yf4ormC=3 zPv_Z^;yVN!gLIA0IuMf4g;yi6Bh;pGDq#$!k^`3r!-Z#JQgG_ajq&K`H(53zV?FSty>VYXi*y=fALO61RJ zY&eybmD{+hQ;DA{s$+bj=IK=+ysr+XC+`iNc9_O8;(N9kw9o+7F!={Mn&PukSj5N* za(Bi~$x{KV4s`R=v z@aG-z7GJzN8}cd`RjlslCV3@`q)iAt9t+guKq8 zy(B!YK$~i zAayNq9ZtgK@P132#;&+yV`t|lg=gD?MiTF~<_Wi+i^nAgXihFJ?YZiEg@&D*iX21f?DYK2*E?>5-Y}O+ zPj{QC8<%gbVGNrT9$L!ew#5e_VH8~z#*z#rJa|D{G>ng6uWi(#&Quz5sDnzg{S%vI z^nEQRcvU46l)`ZZyXM?{&E}lIKdE@05It2F{TeQW?Vuf?`33y>^z3Y$zH~Bwbe9|9 zo&L*h7m5W@G0>d3&mUi^oy$>mzP`B|4DRz_&iM&i&#uO1X@Jm4I9Zk9^l?&Q?U)ag z={a2#%=LW41h`j#2nxVrCbF52Qa=yopa_93zK^hc%~wG*yS5RS>Hhxm({_ zM^D+gE~qpNX#uJ!)2V{snHw`(xU8qwP_cg)yvypoqkjfw1hf(vE___U)rQo!agVS2 z=E`y6#*=40^HT*Zrzo{C<7Xh73*LpVjtwOwNTwqg{6AE^cRbbq8~@+J8%ZIu_uhL` zL?nc=NA@OrQzT_?nMY^Le`}`S!PSO+gC`HC zeehS9?K``_H5L1v*T#RwQ2{Zk>GexC+9{b32yI5>@}-nH3qn!B{voGdoclWU{&`18 zZNo+SZd;7btUo2{`Y=I6qj$i7e3PM%e^_(4(hC*nfAA+!iWdA;#PJw-+>l8^GO$@C zDc^XuKio=@nq9ea`tn8fnWnx(XFqFhDx?Iv@_<1VM+XuKi`Z0qwON(gXQhim z-M_htn?&>!03ZCd#JH^Ztaz&jYLS|+9IQFCRRKI6V&dWq3%^74-w^f2XD5T#Zt$Iu zntC}E4KIxfwQp7~WxA~!IZe7}aoPPqi~`_skI4v#(4S3YYl*msTNZg&6wJ^(ZQ7%% zG;RbZf#vh;>}*$?MAVGmvGJjp>){V^VQ{Uod@l(8tFwN3XF+4XXx-a&l)p485*9#k z$(QRa9Ogbf@P0@iXf#*ux30nlSc)UHwjJP1XY4^ zus(uE?FR{ow}yrnZXgng{MpmfLlxg>qAz5RN9aZ9rliKosBZPx)uhFp9Pr(rv5z)v zGr8z@>uYO6BC4y~NTD-*=^`Nsi=oT9__&9T$U177S>v_Ye3c>^N`@T!kA=C^nnMEb zg^uOAihq~ZK~$esHiw8%mo7Oux2W}2>tY_5dx!J;8ycB-OCnSMXHzJJJ&qv}vKx46 zuaK1d>G!=}lZMx{2U4=oS9+edRTe~8I9L>L)!$zoo^d=1T&tW_Jv}>PTmfNxg&9I> znc%!UiyG%CY|$v1ub>WH`1*oI5eQl0GBmx>;zK2NB#9 zJpr$OEt*S>wZQI{eP54vued)=NU^W&a3@WYbQLcPZuPHR;n<|atdEUd-t4D4X3ixZ zwFsts25H8-l1`+jrn({&-^d9y~OX> zj4_Fbkb?NmW4KQF=aP~LD|oH*6zQ{%wge%Qdf*RO}c3R6Ja7eqJv4ZCc=AZGgZv0=sE)v9_*5*PV;h6t(>nhB{vO zdB)TrIl<67MJ`?9oqY|#8L;XyCipNjIw$8Q*Ry0tK39AMjkbUvgAXO=Vzk77aIq^= zVH{!9OaDBj;Kj*~_fBdLmW)MONs_9mXV%o8R8FZsRbJ#7UYZ zVLE; zL=d)Qk*fAw;l=z!mHGLF-Ro9;;fBV>^a@wInc~MFsAJLgcWNPDrP8;L0{vFarR!ue zWL^RDz#*#K=Anx3MDyygOUg8-sqt;_YoWAp6SCD$fmB=P?)4<{x^Nh%e*`!6_Pd8A zhyMf`@AC2 zn2*Y#<8Dofw~}Km;S!+PsTZ;2YADwFKbGR=E7kFv50<>(UAz*2FcGA48b?nSD|L+m zs{FH)QIlQlUpe3Nl-`olPu>9*yNRzPcuGJU5tw6e0Dx`%pjCpInH5CQE;aPIFxo3d zSxF_F$~X3?__@)1>`L$gD;-S!abO_y|Gwain6HpTjXlJgG%ogM@;yhkgslkN6Sb$? z`lb}$h=zu*0kpI?U>-Av@Z0U0S==3kH8k)1EOBmenm%z>(AQ5>cE% z|G!TH(rMmjy{ztI3^4zk_?ynvWW8gG^DVfXZ(Lz-X)PemMmv|~Hr!M`Y#>)z7pK6y zWqr8N!`l-aF@L7-wuGL@p5H3$-S_nL+&erRS#@`8%z0LduBuW}Ym24%Muz)R`8|gp zo&8Bx>x9=__F3@~xh~W}4+q?Y_WT%Ks~sq3uyF85tUY&yBorcdrpA zIiD6VENIj>8l+1;#CsCJ)8(Jk-f~Be^xst`;>Q9iM|<@7v5ge;>i$@!GIT>i3+e=o zhL%GS;2k#}{{YAY0EV_w671vWm+O+-wNhfAAjG&e(RO!hTX0j879_xRh6`*(v^7F$ z@nD3qmmenV#mE)Rp7gh#w#YEOv!w6m{#CIe7WVH+B5vE_A3m-q$|fdwxvOa;`u-NU zZDU7C>*yLc-xw8N{@c=>EkPP41ME2h})o3$MZ+ci=>TPM$E6njOOr@g5ur#}GG|vPT z_(WvMm%vP!pp>^jt>bePWnYz#-}zV8*Nv`U&Nl9_zF>9Kw4q1)oP?b8>ga^cO8c4p zu6#u1LHZu>7B`4NfXsRuW)MV;0V|L+a`7Gj_jcL52yBzIfs6AVjK*AXIC0a^b@ zkU>Dd?O@Us_WjLwe{K8)?LiCEZ7zCvqUFCv4(JZP_=QdIh>FCbjU%o2ZE?2s$qx8@ z)j@_^Pfr&hQyd`1m_d~}zp>yu$mn+qBysA9un^r1u5oh!0-XQdqlA7tZzzaYw-0FJ_G)MWv#YHVuhXZV7Ii0^Ek_prkrylqJ zj;EU}7PgPe@IPx>PQEE(IHLr)xv8CYc-AJqQ~Mrog_j#i05_J2c_abo3T8q3vvu!XS|29j-`{%yDuKC$g-;@m203Pb@K&B=8_!6bKRkFg zk>jIvxHb4TWv0PJeqw5BS<T~_yzcb{`GzB=G4C|fZoX#)xDCHGArn14me>k4li*?Q2 zad8&$eyLkyQJ!8JHQ(7Wd)v6{oX4aJ4^74;r-=PpTuc}Cf1l$WhSkh;Bw-`LPGfoO zJCw5XY4{e8lCVn}?3e^?j%Baswvagr=DeX?^2u-Y^>j%=3|*+YM<8;QHIk4O*TLrr z9DZN>?EIxwa^7q0r-uH9(Gu^VJTOLvha^;`v=(Y=YM>YJtB8TbSY1_ll#9d5OH>u! zI~_)T_JGWG-B!$wi&t2Ui4`KNO!{H+zv9=oQER@Jm3NNFv8>l%wl)x_{XJF8skH=8vV5wVgF# zzYx@tY4R1uuxM&{Q+pDryv(f3dB%^1QjQ=O_?RQmKuIw%v3!$%8Plt^!VPD$kA4tc zSzp~>jP?M~9vGzAWO5l8NIr-CUfbIuS|A4LP@j9JI5w9h;FL!yZot*`4K-Q2S>-xP z@#)P2#n;(EAAkMt4*9W!_{QzTlN1v}2vYi_6)lId1Xf0Us`u41Wy-E!-m1{ARpE3p zDX~(Oy6QH+sffH624NZ%PSS4ojkZg7@bsGeu>voAK8v_;atrXL7WOumDw%pUJ~;|5 zrO4^S>d%ZAby-FHu_e__;z)W#Mj5e`*Ag*7EA4sz@rD0Qx2@V*FrBC%zu@-zK*85e zI9z_yQt#fA{`{5X*lZnN#m|9z%c3oOKw|RV(^ZH@O>c_fnfOf|3t~U+JBI5s6@LTt z!HEx;bU-BhfE?7$QcletT<3=yA=pQh+2CRQ#PgERedBeTVBInGM1{f(=rO`i0!y!`!X0ntpc0h+y?PrbbABSL~>U0M(rXZ*vQc^}NvNE8ljlXqkSqsgLA-&bdd8i*j zVn4Wb`Tg$~#Wq~^B^NY~`Aw2&*!i_;?cOfZlnXjN5yp#=Ipm{BJG_N`yc+`~B*1B? zZa-e$kt&$lLoqau%)T8`6H>EaH`pQ$-u>WSZAL7zDMRp0WE;^}no3Fc*U759h1Z zd6)03tHap(g=fDb`{wm$|U_VKN~_9hw>fg4wSY70#N)7Ieh(k~~BVpnmg zWlBT=K+k;poIrnT8iAkz4!+9j+CDp)l;q^kpMF2ze*AvsGr{Q&3{v%O&@7-rI95Uz zfZLrwUgc8of#%8O1xF_erG8hbs7nM4laT+jV7-(JX8As94+;=?0yVQoa!|UkV9AcF zPc8615SX1|F!pqud~~`?YqNf^u1MSCy8;3NL-X4PEjg%X9Vyyh zw)KI}OF~ZGeh%Yh zPFn8fE-hMjhdF|@eFK!qBhTuJA3vz~YM4s1P5Gf+XDjh*X#*E8++JW;xpR%k3>j`r z!+tq<92jt(6WHpjcbgiwn@hLh77EbMZEX}sJ4j++n;8&$W*a;97Es=TE4}H~57;3$ zldl|m(tkNKclMpeO`aOt(Sq)L=a&o@uf=BlF^(CMCcb}`Dui$?X8gvbe`w??MhCF= z;pMMe_$pdCI^g()MFfk*e-sY7lDasB_pij35QpgcH2Y$9L2Z~*67RpC#8X?Sni^h@ z@+N*OC)djl3d59f;LAy|)o@wQRuQNyF90Wsfa3*D-bG+R5@xfczs+rJZ4E3?8=z`= zamP@Tcq><3rfK7@ZlY{S#f@#{jdp1fOS1d-%TBj`)8CczPXtbzB4~yl*OF`|I@RZw zII7Gepe*foWcXZ&KvyKVTXU^VU&793sUvKl&cnb_R{1zKq*2{mH zw6~NSV=tIQkS>xY4<|!@UWKIIH!-0FCFTs3zJGqe`sj5)t$$-&;?yY{@g3JJo$2XW&nXo_ z63)-hceR~Tn*>Nx!(wPfVTLmtSULhS5fnymh)eSFl26YGD1kE9)J^H^_dh=nXQd-X zGS}N`Z?MsY_DG=doZ@?Z1;XtA2?I*@V*K}_$SHg zn5QpWjdxVJr=*YGVn)#X;@TQRFzt2#prAR<~{1}$znpkj9}P94Gle&_uYtD zwaKK^3IRO~Dh2?5^TYkJzkune7a&SVBa|PBvfok zDhPz`_fOidL2@|&*xlZJr8zK84eQ;sJKeF=8kA*|7x@imtxo@&V`d7@jU2nBwUy06 z%)b9WaOu@huR_z28gP<=nVRq)|M49opd3@LZd(-bczD2h3P9`qbu!2%*-P8MLr@=;mZMooG0&}U2-cHI?4!*^ z&?N8(L^^)~C$>-4S&-5xx|yd2Q25eOR)F8!rWQTQ5gL2{_Bz2|Iq0YbEdh<#6KOy9 z@yMLSkv9%~wSCaY0G#7ZiBMp#KD*}rS&uSV8&s;Rwoh?t;+3dzE=0$1RRI5l`52_y zodStC_t-R_il$y0Y?V}dBFfQEF~vxJw?3-zF`!`Wh`;>!!FF+uxzAK}4kzX2 z+d4P>kFS|N7_T3CPLbG%SyKb{FTn&#={`Rz`;GHTMN?iBt44g-NSbZPk@@902|6 zqdcO&iWhF$pKZl0GQws3Prn2zCb^@?JOW60&ebdAZ55dz;(umP$j6=+c;^{s?tfQ( z5z9w<@tAK}ARX$1UY6*&aOiF0zKnF-7pY?w5YS8y=&5BL|0+}s4~!;rC#Z28KF={5 zOYT3P4w5}MH|!0VHFR=Cbgw#x9aGQg_6AQMG*(~#y#4Chs!8N7OHKqo7LaKC$cQU2 z#>L%l@LC8s-Cu=hl<5n*^Es_3M6C4jPdDhLP}Vkgp&~?4K9p~Z-*gu`dY{JULPJXWj2v_qNPzjL*JUx$U^O}u zJyWo?)MW{96kj*yKCb100`&?RU*cNt9-_!rbE>uskTNaSfdPk#>%Boh;}_i~L-Hbl zA^9=qo2LniQ9yO0<+9p(@(!KM-PPi^-dC&e^y!Bk2$`|(v--Z7K5DPoz%ZBL&Eh^< z78yR}pd%`2vqTzv`pxlnXOmK+_6J_mZlVSLNBOg{q+!#~quZ@pW=~bP`SjW?;VHHQ zE5J55c1e#>I9A@dzTSzS*8-*S{rVTand?oQETOKhgje^#>>>6<`mj-3;4j zjg0}j5M{+Kv)3)JPp3c23p3j|v^^(hgM^lsm#;{^Y}<{1${eH)=Nb?a=-x;@95s_L zX>17V7pAZZI%qrkoU4jzxVX!Q;ZM!-w{pW;3g9RkJF1R#T%T;@EFhmc=!EmyKeb)> zgu7R=7FL)QpdT_g8W~`AX2`on5o^Ded4d}5r#s_<`j4$9qgHe7-LJ^Y%X|I`<13Nn zy@3l{^3P@M@$4V4sN#6-BFn~?BCh?u-sZ}=^UwP82BGA8xoV;|$oqFwr1TdEj92@v zZ4Q)&SfzAVTnZSc#g`ehlM2h*ul%=W!QZCCYt%;4-k(+^x-+B_JM!v>mL%7vVzJmw z8xkB-H<-^1D4HHl*r@fV^!v1$4ykWp7c|6x2u;qQ^2wWMh!PPI303#X-Jt^IG23hvrz|WQ$KVHm*e`P@|OJ?r1VKU7t^q8QN>vUJvXdF1g*4lm$ zY3jjL=omzJ5MpG3L*~q@C++B!HU30%c6i|KuM-ag%N7edY8lrjz!x%pvbwUc6)9vc zZk>x*JFvQzZXS4*-9mDFMz@LHw}#kQ--1%%u1!#`s@m8@F=WDBTi=#wJ`SRQ$wOx> z(tPk&?8n~d)-8S;uVuUaR-6Zj_r&@#WeI^bIgMFAanle{bt2VJ1wwj< z+fv*hZQaTfhkY?(G+wSPM+@I=2RXLm;lvOo$+%fSKqWM|eUUYt1@1 z1*eGTtud9X0-3*y+puxEj}ozD&urWZEf%{?Iv&I3+QOFEG@m6<1%ZZ#iV2(`I#dXq z@a~m{vQ@B<5Bl&>DC}v77Bqm=IEzMNYi|%=`m#GJ!os_|>OVZZAs|o2953m%FB}N3 zJf?+YfBYDKqg0Kijd^<6mi_WBy_kqOP=JmvpR9qeA z#vC;zna8L2pjS8d{Qx%GaNYLR_u^#^8-x%_NaM3->VLX}c@lIY{a&O?nJ$lQ6>8}0 z+N$IkX?a!Aath^_x+Q~@Q4e?J&I0MO9_5}%l8PVWjawjDl1EX(Oq?cEa zN3q%&YTUOJa1fZP9>`;fBCC^eRaHt*i)bnTx)A8OA;74} zZufa?=-nScp!Qa!C`RZ0Zpb5jyW^&lW}E!R6!sc1t}b)^CcRQQdoy~<2?oYx-$lo< zkPR-mR>WXDbxTVYlH(DSrx+{ri{q~kBWw;?2pL>?GnAW3GK#XJf?O!^z1m1^Jwi-P z8oml9S=?>YNqPH5;mrTW4DEuMaPck8N9L2+1fz=r^ve(5gVP@c2~)D9UhVnoeOM)FI*+ zVfoiyyb+0fd{OHJI>Tw?gFv6~ru+>qupEfMmVk_2b4^0hc85tJU$V|Q?9-{Y14_@k zKTLrh#y{AABrJQR|L*4w+N9H&QZ^;aq_1Ij5Xa+?DgaZ&)G z`&?zRg)=OG##EnGw00Y~KS4Q|60rMs`ZW?TwIRuhcl^C~OyyS;HY8(i3gR9~99-lz7*c8uG`_{pVJ^~j`n^j9ROT39R9X{3*p2|sKM zcyZN{!1zM&u9xc~2M9h9QHnT@uq3Odi~IqLJ@6cfwBIBz>Iw?I5mdJDA+jO&yc{S^ zUnORZrd+LK1^$Zl)0`|5K(O<#EPpg`Zc|ug$E+b->NkZ4n{{}lysz_0w@ZzhNd<-k zh2Ssod{qSbQdvZc5|&I$BMdox;x=C+K58&3ZZy5D)))5#sZU!C2i)%NzIuz?Zf~U8 zdJ(UvO2Jp5#wHA+`LHE%eK~+=E|v=xJf>yY9EgAJAN%2XIKMiQg`5YobiVm{O_)2} zl}AOoSsHVkEud;AV2zEs^);c}~zZR_-Fr;PRUoqi(m zg65N*XRu@Hff{9EBf>L>M22ln?eeBQubgjq&DczPDT#@Z#q@98Tclh$x7^~sl&k&k zv8u52Ssjl>#jQ=$IDi@wa9A~as`PynQpVv+{c`8?G)Djyl_T$A-U{8aNpEi-}V%6+7McFy2I;W?Xgz&Ad z1ytj;owGLZ6L;#E_!p^m0`xngqCk~%j6gfQiU7o1z0X2Z_S(rzhMvZd+^s(hP9f{@ zJoW!ert~TjhVGXs#60)iKc8Qvtq#Xm0S-BL?}48klZT}ysH?6(L+9!Ltak+IMa@Cq z4LEdvR8`3EIqeu$+4L~DIjp$KoG%eCDjrGE1gx26#!!U-Fm=Ow{kBTI=K{?TISlOU&`GC4sQh=g?_g=b5&*f`S(5FB7OMLdPTUjPE9tmKSM)h5|C1X?J>GwyJqwdJiE=?dz8g9`i$-9$lUMrU~ z;;!kDc=EuHSjIC+Fe$gPwo<}qz5fHk+mUl+Eb)Mi#Hy&`!0|-%9Bd|W{aVfU7r*D{BS_#?>Xp6A^{20C$_%Q1xG+x<0X+_J z#yjB#*Xx?g^;vI@8+N~b;i-TpfAzq8GuQ{~xt7noy@#G>Dqc}bWw*=lsvL0k6URtJ zBB-a*<$3zn=6|`*+3gEIhkGWn=DQFiEsK+AHKq2sCjdh0vcxx2O%Xxd7#0t~-XM+@lj@$0bS4*2+;&4ob%f3I+h&A#^t;=j%xPBMgI(Ta!y+Xpx?cd^}fQhgg3^IRqZF}42`7+*)!LAvb;*`F8Fj7 z8;=7G%7gW=BhvEcOxfrWA;TJ6-_y?}sHbVDWq28#JF0OA2l$W*l{y*YXF zj%9BKO@>r6YwG^S%(1hM3`LGx|HnxYO#c#mAAtK=5 zAdE=n8Qwp*&7W;zQsX?VSnZsXYtD!6M^3Z|TldQk-TR@JPymA3)2H=c0~?gkp|pWl z3Vu^@T&Y#{)1^iOJjP9i)m{{$c3=A2FaCbxseYJU3I}roe*0sS^CqvDowbqg(m-;5 zSPSewKWm)Z1Z76-!1AVn(nu%pem%YIo*i<*8cuGzkjG2>n6t^v4r@9!3NX2rF!)=vX>I_u&+4|7}eYtX4~gc zpwq_a5P1yi{{~Lr0>7vYD82+1&g;khT$s%1i|KxA1$Mi%MLn zEwWgmlgsolDr31u>2;?Yo6hc#jjGKl9FUtDnTtMj5c2Aft8thWdeJWv|DAO;)bd(| zSEd!*!bd1`|Bs}=INGsCFVDAG(LT4l9#>0+EZ;)M8>fJuy>`Iz*iH4gIX8h3EMUNQ zQ(_T!0&>r%m%bhzvdX-?f`O3G$y&Rdw-KaWA`?$mCq)1f64MlOAW7TWDh;q5S?>S1 zxK@=xgC72f+&d;`L(1TKBt&y(vWQn!kjR~?j1<<6BNEeUJycZm-)F*J~c5_&HZ)b_? zY&4a~i0(K?(+)I-Q~Spk+Mvs~5tF1syWps*S8cr+hWQwRqfxK+ZKoY{h%O|Z1IKE= zHTG`SeyH9uK=QWtoohuThJ&L*w%>U9DXD4Yyy)Y_@RNWR_!(`-1%^AOoT-;IV|666{wO347`%O9jsE`no}r zG$&JoJ#=_PE#U@qtO z>)W%KHDZ8SQ;IHy92S%}*a30Zv_n0=S{;G+VUcy^yLkr3D^}4=*N}|#kdRgv!D)8X zHaLYoRT=&Z_D#MFxebj18xlv-Um?33B|WoEAjVw;E}UqiRQ5|Ey3~uIYawFx`p!C| zJK9DPo?7Veu-kl=yVn4=g-&H&x)*^ zRq+$PFsH_I-m#{i8f|l=1g!=AlkX1pzP@SLS5Q&jz5w$Uzg=U%_h(!6^-_A#!x;J5 zANieFVb^lG_HTmX)f_}j00cSyG&I&RZq{dsYwpqT=qMu%iqM4Bd>i!l8ir4j#N}E z0vr75tj{8MruHo3Zjz5Kc(K!f2|JH{Ag}aw&hZ0#dfB;`tW>VAxZrMX?Xj_D1WZ2; zH{ca(RsI|MtRB*q0YLS?Q)`_t3dwVOM88WZY?hcsJXE7q zKrV19akxH;&ntz==)wcrw{oKsd>$WN)UedK5@*DjO0&<$>oJM0#RoR{?b5U=AEHZs zh=#_0thU>xSo~}kVdbr)_>tswe0upb(+4_H2-xo+ENHfzHcFw9QX0R2hle*%{%hQM z`UgDeUGi2v#VER85$-IB$M7+nC5qCtfA*5%cdTU}Sc(fcT!GJ`LWO^Ox8n3k;!Q2q zJ;j>AT__OlxicFD;uW^p1#cr(-n+PT1VxbAt|a+C?Z@oOzA4pxc2|U`7ew5KDE(6l zEdqg4o1C59R-(OgjUXW89H{^6t*KfEZnxoR^vO; zlLQSJl5&X0xFTCUk8f4$)&r@*rgAc8>btLBzka&}xorJoJpd)Qv`B>q$mr+g7nt@8 zE&Gf;<+PDSrs^4K3=aD4^qiUY_`+lS>5x-M%GGU_%yH;r&Zq#=u;RA@%|_0n(8ltx zdps5wpo;WB4%If6!XaIr>X}!yG;YYNnJyVLx+HtIPt~pyG!Mtl98gunKyPLL@pj!b z-V_A71M!zpNRRs403KN#qoWETLQxbVd{<>ZR!cLQq2(&cye~90HRD#eT}_CgJ0P#F z+u~q5=C`D)L|5-w)=Q`Up&dd)*+^qS+jBI(wDySwY!qx{Pt80ar`t{HtpR4X&2#-F z8L~8C$I|g8L-auwU{U8m-fm@Nz&zC=BL+Z^>mpb0w#<>U!AhT}a3KB#s}T;v$&OQz zKCJ83X`!zeJIqrH?|mSSy0pSQC#}0NVLcze>7yTJDMR<&5}Fh|Hb*)Vi?nKS7cLw; z?v_xT@DQDz?FYXC$Ca>vur$lGo@X13 zmv>2{xQu2&)ycnuO#80BE3-nPquttcG*AMTC;a(if9v&~mzrAq;^J@9&D8zhf!$K# zA%l!BEU~bv6F$tYJ<5$d+37S|-2DTVFXDQM5>ESIs3mwCSrbVq45D`HPGnDS-Ar~D zo1xU738{;BQ})eak%Ive9_KPp%V758kJhw9aDR!bU;yA8%GoSS<`Sdj%@ zAh?;B?)9Y$|FL&&i|*l-iaCtDf4DIy59`5z97LEbaAd1W1_2gCmFH$jX$$(w&lj~n zLx@@z>%r#yduHoc%0sN;M1e({EPg7}?I1%S)K=b{B~bpkzbM;N z&Q=b{v)knBX-RZgu>7KwgapQDg(cK4&A=&**zm_3Hl9&J#L!sEeh{X8LRJ!H94Y7Y zIe%SKV|msSS0*#E*Fl8+&gEVAtf5agYBsH?bnkW3zvD2nDi;^=F0wEx$)22^Hlsg} z0>!8vM|#B0Mck{Dii~(AP!le9JPhRW!uX0x*x~nr^N@DNuC$^^=k@iWpga;+RmEcQ zw!BqyL;qlGf&$|E^zbvIMIkX3U!oT|?Dsp-yPlV%AhPynNo-yJ0;amcM z(6^cwt^52QP#X&|zUr2V4WNg|U#{-1LUOGPj@_Q!aWw7{&cb+Gu#yM6;Np5O%;QAK zZu~-D+({xk%Vp}rUY?lt>Yth9ZmUnJ7Z*VbvQ$`-THe?ozmzkpb$PuYONqEk&x1fH z3AXWOMoHwN(!mJMAm|C%5b~EFZA%Q;`t+@0d_ATNNz9N}3OfO+z1y@!v}fb(L7SB= z0!d3W*_kftl|E=Ig5;h9Fg?uD!)D~_&Dc1wAFHti+kjut_$!THgL_0^M?pQ;F@0=r z@9;N(SDu`tJ`(e~$`G-36F#=IiHab;1s1gCoIrqRFJXre$$JeJ$4`fyZnjvY=QBp# zY_~$kTRKctQGfjStV`&l%|tdmC@DmuJIrQ81zLsd6O-?2!x}~n>-@#RdYRAVs~f_b zLTe;Mn#hbfGYt)m(*-#DxwJG$3m)%Gm7GuvEp)pEF`n?qA>?swmJ8Wd3u~*I=(L~Z zWx;oYF5*T@zDsfS?cpslwa$=VCw&^R443lIw|~`ozJQ+=3f{*|^QzeRlkW%mWLB_d_qYX}^Os)>^AGz9A7^#kA6E@`23QN444# zTmVsiI}Jv63C`ji=x|Gw_Ety9Amen=7LUsH>Jb?^?*J*E=TUyVGZV9VeZrwlG7wPH zdxB+7VOu^1EEZscyiET)oo9HH5F-hXPa|{jT))Oqfn-7bsUagZy({7RuZIifVxU7} z+C=Z_YB}|Z^>L}9+BYBc5hZv8EFf3ug#R39CHkn;jRTM^M^7tWPkev2c@S~RXdDYX z6z{K3{b~@|?um4L5&2hdHAt-g1(nOOl)ow~DK#_*cek9OT`s)u(KG}R?X)}RBnS1V z8LKx~OU(+l!DJl$agK!B;K+%Updc2HiahM{LhBVmI1&pBs{>?1fNdUuN6{l6tdy0d zQ@$0FUx@)F?8q1wRGq1t!NMwGa(x;DlLF=nqudaW+#DdgjRm&K-l@vPt>ko`| zt>u%D4%LA32az(&;jfrTOen$^W^e6W*ujJQ-}XeRp6vK!e(H%Z1CNaMt`Soeoh&&y zd0K$wBVyvRWy2*52KpFYHPc{{nDsp$M^&5`Piq>De#t5NtaR8KVY4D%%fTG+-^=}F zAb454wd&BBMAmrQ<9$P{vSzg+L0JhC)(=|$Ef=YyX?%)7F2|-QW#ujrZT>I|#mSI6 zccbu6Ta3RjYfRKZzDO0#JcoPgD;end;rJ~|^NSICXbZky`rPnii44y+hxuT#eA;3A zK=v`S!7?B(Mt*3k@>ZI|7=*sXL8j4@P>*!Qz2!T}m#HRNoeOM#&)7c7OHSqB+ztm- zl5z?O+4X)3IoNJ4&n@_ii#Og8NO+q>$Py*=W27%5_g^gYO2;r&bDkUC2kVoUy4Ua? z+!slX%RwpvkdBfzn6t+Gww{xzMca_WHhg{fNWR`Qq*o0;Jg4%KT~$9nb)i@Gs^tgn zHV81!zvJqch4kj-P?hAw1~9in6)1z4n6jBVOdIRCm=*z?rx5a7b6l;>u=ks|R!DSc z99j>rKqa=8Zz%8Jm%8jP`bCwGLb5zc!(CBFDH+afm}e**sy})Fj|BN!BjB7BZdPi; zSz+l&)z2JQ@zvI#~L`x6G0UGe4 zA2HUY81Kcm*)I$Ay;~#2(!OW7@?2+N+6VpcF?Iek5qQ97VEuKG_0sfvj%aHeT6EmW z*~M~f4!zfy<$cKSzBO9^(DY=) zXI(IPo7%P|ATh}8yek09x==?yCrS~gu{q^>9wT>5{(Fyprx_tE4ZAgv5H;{K*_^2k!#=f; z_1GEUFY(Fg)p44(|2#Hu0&l8!9OdAY?1CD(ZuxrlJJ_)({C#o1)i?&QBm(&svuBp1 z+cWLzcfV?Wm>g0uH9km7v0ze8=q%_WXg@su_V0Sz@=x@AdEgA3H_sT5E1e`Y5DSQU z1BR!po(Wwo6qC43KGIGL`mOwZ=RK+gNm)k+P?uq=vf;4`FJ7Z$fEshRO1#{YQz8r! zP>U|IV6bZ|>2W1c?ivj^na&^XK3KYlqp*WIX~te6S!rM%A=n#Wzn56yJxTl-NKw(` zh5DGn@w2Hh#~Q`Ni8i+s>^fif?HtuDrdyIgn9?BD45W@LnY1`KlIH1@n->;sKt?}! z37u^)X5wS+;1`!k-Veb(ln1`Hv4MCKb*4&|R-eC(Vs@vm1B@RwBA8w~h#!N}1tEcu z^L?FYb|4_DS0JP+loP!x~^&eVTCD1q@AWYJsaQCagAe@z*Tu;JcEB%t^LOl zoA{jh=Ho3yHA_{f1%AKj-2%H1a}>jbS zk<{c{DnNJ@=@)``dIh76v@C04Lo!ZIyogVA&rkcU{7^mq76;a<0}FZ3 zsakbi8NKP;uJHc-!!#iT*G2id9a6t4ap|IEsC2iK7c3WEH9adH1smqMX9Kq%PYdtV zl}<`G{(&(+VO5P4$&II!Wl!drLE#r&GZlRS2k9XRl_8Rs8`3=llf;CwrP2-5;uPP9 z@yNYIHcH37SB;GL+&G11n|B5%{|+&=61`M^NA%5mJD+SI+gSQW;8Y4mMPP#$mZP6B z(|<>xM@5Mlx~ndG4Ccg_BG0pALY;#yG-Mw#g~*4e!=um<{W4LH#!V_jH#C=~%?9K1 z^_|yKVYKpv52!2cw)Gv4LH~kTVYu0AJ!gt}=2#^;r8lVW{D|Utq7TXgBi35!mcSBv z@Qf*M&NuKNeS8JX^s`3W?&go*tI0-dOy;S$4QI_X*%6P_l^Ja8buQIIEYg>CXmLMx zLz%=H&6YWgq8)PUQwWRG|Lk%zO}*6g_Ve6L_L%+aM;q`y9-AeP?JPbYUelG%RbpSL zrVEPGI+d$|?hEEy9GkoyX-DZI9h$we7~!Rbg}hDH4!%a7JmkVk+04LVptbN)|_BAyKF@|2O3Zwb`sd@MJ)!lip zGF7g+alzkHxBHCRwlud_eZ}71{$@j|Y6|Pe!QG&91+9GArfV7Vi@QoHDljkEs~oH$ z%PGRoVVnEDJ4LK>8yi+zxxs?B^2fDs*-q9bRZo0uYzQ1?01SX{o?idNB&&EX)H-XZ z$!4`5X0{W2E%c2GYq{jp8-#|KF<6q?dCEv*?yo%)io-fv*s*dEjPzl5_+MFRMZ~l* zmd^>+xssMO9|C$f-P|?acy^}^&9fNDuAAPd{8J_Pi3TwGpM5t`kiERE*%k9df=Wh4 z+^;Of>RqO!=ifA|kuQ(*(Zbb&Ij`d1(CO(O7`d-Qm(PFgZ=1u`511wdx6Z$l37fZQ zUK!Lpv_@nJxB1nN2Q+|5J@=rX>%@DZQQEHWp}%mBX|wy22tXGDEPTD^B`Rtz8#%I# zU#3AEg7aX+r&OqI7)Eizkov56Ll5>twL~QKHpQ>wOvzetGcb1sdl`%}VIX!)2S(4k zpDmTsLYz=l)Mfg0&#&78Jg9+ZpHfXBtMjueWgokW$*yth-rQxvp<(PYSQo1z*uI40 zjjO4gxq35rhIHq$ty&+O=eoAH^*Z=-Vp}NfewuAl;3RT*MB;Cmlcq4(Xzo`7Hddrx zKVJRJEt|X*!rPXX_1Gt+`~ZhwEe6bfQuGM&;@P$x+x3C4<>g%-lb~z)s_=yrGA|Ur z+Ffm;y_(qI9Z(7W1i$XY+P(wWPBP^S`?%9iUr{dZ_&-|BR^0xF$kmmH9F9Y!l?JPb zZ^wQ06d&?({=ZC*fHi=_z~Mk9VW(NPBszA4CZ6S!LA~=YFhD5%$c10@hv{P)SOTq% zUrE>;_$@gt_UA_nl}mv|vYQ>1QIx`6U{T1R#Q!1f&Eui`-~Ulkyo+d;Y?UOkgzQ_J zR6^PJ2_gG3b~C0@*}}VQ*+cd%`#wX(#9)%$V9I12W2`e6Gjm@0e17MAzyF*+&bj~b z$fFte`ns>{c|Dig>ud|auln&-0MLLKg|@Hz!k(!X|Izp2KXrqg3iMw&@p;H2)Ds_G zJ8Uipq=I0!Sk0Zl@`#532STp2v*!i5>ASc}3vyFNHJOuhyyC*>(T*}L#y2hKr3)9& zHca}RbmgNSqEIN78*Z~pNr3n){7CfEk(F%k?BtFhQn}Lgv7aC{l#5@^m`&p6PV!UE z`=;-f`Nz?LQ(=WGyoU?EUlYF|GJaPWwwJ^H?$WXCihv* zlvAe%NTdXG~vD+Gmaha<>@;4G)2#sl_;7fS{6j>@J`fumUl>WbGSaSgYZu?zmG>B#lxvafw)r78=MM*J4tvnig|b zE&U1Kj|c5mp*KgP@XW?t&sE2kWs>0PU?s}tRBd9xQ;sh@c4Plu2$_B$U;F0h5&`TX zQj%5jH)+HLG88_?yQK)R4 z0ihM~`xrj39I?E%6;o{FJ@v7p$gHr!N$>vDYdrHq)DEY#A9SiFln3bNA)`i1VnE$= z8lso|rryJH{vZ4MeXkEwR%?BMc>6!Azg1i{zpsO|k_a#a`e+v4JMEhvk?Vqo z#r9b#601Ljb$N^5bCuMsAFv1f{*-*iq5T6+lKN}DS$*Jr@K!&K{2Tb4{f(NzcsNu? z!{#neJqRRCo*qP|#_`&QS#W;R&$xCoG$nXxyinmE<8oIMzl9$+3sY=kRvJA7-X|Ev zu3?|duqEsZPkN{Z=hVF1u*FqADlK9uTl`Q=d1Q3-PydvHpTUO@ zAHKQaq_;MaUg-c*X+<^gF;dI*_z=E_)wit{fSn8&i?FpZ4jlAXl0&9w`zGB$3na7Nue`O7$~~C~)PiMuvFP6Wmlz{cxUlY+`V$k6%0@ZGnaGB| zdY|eP56J8;G}lnQg+xFMw}x(Sr4S_l@_S?=v$qw(9)Sm&x-H z-3D4Qm4*6)XfT`SGB7aMN0|%7k1RUv0Uq#@2AUh!r^tZYOP5c3jMEiuI%ME_=6qt`gqY5V2+dH^h^(W@AvZZ z5!;CN=QpmqOr8SSF5kfPwol@`*YVSWvB1p5xZF@LeP`Brr)PFQWae1#(kbBYX!5J} z&^uLYySlHn&svA(oA(ub(-CAyt?mALVjLzL0(6{DML+R9F*KAbd1E|q*=POAQBaBx zo*(#b_qA>(>lp}fW#6wgpb2G{5lohS>(0E@&;Y{>4N(=oq^l-Bw-UcBjY5Has&;FNuoU5eoVyCcRhonp7)+DF?A}#@Em9WohZv zm*H1aZ~MM?M6UI?H9{vzbI1N(1Fyf1u+=AkEUO&|&wrGdT=h5+NX-OM?b5MNMc|sV zocr1E`+2OJGN>;ftUO;dG?-6c{c#6UYeW@RxPDJ`k$o);r2NFfcH8iuc~*?aY?I+|UM3i#Gl< z=&ZJus!*yY7az>VbgI(Ds9<);`@K#7zPIPPv#iDMP=}fsUMS zbvL3#DoKsj((?f)z>81h+O=aKIIYOG{0%Z0B`=kxr1R*>F>V3nk6-`Zq_C@I?+&_9 zyhRVOZ-4FR7=R@${+Hfjvn*LQiL3TvhCK{hbOattcmczJ^@%vltgojScoC^N(bs^b zjd~=`t3@yUggza1g#D<%DLBRJ&eSk>%;v{I5lX72-3U^iXmDZU;0OgBfgos3JAb`kJNAnl@c}x&x>1R; zLj$W6{N9Mq6BH5#JV$J^042gU*T2#-U*axzi*3rgtgJWXxPV^~kg%J8DjmmLoxOqM21bsT z_y!d{$5`A(%18bC$w7z5$r^9hva*D_H+CdNe>mzxHb>B-Je?TfiHPoTH{b7sHx z5BCw8-oE8hZfQ&lkM8>V6$dlD?paZ>?|TYh*a&Q4*lT&`ydM>MZb#Mc-^kS`O`L;S zpnOi+6J|Cw}+jgmodT))V7`?OG8_jpn z@u;}mQR!+@`Z0L0;Cbv(%}hD%d0ewL=TM1>5t|O6T(Ie#Q@nHIxz>osnE5YNz*PL_ zaMa<|t+h^|+IoXxWae!oY$cz^Mw^t@Eq)<6bbYjc4S<39>@{kJ$|`03=dHGZ0oi7~ z^{m!i8_IzO%1vIf(6=^ka+DzVjU-wx^klzTrF9KKY9JxsP%K;(n(S z;hk`|X}X+8$VkBD%c3qfj1KN{{Mzn5xf{lZa+ufO4x&Ac72Ch%z~k)p)v-Kkc448Y z4=V&;Wo_M?tXZXQL_j)c6dY<-H#Wi>3VDGs!297=y*n9^*OCb=!1fiMnPsQ`2Qhx{ zGx{PpTv+m=;Yihk*`9m)_d9aFMu1q<0%f9*VX>UVAr8VUF!9Nk z|IdOfV9(KRQQ+G6BfKQq@+a}x&lg5JI+V`8moZj3!JZ#?%`9&G<^U2pm_z|OmY2}ytma~E=DjrVGdOcrN&)iAd(F^%gB@q99 zB(`}7eu2+r#dGCeWV}v_KCi3yX|wH|+xPD44O>D0@^dyLGZPTf@H^~ne=j`Q** zFU|MKFCV+!rpniKo7-KAd~e1R0xZXN$;C#6$KcZJz@nk{Op>o-I-M!KP##W9yyKLY=H*P1H+yWBd5@EM(i{9@ZjPd>8if0`Qx!Gpi&&5qMU zs6Pw50C!cpt=Vo2DN++=>~p$4E-LCiAPdNjT)3B#qV`;*Lr7c|jB1sJxQ-47-@}Id zjDdJIHOv~`_X#~ru~vG<@-kd*)F9*nSE&sqW9H?T`rD`KWuD?W4zWL3@DKMF0%z?@ zpVHf(F51S%r$FqQQ`zV_0Zrdif)jOpO216biiwG70C{?|`98YoDWLM@Z-Uc)rDIkK z>OISrFgETt5pLK1G!f0T?`Pzf#`+OQqC;+ z%vzZxq}n5Vml_UeR_s3}duJ&7hYL2pt?J?h;lvADuYp^e*%OT`jcGe?i`?(cjkE<$ z=k#4i?2xEsc6o1jbozcQO@!t?T?H-F(Espyv|69``)l5_@N@hD%T$n{s^z?QcXwB}%2}*~^!usn`bvDcOST9Aml2LMZ|F-WMqr57U zQa0$wV}GB0WZ^-;+*RTQ;w9pKSlZuhWWJiC>eJzzy6QQ9k^dfRbMpAPCl1h^mr90g z7)y(d=KW50f3v|zhYrm>7-^Syt5C`RpWlJ{Z8`0s#;zme`t;aY7vSFc-_6bW^i9db zSIRZ{y#AkG_C#ra{O^+wbVwHPV?=ZJBbTK#qLGLd^hXr;40aWI5BvRx&pOlp-CCo| z^o7k`2Q5z;`5Fa%X>q%+@Z>e0ZdtB9BFpYx@QuR%v&SF?vLxJm;J!P<++Z9s|`{~s%##&(`;>#WAKj8d6UaVO5L9~GIMEjVR}lyaChJH3z?-VMO+)^h0K7&=&!$Cgg{#d86CAowF%b| zlUuIMDswOMe7d)N(Jt!47g=}|)^z5dC>eX#E1>~4mSh0Xm_o=mI%P!roC(A3~&^U0AfZK10DltNp7jzGFsw-$!`$R$}Qe( zph@Fuz{ADnq&|RNr+Pn?8I)s(L5uK>Ll_b1f`5nx-7i-QBLv8*erA+BTUW~hjtx4` zo?QXOJ}|gCBV+MajoijhhHoQPKEZVL^g6Q^5+g zSB)J0_)?xb+n{5eu$FfJbo%=^VanYc=hK0WM=hwS(KV{owdClfjQ+8qnT4?U$S&8Eg=ZMKPjv zvV*vQKx>Ev|C~YZEw0e;4Fh%WNnnidZQo$jpE&9OpwXbkq!a-4c-d3%h*TrP$M^W6 zq4W0D{R)`d6feUQD5L$o7FRq?50?XBlD}t-S|R%3`>Rv5b1*Fi;TYoJaA{6Zg@=bj z4f@ZuiY%F3ldYlY!}zhF6M*gg>j}&Sl^1qsvvP^mil6`JBdOTPuU1{O+2H4;8kZH< zZ`%kv!`f(E1uN>|OG5f*Z3nH=dE>4#$`?tWu)-F{a}NFHH}wYQO0|%zryy)Qw{+@% zycvKCaI@SeaXV_o)HVNIv$Kj%ugsi0as9>x#8;_LLPh{=0_`7%M)THlU`P(kxIQ!6 zH6Law3LZy`^or+L=mPBIGEZJ;IOeh*W%@~vZn$q>Aeh_Nu3uXqHZl| z?1RyfF)@R`t0$fG(t(qHrY8KHR~t3XNk1vMbwvAK{SSZ*UCjxlF|kPLa0nKcMqo(z=%`S1RgoZTzCzYDYdw5G2uvG=LJr}i)`kiM^xqt#fQ zc!A=&j|>p|%VKGgwKEg8*cSMSH~*e&z+2I(^sM_z8mY;9^ZIg4O;Be!`9+WS51Zt> zKT%yv?mry*c1F#-efq|+W1sGmXHnDS2q{=PzPK_2zn0jpB4RXwKTEE2zZE!BS`Jb~jeK zgfh$DfFQ%EcwWfvdP<-wwpwFNp)ySGuxp?Pyp=@35wsXYty1b))F4rvu}xSjg)k*5 znkW;#%p2VSU(DLpP1Z0FdiAa(J*R53+ZS$2O&c{uhu&+-CT`R~80r0i>Q#W_MIAUQ=;+y7b++ zvybDZ)=yuZfkL)nk}&t*MnXitBFa@3fq%+X1D4j`?Hy{MOCw&a=%q+c@k2=2fk%UV zt?=S(s!4|@AX?2d3T|OV&(3VLzI>)N$A-{1Oz={#))6p~!j|$B?2&&+dtlaE+h9Qr zC!W@o2`LvCpo8YeY}c0FO%aNONQBxKnR(86`PZ^H=JG-kwF0;Lnkt_BvkI#U8D8%) zGw^^a0Be;TBf@lz$nCN{+Ac3IQ(~7&gv?zI38E~Uw?6eD@EsS+3^L>rRIRN&H^;Iy z10?(hrFG)fRPV-~&swe5Z43(O&Sdf?0}|5eUoFy;9>cSWpdH*$Wmu-_t(d%wG{76Gj>Q5P}){u<>2Q zF_R~8s$AC+=(&J_s`A}f0lpe%ErAVT_;uC56#+66M@@1ZwME#}#iHU&%dI-Qhc%am ziXG~*l)ka?s2>BmxcEM+`fm+LTIPCl;AF5f*MioyX(ozM|H=$}&cixn$8n&>x$?w4 z_lZ^&A=pC4I`U+krs|ucf@gr`QH*vBZ<1p$SF=CyjM6mB=&)qJ7I{yZnE};}!N-TK z=b6{LyVT*)UBCv7kdw+$A?1OqFZbE2LYolfuO~}eo!KaHs1|cZZg=|p=ASmUJc`)e z$nMghPVwu+YF1Am9cETS$x)#txRtp1S}QMcRJfq5_mjPqpLld9YRA8hWaO~3K0DCh zg;)N)P0%eG7Kr#r|2zzIgSjMA%6j~^>Om$R0E)cb0Q-z#J zK{U=pH!|K3?Z5wfLDuEVH}l$OKI7z2RgR5}=`Cy59g7GSw0&b92}W zLB)Nr$nZk`8``Nu=5C6vo|kh)L^Ag3n5C_%XWe`Ho_3& z`T6#jgz>@_N8gv5xsWCl@+B4-uHHz8q_K|rr!GbxQrLFJ%!&3YXkLqxW@Uc&>ng!4_4yEgEv+!mR3h|g;S~b2(}3V zXPrM@w;zl2)w)_&{gTj3th`E1cXUKYpT1f`P5)u;yFKrV0o114P%+JM3@A~*X!(Y&({Ekl!&e3-LwApUi5avNB zy-f2hu<~#1^lt*L2o=>O_J& zAI7v9!T275$#|;rVh63YTcu3wmFLGQE3d;5+X=#*&RWbSxyOO^j}*-`XRV!D*su3B zWHV-*XH_B$R|sWidhT~?(W4ByoHcifpke`t1_2 z-StIIQkM1V3+3L}JEn@jwluf)*4(R+KHP`XX7MJtDu-iLE!XVLjPx~&drxjokrAlg z!Y#kKD-$NR$5)8>y}NrG5lqo!Eu?zC1~G$_^Rwf6X#cXDn4v9S6_~D9!GZ^^&7>@^ z*QKt6V1AJwsr_y|IWy*9dkjzSpgvIhQ^?$^$$!6$)@mzSdn@+zQL0%VCb&SFu~n(N z>QAw7RuIy-E(AeVTNhWsTPQ745q+oQWK`*I*PC{JnlTCw-ZyZLE9OdCkDfF@GX#jL z%VsQNyuLbI-}alf74`N}(umA)g{Nos!2CUJoxI&UY6;n#3MM4Nc{7f*hKljd2@Gm?^K7Vb#%FDrjw#yd^8HT5N2p+T+3=yflvnyJiiahZSq z%~@|}Wjm*v+X`VXquE2^{4+suyBuRGsOHbO$B?T=rErsf<}WU3v3NIHwk<`C)D%{$ zluA=J$lYugI8s1$q%9k`BC^(^i@=-jzRJ=FO^hn2A&GO81>a|IrN_ZLs)m2nLQ_M< z#Hd2DupsMDdfjZ#Qk=Iw#nCnmH#nU=?>LHd| z^Dol8HwT8Z+3bz#gng%TGd`)~5`E>iN-LV0)ho4Ql6~A2+WY6r&8u3^UFV4fNjCyN zbT{XdMjrSN=W72gy$G9wGbAr~Xz{sJV3!7)55-RjeNOZckXO8HkS36)6DyrF^iD^J z&npyzv+sSZ(^=jyWtpXvyE~n+fb>XL6g6KOuQ5B^2sToL<(qx~9 zb&$By{sd5m-K9|kXZE1jm{AmEYi%JfKKZ=20a||kWtzH+;o*N$G#EiHG)#1s`@A}+ zIURtQ$!BybFvY(IK2Q!Sx|giM7hX683v9sCQ>aVhEg_Y>cK~Hh_enZ28{ME2zmk7i zF5V?88=MR)`x*1>d<{3;DpAt<>c78LFL$MTO5W^9 zOejozK?JqgaV_LRE{WBET~}p12(Jm(J-_xvyfE>|yG41YZ)Ql!aOOmo9M`!Yh#Lw; z!bV3E4X%XGkYQvs*^oa)>p{?u3B%ed{|IXZSZ5fvk-;1fouM-)@Z+YprxEvpL8@H- zBxo1;K*<+}w_R_MV;Zp^>htCIN>fz;IqoMwX)lTUz_!)e^Q6D7_H&gjU;A4j_|sI> zm4-?OG-Yi{7>06(zPTZ0LaWuG3a!OJ7#AmMJ*_HAsKyse3;Q!4cq^7zHmF}7bbcs< zRhj$XFf(MNA9XXFy)!d#nh(F*-@x;%J&>vqh%So|j=QNNa2%MuOOul>%)Z&;pK(TQ zTUbB#fYtyFK^KsWl#qmM>Vtdki=_~>@>Ch1pMtxOR|m&~d#R$Q-F2^VZCEq&1ZbC~ zO}s2vDSo%hM0HcTK8VD>^&xa6Q(ZNYg>9=t%G713{otIQPd8aw9G^~3M_&q`P#;C? z4Q40O5$8!#-yVQs;gQ6}2p)dh1Gz>9!FJ=kJjU6BrKKApY@fI! zZkNnEI$A>`>sp}KupsV!KKZ$O?>n6&Yyf)%FMT=JP@|3zHf0okN^DrD0|azcrXeWmH3APYAKr_j{S5-haZvu|l(8p>p39i-@)#>5J%X)^G< z%$8ok5y|jRsG!jnhuIR7wcqjZPgSQ_f;3CXlI1Kc>V>lc?gX@;U`&eSw0Qdi-4aKO z(}|>D7MA;J7xwQyFR@qi%^BN!AG#BChldv)=k;hG_SG-q&Gxz5x_HzpnnJ>%4G?QJ zKam_PA2W|VpO+%NT3yDdWP#^99V6fXGMOS<4ej1osc?)MAQ&-0p#J5@9%RWPzcOc0 z_c~m~!t!g?PG6D*Y_0~P`**xVm9oGVoLbvuw%natDU9Df!V)C?IO-7iA2&$*A7EiA zYC8kpJt|3hWz#}+1t(+TFst&Ui`YSy=U*cp{O7yKE@t+u?HjN6{~1In{&oO->>~yI zQLqhV9peN)o==>#X9YhWh2Hw_-;exXe?$X3fMBZ=`+xtiRD%cZTrk`I7d9J$-NYIR zGgoymq$if8R|PZ z=Cg*HrcF1lyy2grY3OKVmpmemk+w00g_`^+ZA<{uXh!qf7=I=dEyg-MuJ z+D@4_JNL1UXdyPg&SL34o7;H=W+*l^*C8S1TeD5lEo@o= z(Olp@T0z;|4xZ28tqhyJO4#N1iX_v2(cYl~Sy?_ajqO=)=t)_&UNJ4V6buh2esWIH z-5i(`Uw*?aG+};X0Nm;)o=DkN2W1~9b6%=wAxEP^$e}akWLRj^Q~-@s^|br_b_9a) zgW}kCvmf+;i`zJ!R;C5#XUlqbK8Lt-{Fr3v7`xjMrnKTf!n;hzg=8Wf+|if9Kt-!v z7$-=uAqP3X6_l@EdrMbxU-+y{E326qIK(-Vg4#`D;bi&6cWi$b9k0~-jsIL2t})y6 zJSYR&9l((d>2iqIICDEf^SJ#M5vQc;w{Q%|f4wAg#y{kB-N9yQICKdH-l0)Q4tv{c zu{r_d-{Up9uW?jx(w|M0m;iZP&f0gz;zYh%E4|$7DzLIbb#z6fcHZv29Oueg<~wDr7Hv{Tzh;Glk&c73>!5 zj%X!&F%%gjh!zU2Uk1f$s%bLEv7L*BS?98Mx5Z{~5T;Ww$vvT$+Pl^7h%XwUS2AZR z142-HyHdQiXPFxih$JzQn2e_y#|ddkD|$@}j81vmlv&hV1~|advC{GP`MUO`3I72U z^Lf{McnWbRt^w8NZcq>J&ysIhyO)rM1_tc#Z4pPc4N6peSgWzeER~LlV5n&BRK=$( zH4DO5$(o;Wvn(uFUhn`GRUP8wO?3U(5uSeFb55)OUQk_?-6r@Yv*aBp?b4FBm#tP2}a0v~? zy!MK_5FYVOTZ`rbTYxacJ=4QNGhjdO`z&!9c)&&nN6XztgGg?+{DG4`ItXQjZ0~6 zGj9hCWID#O1XOm5%&VXJ^kyhrb<&b6tUaY@Rz)Krnkde=dqy#r(HCv2RIc z5Wa@V5H|;x1g_HQwfew2nB?*qJQI&dwhBSxrfu6G=*HQ4tGv*L6T#%gs(7Uhr3 z=O0v{BNtqF53v-9fOTqU4A|m00N{S0(9CGz{f3>C<)-;0oZMFBIn{ht!PnSgy1@%& zUKir;@*4Nq4i2MmX2$?E<_dP?YcnO&b?eTGVCe}*!n@njD)Ac@t~^!5~# ztTD^bpiUY|;JQeTS*5VbQO3Ai4>H?lJ~K9-=Ctr{j?Zp!p-!o3IjGw18(bnoyc zvaGA&Y5Kj54tJaAa}B6CTaC~zPEdW0$l{es>(XL{6eK3<-S`9XP&0?aEbSZdVEK1l z9yqk&uvIdge?n~jYtK%VT&+u%jN7mF7oxA0a1CA-BkDdu&^rAv{8b1eT6w;#Cf5TO zFkG%@fy^^Qt((Z&?G5-051WyPD9Lu_NLy2>+0&G2L0Ps`0E;PQt!;Wt)hhsL#$Y3F z)$$q|T$;Wrr@oUWcZo{wk)V5VN1(W{a(hj)^|&6o6I3Ymq(-eH~ic#q-i zK>Xk-`>9ZTn`k7z(n^#>q0@YJXqe06UL13$of)?e?gt{NQ|lTu5w_3nZ1g@+R4gl< zhK|7oJtn-nLX*4NA(Tq{u77e08@f3#*68Cm97kz*CAVHPwgal zGymulq4PF@o|R`YvrR~g{DP!opzZ;${2P6DyeN0r$t|K;jvme%O^TXt${BT#*Q2 z^X|u_9E_DTOxJy)wy8H_E6M;Nw-4%8h0%A{w`=S`D_aHpX13=5X7Z&#&i#?^46143} zXunjv$1~#;y=+-{p}#AVo?|(hxDgLJ!(8LH0O3%ds2_gt56gLQNz*Xi61U%$b#FUSGGmj4>&Rx4)im?3i#pY@LBmF;NohD}A zULNAa99&fC4h2^v&!{lY=c}Gla!>A1wf5GLVbZuS7-cEcDN&Ye_78}vwc1WG?Qt4^ z@Bybm=vNB}@npX@-rUfV{DqB_re$L^Li=>mK=QYJJu`|r|-BR7qt58g9a^1rBrS;Xm8C?*7sYaTz9DcQWglB zvy!OMR|$TwHCD9$a1sQ);8wM6_zHDop58EV?#>Ednl%Nqo+B+O$UiR&R^6<=0Ux@g zRZ-kY{6-4GW`Z|cN=1ccL!A_y&xCrm5=rDMxMU)Q;)>J9^_@Pc`>fXQzDpnOvHm~V zX7EWH-QOMmdc0notig&SoEpcFHZ9vNRJsjV|2Z92Ki>42i-8D`L(po0X$QlWYFz-5 zoUZJ&F1z;QwtU@*11#A68ndX0t8k>k%1k0wD2wh57W}f2Zg1CtTy5Odcb=__T}uH* z53{a|Gj@cTvi(}r)@`~YD!w!3ObVL%ry$)+!bI0dKkY=hRfBlB2k2Phn6wV&NiP_k z-+oDI@Bz!F`|gAiQfSmVR8N5R(t!Zc+{}?<4Xrn-uxu+?dwY32BsHM~R5J7TPg{yp z0X94p(0t%m$9qy#13oPD&mGeK{H%#t2f*^$Gsq1RInn^ONmz5Pg!#Kq*EZF9DPn$j zE>=6{CmCP8z;feG450gZVIV92yOb?NiK%QdmSh;!#&6-^ErXkO{RgZu!_@%Ac&Eg| zvLqrlie({!k<#%etSrW#%ve|y-k&7KgGKu9+Yc8&n%U*A@KQg(vbuK}l-@<}%uq`v zYgp#Cf$Y=ozqWT|!ffZr2UyPMYG;SBVKU7BHUS4%0-o--5&vIm{UB3+@`#4*TC`c$ zYhI)Zm<5iSA7S}iW16WNxbq#L5xF+BxL9qL_BenMp9Q#<>!h0B-M43t7iRcAP+$Kp zQWd;0S6!x;KH@`BnePJPPQn^mSO&xW<^>x^7oT(MmASrjeo#|OV1U^*uUJ-)VQ;Fu z81VWvOm6#i2;Bur%x}x%H5j@EpMtC3!z|cC^}W@vv7)rOP8rRb2@aXJQ76ST7Dwtm zTFh-p;Who5Vv6pQ$F7={J%f#Q41yuAa!UwG)}gB_L&wPr&m-Qj_L9@K8cy$u*HR7H zTsR&h6e_9cH7?+RtBc*}SJPUjRybmk6@WVWIV&5XS04LTM>tcMU&&Jv(;P@XKA#1( zEwijEndBBDbj8OXK6$wdlo$4H{uL{IYhqc)K<^)=D?^7%S~S-#=iL^kG84gId~ykf zU;8l9Q8bWezrA|A>Pbgltmtu@7Qa|=8TI@O84g!?_KLG#plZN^_dTr?>>D^2(@e8$M`3$gTGp zE?~Z*P8o9$_T_kl^>yjjhyK~vmUWagN1Szw4@4k;5`!bY_8Yv-SDZGwUO^c?k2N(Xa-y>hcsv^ zdQ6|4Y7PJy&vkBQQxje5NtnFQ_=42}kM#P1dN>WNo8i3nq`oBux0z91hybWG2F-oF zx0a@^j+EP2u~z~kf@hLbZ6LR&^DW;XSnBn`fd)$1e|dE{|G)}mvB8YW<6-g>xiHy; zG2(7@?)`8)1riqQK0RsN*?_=73|c&a?=>m+b_929D93(vn|qtay|%rcSt`w8JU{)u zGlrj<1#ekNzfEs~DGC%htgbFc5R_01|D9mg_G!?zKW_`FpEzvv#w71FUS3Ycc8QLG!Ieea0d;ojlc0{sk zt~y5=?tHxZdXcX+SnQf{RE)nGsdn&za*9+!I0w(Thnr)4K_9{|OoeA7i0j<-qSi2> zQo#l-yjJPajkP&yfBmoxwhz3Qk{pJHY*l4Lww49srEHDin&~gA3!%&DvkdZRC8X}C z6=9!SQQPfwb)hwQ-3>LPbt}AAoU8CMGXNH4+)XKw^Fi9)h6}C0I$HJu3 zDMo|AlVcT2&S(M#q!%Ujnx>oZ>(2K~(+Uc~^e2c*?&riw`GU=1azF>YHEILNN@4r%p4z-(fQZI$N zQjo3mCeVb$Umy9@y>hF}h9hW4Q{|XVv)_GdpU%_6H#~G7rd_X+L@}C)Gg+bJa`r?W zlkmOredwovZhmwL`Xg}I#H_0QpXG*hCJuO(0Yn5v!o7X*Cb!tg2R!=lFstnV*Efu_rAPDPOFCAUt%Xsc>S&ZkFa7 zSKSfLkzR(;LUVW4h!rjM88QZ%N~0-T z-O=qBnHI^FiV^4UKRRUX{}cs1?O#4Ixk9eOKlU`!OfJtgv-NQtF9gnevHrth-wAa@ zz}rj0c4LiJDi;U6WQduS2_4fQNoHoLw4x&JH(fSlXu;R^kF(R*j~rR|?bXK3pSq>k zp0_7%lvy@atKK~hdNt|FciE{<04uY~Oy>+#<)t}(9o3gUMv(@w+o;HuD zFhH@g~cwtC?YH201`Cwd=RB**C zWmctzfSt7=HOk2UlkK}Mo-ar4S6hMg&}%>Ljt_0hLmgGv#hEuRA-MZI4<@lhh>%`^ z>YqnF2*LMPMkvc7`KYSBcQJb-IKB2p3QxKznJx_v%h?}lC_*tcf%u%)wW3ZO0LZZ+UDu?`F-N0kJj6i+{esIczu7Qgcp}R{O;{c z=sGHTZ~Srp)^(TlKaETVt+eBr(V=^q)GmInE2Qg9+%@yP(&4mv(nKPfYGztJ8AjVY z;r{12m<;F*hc(Ls7RT}ZF$joD)B)rM475h{TKIEtx3w&XPsYnTYn%#y!zCS0E&>th z`L{$k{sqyMl1W@DAEpw@{&e4vppN&zKYY;O_#~F$ZLf}Wx7eBH`X_x>mSkMMvAH;i z3G2hL@k~P4u~L?`k|qLtyVtR8{@*^{tZF!1xH0y0tADa7K9Qb9leiirmjNrGVxIhY zg4>#09xio0{8H|@1jtr`;WIT>@4s(*bGybTJvAad=ah}g=AxqC&v*)B(uj4+b`nwWL(n`40 z{1=UH)e3G^)&~x}FK{h4T&xZ7SFsh3H(>9x5KVmn0Z?fV%t5!56kM;B$3cXu_--yN z)$y9mciA{j`O@T`^loex$vVsc92HXyTb>RjOJN0N?Tra7+0)>jksV8cCy){InSse3 z-T%sboh^%=z+(;BGlShX>ekO{4u@Gn%CXh?7<&K;&4zBY?QSj_l{{nRcK+LFIby2e zq&45I`Z-pQcmUpRm6!m2R+_JtV?11PPHO;Ec+wR_@xk7Xx71DD2%A1-8tSC)-f zqU>yn$G%JC6_|c1SiQ=Y=$@&<+~b_dmkD+$zVZEIsRj2h1J$)}&jt%f3G9aB7dKuy z#K)So&LsKtB=X)(S)xtUd5i}6G5_4C4$d^3mWer6omOtay$ijz)1`zIpWd5mNW>jR zn-Lq+I~)Z*_!q5SD{U=@1=V-=Y%|+ zf9@UV`)^YKY2w5u_47x0EQetbO+QXh1{~99eR%l}w^@zZS&yWu!}$zFyC8H|_7-BI`FL0YCx!-g#!Yf`w&7X?m^=_kLv~|7SNBg z8PXOWL#5{y>OH4aO)IP|rV)Td;#f*K=)F&#U=!Z)pIrydlvwZqt~I zMq+-Qzx^c(&>IQPNZpkFDu2vKW*mtSFC&wH zaxTiaU@SEFQ)2Y$)uoVR>@)q(h(`Eb>MZCy#vBS3`72Nt3h-f8T$=XYF7Ssc;sO1o8#nyb5--^F(8u!69h=*GWFY$W zIhTmsHy5ERj2T`n8L4~l5Ul|U_2HjSGwF&7hwkvbnN`0_=!&~aPN%7eQLsPUsr8+` z7V^5G1J4<3x~E5`DUMlce0Oa_#`6K+8>SVugMlQn`b^MhCa630-wROi%KxjqGYx7o z&GtBsw;OE{yS2d$P*6k$kxii4RYay;pj!kaKq5gvb|p;!LjZ*l6al+2VGp<!Vx6JP?QA_1~zvdEmIs*4JKO^WvsSbpl zJ849($074S*!cY=r@1%1%?y8R$-1MSRb_L`{_fkfQU|VFyN$B@vRf<1+Vn$P!au`$)Ut zes*ERqe-wfHb?iKFbkIs_T*-|zX2*8+9Nstg)Msl`9NgAevK?oXjdgD`Eiin8&0^j=QUxd4+Cv z$J~_199`*RZiWj^r0W@7=Q>iDnQ8Y>7`r^XJLa#ys{38VxJFODR!CFr2#KVvfbIEx zbGGTJchILyY?>Md*j!_xFx&k@M`378cak`kb4uLFGY{-}@~d0F9A${$x z9~{OkPp0x_DIgW1*Vh@<0U5?6KDIgruMMxxf8(bmL~rehkZ~B=)eIw|6T87OT(~+- zcDAEb4b_ATn*5*!grrx9o51T(wzt^d#2>J8;C6YB*Amg_#@R`O3~d^A_L!`vz=WSt zG4%2+54v_c=m&EPekorN9PC*w&XShDpxWh47NM3}(~4&f=+#`12FJVUG%jL@S}ze44t9GBW~?3`NzCguhsLdck9<%$;Hh1(l_RL;wR2 zQe3YytAc%BzbVF{KC>i$I}s(}ol)_kUNcGjWiX4Ik4DxHz@U>yJ9BJGl9Y(?lD*V* z>{u@vD9+cZXR0~tvp3eJz0=3i*;ovspP8rGTVdQt#ozHyC|ESf{Tbr)e#Ckovsrx4 zws)cdPevbQ%Ngi;;Fo9JVT9vuAU+)A*T)6mBHb*UtEv_rDh9NY*M>YRpxGIdEmJJ- zDDTbFxbz`)c|c$ow;nt0^T2^Wht+A5bKrxHIH>DIjW^{z`IjW;=x)tqiI|Geq6G9W z`pI)Zk}6rWI)arM_Y&G}>i$(Rftwo{?B=+Jlj5H6AuT{hfmA$2!VVn!{yauElQwF@ zJso5Q;O$+;Ay>Vk=4#n*>O*$e5cbTEL{FTrynMnXSW|RVrypl{{iGLq#Z~)i+)JmN zh%=iDjLWZL+w|D)!d|Yowr*FhEkP(nRIO^--?k23it*bdd$hA)H!$O(IttB+mEVre z7XyKB)Z+5Hq6248eT|M9fk)c!Vvt7H$Di~dYkU(hR4+?)E63#1RzA>3eSDHxcze4j z3OAo;uY(sZ&LlLD;#Q{FIvl${Cqb2r z?`Bq=pI&8?=q}hQ4A@C1`HUx{qAE>a=Un_W4eAEj3=<8ouy-1X^)oXC&_sJZt~w3B zi{B^25D*q6-95$UmprdesfV@gr$1(q`L&+}09WU2u5A5R&CEvuf;e`>_#3`WRD29f zA-bv8X%ld_Z83jLop69hL;mgo0jHKc0o`2 zdP{=82*7{$n-eGKBkTNKUJ{Ea{@@E)v*P%&i*qVyY)x?sS9nZ9s-4$D+sC)WxZOD` z)~p)PozonFGNlTn_mCq%>92|DZJiOcI|0FwC5#Mye4b58Lpc-Jn+1WfU%c<92Eu}3 zzj(DYBo#x!u8PzbV^8zo$7NC@WJk8#3$Fp5xHSnZjIzzcp@WfYLqF#@xrO+-x&etE zzFgXEbY=d2Hj-Ae*oU|S(&y^QlrOAzfMrGQoIrp9)@}N;x^tNf*GXb5l=SVe?A69J zcPp@ek0!v6j&~~UwLH>gBbt>PwjbZw#g<<5L33bsJGOPk8Xj`W-X-I1+;6wtZ{jF0BA%`0H{aZV6dGH53!!V<`(2&*wX{>1WV7f&m`cDg&xC8VEetl{0;q|}OXP2^!2 z8_8vpdS;|MKHkjMI})rT9?KXJ5lE*qka_TdM;fA)J?q?5Mg4RVf#i@k6DjBMe(t}r)H})U=|mZFZng!xL>r;rtW?yI@}DXjNn&vdSZBt;OFKO8vG!4 zgFA!2Jwi<)i#0Inu+OGtwRt6K7Qd1FGRj z9=;iIl&)IZfQ?L}aaVOWE^a7bW~r87@&;P88HlW7w^GpPGzZ=QMj&AM*zYcfSx}s< zpEn{_EJL>q$S>V0x0Xu`gz;7oAHI=0AUXbjQ7R5@uy5+@#u^N)b zw-K4CZcwl)TWaASmvlmpr3)7LyvOi zu2IXM~$ziFib`P`tRvQ|4G*^CQn|j4WrLSc7Es-F*N-IfUanh|L}nS z8a)a*otmP`*eXB6nKJ-%1-Ji>EDf#?<&pXzL-N-YRRF3IJpL~sRq#!LTaYvO$o~nW z{YSzTLb}?o1#tr|Jz#A0es5c#G|-;9%L0d9$omR~mB*l4`?tZf|J-@~UtqhR-}&z_ z^*=_z=d1ni0mJ`aMHm_DSr>8#c)Z8>@?>~iQu@bP_FqeipF{0)sQr&s>2r{L4wBD7 z0y?t47iyL<(P~J{fB$Kl=9$PNynPUcU7=OKV7i literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..763cf32 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Node Modules +node_modules + +# Output files +/out/ \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..25e6317 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/blockbench-wakatime.iml b/blockbench-wakatime.iml new file mode 100644 index 0000000..9a5cfce --- /dev/null +++ b/blockbench-wakatime.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3bdb4c9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,279 @@ +{ + "name": "blockbench-wakatime", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "blockbench-wakatime", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "blockbench-types": "^4.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@tweenjs/tween.js": { + "version": "18.6.4", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz", + "integrity": "sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==", + "dev": true + }, + "node_modules/@types/jquery": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.29.tgz", + "integrity": "sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIg/Oy8FAbzSZtFHRjc7IpbfFVmpLtJ+UOoywpRsuO5Jxjybyeg==", + "dev": true, + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true + }, + "node_modules/@types/stats.js": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", + "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==", + "dev": true + }, + "node_modules/@types/three": { + "version": "0.155.1", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.155.1.tgz", + "integrity": "sha512-uNUwnz/wWRxahjIqTtDYQ1qdE1R1py21obxfuILkT+kKrjocMwRLQQA1l8nMxfQU7VXb7CXu04ucMo8OqZt4ZA==", + "dev": true, + "dependencies": { + "@tweenjs/tween.js": "~18.6.4", + "@types/stats.js": "*", + "@types/webxr": "*", + "fflate": "~0.6.9", + "lil-gui": "~0.17.0", + "meshoptimizer": "~0.18.1" + } + }, + "node_modules/@types/tinycolor2": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz", + "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==", + "dev": true + }, + "node_modules/@types/webxr": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.14.tgz", + "integrity": "sha512-UEMMm/Xn3DtEa+gpzUrOcDj+SJS1tk5YodjwOxcqStNhCfPcwgyC5Srg2ToVKyg2Fhq16Ffpb0UWUQHqoT9AMA==", + "dev": true + }, + "node_modules/@vue/compiler-sfc": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/blockbench-types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/blockbench-types/-/blockbench-types-4.9.0.tgz", + "integrity": "sha512-Vc7qMuYnQSYhwxiuyAf5hYUUBc7CuIqAyWWTO5XsE97eTY2IJ/nSYMvNsPCmwb9sdGXB1OP4G7vBq4mY9XbNAQ==", + "dev": true, + "dependencies": { + "@types/jquery": "^3.5.4", + "@types/three": "^0.155.0", + "@types/tinycolor2": "^1.4.3", + "three": "^0.129.0", + "typescript": "^4.9.5", + "vue": "^2.6.14", + "wintersky": "^1.2.1" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==", + "dev": true + }, + "node_modules/lil-gui": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/lil-gui/-/lil-gui-0.17.0.tgz", + "integrity": "sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==", + "dev": true + }, + "node_modules/meshoptimizer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==", + "dev": true + }, + "node_modules/molangjs": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/molangjs/-/molangjs-1.6.3.tgz", + "integrity": "sha512-53yOSZpHuR7HUZBZ34uTQBd71kxS/yln/oEtUagkRVukHZJf7GSL9WoE7DzOHfoAOUok8ZGQLWiAqLfZomJBKA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/three": { + "version": "0.129.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.129.0.tgz", + "integrity": "sha512-wiWio1yVRg2Oj6WEWsTHQo5eSzYpEwSBtPSi3OofNpvFbf26HFfb9kw4FZJNjII4qxzp0b1xLB11+tKkBGB1ZA==", + "dev": true + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/vue": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "dev": true, + "dependencies": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" + } + }, + "node_modules/wintersky": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/wintersky/-/wintersky-1.2.1.tgz", + "integrity": "sha512-fI3XPnDBdKD0uPcb9HPWQzeLXfZOLyJnBiT/A83sdNz4d8jz4I5xTIh3AUnrhZrES9l/q7kG32FJlAXL6e7clw==", + "dev": true, + "dependencies": { + "molangjs": "^1.6.1", + "three": "^0.147.0", + "tinycolor2": "^1.4.2" + } + }, + "node_modules/wintersky/node_modules/three": { + "version": "0.147.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.147.0.tgz", + "integrity": "sha512-LPTOslYQXFkmvceQjFTNnVVli2LaVF6C99Pv34fJypp8NbQLbTlu3KinZ0zURghS5zEehK+VQyvWuPZ/Sm8fzw==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2499f2c --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "blockbench-wakatime", + "version": "1.0.0", + "description": "The Blockbench plugin for productivity metrics, goals, leaderboards, and automatic time tracking.", + "main": "wakatime.js", + "author": "yusshu", + "license": "MIT", + "devDependencies": { + "blockbench-types": "^4.9.0" + } +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..6818526 --- /dev/null +++ b/readme.md @@ -0,0 +1,15 @@ +# WakaTime for Blockbench + +Blockbench-WakaTime is an open source plugin for metrics, insights, and time tracking automatically generated from your modelling activity. + +## Installation + +1. Download the [latest release](https://github.com/HibiscusMC/blockbench-wakatime/releases/latest) + +2. In Blockbench, go to File > Plugins..., click "Load Plugin from File" and select the `wakatime.js` file. ![Load plugin from file](./.github/load-plugin-from-file.png) + +3. Once installed, go to [https://wakatime.com/api-key](https://wakatime.com/api-key) and copy you API Key. + +4. Paste your API Key in the plugin settings. ![Plugin settings](./.github/paste-api-key.png) + +5. Use Blockbench and your activity will be displayed on your [WakaTime dashboard](https://wakatime.com/). \ No newline at end of file diff --git a/wakatime.js b/wakatime.js new file mode 100644 index 0000000..d067964 --- /dev/null +++ b/wakatime.js @@ -0,0 +1,124 @@ +(function() { +var pluginVersion = '0.1.1'; + +var machine = null; +var lastHeartbeatAt = 0; +var deletables = []; +var clickListener = null; + +BBPlugin.register('wakatime', { + title: 'WakaTime', + icon: 'fas.fa-circle-check', + author: 'yusshu', + description: 'The plugin for productivity metrics, goals, leaderboards, and automatic time tracking.', + about: 'Automatic time tracking and stats about your Blockbench usage.', + version: pluginVersion, + min_version: '4.6.0', + variant: 'desktop', + onload() { + // Register API key setting and get the value + deletables.push(new Setting('wakatime_api_key', { + name: 'WakaTime API Key', + category: 'general', + description: 'Your WakaTime API Key, get it from https://wakatime.com/api-key', + type: 'password', + value: '' + })); + + clickListener = async () => await sendHeartbeat(Date.now()); + document.addEventListener('click', clickListener); + }, + onunload() { + if (clickListener !== null) { + document.removeEventListener('click', clickListener); + clickListener = null; + } + deletables.forEach(deletable => deletable.delete()); + } +}); + +async function sendHeartbeat(time) { + var project = Project; + + if (project === 0) { + return; + } + + var apiKey = Settings.get('wakatime_api_key') ?? ''; + if (apiKey === '') { + return; + } + + if (time - lastHeartbeatAt < 120000) { + return; + } + lastHeartbeatAt = time; + + const url = 'https://api.wakatime.com/api/v1/users/current/heartbeats'; + const body = JSON.stringify({ + time: time / 1000, + entity: 'Blockbench', + type: 'app', + project: project.getDisplayName(), + plugin: `${platform()} blockbench/${Blockbench.version} blockbench-wakatime/${pluginVersion}`, + }); + const headers = { + Authorization: `Basic ${apiKey}`, + 'Content-Type': 'application/json', + 'Content-Length': new TextEncoder().encode(body).length, + }; + const machine = machineName(); + if (machine) { + headers['X-Machine-Name'] = machine; + } + + const response = await fetch(url, { + method: 'POST', + body: body, + headers: headers, + }); + + const data = await response.text(); + + if (response.status < 200 || response.status >= 300) { + console.warn(`WakaTime API Error ${response.status}: ${data}`); + } +} + +function platform() { + var name = process.platform; + return name === 'win32' ? 'windows' : name; +} + +function machineName() { + if (machine) return machine; + const osname = platform(); + if (osname === 'darwin') { + const content = readFile('/Library/Preferences/SystemConfiguration/com.apple.smb.server.plist'); + const lines = content.split('\n'); + let found = false; + for (var i = 0; i < lines.length; i++) { + let line = lines[i]; + if (found && line.includes('')) { + machine = line.trim().replace('', '').replace('', '').trim(); + found = false; + } else if (line.trim() == 'NetBIOSName') { + found = true; + } + } + } else if (osname === 'windows') { + machine = process.env.COMPUTERNAME; + } else { + machine = readFile('/etc/hostname').trim(); + } + return machine; +} + +function readFile(file) { + var fs = require('fs'); + try { + return fs.readFileSync(file, 'utf-8'); + } catch (e) {} + return ''; +} +})(); \ No newline at end of file