From 19d2da0d0c8ed20d14b43f0fefbf357dc2ea9bdf Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Sat, 18 Jan 2025 16:44:23 +1000 Subject: [PATCH] Add JRuby examples in rules_advanced.md Signed-off-by: Jimmy Tanagra --- .../images/rules-advanced-select-lang.png | Bin 26052 -> 75993 bytes tutorials/getting_started/rules_advanced.md | 226 +++++++++++++++++- 2 files changed, 215 insertions(+), 11 deletions(-) mode change 100755 => 100644 tutorials/getting_started/images/rules-advanced-select-lang.png diff --git a/tutorials/getting_started/images/rules-advanced-select-lang.png b/tutorials/getting_started/images/rules-advanced-select-lang.png old mode 100755 new mode 100644 index 9a07f8debc1f6c75a8c0af50d018b4f44d5b2102..61def54b8ffa10b8def93556e1516e1a8744f97f GIT binary patch literal 75993 zcmcG!cU)6T*FQ>=B4PlgNC{n3q=*ub5tBlGQIry|iMf4_t=ZUdUxYp(SKH}I_p_30#{)UMlP($E2}yogf@=5kE9Ify z=}EjhOnYVT~{m01EaLL}_ z;5^dRPl>0ZqPqQr7ILjWKZg^N->}6ziZ;LY=Kkg(2?XG<-&}s?1>~h!_QzR#CtAYJ zgp>YBF!dX6tdXW~B>^Gv!HatXZx$cjQ&L@QuuH6_1+^9Mc?j@me8KfWn|3|D>2mLl zR0F`6lfvKuo==Alf>Y3$pJ`bw1o}Ok);IzD6iJl)32vE1W@%S*PfGI%jjIX?`Ff~* z_2~7W!{y$WL^j4_qZ@hJS?ugGAoKVtovG;7_nKtO`YPJe>}}fQ-sFdCr{o!56)a!X zw*UoJ*Gh~Ae0bWFJgg;X+k(i6LhV>vVm!2K`9koY=(7BJW(4NEZ7dc-bMp|-BnFho z9&PfqaR}`|lK5kF(3Zmv&Tjz7oH}^?<7!(0S2i~?m&UAvIx`h!g%BT2M&r)< z9R%Nx{`eLJr?&6m(sXQL3wX=4z7G%vX^~W!@_xo&Pk+?7`X9A}Om9A?cwH|p{**^L ziYY&)Go}-;;ipF(qIuvi>{p+;-(0hQ1K0OsjmaFIibww24S%5pahWI7*&+7nUr(zO zm^n2&5+!%OXprYIgmJF6-pC#59Bn^WvHd7?(DK;Y;wvlA;~p^)gdB%f;-(c{{H;=- z;)bd;n)!!remFF*BnZiIh&Y}Kv8v3o`AurRA-)QDg>x9xao+2G<2%lwL9k}~IBsUI zJLxK0X|rmGy(DdyFY4|2gW=Cr1p5U1E#590Ej|7R>rIcguThuG7s*DF_jS8p5sC3z z_{X+M7~?z%pp`CfC$nLiB?Sa)h-)U>-rs#96uEaAkR5Qlg{{T$1?SQ!yHV6?_JdA8 zr5vWrzL(RHHBANIv$%F6-K89JK5Z`(HsLz^dTCbk9`D@Ls^quUQl}NSyoM5ri<13d zoC^K)B{&Mx1rm=`t5S7ld>gff?!0_ptVrJ@=$^A-e!as~Iv5N^48|f}?BF<2i-ab3 zMi`R$_%e3Vm4J3~ZUG7kISwTDr3DTG; z+kD^iQOKl{Ox6%6+<4k7`UbD3iNE+}K0bXjbus=9;e{l=5T26X(?!~(hj1823b84)5s^r@MA5R}lY7ZePQm)pjP)prKa)W#7$WoG zv*)Wjc9hQ}9hj@4f?oj+>COX;bLf7C)1|5Zdi6E5bcpZS?PMRb@2W#D%4zld3MKP~ z^(@5PC>uibWkrT*EW`=<-YL*LZD-)S-_gNZa`!P~v|(Av+kCvdj;&&|v!o*9WKG^v z3eIJRBwvvxDh9vK6;Y3yV0wd3MXk<@CoWuGRNf(|r3GR&KbGc{MY%=tFU0o(aswz| z+%TeFB42toE3X&eEX}GCXQAj2?EWMn{$-M+u7a-etdywa4m0@vY4j_0&o5%#iFf6e zzZ}YOWL9MAWv*m$W%7&=QN5$OLuDSr9CMc{>UGrXz#gR-lSdkADY+i^tv+*ir>wr> zPZdqB|5_h2tI#OD%j%tF@izbA{8ypZ)TTgFvL6w4-|Qj}W!}9TR~VNP(0-RAtl=2G zr9W=}6Yx&_r)BO`ZpnB@p4@nB4pc)V%}EDI7W29y9j&68b3Vo~Mz{5F3xA8qv9>lt zST?x`EZgw5K_BxGEl-zVCTB8yf8?emRXKjSe7QbZX;2KIj(^@0os72`aw}Of@cVl9 zU(GVj3fGPMlfP{U)K$FFR@e5`_9!qe;MUGA2aZ0eeV(kiF}yKaHKIIPR~|Y&G0lK{ zjO0hoO(Um0g|&rwgh_-)9UeJGY&mQh*Q(bt%rVUUsJ(E6{qmwSd-h2{fe$iVTx+Be z)G$e3xRK2{#5F#X;jFh84VDsrBd+6J1YHVnLufry2iMkck>cwV~VaQf8tev4M)6h}d;nktl!4)2P4;4S8=%EmBpGz?! zQPlhwpXMiq4mugGjKQ&?XKiX9YNyKQj>{4%wCc5@rhsJ^>v!$5Tx-u?A5kBHN$-S} zP(S7Vz`d*ag*zcOAvTYDP`k0JwDNViw&A$pIJCgLzl5i}u%gjis^Xv`!B`b)-ydty zTi#!(2XmjgU149*Tb@^5_dasEZi*B+Iph3^`O`iv3!RGCa+d!${NA*tw27s(j6#!Y zlPDAamEI_7HdPrOCRe9bK~9ZqhU@|*XIaben~d+C{d66(G8ZvVvHx*YF+4UbnX&Q7 zngP?(KL2vDw0SL-YtAu$8*h?&vdDVZnzBl`3g}FVQbRpLB`QG8?%F>&N+N1*T`-C0 zq=<}6u}(Qpxe&WPwA=4Fo!%T5>u~#I*f;ScvZ24eW!dir!7@>tC2?alzg+4jm-er2~~ zrcHiDhth&%<<1Anc}_z1SWc(=;R@ek9G*-uYsJsTzj!V8YASX_oX2MNr>)+KUT54V z_>*S0mU5B}PCA9Y1Q!QND5dj=uiA?b##;kpytA*Y1**iuqt#<3I!%t$kM#F3XI$rE zcreMDMXg$AH&-|3Am@&cpHdVS`absQv*=VSoju}Ww=$Wy*y-9qPT@ZfeeQ1e&Q8@n zQCd44qO$#drF-qBH>ds=^0Mu`zg?!?K8)#_@=_ie>K2;0x{g~+LCS1SV zX}IdG*JdDpcIn4b-Z0lN-b>-FNdfrn$8rWEjbqTwAk#L}bW_3D3!Vj)LM?sGE0=Zz z)d|-Qnw1Bm_m{GC68!}yHFVx-Kv=9FA`Ts_S|-ZiPrUP{%!&&jGn2@4WU`2{ zQ~5;o^n>N;2e1R;VE>dYOZHLZ7K5JKC%gPJMAJdb z3Wl?d(@ohd$zzs3cWpN}Q*}~1LuW=gI2r7G|5smbS$M7@`SHxaK zsL$(_acy>?6IaEJQNaM_*BUP_8;||3f*F|-m#rNqIXu?uW(?L^F zLD&QaGdAUMf!h4$gCpu9j4eV<9gLV=pb%?&VHYvhzj_E`%fG96S(*Rp;$S7l zs;T&fSqf%n$_(P+Zwq^ayuVv`pYZVU{%>RsmS+DCWWQVfL-yBw{YRYWZ)U=8 zEL}_?n$ng~tg5j?13%#x;1m5z&i}3Hza#w*={tKYRJ z)_-L_7XbY!@{g83D1YCB@LN-R7{u|n4&PZ@I)M2_dH=WS|4F6wUox=ZKQw<<{!aqU z|Bc|!%Ku5AY-fqpg3<4RfuH<6s6Xre?k~#wd*=VJg#Vb?U$s~}1K$+o{nuu}H#veq zPjPT0aO9*V)m(6Q8iO*&3u?@RI1cQN6iKPIYpFLPXqP$rH)ivrzb; z-Vafn#_aUJ3C9vv4UH|sli~1R%>^Ea$oZM`1e73SF7tuWxdnx;v0R> z7wS&uH>ef82Ym&ynDJQuIKs&vShMSO|5?TQnfR5^)(di6ihqv>AwB^nlJQ^V2&5(c zJz7*IeTYN;JtQOv*cnJ$G8O*hMHx{`_y-BWO;+Y5P4fGulz%XHxf759r!K8d*0OXT zrouM(3MNQIX{nf0m2|Dl%u#%lzf94r75Si^{G0R84gp==3aFrkjwbvEV}V&KYo4~y z4x1s`sYTCzxDeBDrb?VmrLrAu(SKx zYCD!!xw)s@2D(Rq%f`;HCtQHa5N7$;`%z!E#s{@eE+26L=cl%rtkjVw=7EObi>Yc> z6c6PG-9A>js{9Hke?aLMo;m0dS0uVMEjycv+0d%smp4{RAo(Vkj3s+I;t`FgsX&>P zi1xE-xFA3@{}kNpnfVZvN^LwY3Y3-3a3}d0t5AA7Sl5sZ?v!yNy6cdq^|WfjerVql z9$1_E0ekzW7I-{#(CrV~Zd)7BMKWjYjVjNMpS`IE6t_eppEn1-SJ9%$`}VZoP4C!r z<{}%QxzVaru_Z9NB^tB3q2u9B<2Rb$`(&@Y0am}@mV(mC`zGH1aoVxx$*0vqy}b%|+Nrg`_R%laemB|~jki%(b> z^PD0XO+n{IsSWv=?o3>}vvc`=kG6FDinvKlL+|2|AmVc#Q%TySs8M^e zM`oaCA>-trOY=m7(D=`Z$0&;U2(@2p9@}L3xwFf`;a)}LdA`rk3n#lcAO-C=#GNlf1i6j|zlVX%S{twPsj5)!FE|7%YTfA!q*s7l zUbEjdRVh(j(k*+umOqslsbwUq;h#C@%ItOpL?j1w%1N7H7Tu#E7NR?>^lRxQb{OHr z3;2fiTF<%qtf|D?zE2C;i7BvAO>pwi`vX0kqIA|FC*r#`8YOP$kGI`s>vUI7%6lr- zCM?^)6HEI5v>=QLzSPmF2*8xDKD-`;hr;ws-;Ij>{F251@VcX9kcH`pKZNKRzZ|E} z-|`w%ZMG?cC6I0kJJh{dmKx(Ss2u1_vO>D;nZ~Sf6|4-YOdRY->YPk#RS4>Qx)95A zE186w`o=iygNov{b!brhOkRchn4gZ*7ZTg`k$@7ImgV@ixwc9XN#!b+`HU5la9`j` zsWvP-tbOY|x&a_xkf~~(di|?)g%lG{gmZEhhy11}|0TZQ+n#-U70>Ce#@NJM*AT|Z zQ#F7%qzNeNqY~Mpk)@T|>-Anw=2OY@NnLCE1uvg|u!(n~=Xhs+F9K6A=?*u1XK$d8 z!8KkaZaPkyb=I&+jmp5TuyvD5kjxB^T*Ai@6ca{7P(?zRb$lCT@T^8vr{ig(+#?Ep+U5B8kWcfA&etnKj} zl_K+xhMB6;G(39M!8XBG>y+D`BU9a*n&5LI9dz^{T5NPCjOK+shrRNTh?n0T$rtyW zbG5Xtn=4&6jc4|g7qmBBiE4Sa%o7dJ+5MQ)7_Y&ZW&46o?eUS$f{Va~lKJe$*4K5Y z%8xOowDQ+9c8%{Kn@4@%+Ct0)dBW0T#Lqv+Tp#pKSho?- zpJfo~egghNmE6=3JHXZPnj7nOH zL9Go^c$D?eS{& z!z&OB*J#1zDKA2w>CAfqxyS}_<%Nq?cb2$K9Zg)5dY8>}rkKWTPatZwc+|)UcL8Lsj0?#DDg43)O{ysr-8~CINDoX_}Bib zT+Vhp==a+r)F+bRZurq&p7K0Q3XB#9t%edo$5UbD+=JKcA3Qz|phb$RmVH+|+DwBS zMYbQ&A4YLO#-jl<=(=mOxeg{PDe%EdI8FVB#1wBtkiOH8K@#uCg7elGGe-G>?U}|M zR9Guyv*7B-BwPb<)l-!3nR->Z6Ctiyr;o|M)}pDVDf8#P*u9}HdS-*#f5Mq#X_Osk z5(U^(Km8GJV<5Ia!zl z(XNZpA&~w~M*iT?U2?qi;iy8+6?X%Nfn8CKef37}_V95!$3t7dHHK zB6{dTBTofF$qj*4A&ASt<>GGfyez9=mQ)+ji{h*1uk>yehORSUEe&FB)vf ze_&u*#>@Dg3T!;Lgbcp$=$OgJ==*yddsJ{=j@_GBTQcpYuifYB%o@&EX7R`^+IPCx zA4acD9K-|e4_CVmizeD1yvpJ~3cFU){$mrg=Y1vC(~Mc3>CE~?-@T%j|sac=*`5=}vt9t|AVIVV~9tA;4L z{*||c+T#?YJ#(jv@>bBdZ$lQQSZHiPO5hPceZ!zcd3@6e@nlopbglG!V(stpvGE-aDa(Qr&iFzo$N3P*;$8UJ6awN441a_uEtr}el zDz2NNt^%u)q45H9fmxIG0}s_JyaM~LilV@4S#?w>v9XWt*87iUQ{Y$G4sG`u(`#op zc$8jCt=@{Bgy>r`%DA$LL6QU~Zj@0Bi3LWEDE`_F|J-0vK z7uj>t7UBo#kL5-#v|U>i={0oAc&untPX0)(s)-}3dd*bFySrx}0dgNrC`zCY+2tSV zMacug{(k-5AU=!h-#VnpUnz;x>TGVsWW9k%iEpQLI`kermjKpAh;+U7e5Ca8(1E)8 z?sx%#VlP-0 zmpAN5*?>uhR-J0-q0kHMxt*D3cFSvmXs=;9c-;BT&6}~1=+%YoQ8mUQ@oyT5i-H}~ zUc09wK;kXc@f(NUe*B?Aeop0TLhD%S6A+=fi_6{gGgdCfj zdHccW8d-0%%A?_1ck*E7@NfaTtC5EV^RSWzn2xDE*gNgrW0&d9L6p75gQ7&lY0w5t z^C&UTyFad~q_`|omvxAcgik@Q%p=25?C`5Y8JD+PdchIPvax}sZi7()?~CVi!jW`V z$x0VVP`6e0-KDw?;qckc*Our4Eh`(&XuW*!J2{ zHS$P;5dt z^@?Lg6zK(TzAADj=s>>(7MUOVPgtk!f>t>rXC|oRA?L~isG5ijG3AQEgWbivl8p;@ zs6p2k4X2aSl6<*NJgUDua}*++e8W=*D4c@3pfU9)!mf?)#HKXVUu^?gf~W8 zr|yg~PTt@8?J}y%HC=z#Vk^D0q(2KM@_5~IQ^#%~aANloqo)u%H6gC(Xj|3P5cohm z73==FR<5^iKq3ILac7uMd(jQl1#-1Fhqay`xzfax<%bRW%UD6<#abVkiKeV;XjDV9 z8Xtp4W%*~-(WP6$B^VCaQTwwsufanm_QmkKinl5Zyc0EZz#^@@I+qwLjIQWFb?dsv zZo_;rCH?uFxK^E!?0LVv@4|My3N|SxG2uzO5NDB}ox@1svQ4o#zjQ<;k3Qpj(mDo= z#T@olZgIuUY$bvrT)Y^V4(6BG!^RB~bFFqgGpiKu=>>`5VVTQCefr}#@0k#T#w|aq zqOZY5^wt7vk>{U3DF@y=6kn*4be^@$0J?X#uXUkCwSpN_nvLNHrLPl;X8Z>{dRCB54qzNNmP zzAPd5BWlYikEy=3mg(7iEzSY*seH&Jf=;CB=z zk99HZ?U`%yZCUS*9yioU&BxIK<6&toku|6~|0*q4-9F!p(796HzO%3s1E?pm6Y+)V zGOonshv&8L)tCJ;$kFx@w0#Be!&(D2ZOGwXcXlz}UU}H;t&__;vTeUSqo<%gJp!NK zasA-2``z31W%Q3FBkNgSo!|@}#S>VP;7nzsLtc#DB3A_wBh+*+(J(RPTv_|psL|pZ zEANAn%3pO%6^9Qav(CTZU*1^4K1C&K&e!d+dMInIdrkqQOZ}BQsa1&e_M^*j8Y0aq zl1`nIu)-scK<5~^qu=<{L~b27ddVDuEK^4FUHS$kmo{P`fp9nT&G6L9FaBcJ>et4| zw2v?OKato*o_Mi~fOpi|BBzFkZv6EWe$Q&z)5z$Y8QE*-jh(km4C^F?j!nYKRTip; z(a9%3o%N%88nZ4@74C5hD6gyQ^S-76(BZb=R54fM(h=OCO0n^bqXx*OYjh$!1e(9_ zoGEpyc!$nuM~lFB?F&7HI^Yr-JPD8^__eFmWJO|l{gxa3$@n%V1}p{{F7ny|cCHoj zV1laepuVJU?maJd-Ici2zOOSbk1;0#xD{0}*%ueo?a_Fx*e`rIwerdn?f+1Yoz^4D zeOT?4NIo{crlYbke|5Ms`2l8Fap$`Jk+M0^al>mf%%Xo?;3`7aK&jp+$or}I)6n9N zn<%Y=p#w0}Y%k1aQa@(l<-t{f$G}n2Dk>wQ@?=eV79unXP)$YaK-iGt zxuhGj&>DZ;g&~&wC0_fs?34-~S6ES6LgVHZ15Lh)I}R+bjti6bdc)iwXsHcPR2F*6 zOLlTDCO{vX^&HHBx!iu*sD?EkTna>lM1fF#uI`>aL)~O33p`lbFsHI~LRI6d7qkb? z=+2NAP4bda?{m~{YWj$hYu01KcYH2i>)frtNWBpaZbwFvYCha%%P*` z!Y5s>T4pO(D@*M--CLy(!=R(ppwU-W`b+UYPlHD8 zsqvAi{tjRJGEyvNb&^H!rqrQNO2%9a zG%(q~7sGGa4q9$ueBIwaT5>6tU0p%&scOOrZ}cYe^1NbiPH2G1v1F+PR8=2nZNh zU(K#Cj>jlk&B2ssI_osCWYNhDlgb7y95I{?@A2MD{$<* zmaPf0d+FvRKR?^J%Ee^L${k@}6_qk4lM=EbM4uxrs0&lZRP5cAWvub+)!;E; zsB9s;2t=?LSR`kvWiV4Q?@IvC{3tmRm8mJ+&(g+5b-62?0h;^ zad0;ni7*>2y&(HxzB0x6{^F}*k>cFdbyu_w81gdo)nIt!F~aOf0L!V%;DO+w>^vfp z`;>TUWycGO#kJM{noBgG$%RdH;{p&J6j3Z_XEccJ1q+dk%lj8Z#dG zgX!Xm7g($C`*Y$l2wvxbppa+L|A+O2NLZ?rP^)kA|Ckpe`K1-ef_YhE$RTdgg(`jh&9OOXBleWxO+xmj8JOzYk2{kwY}NSK$L+obk1dVTZ_+3$=S_86)p zxqB`Jw=o@ktvSSk0V;7l*ZPq4kL^h0u?*c8i>T9i7DR1O2}w{)7Or59oL%ovL2M%=u~Sy*aIfEQ3j75PPv2y7hIYPL($TR3I#=tMSZiM3P(=47JcVwK z{CH>uGWa^K{*Nge4syJy%~K@B^(F4wH4%)+h#3W`n@1H`AZS*X;eidRv?DL?r9#nl2l7b3L2#);K)uK_inIK5PpEbiS%1{6i0QG0N` z=P&=Y&z&g(CoLh?k@bP(L;^BDLpbJCzGW%FJf#FE=7z{o$)NOgJzAgYiQz&HNdXi) ziHSuaE_vh>L_nACF<-xCK9lY~-W-Jvr@xfDBx4ZbBWYeKVVVk^?Fz=Hl=C=t-%a|KG6O}Z|Y*C1s_A)c?9_M_L;`34kGY!o^< zU13#V0QYig!X?TCzXfd@y$?xr`*o35)cC=Ld6Nbz)rZ|InZa|m+}|p*AE41Fp}*6V za%DU4iwQRpX+J1tzCBS;c8Z+g4Du%=du_?vaQvmhYH|PsoqjJL`?%zek`PNWTf~x_ zHw}+&{B(N_2XLZ1#>vRJHHa*fWaoahkoCs0zT`jCjt%^G6+Nc26fq9;`7W8y;IZEv zB=q80{n>KZLo(lhHxeOyw|bMrqzP~(yPo*1V6&tsIWPe-hyq7}2j?BtP(A5~c*qd8h*y5pjZ@@Mllb_Wulvo^e$-J)5=r1w zgo)gDJN;j5CpJ99A$rrpxvHEZJH@SU!OLgl4*=!^G|;8XhIPCo{t!*{T#dasJ)fZu z9DWPv-l+G#kEuI@Z!%>>2vqrxk6q(VxWeuEnai=TzzyiO|E^9#*Q+*YFD zp(@w{0S@dg>ungF@m{=1gxoSgTHxnqwxFEm#NgyR%AzHWkM+BCmFe`0iCu;)m`o4S zmp0RriCMNdQ!o~st|TSM71sgb?R<7&OM0NBG=ozM+eha+I#Cfq>|zjU9U-%7QM`+l zj&OPC_v8>&>LGHw-Yz8xhGbq}Ziqi* zO5wv>=A-swCa2IPSbos?#IHzd&O>}lihZe>-6n~?)VADLLWKMof<1!8Y`ULlP;*RH zBt!Wt*9pJN4GNVuw)dL`2-8%SSz=-ih}jIeC8X@2oCu~Dut?oG1+CN#f7+}n%bWr* z<~eM-dk{i!Wh~PG z0QwG+1z;Ou*=9s=II1jK6{0;&{g^GX^53~G@Rx`V%*e|edn%1@Oi*+W$lgYa=d0|J zLrzN2hByC2`ol+rwX!%PDAHkkk=KKR%`S zIy_J+j7#g<9o!_X`Q$Rf=f~WwQOQULcHugG!pEw#3J** zUs=M$&s=kA)j`^ac&u&l3qdyTe^HhAW%INxeSN6<<+~BjN~T;iB?SRN3MT>UJYP@A z4~F#HwxI~ac_41u!MDL^lM*uAJvLJkV)E03BU;BVOv*ZxsVPJUvKJPdK+skO*{wAh zgD)ku*W@ZLf)qwyr7nXsS>?gQ(NwRsbZS^bOKV)qI<;o7zvt5FB>Sv`wfrn$ELg`{pE<@uvQdsQPr%Of>V`d+t zzo%Gm9^H^)FcL(!=_*h!Gy4=XvObfhBYjuu_X$J(0?|!4eV0`CL8Kt>&gaPE2Vu$k zr%^JZFTVNEL@I+m13ho2D2z*UzzV?y$f@1!yu!c&)(Vw7r}#;yD+Ge{(}@H zbP!piP%(Mv4MBwLY-y=jBGXlG12VCJEWdQ{BPz#0=bxQezGBf$N~E&2cV4j12$Tu9xfbd)>!RvT6%tn+^{ll^r+*qmi2s;i40r~Z4}^udEQ&-P8kguoLe?+ z8};b8XAWUYcg`Bnoe`$~cOk{LP}tnuU3(TBkVg?LTV6 z`YWE;&1pId&sD?z%hRxm{Ikt0H{xCHKa|)&4;YKc3-*$7+y7kvS&MbBGIptVeyaU< zG}sL`B%Kq^17pVjm4VF6_yZzrmTi|0AGt(reM)R+xrN49hRw{w%_#c{v z`e1he(hG%d{oyfUhey&G`#oRykTR#6{$e7ckH32tUXh!F`j7J5Z~9gx*^ITipbXq> zZ+~?1Rz0nzexL9jg{ltvDfyp1FgZL}tqnHPk@rqbjlKHayLXjX{5p427-giZrDds8 z37IN@PBX^9rpvpXCilYaZ&y=K6zIfN)@59Ct8h*VV;(;n8yjQ4ud{un53-)MXluBa z#&JzubtdL>;q#xtN^EluJ#L8#9(p<`YSJ6aEiYXPsLM|EnqKcqh+dZSzC7rx%8H0AuCJrsIWeQh#(ElT)dyiFf}u0VgcP zpKc4ivkiYGtv#WH=;~OT8RSlMS4d!-`dB_|XUnj8zBSOna*%#2{W3}xSTdfck^Pv0 zsnTwZ*+3uYd9338D=iq(K)OXn4?-|H&l+K0?sJtMdW=TA9A;Of7YR9Ny^-Z!yp5}p zPGFvLZ`Ga3!}0Mq+NJAx9KBsMGh1Vi zJX?uWZpS(fhMXxb>5j;00V^|l5fzY?c=C_Fn&~W?b!Ht{l);+uBxF}bx(i%YmwOjy z6QM}ZK8v{R6lgIw5pF0+xuwFSgJ2eBeM5xF7;IDJ)gfS?Szb2gdiYRIr{@j8^p(Nl zsin9rMX~bCz8^Bgb~XF4Ye}FYff^zM?lJ7+y8ArKV|i^Y7k04RzUhw&J=CIBp}Dp6 zg-i>0Y%Ed;jH{@?`ZR(A&}5boOD;qh3jlzlC2 zE>w<@YlrRELwXDpYn`Ck>icIG%M9-?7*6b=MD_!mo`a`%=3NloMAt%`!yP-ZcDnHM zLZY7Gh+kZok2qY@g92>}0+t;5G?VncwHe4_X655J;fKn?I)%|Y3-V)W1%IvC*zFx} z>?(qjbHPA$(Z>hm47P0)n`VPjwaTgBZgv1I&@Nfn@wKg}f(vap!*hPIau>d*NwT7V z(1fSvbim#SMv*L|XO-9hf;?dFVz-WW>Q>~ssqn_*Cf4POY8%#f zM^-3Sk>iw^^}mL$;`Tjpb&+79cGVmPO7j8sn*E6;Nx6b%3|!Y@j(rlro^BruB7tIW zF$eo(z!1iul_ei;bRah{sXU=^8JSsdOTHz`d@$wV)lx8%5>m3OFGXyI@HT^msi|o$ zQ&A)O!z1Oo68S`;TeP2dz~`&cxdko<#37VHV!>qeW^41j5EZ6_a(Z98K`|8KyQKdJ z7+@X5?fRMROy6zu$Lgk^m~WZ~`eof>+j*9Faimu?@2Nko)0Axf8ye$4uckPA3B6)w zuuh7@w6gG|{Aq27u(ABYzTs^~;b&8e@W+7Zi?%z;?9F~QZrBh_0c@dhli^DoiyFH3 ze0jEoP{yW1DTH%`=4rD{r)%#1|JeLA#-s;pi<)k*+Vr(LeBKoU$Ex5dCl4JvDEsKAE zuc+tZ|YB~9&7;mp%J%47S z*j53a%&vHRV3i26fi3Nc6-LfFZE61X&i=kevNQ5VpnpxW$%YP~Ykeh3-WkC-^Ieb) zct)Hc7kz(f-hD3_j96|Kb3J@7f-D~$!KblpYmE%P1>gWi5C9*Ee!VSrJaqhhz1e;} z!TkP{Cj6-9F`{=L-tqOUPZw=Eoq@sGYhSITg<(kU+-Jw_Y~A0j+f(xM4Q8p76UWBB zq8}3Aw$6o^0MT+U&ZK}MqQ6`o0PXvpoGjn74GDi@(t*HQf;F)rfu2nmksx4};)^}ccy+02Z7OTS4Eum%qN2KkPv-k$rO0gUJ5B8eCeW>BQqDdHjZMtuBsi%A`;h-F(i${ET96jHxBXK8&&O zVH=I{4arFC;=!3@(*kmYv`#}?g20h<0zIb--q&h?6T3OAkDls5BD7n*@>cj(jk?nF zwXf{+)mapQe5^w<1gc{(Vnm2cCSv_U4%)ZZl0=MZgP)Fq7e!V-ON|H&E~x8@he!sv zT8F?D+ZdqFH>3iZH6#YrM!3MVM<#du*~$Mi5-xF6rbu zwt+j5lqYZFgH~n<*+^zp&qVs2Ju_eY&ZA>7B^LQ1PD5t`?ziESDU$$r@lqJ1N%Si_ z@aAcOv7!*RPuSprYY^?ga$0~PE8nN!{SOO`o^Ia{eausXMF6bQ0Du|Ly6tK9BQCmD zFNiDRr6ChVNcAF1d+TjwI!AJs5LW*E!$nV4apd|^oL^k1g!@v9e{wxB(K-d|K5+Y__9Si2J4;z+2pH@~iaFaOpbk-P(2iAgKdQ`%r0=bcy zgJYo~Y&Lx~IQ8LNTLWyEcKf>k?=$8PLdq%~q*P_DUq4nELYWp}kfMX$H9xT9!#7oKGGl@?D z4MOXZeXXHQQc-{uhOH$@dH~aiEAevfB1^=^C!#a(ZbfUf)~oNREhScT{@E(z=^@($@qS4CFyZ0L z`B|sCb_~e0{+*5Kp6KJZPqLu`S}pv6zwiMvpZ%@kz@0X8|}U6>9mhSd?2OfLfM<-H)o=9LuHSL6vS9}Q)MHzMkr zKMS313L=|8OjkVQ#+gS;+9CWZvQjgTy$|1jJ^ISS8W#gUd8rx@uX;=ZJU`W|aCRcr zV0#3p(nG;O!Oz=w0DPy#?F+i)zT9i9JP}jtq=;uWJ&EXneQ7muyp*+rT*C_`^4trseF%94~A)DK|*NN?SYWY{E_ zmSBdt<(z|&5{rycTHFdi^j%!u+w;_Ih_KtQ&Ef zSnFeNo!B$3lIn6c3r>gPgnI5gxsC#0ObZvW(c!otB!5dh|Nd$`4$*YCz}*z#<&y4T@{>&e+Uvu1)6s@E!kJ!$BBI{SNd#9Q;v|jr z1WF4c+&#-iiR7;_8&mTxRav8vSgY@2KGp+s{=E51L`qnRl1-7cxSdpCWFq(vE~-bOS@ z`PIDdi(77P^^f(G)^?dhm|HUez<2;x(WDTm02W*r^ATYv=}bs*kSL94^}fZyceXe8 z17tt$UkgQmo)Sd`-UtzuCO*2(iF6}b4GX42t~7t*Yrb;xW@a^Ry(6u)WmX7e^>ejw z`S^?1v;EHh#ok*-Mb&q4-x3l6QcBkVf(U}Nz|g6*C`f~}bT^39&?((1-9v+PcQ*`3 zcQe#`xUcKJ^;zrr_xy)VSy825Ex_Iw=ob!vGn>5Xc)G9+j(?8okr=D zrYE4k)}l2|e*Q(8!iS^vhpGR`K&cg4N;jc;lgyibOnf-m2?0&AuabsJr7v$8CCu&e zaAiyS>4vX|ZRkpGZT9_)Dfey*=o&=f>J+|3KgIexUK=v7?1z?1?nD-_Vd;NWVx3|W zufVMC$!xiujp=-O{A-C~3VS0}zTcXb^2_rSxAaT_C+o)cD=KWz?0Y!iN2CsFCearw z9^1;6{=ON-E^c{{Vz&;kNoShLL(ylN6k~Rt2~R%5`Euo%2hK z&$MUqkz6gfNemu`NN^h(2QdmN2i* zHWJ-mNU8pmDRdOG$Y4CDghQ=ks~n15YRonXSI=$*mbMTG+b%iaD)jIXn|CPh>iPTA zi7q;&mv$k&X;5Fw9smd9>Q^TF(_y~{zs?#-`MiLIfp~60=`QlJ{JU$@hNMhnDnQeo zu#|-mt)~Zd{~~Bb${D-$;vL!uiA?Qy3VGx6%o!(idObZb)~p7D5^*n!iOhM^f7#p9 zDbq>nq*TIKQBZ^UiT{f)*eH;~DL1KDRL(_4ie+Ro8;b{@B2;vEMf0iGQ`Fi1T5p6_ zG?Zy?TPBj0M^jiE2wXlIe&gcWn~e4?C`S?el8PvN~KwvT0GD=e4UM1RJLC+kV$G#IOel$xo#ipGgaoGwoQ%K=m8MGenSVCxPKFWsZ z!Fywo5wERaWJiwQ%$-Ik5jQYEkJXE@<7_ppLWT(k8T;R@k|`2MSP6-p7$6`>UZJVx zxGAoX9de7$ecnZ$d)s`2W$jTLiqj#3oetJsHl~@P^?Ez|j#8&(iQHX}l2yuedc%@y z+n*crT~M=av25|!@^k0Ry??8@N=z?m&*`bqADm?ZfqR?l3kohxP88p#1JeuWxLz1^ zF*`Wv5a1mKQ&FJRnm=I;uWA#eyawfzo0O%#?rI~x2G^jE3#X;dz)ML*;_bvpw?N&H zK9t?am@xjmOgVuW-VCt4B6BrX#2^wmbITjEcCO>H0m4|=ZL=DK`MWfI;&8ccoBWWO zJI`ICAtTW<@prQWxgd+_@3u){FS`iltOoe2Lnh*@aIdFVcyo%~ew)xFd0R*8CHB2g z7pSK+IPMscAGB<0esRqG!^A?p!o2^Sb2i#CvDmF7(E-G91W9!}?%8tN+f0g3-kq}1 zkiRlxl=~+uHb4hdC$kyD{Tk>zs`0)x)b6|`He_kUqquQ?H79yOadE!VO#QZY2YZp* zX7?x7jE!aV^wHvA^h{X?_lLx6~PBOVp zrXLha9#p!tvj>)?aYODk;eSO+94`W39WBULuk_8A0k)9E)tOfN$H7apf7m*CL$-*( zOIiAxI2+)kKL~|IQGjr@1GfBH^_R-`77(roB#WQ?5d;5v`(Fp62Q)NT_owu~-YWMX z5S}#TP5iU_hu_06_naYjv-*XmB_}kbpYPE#YVDY%7Zmc!kC(;R{!^vs1E?_H5#o}K#G_RCT2Ig zxjb^{XYHEy!y^4~!uaY{B%0V~YBY3mUc1tVGF9;I2-|goZ^<&Y8p)D%Qe5hyB#C2r1|nJ z5x4vrcPdSNO6wGoJ2ObyoCQtRz+7=sK>C1>SUi%oSs;c5SuC+a-#v3wN%iPLhO)byL z%F;rMOi7G=3r>!ZAm5v-Udq9Q+WLNNbBd<^>q)^uPGBNqfE;d*W(S3k^Kk{RAyZOx z0FVQ1eHMTu7$#l?L25Kw{D_j+jY9d4yJ?^zSclZ^|1TJZnakVwo>TsrNUz3s!Ad=QBed zTv(d6GCH5(8-n-FBp&ORdzPMjq}Myz_g|}*JY3&PW)*8UF9Od}j6j&+T@AU%<;uGn zSO9o6nEgY1tdj0~W>8D?kj1wig(_`Ws!xjwDex?-XrRznN)WoYW zM&-gcei`WWsctq2Ly(smb#^Al5-IkRstkLQg7Apf+D%|AUw_Gy@;>GYQEYw=EXUQx zdCTV8-R~I8QdhWn;{n6^Xqx|HL>{7&HR9`iYs{7IH}*p*{A1K{M1!F!r^9A295-zK z({R9E?<;ORSF8UWqdqz>Hi`?$l7u`T*YzAu6F#$L4$u?O>n{`I`0Ak-KK9qW^@L^^ z*2dNyf#T>XB>biX`5Xe0sKS{p+8Dqz=V|BLZ)r*=*tmK ztnXy5+u!RLAKh?aEA9a$g1n9>$S+c_Nta7od6(56m(M8G-J#cJO4D)XqUnM^kTje;(rkBB_iqrXs&0%|-;dhuz`FW;$*+7no_J1;ze*&9M7jlBZPm&gY zW4$VNUBI-Nn;;SG0$dMSlar01k|9wNu0u9MBo10Yv-1khm>^6rvD#=U=ZPs&90HJo9L%vMZ|0#o@0Z}oqI92ikY8sd6 zWFd!sm^&tx2+taZzmQhSnu0ju1Sqr`j zga3oyJVf!LCR80brxx`K5|x6z?k6P5FzjIe{w5Jsw+n}DYqv|D;ET5&I54^;syil? ziPrOG9CUUZplfry=JE!^M7xRW-!$)^llY6=Yk+|a*A(}7fRz>tx7$BF(MZx{T7sz4 z)PX35&J(RufA~I#YppYi;`}6A-1)D&O9=TG-&lDit~qc$1ZyPV@;_kp|AGS#Vm-L4 z?015idK9vrG`@=apW8w~I!#r(i{|H_SEvxpV}X2Zj=y?4{!dcH!3gAIh8+xge>NO; z0BBO^f^9*{pBzP~;vvOTPGY0`6DR)v-Tl9C?ljv~m6W2G+8qc7@@oEErrk2+_m0^H z;^N|S&n1P9dSaoP>s&aBYH*a+{QUgyuFphHidyq@-t@lw@AWC|!kc~(re|P~4Y<2R z>SFk*4~7&YqcqGqY|oyZ19QdSSfkQ7;vqtC84V`ck$o>Mdo^2aY3W8wMoN=y_unMM zi{JMb>3%s~^&VhrSzamBo!#XV4cjW9e~1dcE)1Y|8I) zS_-6ivqja5UsLZ+bNAByDavU=-%_J9flVPV8ln`TO1W|jSn0lx+N6oMoPd5S2s`XJ zKytK)(7DHZBT7E~3P`XLwy6ZqjZvvXU2uP>x{iyI7<3bE`I9@uHNv+GCIO<3mV^%= zEl0Nq4N3>-!4=bKH}alvCG{q^+S|@6MU<7~k_Gg*KYSXF7yq{hWMnpUniT9*n(Vmf z%w;^BMjI*z^%lmu-~053J~yZ6J@V07AfYI7l>7Nc5v@BG*8j!(IZ|9$3)I zR4WW;05)#ya8H`0F}i&&j#aM^pf~3NgvBTjAJSheTqTMXUO?Qb9C#iUL7C3wxUZpJ zZJ}8n6pMopM3lucEsXr7+VNm9uh9&*5wdo5vN5+gl4%a$m<&q@sAS>oD}m1$N1>kg zcRhCiz-pfAeqII`s51@DCz13qO?Ck8+4S@haB(|QoY&(&V&53&{zW6~<{?AL3(UVT z;_^a%9rjy;&8ACfi*aO~e&c9#QMj5N3;Cg1+``WsPDdo?_Ntdske6W{L3=f;p%qK_ zcNgck2cAoE0$2K?-#pgYQ_H5bJ^6p5D|Qf!Kz`LPf5+Gb0LC&)&+ECK#ZM}lKN_4? ze6#o>Qh6Y$m+kbC1A@0(@(!0P{&TTSr!PcLSB^w?b^W0ptE5Y%nW4PBO^3cLv@26( zdR?@3CNu_uXL<570JIz5%lx^N3Tr?fNJVEJoQy~;I1svGr%iH`V`iPkWVv5>1*)7! zrQYb5WB4n{@pMoCS<#wrumIN)$IJRZk7gyBmnL3lC60CXFf*kXE#mfp=Y2guO*1>M zNF4zA`0=iI7=%>N!!1yf$vXIR5)g$ofp73GoYnIfNYRV}`<||p%WI;wjL8cw7!D?x z0FP4jLo7S*)4m%`aoNt(XW0(Caa^#E9Z2Elt9pIR+Ry+b-1-NO&DY7A!0YD#XEx1$ zF&_oD?t5K5J;1$`1P;ZlrnKn>odfLG?1YN8=7D?GYvgu%_m-fVC6DVF07Tv+Y`zpv zKyto4n^0<%c>EQNbmT#$W1QhF0W_E$|jy(B}n$Jk?bNLZVTU zwZ!o{=;qLZdYeC4-h^JM4#wmPyu#g%3+c zsIJ*MJ+%dJQ_g(!t4-{GmnAnV(hX%5Tb(Y`Q-bp?9);2hX*;bv=DWLGEdtEl9@F>r zL|=>)anGy@|AKH_UwI`HgpPoG@CyQPg~Gtc5LUasaFz^oR-a{Rs=#vCD;Q14>+gX= zJjZO!tm=Lop~Qimt`JF_mL9OU09w<$kcR-I`hke&oYK%^X}+<+OTn~nzFs(xJ7dif z(E0W4BY4|rntzsj@0WDIw3y5X?c(Vmx6{XbZih86Uww}kTB>jg7#G378dSaOPsAHCGnp0RF()k5S2Z|xEex&rkZd@#vrXe&Td7y(rM zoht*PW{QLd@@twAh2w@*$BZQnkqx1>Tx|jv)^S~s*zgrAzdCdXZ^I9!&MTl?iX~{F z;!qVHm~TtH-8FhAea_EIUx9cUuxaSeF= zmjW~$g>F_bpD_Jlo$y$Vyd5v&DXY_d?M6=eSFqR8%{up(6+7bYL)8(0Pfs^Q!5E9{ z;dF|lfhLbA+Cz3C+;F5u;iCd!gN}D(;F-Z#^;w@Tiipt_L?3;V@Gu)?Zm0dS4=h-o z33}au+k6KNV*;n?*fRn2DRJ$zCjG+g*AUb*V6jqHI|}y4i|9&{K-5y$^@nuOyqj)t zwsi-msAwtKjffMz&<%vFzgQ`xr5A+Z9`(*Ew4axFoE3~iOOr9T1^*j;fuPrh_Uwue zt6J0fgAUSBL)o;CF9Rm-s;b!dk?=QA)@Pko7;!@|M5vwmfN_o7pKO((-4udF5WUP# zwtw)Y9mN1AyWu{9C%Ro+s0LJC+9H1kB5|gtu_cUGhuoTZ^nxhj^&k+@LpD3v>o3gI zDN;U6dqQq(&5@2=Ur5y(2p}D7m9fsD<6&v-dhZ%<5HTqm642D9sXWRg1$D(VqrJ(s zly;8>rMA2=a<}UtkJR=nIM?F^c0z)DeGw)=*ppOlKuO zr`~XSb-$W`+*7h7|`ZVb{HHel6y+2vtI!=mn^IZef49RWjb5B!!+EI8ElYp#P)Jx(k{X7LCTi|6(8ueHbA z3rN1%Q#%gJVXQxl%?xYU=>M0hsXrhRXBOsH6l%_Box7!{6tf>WrT>&+31T{PJpr<> z^82xH!;Q@#!La|;pK9zt{yyn;KJM`6jxiQ~U=q>PKmC=zo6-S#YQj*;>|c`TYpJx4 zCr4`G(EL9$0lk!E(m1px7Xq)-a{h3g01x@di~7EnuQ9#uu~5O2zmBzs9C-6$0uW|z zneuP{ENR1t$dzw%9#j1v+hRNbkFBa7DgP>gA3p$(kMuwN4Lky;YBkY`;G(@JGhq}? zmtqzFFDvWCC6{(Ou&EstGxse1s+j;CDFO$h zx$3)j?;1Y`UM`ejwJ0kp>h8@}6K*`*cbHc#4ARCO1n2(Y?wJL z1d-sf4?MrS>=K+c5;%$fC~rGw@s(6GYaoub?IBYH%J%n-=y5k@c%6fO zJijW{C;4e675rQ^d!y#2y^8CnyzeLFI^X_FhWcnGhZa^l9m<`h+zsZ7TT|`pgj?Y2 zEOriFFWr0mCxZ)SA1nnBC$m*@OnKVJZxK|z#5J6DM2O0NEA2Ty05kF9Oh=4TAfnG03;oKg>q#B7?WDU9< z_QqBNG@-p|y)fBDMdtF0h7Ep(+Xn%{`m_tna>{c%qv)Y!>7iXp%k%ckoaFK-%yVAg zyew=60H~5++U{qcu2b)?QtiM1bOwj|k+YRinq%v=XM+dRa|Zdy41g&{miMnTv2@hq^w4mw#NYK`J6lemM``Zn)sWH$jp%mW2uoXA*wZ4LRSYd{ z6aG5;vU3AV%(8vVM_?V~1}(@7pFw%chLOXk9$V7dY(55n+*>4d^wdCHtPyCp85wNY zTGVRa=Wf1|z1~)7{;FALmsd^5WmBD}c&9Dk8o|x%)7{6FC^%Yi)zikB5n=Tpd~Z(_ z6uDmPZxP|17dtlg3EZq;&jER1D(n&)7pvfWzXjY|+;R)hO;A&q3H z4D_vp0$w>Zb1^#Y{@>Lg?FSxYLluC-qE@%7rnIDoCcThQxunAqB;UFyIRVYTB~Yzm zbPXgm@jZB8Lx{}xUrIQrZXeLHak`pbJQ?|Jk(YncX%Ly%K>B?}loB3(wlzloqxp1H zI*M>teF?67{5~0wyv|?-qgn5OMzu=X4~K^2_T!3Y8Q!f~vaTzS=Sn>qu_#$vL(fl( zHS2S3oXCjl9^`GHLCGSo7{FM2wE$6=HcgIqi&nkdE^pv?Mcpq9*A^RmD1`UHpUeir z59FWkrbDgj(NcltxG45O6!L0!rKF33|2Qda2x>l>I>8 zmo5eYlhl{E6JbH3atXAyFYwbXhgNj@X@If(VfMxzAw~l~sYGKXo^9*DDTuK+vQy_n zPgj-G{(P;;92u-^(tS*ZD*W;DJMAK{@w9PP7jz{l~Cp{@(`9t|j&bIAd)^qmx|oePjN%}BD;Ghs#1nBgcL02yx7VXLX*AkW4$ASjQ} zz5*)5rOBzjr_Q*-{h!+Tx~tJ!AFy*mEhpWC6GHc!9(j+*-Qxjo9zRUMWN<+K1324Qg9Mz2;$uVVf$P%sC{GX@L>YcHZ#$HIw=o;+_Ftz#$Q1O;HqM9_7O??> z;Y#)w`x!nD^$n~SImsU6WU$qJ+ZsYT2UJA#&jFK}J}O*92=ps16V1toJV^Y(!&ob# zW*0#nn$ip7j~T_$6TH6~8cX6G6`fcWpR2LXOa|V%)vimLsD0I|vfY8b^aSGC#kVLt zvUUcG^QH8sa52WSa=JBUIdVgDIzxjnwzgplCP5zz3%tU9OCdA&ecM#&6YjPsKOG7I zv(I=*<6cBTT-0|!X=(se1C@=pdzSL{WpTdWzI7N@(uhyqasy(|^;qhizKVvmxY{$H zwA-^1PxA*mZKcgWS3}V=TCe4a!RLnW-R;+xfN3!)095w5&cth?4WnE>)EGL(EGue+ zyFQ21j(}o~ZiIXRRKS{T-oZLz$mK66Z=V_hrL*Jh7h-S8Kz1O zi%{fBNe^D!dk<);pCPCbx@H1*mSO0a&D2cO)EtLkTpSuqbGF^!N3?HzWOSOSL{N0O z?6=2hp+x5rZ@$npC_`d+Y}d2c`in3ldKDN_#1ZLZu^A(eF#qFgcx(=*n_Rke1U^4Y z8SWk;7$VgLnthd5M5ii|T6_*gWvGwQm@q-@Ru*P@#US^vJJ5ULI>Tv_Bgy5t-rup> z7LN1Ql6ck(Y#V}L7l@?aB=MwS4H=3Pg9#-F*%D2vp%fV$+Rj=S40*B4nsxh7cSdqQ zLy-N3t~LL8?HSh*oDF%X;k}QI502Mq1Q(n6Bi$jGWPlL~vEQ_v{4XvkqqVb# z8<{11T^|CIiPhr);-ZyOA2k8D^0OJ`)cfhiew9Xe@6H0Q$avXfx>gic-(?W9MlGb3 z2+v@V91#^HC6q*kcN8vOvz}l&YP~U-yyHtlAM&FSnP3g)b8WD3P;D5)=>4jGIU?~9 z5y(f8tRe&h!4_tT#-4tY!64lWqEqe~? z?X=#Hv1G+WXrt+E30-lHD?5D2-EN9VEx5&681mV0|0TlUI3?w}cPC;hPRr8Wd9{+3 zaxl#=8h&xO=P4uH^?Q&5;zsgYWbTxKOW31_=|BI`&5aq6og`KjT7}u14wp5zm4o;} zx3%VpH$V6!gQvf2kd^juT{9w1nVFPrS9?8MEoB%6_4M+>jL z3GTo7h3&SC^dNPyb(H<|*R@47H|$Qv$zX2O>I%aRDwH!!9|GF^6KBOKw9MPM7&AmZ z8?Hu<)ZLf1wG#PI{@&vL9)r_%0?Ns3#*}8)zwsBm0lg+^Rq6&SBBrP~9VXEFEgjVD zF!KRkP$Zf!XOJ__G45e;xlPiAA)9CPNslWj`kU7H0`0Dt|Nqn-|$T!(hKf9SJQTN08 zW#d)u;~}b*(zd5_Ic!?*2gn4J$w3xG<(+Na;7-6GY!YChMoIVE2et9}5H^?zsh5XN6k8dQ z&m|E_=#L>xjFTNMCJABVvdESmc;h`E9(9&(crlWad{>?cM8C>JD><-Lv$f=EU3XAvV?I%Pi1J;(A zJF7diLvbq`xh>TBfB7M?v?{!1)h_lhdqi-3q7p}Ima0bq$&vp{Hyb!XJq&xt>@#61 z{l*DVMSA;~iaA4hP?(zK_0xr2!57`7dPUm<y~{p2@gU zW^@J-1bz4%A3~2uib;Q>MueEbfQ-p(*pNvB4n4j?)DmbXqGs^8^@CrD6K;p`L>0Iz z_E3i{^*uJDq#UJF2!-S7I4uxuho&3&C1f@SByXgfkK7q!*s{ONT^g|%-Q+%DXf^Ha zwOZH4BRt_J#>-ub_Q$gC9Cp#T!8D+uP(_ze9o35?WqINLyXyUs#UNl$5L0fa$ur4i zU>ydWw-`2fdc|#R#5zYrhru(n|AhD#-yDR&Y`vWoWJSL}n8mhP;D#2OKg!#DEt<8$L zs9#;`BfSC()E><=?9%MFBE^pLoi`|KdmjK_w^*r7k?`u!fz>e#bPT{1Cnip(z(fuC zlij;MaSVsd;-B=hcn%J=2`-M5jfsY~4KZ}nh>Wfv0))y6x(Zg0lx0fa=cLVf36Hc*~1fhFH%PvjS zee~!;)){b%>@|`Ftrn-EmfNI0xr<9xp;XxrHg#=WWOqe&To<7x8RNmd=RXn4`}EJ=Txq=sNb@B) zs#sVP&s^fM$q8ooSscn=kOrE~FV8MTDD~fe z05SZ?ivYO#qMZxai9GlX9g%&I(pgss5LX9`R})R@^Y&i*bR|wK z7B1|1C|wUn--IMz`61)e(4S>vG22`yK zJh05hhLYp;M9X4NFUN7hIX5oAdT%Op_n-^E(80TWOgbw9sT=dUkNy43+N@2veQ)#a zZ1lraEP>Pq;J(1@N=n+HTw?p2hUK6nn6O}@K89L*QtV9}kFBALHQ1z~I#LDQz%whQ zJR(+G6!!Q8%XfUR&XkK=Uesg+`qMkrwP6oBw;d$u5*_9PS;DR8POKlO5_cIF>|46- zDZw%jZMsqPv}l@N1z_&QWRi`*RFqpF=6)LDJN60j3(b{@kMsx$aI54?47;7@d&k9Z z*2VSP62_Bh7LCC-W8PG0ENY>)&+0${aL@3I#`SX+56(cxw(@&``f;hJ#OXF-pN*B( z6C{PjT_bP2JeF`XyJ8r50L-3;)W925z3s2hOyc2AUAw@D_yag4Ap|@FyMmQ(0e1*g zDoxdw#?v7NxAnYZ%3)y3(TBAjwSc0jeK4g=CAHio2&;aaPT$^yTLv(D+#%n@!}A?z*M-R zCzjMtG(l1Em(+R;@wu2-Ic)OT3b^n6PoM%Ngv@9d@7Eqywm(^InF^*$m&fz(7Woq^N1}kt=5c$Rj_II0ReveVcrc$kf zV-sD8Z)DH7p}LY8H&UiT?tpXY3hR}-XqGBq66^xGcleqs`k@9*<6qG<<#C_Z9vz!> zOVMcLMJQjT)0>rrTvju=?IayiyJ<^42`Eo6@ClW|pG)CbKu`>AD{TwfZrq7-Li)~v z-9ea^WjXr{{vOsT$TAXkP%P={fA_(Vrf6aDlw(J^mqI8pL{ZM)A@q0_-ik6eZ3*;F zZ$3;c>61S9t=ideu?}@H%CD)O(*Aj@pp#W)9;-;bYS7T@d=lzsST|j5KG|mdp8CxTsyA8fW&1Sw8{0;jU}Sc4%7om4 z)$I86yDJMD4Yy<{NxGb(06I4_Rz`)&Wb@8oFzQC8>w%`gyQy~@#%c=k1yf6JC64XB z3C!vBbs9?gd_L|zdUV!aRx5Y$m7GpaAQ|Ua$j!auA}ipnH~x`9G~rH3eYbQp{^Hve zSY}jEkzG^dmr@$t`g(UkhaN()OxnoedJ2@c2VDA5gZ#af*-BR^CQC=>`)w~{E$k~^ z*VR3jrsQ>t_#I*~`uvI(!!=Pp4&y?0@3J=-9!W&M^6c^l1fGiU-kJ3$M%eLQL4}?= zS3Z5B@8eFp7~byT*RUUw)8>at1o8lOweaakgdysw;9hR=fNh%kry;+mB|6lzG!|;q zUMDXFdS3Q>%vUzpwmdEXu(({>Y$NE5;ZB)gZo0AFf%#M}k$sf#j3V*T5z-t*+pFm!eqCud54=#ZI2G=ha!K_*((_kHTISXk zeUg_vCQ06^i^G;^xMH$qA{Dg@hG7?S3 z0}Zo>q^l+_)_KZqLat9vJ=tlfVB(lv_R|2jt!&D+$rc1P)sgFNz2p8POVfF3{@u1t z)k3p&37_9ofeN47I|%`;)~k*9iUf;UYmSLuAGLSGCdANrj;e6RN}7I?>1QuAu#cxa z*LJer$oGDewhQo){EMxC9P$&GhE(xt$!+pzw{EBScZI_#SkY7DAPJbko*c{4Aw~~9 z8RS#R$#+f_IF1PW*p#|=JqXzG8drrWtLD&|95)Pg{~pqsc0B3m!5Pg;`QtsngUr_B zcpJyYVGpsp%1U7w-{d&R<43Gsa4~g03kx+rNO(y@#>(SVz zkM4k+#hm&=OihN9-0By?W11y&?lfYBhagLM+-8d45AYmKak@GuV-oJ0eL zOihekqIw)hiI>2yaZ{B}sclmOPkAIZWWrM-)9whN?bYqNI^pwQf?m7yj!hmO1xREq z@YJ+EVf^S>Jai4TomIP`-a_Xr7?+;;$C`*N;pU!nl3FsQ?wzVixd6J=iB0B_O!5VA z@fi1VlA-f9eHmTjC2$bsuDwTTYBI8NG2hgDDBu3)Rvkcy>H1;YdSw*geG-A3Gbp=p z3}C}r#XXca%czf)mUQWRvo10zZ;juf+D_%|EOE9y-B8EZ<|SEE zRkx`6R5kr2=xn-#X{tVvZG+ZzqT{RykfaG&_*yGJC5Qbw0d!$zmnvC&)FpMJTw5%t zmKG&<@~q542T!hM!Rbk7vWoUl$<+DGl;_JJ*+Ipr@*QRVsn2>LqsqHA04Rkq^JBfG zZr*-My`&NYRzfi-JH_keZ-AS#HX(bxdvO$|VqtSSQ;L4%n-ex3H>5J8R&%Et+}@(q zJh7YTmaEl>0~IIKtV~)`w`{cMv{~z>(Af07XXH$Wu61#KYbe&n|F}V+Sp6%aZF#be zW!%AHF?x?TJBn)Yjc$+&5x!e<6LS{M+_3G*0C#MYD?n&4T-Ivo_;T!=Bo$a$6Oh(_ z!1L;P?q#j7m#LdqQUa$g%8xgS%ZHCYt@u=LdFgVtyjt=}Qv1k;(*~LVo^(fR-TVSK z-HQNkc~^Wq8Q`=(QzIAHFk@F4li#5}z$|q@?1N535HPIvO3K$;Ia>*Xa zYIcR)VJ58JZ()X|!U=8$67>2)o7>y3k_&{7PEzmPKylmON~u)4@q{le@_Rz$4nkaX z*c3dP?vhsczQO`u;{EpB{3Qq=0H1(fY>_HJaEW=UNzA))wR50K2~4T*eMzkYwz7i= z0xb1=0i;Md6-_J{il;XkUKNmQ#eA9Wlm_73#uAxpDw6bz{DR_Fv}_Ppolu2M2rllW z2`bXvBIWhx5e9P13EvC!b4VtF8iknlTc#>@Rw#`UExB@S0kmF8HlLqOFxxFoTcs3`I`^+ z0Wwnan(qM?_q+l*F#jd{7PE5@v>~SyZJs81=nT!!Oj4ia0k_URDjw9`$TcxIvRKaw z*a^0{MsY^;Toaq?+3@q%v_={+;^#+78C-iOFw_zE2Y9ef~w(MQ>^OA z-WHFrc{kH+ij2F)c5F8f;qxjNzYv(Si|Y8CF59qG$D2*Kvj(xEJ%&S)xJI}vdgtHP z2bct%D8x%qunpklILL znSZT%8+oU#I!RuE5M%!>D&5?Mf*vsn3(>L+VqF-y(|*Rb6Rh+}6GKM5=zfv7KsGiB z3jeLWSg2Lp)ex(7C2!wRVX5p|#4lRadCdOtz-7a3qP{+-U_IG1=j*wuQQmr7(TOGS z$3F2TifIOhy3y`FPW)(X_=|0Xj~k0In>F^Byn~0!n`X|pc0Rn;F7{BA$H~zx1C^nv zV5u+;DTweVN!iV*T0A7YNaHkGP0n{5n0N!ANf=Vz+r&(zocY z%9{2QU(@SO*xzgyVo{-}swZn_u+0eKuv#74M7LxN>V*8fU79+Nq{}av+K3b$%%uyk{eCeXf<7Vv zbb6n!l9}uWc~3!H4n>y3Lk>Ssv!g6iNse+ozWU9u#t>-x0i3a^K|Uk<4M&<5PofxM zO>F@)F3TkB1VHkpUhgqIjUlzD(dFSLi!xTahNRXVBiH*SA+ZjR?MP}MfzJjUgw;eg zsnGm(zHeyMw@#mlC6%O?Alv!RI5OAJMF^g$V5bO<4rY?K*E26a5`;+zyS~a*m9#Fl ze=DY)845OrqwTG!*=ynJ=Z*1nJ>`xnwX$8K`_LG{$K432J-3rH<=c4cm1sI98!8YM zi(|4TtE4iO>M=Zk#Fy07?%eV8cim!TeLM~6v>| zOZmQMK5-8Dp1X$AqNnnO;E@X`I#tc4?rY-@i6~r?eBRql-3*>~Kj<`x%oopjD8xr@ zay+a>i2f%&*SAd>`&R=&ivpIYy6Jl4DPF2w*`k?abv?ND{&y|d9;I21j+EYJJsS5) zTDDdJ?sJ=B*&%XlF#9@Ts`j1mHVNoXrJYW9A)9@QSc0KI7jHMwS_XTV&HEg9s-AUn zYqlbt@Ssyq)~B47z+uWd@(S)yEH0EQG@}yX44!VW1t+hCjzr}Tf=E(prjr;)wr0OX zemXxL%IDWWc^tR7j9zX=#W_v&h<4lfkS&d5dP}I(1^>Lq$W$TJ#gzN(V``1?PyDZt zjQ8XbVA#A@lx=8oGHq`_O(|!n2`5^YtgMoe4v|Tl7R5`VL#d;+L#pF%ys5an85D=X zEpsHFHgc_8=IZz+`Z&i5RVrgm(a>SFY|CHiU1V2|-}on&*+*q*5){lK)fz*kr_*m2 zn1;Jd(eM{7`nX!xKa{~K`CuA)O8_J=Ac9j@SNA0E2@{Qb?(4*Gt(v2hi}NDe^T$09 zsF!uPi_58agBl!zwls?BHCjF??K$U;PRuv%X*PV$^y?Gvkr}-;_)`cdf*CHcRT+Q6v%T>)tCodn5cT@hZ+I*ie^J09 zC%NL}{Z(iy6D z=}f)#_;QCR9}D%f$iZc!Lo#5pBq#^XkJCyjS=cLf{0P7dKhJhiEt~AW>`Uw4f!#Pc zCaaJ-Y~T12XSJgIJ~li|D_x*k)p(LbLtdYZKT6X6B~1k4Y>kGwhRrG^&Nn{He~(GXNYty!vZ%UY>vB&rE7O?_0}&c=EAZmSjgC0&YK_JKxx79w}))Q zI%&jaKr!zQ!AH+<$6%#2+k_kX;}bDdXcitgpU$Z~XkmTAxAJ#O4m%atNHvFpcqw4h zCqNI7pgqKv89ED*Jj#lad$kefV3_M-;%Tp5LRacB$TzmUot090LX%VBO!OmFr5&@#3tUDGkOyfYS#~_Bf zm@sQ5L|i?|5qpCBIb7Kt&zj%YpWE)qLH>~C6h+cn(9ZZ3bBO?YjId9U@Ratp_8BlA z+Md12{41rO#k6MqNG>Hnk4z+=nTc1H*eLxc&t)ZU!6Uwu zmREPoWs+O%t>toH%fvI^mQEofT>A(MQF{^yMuvXrg@VtZA5r&uVXmZ;h0F=@GZ}i- zlMJNUYL6O`q^D|&L^^8|)*$uvZyEScbW0Fu_S^S%Afk3wC^+BKK5PFx;f5Uf{KTfF zDdbTYoqN{B>sFU&fX3~P|GQ6*l3`ty^Ubf`S=yaNCwTZ9Q!?GatUM(&zVA38B%Jy1 ztEb#hWBoJZa?URA;{!iBM;S?{hE60T%^ zwv0wZl`*TF9G$I}IH*{BP8-fE7ny+agB+J4{F2ZUFM7+4S@v172Jp+}!VfG;-m~4` zfOz0%UXNbZa=cqH#JmycH9!72iT${fr`2!|Ny(d(bULJ)ugf_ehQ4cq;E*~tJ4+&Y zrcu>o?UF@dw_rtt?3@*@fE@%vv@@2xp8eoFa3VRQH=j1H|IMi121CDg!Bhdu{g+7C|I@WV(Uwv$IEhN}J97a7aejszWSKB*w^;X1Aua?Y$a z#q^08-rjGgweE-xI`>B`+=|V==4xjO1z}}&?(9yV8y#>JX{;$?y!Sn=u0J(mcD7My zYHI!lrwdv)vpFjaLUYm?$B8%I)=OaN9!mBcO{J;CCmjEZZCNd8g3 zSOvkr_J@AV-woEQxpKNur(RWW>gMgJ+AWwDetH57MpWTxgs|3tat#;1&!z^;l!L!_C{o7nVgyLX+SG4| zY2L`XM^Ff8oE4Pxuu5gDqJwx*kzx?$gmB3dth_@8mFYk2`Quv;EVpWmm$Jp@!OOc0uapLXcN=n z*hQqr+mBR`{OuxC>aM=Jb_A_z3Ln~amQH}$wCKZ}r~$3Ua#?J?XikZ+<`oO=dA4ZG z)>Hn_EiU6H_(lpMh?o*+gk-BIh*~IENcrw~a6QtU2As;`;^NVDlozy}zaA4pdnu7L zHd(D+P4O6;=hsom+fHqyR=)X$YnCKENNjJIdA!$UR}38%D9s+CvY=wOY8mHw?LI9l znCR3TaYDa+(&79yKjA`#tT1U~&|q&PonRxO!H$9Dbb{~qg4?bzUbd+6M38KbOtR=P z3afa+M3@B^P28*qpHEkVq^Gba$K9Z8yKy|6Th_52;-JN-&12=rJnGNU8vjeK?z@RB zh2+Fk$s0k3Uyo*VVo5`Oso#PT$foppE>;#ao3^Cv7l5vn-mC1woV~IVtmH(B!f%wL z>m)%ZL;`T+m18jhb!+RzulVMxaEbMqtp@x3o*~l`xyk;oK@s+p^b`ROtA-0{CqX}} z-JQ1ZJ3vb9_PK+Df?Vy^8exZc2cP+M{G_NW;heXc8hmhid&97u#U|Sj&2-WD(KhZu z74GaoboCA29qsG-bE#!yQEv6wMXZ<9TP~w9VzqX41ko6b?cBvmJM75??N`Q24@o)V4iIo-5g4A9wTYT7~udC>7qESiiTn#`xvO})Ady0-UE zyE^7$<;Vwt-W^q5GV(^bRBqIkCor`2COf;Yeh%<+>$R=dV3_M1FYaQ7L9)_WPQ8+o zx^^yy;(NZQ#B6U*_K)5Y|3slS=fC|uqKu-j_!fyko|;8B?4lO?apMn8<}(YzDRtt} zv*+B;TzI!E{Xya>``mjA(GGQx9bm_ab7k-5`nj2}2iW+kGD#`4c(VrKorZ9)n4Kii zWoOa|Rd=6KD$VpeD8*Lb6{pvq{}JhO!xVB9YUjay|KChzq0&(JrgG53=En*Xy!GtCg(MG zwp$-T;GrAP(~N9rO-T0B8)KhbAf}4$QO8O7@kKhBkY`I@#TLh8pHbTd&!OEKeHVvf zi@IqHswpwfcYJP`dAZq7W1id48+-|E49%2Xdl9PletJO=+t)5VllJQ^sT6sFYK8^{ z@mPEVKG4|!kx7S-1Nt$>7514`$BBGQedz|bY4fOI1*-QCjCARyh{-64o{ zOM`Sum)|v><2mQ~7vA?LuWM#-*6h9ZTKD?Ytv-ibw$D8i$k=1%8Dr<#Qrwgri;Ied z))d*iQ8pmYwLQt$LO2oEtnv)oIcW_8Y2WZ-L@ibu4b_rrFzMV-!==wy z8=_M^k|p*+yvwzX*AppV_CSV8z21H_SI=c-Bpz zsy~oN!gPTZZBhV>-_nL&5rS`j4|A7!DN;=RihE?%-~6${4b#pC_B5JyUQ%)OjX-v* zPqQ#>Yf){s$0SmJvH(6%hOJcG&G@PCWH6y&ExJskH9BJRNwO90VA<%1he>@*jQNNsy*nj^3$4l~_7X&0FENAMP&Lp5xBLuww!}$FV^IZr5 zMC&}>lT&~A-&f&pM%_W6T8=@9@+>me{qyPHf7A*h8_2^FJQt1r=PzWWz!muvtx9M9 z-%)8JKqES>5WG`GY5x1Iw3Oi0S0+W39RL0<951xM7dSm=sP1^l{~2RzrZ0F^GOuc6 z;=e!Y2?c^A2@S>hTigE*E(!#qyr2_M@33j>zH={y8#Px&>jy#CBr z;c2BdPi>DU=T|a9Zq0hn|6Ct!DPir86k)*UsKKGz87Nt-ft{3{>r*fDm392J;v2TF z%pEE#bHxSDm<}2su=&y?(KtJS-s0JlA2v{P=|6J{!7C_*8_EhWx0feyh4U+Fuercb zhF5-z*Faxi2)9h);9)Scm``7VB;hwTbM|T{Ku%DNca@n#4AjNPcEP-?F#}>JM z$(A4{!w&FfZ@@g%rK~ew<{2}{ZvHc33P^6g71=n(lx6dU;YAgSWe?6PPgE(oYpuxATp1@3|It!PELyj$=!;Y*~uvL1@cmc~5Oli${BX$Q_xv2M%@ zdAc4DhlCBq%>Ma7+OAM$xt}e_e7^5yjB|D=MUaoN6)PkjdP{pT-Z-Jk-!avQ81&oJEhjE-S%llvl`=rbRhq29>yXFEIXgn{_cEjY!` z0isXw)fTDc$Q-e!&i%;jTV++-yA55@%&wy}Rh@Qfwi%2qYg_wDrUfd#@tE3eX2s!Q zrB|n`5swg8OYf^V0qwL6XhtLd2Cfj!2id$;V-GIA1NVtktAbh7WO(wHiL}Q?M2hC}Csg^;^C#7|68I|5Cd=L%`=Q{8zP%|S zotO~v@Guw>%A_(U?XyVff2?r(&#ZcK2f^n_7%~?k+29O3+GaV=8Tba20N)uSG}n52 z{c}*6sqsL#sukhE!|;dYm4F9vAd%1l`MX;ncbm=%kP%uZVGfNM=%4#o-a(O$6ShRj z#KTD5N(8q}Xv?_+oj6{*KSATR#(utGl6f`jVz9^^8B+nE-uDaq3Os$|?GKpL`(Chi z{sKm`r*;=`-9?#DBX>(~0W0=1JJt7X_kzujajT(%aNpx$#5dr+9S53LwGoEuDP7TU zX9^|YE|rih390*$Sg?WCeh}Ako%K5iDC{5;#mUoHZOY*OZ~J)LyGT*I%{&Lbn5WQYGg1VXa9+ zh$6e+ewwBxmtyFmNJ~Spb=IeVY<Uvs{%I|9S zfK7#v0um1IJ##r;;{FD;>ta1s3t4(~$kQk^X%psCkS9$B^(ku`Uc`6C&VrMZ5yCu7 zwTs>rwv>J+u*L|MwgKV=k20#CilbO-wep=$Q_Fz!5{H@ z_sd>(!?T(Ayn2K0l6zftb2TfV66>Bf?Yos=6WJ*!!!|$!IumT@_N`I!8wm*O!xOKJ zN{Iz|KtOtC$3J-Yj8xs4Pc@8$S1%8+1Rd z*g77SXVPRpKfq&bIv(*mmee!(G>OXy7u@$>it76bn2J|n?LT#itb=S?%$@{K3*t~~ZHY=fAc;x}5v_?UXV{_esJuB|AsA@u0^cR>rYr-3235-0; zVhFd{4b#?uSAM8#egjnNRiH^v^w0b|Z+}IRK@|6-=!#y$h4)PB>8DZTa$qghpmgh} zuaKc#2h?%C`*8+&j18m?X0NkNA{4Rtx`oMg>49jCvvCPrm%6HDl9!ba@|2tEH`0Ui z6*9zPoS}|q-)-dW=AG8xY!^3Jlnp!Ol9eilZ8|$;pzFY00%iD1zkrTkgIO$gx({=5 z6u9uSgdchUuScxCnvUP2zPb=?_g_~FOy)VH03`W)@jDD^{md8E>vb3XVmXL~A?PX8 z4p~z(83bCDILbw2g6FAX226oIZK4$X7<7d9V1ay;UcM5>8_U=GMJIq%iIBiaEzs*4 zv~{ATzH3!sdB7D&C67Fs5iU?4@mw(k`6t^q?hKyuMV|+dm)(7ICF*XAh~yiT4nWJj z9^Cv!>1`J4A{9yM)%W%LXlfu}ya0ILGa?9(0t8NXK%`ceSjr&ywqk6Cl=R#<1_V!P z;%l(GoOz=_z1~si9v$W$QX~W8#iLh}jRNRkE;JPZo0}EW<3!yskWVHaVc0O=oMnQ$EQfsp+u!n*_l)uA z_F0fgav`T)uhJBZE2$Mtxq-wqCAbs3YBM`2_9Mh4r3KqAn0cyh>4j%i4C|PELF7{LCvvmbmXndhch*st_W<+k(fE)wMQM$W>hYiYjX(=E z15B=2l~S_mTs9G-%4Ka#+mZzJjVV$Ee0tjJZ?l4*Yzw zMXqMG)opW~hUJz!))9(Q!iuoT7vnEyPi1>LhhA8_{Gscrf1;HL62>FZvXx(echhG& zN!t$nK7gzHq0&@vJ@WD(w_>;sF#xQBO^bNv4Hr7NyvY??d#<*lYu9$g^^&h>b}Q%X zXWxLQ*=-oYy~_E|O&~`_?^_9^KhUJS+Z)~%F_ma7isa2Mq33zb*2*b)hdc`<6RPH%cU%#E zxfwNiTyTkVqTOOXr2 z<+Q3K=5&!^W!E6*#Br(WBh8l1jczn?ZM%q@L0zn{%UHyb;^RFim03XL(29?OsV=Surhjy8^bBSiX0@t!X&mOG+XkGQt2 zJ-mr;0`4p6-wvVIS~Rbm$BU#sK6=T!;IzJG(|p9*{)+#TX=Bbz^zM!g<~xzAgO_-b zg8x4Dsi@anvzs}`1UneV+1wZ(kQGwc$)0Yn%g~`rvuxOX9Kw~~Pz@JHKbHtP`A~f< zVfxbigBN?dj29F$n|O^TI~JogFrHR{jMbEKQ9ll+e%A(%2J5K`EQ$TNaGO*&AB@8h@Ktc2bS!^KO=q zzhl31K|y00TOUp~jozp>2m_SNsa{cBVeTOwF~6Wb1_JKq|q?w@Q{9MEsbGeK?eRaVN#bG(J_3S2S5*gxlB^v4K3N8Cg^ zk-?xDLB=Jp{i;g%+PP$J7A};B4SwD__DBJ0o|1))YW!*!jzq=Fzm7yxrHYc?%|{ocgsx}2-|<4sbY-~ z)M8AKgBTKNzLC{7yls@2!Ec;pRw48hARPQyMLy^u)I~Ok`Q&vh3dK~A_CcqUV~4xU z1q!lGMLn6*YUDUvkqCS)Z}>uH5P(9>e@vhx9>qU`GUZjLvWx#z0I3V=D}!WezA?h# zBio}KuxlP^KfD6jKQ08lh;lP`>P9SfvT*lgu@aa&CHbSz1wJle;@v9JVSDOmpx0Ud*t+?AvrhSM#hDP)0<+p&M>Y4mS3R1qYVIs-h zl~0Ozy8FmJq{|!6L7-h<)EJrls}$=Puh(jrUJ=d`-Lipp$=^h{pCKNel!kHoG+dJv zm)Vb0A&6+oF5e}x^A(l)gETM;V8`c^og;H>5fnyUEmXOriknH5no!Q~2Ek{GPJ5*YRG_ITG=AWAITDULasBXOm-W_!gNR-og;w zlyBZ6BLrslGNs`6Y`>cFto&evIJX>$&Uqx9U!c50L5u9l>6aVj8i+XfsNM6kvo?a4 z0+)eQhl{W4Q@W!(MBYpx>P(uQKx=4Gc~;gekFc|2llRM@fCnRi8z#XA%arVW_{b>r zRQ!cE-_Z{|DcK~d_;wEUM5Z8iqW+Ep5yJJ33gd)UzRxX7oP%(Y#TDyEdi#;7KZM3U z0B3>6YiKT~w86f~Tcj6Vc~r?WzGn(9yyBnacNCCa7dJ>A4O*Pw|3DGhT>bgegxXYW z4!!O5EN{T42jA?tQ2BO`M>hSR6r+$inUha?I*%@0zZSRi?vbQPe!b-d6RZ6>8!mVH zd{8HQFOZ*Qjx;{n6ClKYuh8gh@B`xx>pQ}!>mA}T$1?N?>SgS*W|(FtdL%S#6HN%o z+pMw!y|eEz@?~iU1ug>gsGy&@$|KH(^#`D~@h&$7~d^vT-LXkmdH zG`W7LtGIW8UR+a?Loh{$Oot1n(K^FKKAq+)Lr&EAhUw@5mT=M6R@vIivH|x_zqxiQ zbh6%bhal*AENy8}zzN(te7NDf8{McNZ=V~SYTbDca|GKS4VT>Bc^otSYf{it7t(OM zN=-pO*AZO1jE-hjsJe=_w9$X&9)y5qx%VZao+7#}g!M1J|DD>*d3zsP!zVbJREuEV>A_YRo%Fu56z;|LKW694XylVE5X6P%`m8it93_>+0P$w}jpl z^Y@oe6)%{AojdFH@3RUmz87_vqQ$IyB?p!@M;iKT0Ya(vsp9_g zrx_ZCK!No)Cc5&W^|NLVTd|+vE$lNBl7Cd`$s3E#(D0)kaYBXE?@#`GPQaD{<>knDNbt?nX_k%IvapufRo^VFEN|f`OERMQy8UhQ4&gg>OCGB4vByR$ z8?Q5diED}v+!!WK?K26CoYasOrZgX&;7w{dvds$+5?_n06Wj>ec5yDx^gt|#4Q4E3 ziJfK+A&hQXI2Xc3mKWWejc*Mtosx_%XZGnlw5(*4M-Fc5_7%cZtpQ9=Fz3IwDB;rwUd%oR^(Y?jb7vE zC;D(xZLW}N&p)%-owajoE9z=?MJHV!Q9TElpS1tHHZ)9Y?%T!LXDxGCk(X>~Tg>uH z{v=hk8@(^%4qNy!UazXZP|Fm zxBtF@jsPAUpF0c{{}j^TUFOGdwEw=DUARco#gC*n0{9&FINg<=|G9AlC`j44Ir$5n z@yMP>}6X<)M#Y-D2DBiLj250z!wL}^B^uo+AWyDR8^!XBx0#O9o(FdM+7KZebpaxSlh zyN4)73$1H{NT zx!dQZIF4Nu#As`j1Rt)2nUj-q9xFAJ<^{>}nr{S_uW*laSy>)NT9nR$8;a@X*I`u+NUp!KNEzf_U&oO5^dV<|Psp(Sm z8#6U;*sT^##%-Up1;AG7>$3$9j}uTz<*B|)^UH^y_f-LO?GiW&60tSmk=Kv+IcLoj zZC@=?D+YJ~)Mor~ocb$%kZU~-aPV6b&^v5zQzF``2Vev>-(790K#-aev1OxGkZEcN zJicJ<44`4kK#cED1qAkQwu@>s%i7Q$ZYI$v`j+{@c{6>f7j7>!3v~t8sh{5~?%G6M-+rCD0bF*W>rJlF3HxG?Skb+IlI?a1uH! zC`L}V4000~-B!@qzP=pcSlQU@SHPD0Fr@Zy>{t4={d~5?S{MP#a*CGCGM;@^KHM1%m$8auRKFcv)X}LWqdG%{ECsm;Q)NGR(kC@8{#9R*RDL9ZO@^JHO zo04qHW}cY_vpQGA;EJX^{}G=N@(XxiQwsou*%GbD9aOy^3sNhaoB?2)U(<54J6?H$ z^4kAZdhw1~Di$QC@%CF*sU(^C4BAf#w)ovr`8O>`eRPjL_lT)e0Gvv%B$SV{KG9h4 zybVhU?!aKn-LV8-pmBpZ4JElPcvRCkNbbJa0%1e+Rt-Dl(kE~na|g)nr^gu^_EcpR zXM6N&_UgA|4?vIj22}vNb=S7~HLdgS(;mWu!GB{@Ib{ouE1|#rAa(#$j&`Kk{9r!yo9l zfvgZn8);3NG%*}hEJ`U1Is-kiI!t2U8WMKQhb6Ev|9+q)vF}zQzImZv4DyP(R*-#08v+mN%gly5*-OWJV~aN5XK^+JP>kCTU6`by+E z@iwFUaFLeb^7vU<&gs>bqnq2amJ&D}!x~II2)xaj-H&0EwzHfk_ne+RwvF=%q|iHt z=lzUR29UfO0MH!&svkodD859H$1#FTqUt2VciQ|BJGsk25{xoDiKUyM1H=TTY=L|l z+7lT1_z6H}jRxbtc)`=7W1OGihk+=?$~m&2BM>|%7|pptF`_hsQKku^kO~0%REHAW z3cG$(rHE!V2QcY=0te9CR2d#)D9sCK)nGqYV@2c8R1jOGf08ihnjO(UgsXPW&hp{C z|BPji_&w;iL%3t?2AtdS1rEHh9uh+b$bX&pyyB88G>CnhEv^Mj;I>O_aJH-pq@u?D ze74+U$Gbz;12-pK!fC2K-^4ritR$a_h-jC<0~wfn1X}d*qFMvoG6vZp9oxZVc&L|T zdA-slcmRg z!I_oJLn`tM2|Lim_~GCadEKAOqC}86TsiKv=uKVwayVwqMA`u~|I-<%G(%n67I~W( zwmA@o_qM!CSyp$4cH5!7{Pe4KI@0UQF-pl(Md%I&Ja}rPMz)#!{;P7ocl9Vl1k^Wk zXPaE1I)PycG;a9<3Jdr*XqCswrOptW(oU z2DV^6OCP?6ll_?|tWzaeo5Xn|%>W&b%&u}_EG=v~vN~RdL02iGuCSVvkzuIo{F{?tEmH65%9zVtgu+v)vAH> z319f3K{wvQBIGsMP5U&9k*u$X)J?-SW8qlKm5K{I>&PGk_Y52XiYtLVWN)(+dyC0! zQ@V>y6=BQ6+|6o*Qd3>RMzGyX`jUs#mAh(@ylY(htZsY1+L6Ewl^s?#szC+4?ImGN~0$dARh~NtpWPQ=#Vs z0X(l)vI1npJ{ox%9=r+69mTOKxz3g;SV z!N?R4nDOlgNI7HZNgE9k`pyr{*UwHce8ywhbTVP>KqGSr7}Tq-Z^iX;fhoLQ+kq|KGb=0q1ro~&j6y~Ri{ap@+B^Csw~B|o+(xBXk>Xl?4H6-t z$5cGMxJHrWG3XWRArPa^#p^?a?l5hD;VQEu1}gg0u``)a*Bp;YatMt5Fi zy7tF8o=kPJ5g71+957M*fHv8ak!L;25n?Oog9NT$^S{W~ocETXU-9L2({MuTj|d-i zQGRW#DUIo_{UU^u`6x)3VBu>13~$|^Wm4d4cf_7E+9>i2`dO*pC?AJdpB|O#USV8t z883;NrTtGtx#(AM^_7bm6{6gV&{Zk<}oxwYqBccsj31TMaSuEGJ+&lW)LcCb+d{zq8ycfVQ!bw^5` z;JR(G1@JIQz07>$;gABRrA0zFbIdN(+9+RWMcC?YQOoV+IOw6N>2?^bMNdP;loc#R zqjTS@cCi}Fqh&(7k;Hicz{&L`$Dec8MYKKMdN3F*tvq*8=7mINb@%<~K8Q*&kZNUb z)k)0 zvbh)-N~IF%R0jqn*^$X|{h;nfU%^dpP0-ycCk&u}Mm+q0MXd%{|4$wJL+E0;4&|Vs zr=c#ZaBlPP7T&7CFFKbB$3Rjk1nu$$4$XyFmW<6ar3j6F^F4dS^4f@cnCmyTk6eDw0AiS6>^S0Xjr;f0mI)NwZE%{9rL-s-?0K==^R&-fc^<%XFQR zVAJtH;HqvgCRl?oa-z8b*&&zlg@cJsa2|%K+QvFY<_fqubgK|AYKb|xyH0rV_KlXA z7TBhwYpd|~Z0G!*KmVSbD@`AG(*gqBw>)mwJ)~5Br7NN~=*}dcv7)BQebHdIHZdIt z+Pq8Z>!vs@>*^f6{`X>!hH%M!lY3%kF$F=n$!VTB=J-e{8$sY^QlSMPgw-|R<;qNY zPyK?xI&i1%f_ztth~JRH?b3=2wi)f0NdY;Ad(QkyRl7Th`znq>7<|K2H?mVDW-NIbU6iE#P^NViKlu?+k)ogI<;OOAKvzHD289iS~UB$;M0+7Dc_}+QD!k;OB z2`7;{9mc~5R$A7{baxmaCxUu{!}jwCxGG|`wWt*fsS*zmt9b;?oWjj@SX2m^$bj;i zYwRLDtq5_+&KALnVIS0aSx;$5?iNO|6Frp^uuAI?5W2+{b1>Z7x>iSma}0y8yEmdU zel=u3<)j=EvunSEgG%j{;l^a|p3HZ*;ZSOxY4u$7IVux14Npc!d>-QIuZp#^77a0S zlzWMi1)zA!7Hh44GW0rWUL8|J)J&=v+#Gf`Kdvp7DwbDvcP zZ1A60zSbIiNVVyVc9a?DC+Au8bCjM<`svNT91Ss_coS7cp=G$w{Wg$?(qW6h4!gJ! zdnqi*oR+-VGormIsLWcY&r2kvBeu?uI}Tb>IyC!z64MHove7tvr3_LZ$k3eLxQMKm zk&|HG=uDDyPd@PG&ij+g;=H<-oMywc*eP72<7+yRmqYjK-^|)5n0gRb_muSo0 zp=u<>pRy?dQT^7{T1#!=25iBv*B_WysyC5Z}prLecV5xSTPb z-7TnCuVw;?^tj}nY^u}mh*OaE1Z^``3G(Yb9RTbaD59U}Abo#Ng(vI%Xq<(k&?9tn zlH%?#`L;O5L|E4*uX29s&YJoQO&P(T!cd%Ei9mN!N!yOSHtY*o24Z|ix}=n6rc2iw zD;G!aX_6HzjwkzaXpXwen)ydy7iEv;Wtd24MdBsKDoAY4@$HntN9A~n9H+mI+&k3G z(27uWJVee%5hj$EtMEa=!<%RI_B=DJdEY6J!tyRLOWmMydsRrG+WzDG)>FP2`hy2D zp;0WHqqOFzSI%^FBb7A+*Sob|WHy0TW{0sTR^;#I?dxg#RtU(txVHSasd7xTdE50ItHcel3AeLdo#rpEB~SJ1HVaDGYl7z z@Pm4swFtJmI#fc{^fkf)sOs0y;-DzE`bfG8gWk`R8xaJ-&vm)Y_{@YOB+_M&K9-^w zb3P%~lf5hMIBk5RXxJbZ39I9CU&26dh|Hg|+*ZOehwzY&W@xfa67=^p_pXa|ymtEj zPJ-Aet4xcT@wxM_^(v2K*ll*Robim#rx!v*4JH;W#jK)EBr6EZ(-qvx9SsqDyN1c1 zyKQxydpj>tOobdViv(flvc>^9%#AiIH>UTWcal;D)lwKvBw;J|Fj@%WJSgB_{^fOP zusqLUz@O1o+8E3iN;J=dej1Yhg+!;I>R~o*BV(Y;Lc6-DreW^Bqwb-_lq&1^ujQ#_ zEgT0~JW;9v##I$TLQ`hQxC$;fK)6K9eYJJ9#T5Np?4`{r{Nh))jW7KsSBAVe^4H5L z)zo)$sZ|yecW_p}b_C9U6FM%FNG%dd6(35X<>U5V93G&<*YnG9ll9=7B$f)$C&ER) zz0@nIF1vl1DvQDzL~!_mXz+Lep7}{A@7P8kBs@{5pdXyTZilYmPRLc?5u(s7G+Ni2 zjv_ctc=6b9E#k>iHzj9x{O6RuMO&fFkjU(ym^RLH$`9GIp>+acIz`PW(jgA9o{-f< z5!hTLJJ#@1#4>aQHJtJ~#wd3zbjchNV?V;5{D`e=R|A&r6^nPc^iod!Xd?x><$AVq z`T1Yyoys?L##I-th>x$7CBWqUJNgF@tcg1zJrSI~w<^TMI=kj&Y4(g|4Gd*wg{1SF z@no3j*tJO@NzqjNK zp#fDk_@p`sqpOqpC%#V-pX3k}#)N3)HEFy>zZ`8ctJ`X7?is(s523Y8|M^m!Ch~pt z)$=8dMoqRw{q-ha3=N4inl4*r9h#ARnG>bScrk+F(`Vi5e?xCv2zD)eZ#1%-v6fcS z%9|Oh`SdTvsHJ`dv)5Uj%@C_me?xzRO`IZ#*lZx%8*T;j_!>mf;Mp0TPl|DFst%UzzSk}X z>q+D@4#DWgGH}LGiRbvJ(_$_2z-2s~h56G1+b#lBEZ+eY|IYKJdqPOlJ4WAGW|1xR z;+dfgX536<`P=9Eb9e_jbl!MV5(P3a@&wV?^nt=SUk#f=v2PIJ6{3$}D#T}1q{NH5 zpE&Jk6nW{a3r;;a!Y*5)bqZlM|Zfa(%hRGtM$=dF~R}k z$9Ii}t_0jer4kDZ)p>)GI~;f9>f@cm&VQh_ek+Z#bltB#;Z>li{1Q)qn^Y*fHL-`f`H%}mKA#EkOM zgZV^s%KI2onJ~G#wbV|%-|UCwUcl{PQz$X{_s_U(B!&DP0&jL|nLPRUen4}}37X~%AH1a~}^CskqcVX)y&Qzf~dXleyDT@6?WJR$d?7A~;5#4B2 zl&n3XiliBVO}z-`UBe=+PNNyYsQmu1*~Rs~TUtL$WHzCp3}yF+rzM07w1xT`xA=zx z%va{5VJ=jmh{MBU3(A*2YH8)!%%`a7Pm_$Hg^EDRnQlqXVlhK@wac2gblMS%x?eeN zcs};Bztn}KZm7;6G7{k(ImaC&>o2loCGmu)+-|ufIl0+QxIUzA(?he86Zm%`19FD1 z+GO~99>TN?PO{im{;G^#K>`KrTqiwh`%XsQD-N-^W1ZD9tDg`o?6R=LaFN7g@>*4v zPC$oMwpm#2CRSf_A#_-Mym6o<{2M3!y(K{rGL$>RX!;{RMh9Wt-PPrRO0INHavCfA z-m!4+dy!PoJUqg6sOxC%wpuQBS4Fuyiq*k?FH+)fK1xOvb+wk+xN7pe9A3xtC})*_ z`dv=^LnEb$Yk!~$Q{O){Z6{>Bkh22Lm;D<>O&qyKtl?lSNnUx9xZXXFnql*W>F#cbx)Loj?&Q_*kZJ$}%%G}ETQHSDqwLzIhA>#VbYyS2BAGEVF8=8#p?y=6`>;8m`Xd8B3>}n@#tZ$1 zZf%t9S^vsa0ox|D$k5Hqe)+_Nq1TtISx~{_Tkq_ok2(dZN0C;!tZVF0(r#0Xz%qpU z0+lJbW+N)_EZ^Jlc}>liD^Wh^Y7DZivwS+AP;Ta-lIuc5$k7zEh->4DFG`uvDX##l zV{r6FK-^b~$Fe&oDJ1*D8>f|~GY}V7>+J00I7O&dvT#`KS~7olk>zMyc%IvW|AANO z8vxUltFt~|lFzjVvU}y735gLxXp)bFwW30t8w81|{@m6&75WId9{ z`n1gUk=cuK`5d$cisrQb^q;9E642`SYgIc+1zm&Va^fLuz$orpe#`UF^Fyf%!yNfT z3OW$lJ=t&c!4+j}J*v^ex^69&&KLXeQ1+$%DA#jYQ7W%S&sBg;(Nce1_u5$V3gK2P zgoDboSeGv*T8CJSg0hA zD&(Dxpt5};%bhm>P^C|$c_r_?ns7O1Qc!gNaC!Q8nlAl&KVw57HfJjN@pBpixZbks z$2ro&SKt^vi8q244*IOjcC7%WB@XYZop%FQraAP(_jXaoje|OxRGWu6^zrBFkLU-1 zqWcw1s-v)3)huX8q#~eTAbE#ZC!=U8xUysZA)kgokOY%uKK_c>Rh-n1zqYU6PYD4# z!pcqFmRDm0O{0-d@f$j-@;)0s3OJKOzj|-_D35=E;3S5qr}@|Bs7s?V>Np@HGzBOI zsREELy4L}Y{I;3WsS_gpuzY!Tve8;LNN@Eg;D(+pg#VZmSuONh-4zjbD;RZnfp+94 zbFtVE-gL!zDsZ(k`g4tlvvX`0E*=d`-=E1&(KrtOF$gXR^R>0;6|2 zbY1z_eEt#3)sZ%`Pz3XNrrG!zir~4B-H;H4_{M-6u_TZ46X~fcYPldZ%zXl?)|** z>frj|GYqSRjZ;}Aq{D+to9#fV^jx<^cw!v>)pZg!7ahOf-^Y45%STAbyrVddyi0Jr z8^>YB;pt``K%_-RVo68q^aq_1{O{X*b)o>_(&1cOl(gP$0mnZ>* zu6&C=KP8l_nwOJxlH9b zzr$~t)CeOGE|7zzz~#6Rj6J}r+eKycAufKN6u9Z9#ozn9D2G7Ys-NgOOx8#6!IBPq z+kp|=msRBd<{)m??1lGaR#f^vO`{9PVIc+mO;G+X(5S7rw zexa3AR?tDK8^?QSn7k)2K2H@1HBxb(Vrs{DJA~PJ>Ic5gG4wU%fHTqsx*Mue1iwyS zR{ulJ!N&+e2YETPi<4VLn^vQ16AsYN*`@rsdKi?JPoVv3sQ4|pbgYh7yEV!wJj(Fc zx~d4_(d+C*$xICObUB5%)7Yj%jlEKZS)?y-a&k?1E&tU#1hv+J``kHv%!J^FjSkBc z5pbjq5cUp?zh(Dx0euA?R!yL3f;<#IeF`(wEaUHhUuo#1l0?PD@efo{TNlDLy+zeP zeJv5uJaxb3$sy=d@=QO7Y+g2{4gi1!GH;Wze>hR`Ic2*A9bva+GsaWMq7t|3CmTkW zSd{sfNxl$K#+LP!B`vH7sr@y^^9A(SduvPO(it@=VOZ%?RM;w6eb4syvFBy(lgj`9R07be%JLNXX+Sr+oe2K=Dfk!@ z%_Z+i8l{=IcVrJm_YyxtX8vq}Y3OH^w-(J8KR%8ViQ9ejkC*#VCYoKdpc8D157Ay9wHq4oB~%r}@9iGBy>)49PB+ z@&MVhtKyMI8u@a!5^#-p)^8iXrP0^?XQsbH@(1fB1(}}d(o0#ckq%`2FShy03ltm~ zCa=oW-M%W)%=^%RAE1~}UgeLa6Rh0I{iEn7bvep&8Pk2xt;G+P7q_Wlden$N99?h{ z%ojD{bnfpkiWRhMK-Fj=QKh_R3##1r@{g#r&BVsAMLS;+xb5ejBtn((Mlu;umq7a4 z?1~i$kbF3M+zR`~h~T?Kw_Sbd&c**2?C3P)=Z+N4zg02syd8rgC!;XhhAV+J67Y#K z)66SR`F=t**_#rMO3a68zGqTZ4hl_6IRb%{8of{W`@)SaOof~tbIgzHh#e_+ zw^{`>6$~gx0(0y?706Y<_{aBTD8&DTSpT+TY7YSuGgdWXk_eeC1Xo;a z9Hz>HhVT z{xeS{ko=LnbW-!laOeVFpp68ovv*lJ*2$P2%|m<@E-4Zl-6wu z%CM02Sos(q^^^L_4J2MgX~|ZI{bydi{{4Y81T*Vl+!Vf(vef_7GeIvrfOB&PEA0!n z0NRTF_u98rf1Xfn0&IdaE;B42g*?_j@{+&q$+8F#Rdr52`MaL}`>SvtBPf1-UBy(v zp4y)LRE;WB>fcHgrVSO-{@|2PWGwT)vMsO(D56`D@WB$;{^vXHAk=lU4E_b-{Zn(_ zg?n0GFdL-*8RB2}h&s#(^S>II2vl@bAe}+^Tn%g?zI1XRfZN^ zpM9&b&!k^8Z;}nQOvq*j_e0GuPtnGQV=Z`R>W4>vjg{cy?BVZcm}Nh3QjG3qnAid>owR z2Weq?VU%3C#?m$(y$_`P{v8nWFcovLx+kJZ?)d~bO`-JJdI=*ZHdB-Jdw^cz#&Dyk z(r*z6h-Z8ax?Z}Sz=3;JK*JPF8zvPwQpYUhdHG%(ZU7y#-uNqNhBwLfGsffdF8gy) z0$bRICrbF6aM8gV55Pj^gXDwi)l|@dC?C`=wa$Ys^NPLiHquu>3!wtI>R<~LJ-M1- z7vCb?cNDKWoiSCWE3Vaj_y#U_83%qLRZvW7`VI9hs9o?USkwHuCIEOfLDJ>x`RM+0 zTT9tyfJ2#MkniX5`|$aY^;K~0$;k)mr4qO+_EL5sDaHQ06sPC61_W*}E!*`brP84i z3wa9r7K`*^O*`4*WXGFFt{`HU)rdFNrSgCNhnF-x+EPRd0v#NsuBCjeOaY z(-~=b8&&^+vG%jByxJ%1Np&09Dj*k$%Z<}=uLJhZjC{DuNfjg)-Twl=MA9VXwZN-` z_Z0-alfQ;DrUe@I)1WO<^*o>4zcW}8>+bgsqbMe@t!?=eTjZVsHOF0uc>m1TFnA>8 zIF2;E0^D{g(q888$BnGx+1q$l3~G>6^BoU~#8jd#GYH-oSM{R^suY#?JsXE>lHeJ);BpyJhVJk#dLrH*zHP^E zerXPh#c{ZS=mzxTU^;K!HMgV_T_x&yGE$fNM-wb_joJtr_ZlFxlDwwpobAms%!bFL z7EOQxXStQAmnPbY1|sTv2=9?~(n}SNPUu83PeW^>%MH{gcp&bgxZ%0vpDci_0{n2o zlD8M*JwWPjQYFkkXHrklb_ujZZ*RclC9cL3yMuNVFg5^6>T!7C-`;+84)XEi@|MXb z6u(gRQV7G#A=nUs8V19{axjBZ@4WB>hSz*v*dV9`mI(hJbsnebScfz(^Bt z08*#BvazLR@8PL@{`BHh_6=1dD5R7rE85d7-v4(El0@;6W~|F}23^x#&^fbHUH0n6 z;k^-;LuTrJpg2BUA9~S!p)wfQKo1JqE?R%STVM}<)~HXx;~ZkVi%w^S-r+4YdwOjm z((V($%>ef>YD3i;%{yoZXn(+SUbAxHWt*8xyekUA1n#7{dPEg)gx423!MyiD58thv zs`Zz8mOyPW{(z}jMOI^yxAfg)Kk2=oB4ZnzPAkw%iM~fJ(b9E=xJ%8%oEmBzy7ICv zMVj)0>ECCqn;4-DgFdDKJQgl}Yo%}@)d!m|BDJ7b7`>G_*+^7c9O^|3DO5uBgez1N9Zj_Vz@Z{F=9l)0v z5F7Jsq9Kr2S?#nvvR;i8$2+=$M{n|g=3EbgTr*E$fXIOGcz^AF$Z4Hx)v&c`LTx>k zt1#XJG*2c#Lqt#31NPSvK6J(CzfsP=5FdTWK`TT0JAUYro4Q5an)4@-HcD?c^vd*+ z{$ReuqRPh5iePkmcWadiZp=#INJh`VKAp)s>iUtQ&@T}d;oQrC<#;U7@EUOZa=Sze zGpQQp%C2HY#W#WLJd>c}6L{d{ya^|((N>06H8GnWmv#vH#x(Z^yzsw;*U5ZucIB4B zJ+AfMlDGiTQQYPh+~sHxY33-%oBQqazk5wQD&!q5Zy1}UGt0bXSr;BZ-dPW&GfuVr z0iKf&vugg?>E1fOE>A;D)+H+OXrjKs&TW~FLCo zpqg6nONf9zU-B_0AIQ8Wxf=sPg9?wJ?ULb@ydxD;Z$q;7H^%_VFUZtOS z>|8$0&at0`;?DQ@k-VY!OfNBvMPd^SQ)>=r;rJETk0XH3y`phpIBJp7w$6n@NOkt| zlWi%n)OGsxznbl!)*9B zK_oBEMUfCSTrlYb;VyUBNDGLi`2xgVi#SFmby3$BgC2}+@YAPL^0%7ilcE&;>~9>* z(?AtfFbG<48JJTgKNxd>3Krz#G}S0@$8kE9xuXWCpgfn}-L)NY+>heONCmyorPcqn z+2eQxJ-ADPGAXomfU|O?q-H)oEKzb39AM1*WCL?mwo`#ma$vJ7!QhGQQ|@v0fXNZ% zC7)14Uk7q1JDxsf^tGgs#^=EcrL#L@FIhyJf^<*`}h+UPkV^Q6o(t5&8GFE zWb;W)+qYr_H5Fl*K5d|<&r*8NwnL-oNW&*gzJpd1Abi|(QqHWW4ANv_7bzMvjo3Ij zwriAW6m(@3_|Kvuh|p#eGR^&=OkKq{Ks2S<9W*L>`$=`TRsvT|j*+^ez`fT#SAuG; zO~j%-D&U zO5ljI2FQy)2T8IQx>9B}S~L{Jg>Xcf-yn|TJO73D{}tDQi;vLuJdy9Sv5v>#K;>x` zlX@m83ue!XAGesO9`PxUd&U!$l5wm^$I#Fd&+nz#9+H-=qPJy$_#n!p?|T=A+jG~k zfuzzRANc~Ezd9?-j!@S6StCPNtkR;It<~4SQr-ib?-PQYm)&D2;{Pf6SSYmV_oXj` zE!RnBk9V(=!vgH`XL_odR)&b$<#ccPv+c83YAiMXH3j~u!?jiT!}#=5!Z=U9ir|q| zc(z3eG|TP^g*krU&NihQ$Se(Y);S%xNvmwyC^|WFV`44E3Fzov8hTzjV=KqOc-qT5 z)llgb%R6M7Y|3T0@p6ku(T41wqFE0LM<+y}K-IV(pT!y0=^~$=6AtN3bV|su$c#UC z@X-%>u=H;7Xn+W1p%!zKHUra55GD` zuD^^Bb9Q!VS)H08rS5g1z0syH6PAp=KD*q!1``}h&m4KS32kw0&%qY+wb0n~c1{Yw zJ2flrX~tT0O0T=f^0fxGx_f?Md;4crF@xiFGIu$B?`QKXn)wc9%??~dWAyfA|5qF4 zzl1$_8_h*>&LvhD_FF*U!iRjI38||Gbz+};4xd7bIj_L7X33;GbY#KyKPSk;ZnLTk%0x7-LcpIVygS88hHpk7W?vzkAf z=97mune&?aR*k}DZ;o>Wi>{#>Y%Mp@e>N-aTx@~~fV~nJYgb@egNzK?1q}c?*ZtZa zbw?a#i(nVhPBM-m*RLj=pWkOFvE2zjNGQ!&j z&Qm%8CyOHrIpq&kqRx}gi;hpMc>asJ3xHT$~7+Lf5Rfc3rfRjo*_7c z>}@*GJP2!sDz|-=NqSbc^RWPEigJ&Ea7yi*Tl7ChUphPw)R`EZGRgPXS?4kOdH$0E z5}mt9Oo;eTbMsPi|5tkqmx?Z6`)wuG6MA!aG1Y!#=d#Q3SqI>)ZA$89>ij~& z&`^C31S}+ezWKV8Hh+%*^%PV)*zsQ_b{4hm1D-#}73phYWKD}Wh`EW|E}SYvm*u_( z5v;yzzdvLO_5$jDN-KYSPT8-LK5@fNBtMv|620%8Npu!(Im-;FI&>d3F_d%PU7f&^ z3zna+S<63g{5cEI`qA|MLtSna5Uv3pnMV&lOP$sLZ(ts9`;dOx`q zr&z!x(MXnYBAvToDNpg%HgpEq)2!4`fIReb&&>^Wc{xh*D1ZoGUhB-}jExMAL>>p4 z1b*-LRrF75k0dv5a11_q79&)&#_xS`><$_!vXo5Yj=GlFs*JevKj3XA*8 zCOe>1c_^hNv)$rC6>6O^O9qhE376s_4_`x`d1;x4YS@?bh!2;E;Un)EejFuSR%W`1 zdlIK>cyqs5XL{%W@Ys0ZHRf552s}Ufl;sG3OvAwN^R->H;L7c#I1dFajKTr%oK0bW zDbH#6o+vLs#k@V?vZq_9q1~|;RMi)s9Ij4Qtw7P5!8|u6Wa=XyRtZ}O{PKGtC~+T& zaCt_QpTzI10HwQg72_Aa-N}C>g`~la%8H;HYWcsG6frN9uBlS=;>Pq>>F+ea-vs=xe?hZ8_MT2%rnnh1`e`hDYa5aga!39UJ z9n@_K;BPh(xt4yLDF
    Lx<~m+Cqwicw(YE!Nj8SXRjLo)3kEe#|AiRZffv@RRGQ z1l|fg;v`p%OoUZ*Q28)~vKta- z+4tHH8nZEXc+m=IukEqlC@Se)GyMk-muM&FzS?^~kMS;aw4EmZhrVd%g-6Tz8}*5ImP39ebo;!xv#9Ej=WM|;e1?c)< z&cFR5;Y6wY=1=->-WSGYdYvy3HdDf5l*)>NHWUSJ%o>`QZ9fh*RgNgOn~sh4T7Plc zcRY@Z>KM4wF5{qjHB5L-MRslHR$J*iFIb!{dj%=wW$e-8=$Oo{kbVrkRsScaCr7Gq zHcsWS9(9$h?bVo#vkpg1woSupQFjM^{_+}y{!*ifVKuP1Q4_78)6Ko|iF*fq%Uj9p zE&lQ?i;S&+1W%8VlieqET<3sxO3*w}UQgdLgC*iI+G$H<3a6olQzp@mqaHs{w ze4H<1G4RD9GKoXSa1(qqzqpFrVKJLI-wW&NQsnMUq=PvvC%G-_I|+fDjBE*e&1T(6 zfPe7k#VrpYrVE`8O;_d9^g;{={gPW{+;>O+O^qQI%e$~fLoUC-d+nTZqY{qACAJ(#YXnA@p2OtgcUb zN6QOFwm9Q@jNkYPq>-Pk>JG2}TnT8a^8tK7^wm+@!iMq5nj%gh%7yNxqBvGQHCAU6 zvv*Y!vV0w^GJ=Zies0TZ-W>~5lBqTn$XRv|Sq~&gC^Ct)_ZM$rAj8*Cfdh>-Q{0rSNr-5ayUdFtA zm2;~hzQbr-3Va>NuNw{PQtG~d!@t{>1cMx?@1Yy5loRgCr? z=m78%v=qX+E@hv`^CRQ&SDL$5uLnIglf9`w!l*)G0&N|6B2V(Y&YC$`*eu0rSNE4c z)RMVH(u4GEa6z`3?-7;cLiFNu7o%;i-e3ts%4L&ZMxs@BXkzj}8^8>0>TfqQTN60b} z>tDd&O1-LDW}fsW2-hG5`PZjK9)y@3M`6=ddTEvhy9>`!k19A$XtMn=H%!L{n$?Us zaW4yKrsg8bL4}eXxq;SN)#DX;kzI`@Io?e-O#T%89vwVaQy)S1am0~XPiSzE1p)#v zdl&o?4~KiMWKjcr_kQx_{50iTp-Wk$-q+yxOlSD$HeMhI}zk_mWlS2 z)}K*PNBImpLFS;B#c!BFD)76L9Jc&_w*CnHs@1O03_89?y!^zwFhUX}(AJb?IBG;q zZmU*YA3S`VV;C-l+H6ba3{NIC)S`iPDD-g(WU)-c*y^#W! zoK>5#Q(fr^!5Zd-8_rh*usKF`-A3y4RlC__eD^WXcCa*7Jt>Uy0B&8u z|Mh{_Nwr$~{OA9BAFl^dDw>U3gCvxzaH`D6yu=>G-47vWUWiY41>3@OMjrLF`RAnT zCcP;INMTfszSq3Oh@@5N)!KsULN%Cse<0mH)Ke0EW;kC$Fbq2mJ<0E|qA+}SG}0!K zx3-$OKS97-72I&lC@8q`-v{SCk2k@*Scx1h+)ByvKQ6=_Xq#^<5Byyp$IHU zPb*jV?+*e$ZYoFHL3IgThM2V zjy>60oT;Kt<*{I*J4bMF9q63P6^a=j;E{e|hWs+#58EU(m+F_+3rAa0{c>c~GIm}D z9G)D0{N!njZO(8N6cl#d@OD|3k!{|T$<9g*sew$rSxV=_pVT7FG1QO^RN{_k!&c8T z`Wc&vsRNsnA|r^^KH+$Es}NtydoI?xC%i2X@0n82V7jt*yik_3W-^lRvb$}mv1#2& z30c@%GB_<+;MHW4PKxa45Y>Q+H9iH8VUIoX5ls$R+3sy<1~nSoK@u5*EPYtQx69K$s^8~X5! z5G*y$$7ciUdxW9QSe28*L(^>Aoayf0`S%@C;MfWTo(U-Eg8Isx=l{BO3LHh;SJBQ! zw=`N`{y#r{4!0O5J_rBY{l+geV|H@wB$2Ih?Io>rhWzCDkIEvm^3K0I84o^vn)bh^ z@A2H!Z*QeG9qdU+R>mvpZN`yT582G^ON9A6Hk+v|ccZ17a9h1I|`WB}__^n;f1Ne`2pZ1=>K7eYomDWf0{z@qTevzvk6Zv5J9eZ?^GrnWDx>@ZHSm|5rSe|IaD z`3g1(fJRWn!8Qhfhgs7JaYzdKs*We5SftRvnC+?ED3_zW15`$A@z}ajq83Am0^nfT zeEr|wr*BZpo5cB!hJV5w0dB3}T0oZzB8qb<=xfGWLmrsopP~FWJsU7Ci8WKr3|eh* z;2@wsUfU|kILpTuGh7h6I}8w#xaHKTZc==7n;6Fi0}>mdV&mI)z~44~Mr%Sg0gpw2 zb5e=QrXs)vlM2A*a98AXWWOW~0w8FB^B6!`3|Tc=lF}*Pt2d=<7kah>?*pJz-LaS2 zg}I;WmY)bp83Ffzt-ufWfI6|N+X~90ngLZR5Ol|@S1h!%1)e$$=b4nf+5kXQ@wNJs z4OEN@tE9}DIkoLkd!;rUTA5kE(aZH+;&aJeV+vXGNb^&JXfeXqsfyHp_F!?5tHL8Q z^K=yq4lc2&qR5+98Rhlh2@e#>9ob!GVa7h7SrPH2hzd4a*ECm4oJM*jFnr1Bxhe-J z`W>m5_%<~ieRNVSSFHGq7l@+(RG$j6-)^3WB`H_9dJ#3ERBVThWFacRJOdT~6t>Ge zd)T&BJzD25=GbtS!gjmqWERCFbQ^J?TQkRE@jD`+- zI)A@*-4a(A)sM)DXOLP99g{n#>MP@!r}ke~vTuu^g=&bGhk$jUgFc*5T+njjGiB#m z8c{}kFAcrgjI9kv>Q8Zkg4|L6@q>jG0{7qk4gq)(Pa8SvM(Z|)PveL=bdmD44o0yD z!1L=h2bS|fgjTokJp9dGvGfA2qa|tO^(UBB)M)kf=sQ1&I=m*#aQ1ivr2^!PeiGGO z^lHD1V>Y;%4P(@>k>3u3i1KTvfBG1EV;d@bWLSISlR_zYOC18^NMRuO`5Z;`ouJ!TB3|aL7Ct#= zpedt$t)K7>0>JzjUO=|$wA-&j4e^~A45^vfD?s_q?4&O~7p^6OHuh~|A7+k6DyWEJ zQ~LCuw@m)Gotn8mc|Yh5K(^)cuArVn1IE$?+YfCstrd0a_IZ+UkbKu_|X5O^rL3=loq zoqz?(q7wb8V8AaV{&(I5y8V_&!?k2ZW!`>p#rWpfm3B5-2;zybo|YaZ>Qy_Va@Udi zc;C3Lg34Ke@ARs;yq$$)RM!gl3i;UO_Osnf(aqa`Jb@W9CM8qkC|l6q#yl$cF!BlE zsmbRffCeDx=V|n`PXi0+q(|n3DbqgRNqW?Um#y25bOg!mZ%0XN5_7kYivTiT86Pct z5g28U>&x!3$9ETfoXmXwukGwXyS~V~4zDi9N`TcMEdy)>tN`%1D%KE0a)(dAj}a+g zZ^$SrWaZKOb3QhGH>*iGZX2+PtZ?idp>E?bv~>Ag@-EEp8A40SaxDQ_2S;eYS0h+m^lFJ*@PTy_jih>CigUqxA$Kig8aR!7bSB>3ymHXC)U}yy7=6^CI6tCp=Y}q zL+Lp7T~pUtdD`_D94ArT9~n{@Q4;f@Em7G{h&JI)`yuaw6B;1NL^ZWUlXGB8AN9U1 zRPv+M`oXh8e1QZUMKT5!SVB!qNB4PI0s9417cgrmzj*EwtCkSst3q8k-YEw$-@pkt z+`BEiUH$Z)V~s&nhEat+JHx*cjh>D){KLG&zR&S*CMEg!J3totrl7&*uHaoP#3 z?3CTsQW5NE@igF{o@icbb6&e6CU%42_N9}sMIzcPdJ}(HMe6=yFQ_$;+}`Pr3Mj={Ck!;P&C&2` z7G_i=R4^t6HEewnEKPh@4>-n()phGaujG#o-l`mbazf?k-DOx_mz+?5qrKkHdAE9B zuEyFDSaIod2*#h z@RndklZg_oM4NMOQsOhh*<*_Wq3H_5da&ru=n`|jfS7Bs-_K3rGRIs3I9!DYYyAjg zw`om{ar>y@BMWRp_Ov>Bwexo-xs$9M@#~Xu8}WsHRwt(!!>{1^1Q*U2PnpxI(7wGt z{mP?;Z32$IQ6jMj3&C-sw~QSQksY|}6cS!ob(b0>9x|x9VI&35f$m71OuT;)n*9Z> z==_ZFi_IH22iX8~e@=*hVW$L39cPr^W3nSVn(wqez$!l~$1&G=d3@;*fPHEhtN6H1 zI6KUZ?lL>a2Hwd3XEr19ls(UbeeQ7jsMpg0YfT-NZJg&f6C%FIq*r$%C<2!dAK9dP zJ_A%;W#pg}ashMe;-@m!-8b%++&w34@0KQCNWz!u5wtw32OodYpdx>J{@$RWU$A3L z>mp9={DE%%TSp)45}E$1JvA1QWIw7+l|MJeXLJ43936QyYB>rJZe2BZItzK$0<@{> z<8XvXvB4z%1YE<<%+iWzjXame+g_S+qP^lNR~#%FKqLz41NZNDb-K+*icmS~{2~hFb(4ry|*>4NfoV$$Q`Z#ktu!+hFw3;7G|`@373w z&qCRgkX4_^y4EQ9`y4tW&Bw?@nejtvG`4M1s}6dKmiAdzVw>m zZk$@oRC#Izge|RVSnVCiUVPZ8rmHgy$qUGu9n-RS(EelLSz$q+JxO6$RuQAhMPZUe z*eLf%L>eVR&I=zr7rrj99~)8Dn*Ad;Vyo{uL?8R&D9`Lm`Q>ubu`Q?fl5sQXgp~Tg zpX3iaD|-L#wHg;A-V2!V+7_ESOBOvcN3m7y9u{|6wH?sC6NKItZ}E}DeOM69`Hp?`PInMh-Or9k{v5@}IqEVljX#&%OZ`BHg6b?7d;hOl z`qbF=#4HvJ56|t+oijQr|C0E2joeMXi`-D7tvaMVCV4T&cd0=Wq)3bR_bZ4!033k8 z#Ic)0h1_!=01dBL-I4@!H3(W(6HEb~27u_X0cvdY2TzV$RFHDhkEfD6eA0ZaU1k8^ znrfpCl)IaA9fMf9Q1Oy+ELA&;r;#r{Oy)$+cjjE`sOP%6(Z5^i+9z`|?jRAarNHn0 z=CT)Dl0H#gAFd;n(}OC8IF zLwDvzGPC;o?T5P7yg#@LL0l~CV|H3Y9riPic@r)!?Y)Vun9s(q-bmO|a{3(@Z+C&q zl_4}kDz-3XR*Ffk|N2VZY**+5dR4oCl)1(X*OP8|ly$pJ^5Px7`R{phAMt&)qb>59 z4RI%6-GsQa22o_!t)GEmm}ut-Du7P5c-y%g?9G?q=W>#smFTx zs=G_!=jW$W88Iho(HBLhy~{6?z2i28+ChVIGS|b2p&b5W2v@vs{5kdHEm@TfAfA)S z!J{O#405wScBl1d$5H%zW*Ha>n4c7C9n3GUa$!w@#&>db3)dc$eX(kCP`#)yV3A%+;H9 zF+BxPsOeY6imT;=5Bj7Ktwi>oWD{bF*vR?M4g|U#+p4(#e$#q=yc8l)=Y0z41=^e3 z>CyiclEAc({z})e?w)oy6Y`6z#s25aChss*@k`0@?HEV8E|pf|s6%|IqnnPbJp=Aq zxv(0AKC2L&H#@d)y|A($i6B|%+6RgD!sUgQ9v#ni&UB(jr#r#xrGqIJ2b&k?n>`#0 z(Z`SLE4n4k0ob*xIU|z|fJoN^!N3&agc2Y@Si71W0L*|-7lm2AP%&!x)2)5ebcERM z%J!_yX`uCa^mIP^QWxEOzy*s6^$o@ zOt#;R0Zj_5&u>wr$9$o~g*OIg>fOxFE$g>zTRw0R2m^;fnPM0fE{0Gx%A*X4Jpy;s zVPKz0yAsWsebkE_6fv5{e6#Mr0YebeIX)h32=Kx(&yGQP1cF>ao!ao{d6};mcp^49 zwDtiNS@jldPlEB{PAEl5j@-TjeuDppOi%R8@>7Xt15)(=9U22GY9oT9C|?AQV1ajQ z-|bDXG7y0$C`sNNV~SmFg1vUEjscUMUaw!K)pFhW?2_tCX+9Ixt=TI$}qM@x1+ z5LB}~!%)p;1!47<;s?pX8Ofr#tlJ9tgng^-!76^?HdT{W15D@Wu>PS`7+O+2kyzEr zY%eJn3S%y?(@I0=NIamRd788t^DepVS{rv41WQ52ol?@&@}P^GJK1zsvp7i&KB?%h$(nFt$$Y z;kB?7)08SmQNczhvu!?W=w>a<~l>%Asu%w5h4h6SFlz}zESAg`kFpZV7HpekiE11JcqZ%JyC%L9?> zg*M!-;V6Ntb-nlv*$U-?zYTQm7@uEoY6HtAz}FA3AeV0N%Zq)-i;SS_k0RV6IEFaen3U@v%4a1}mQZRo7#^_kb2w6WMK7z)K!>%f7$uL# zf^Ck*2(shWaWo+mJTuAM6hqUwiI=yI9VzE|{ z?J|o(>#mQWEesf`hfNEweyO!TEehFY{s zE^s?{KVF#V!&5G(NA(ie+96|>7aZ1I8VGuWk4MT;tKD-x$uMktXQ|!*b9d+lVgg`; zmruKL3;dO;*lmaOPYf;L^>^cm9VAaRu-wd+!CM$eSKd#psFD1gkdEu?&v_6qo3Rkx z1$lkEZz-QG_2`5t+27CjUvHuxdyxSc{?#N_sd-xxPy&o+mK4P5x*@aX z4*rNfT)mRs8r)~n=shu*J_6co*>hQ`{<{>rdljextqgvqM}7ZQ@E0;vr+FPsDD#DX z^Y@htw%Dh%N*0I5Ir43Y1_k>>Uja}e&Fsbbz;qC$ntG$Oi!GWT=pA}4`J(&*JXQedd^x`QKkzjX z?pmY|>VdX72jqPfeeidA3QPy)PJtFewzcD zpCqCxwn}E|8Q<^S|JRxQ2lNeTOgIXeonUxS|Ig(F&f09}>DPU*!_1y(w&1^h#jF!J zW~Jqi&%giu=^o}F7m&o}apAx}PXhq-SQ3FA;g_xYe}6sVa=jR-APGLEWF{(Z2q+M9RVop%Z@?)(4K?A^YiPCOcq(yNGnAIxrs_=UYk1LOan z>%+rUqzK0nl{HO5*{#h;zbK_ohisq6 z@M`V7J);c2Yy;ER8K)y+g_<$#DQ>T654-Ecd8Z&xI4)6Zk50&Mdm?+=B*r|KkEQCbm;Uu+}Q5xV9s0i zqUZbHvpK$+4E23_SSl(q6)j~+ojSpbt12(PM_ZFzo|(;2>G5!1HEKbm&ZOp}W|z<} z3wOFSiELhi5xwt=zJYwfT;%Sn)dv>#_z$>=!vwAX&BIW`jp7Hf$NjyFLE6xz>_4T( z{5(DU=@EVN--7`_-OQLqKV`T#x?_x}>!Tz(7SoZ+niGwWVMKpqFi=G6GK(?>z(ZXH zHKms8oj+Dkt5=t$xzor4s6+?^Py(Vxfx!@l__yvR>-*B)yDi;+ zt(Yi3OAZY%+FPiqq#0>$nXg85-clGQA)|A&>f6BU9o|YF^{W=JOlBnFVuEG~F5S;+ z^pW!661bb~^>To*H&Ceoz}?=P)4?sgzo6?qXJVxoLX=g6FRGCmo{d!04^#CjEl4d% z9TjvLyvE4^5QO2lta9fPfMvY%{VD}e#taWrNDEpC8QGKkGd5$p0k2uN-Jr|`!xd6G zo=&g%&)#5kjy3=c7<|-4`_xURAvAWmdH?KA;wb*4*Bm=ZHivB zHv7tzvlzM%4Y8{tHS4HkFD3|xR%uGZR0^L#93YG9*#e|(zW;$J75z;!8@x_EL|W zLn+MXqix&yn;$qHe_IyCMFwEjk6dJjtx`63O&Fp0C+Sx=naU1I(j>^&&+blrlSO-*r^VUD$c$-;j6S- zK+@SMHb;qY&2eKp0QbPuCOE}b801DCpf;G19YujTEA#caCZfQ|-|>aoT33$v-ouEX z&Sh7d$M@*vgk1z@+|e1n*5*3Tl0+AxVLsmeOzXzJggG11>;8b%h@F2}r9t%^ezoU} z{|jBV#s)3jxmjBqT<&-oNFqE$Jx-se%cI61goBF$dSuV*5mj2}8!YI1>kmw}KV#5( z^)5A#403sufq{}yL%F-#b!&9}XVICC0RT={@io=W63nUeMJ@{O&&JnafNL3CU7R3^ ztJUF^A-F9*`rPMl`Ak9}a5v5~G~%Ax0T9|{*Obso95T&;fTL__(=#r!x6P6yPz95{pL&!; zY;E#VI|C!Qo@gH5^E;H{=~_w*B=Qx)2@+3~8NvXSo}<@LCac)#4q%Z`1h8x+mSQaU zWXIhIZi3xqGQ@O3@w5&_%j?KkIAx)4R!L@w0Vzp|K@aoP94YEy&Dy~HwDbbsI?&Bs zh^KW%6j&zZMh6}aGNeXtx6Ar3Z0}@T)OMmEPazw@0w!>9L>B$hge1!oG{>xr^L(~- z`e~;gbWd_v-KQ4Bo9p#008!YzonujFTgDw9R;g*%M6ryRm`b(%h_oI za7j3B))~*Ln!i(6`Fgxl*)850tq7eph((E8<6?Gq0-3MN z;Y008tc2(h>hPUtkG8`|cn1d*NUYhYoM89wZNbo2U z05uQMWx9c~ScaMqX|3XOc0kjFLb2`_VLU2ornh=M>s`HoU1t{Y>*4^&Y23=RO;`+*125N z_Zt@SfJ!_h&j@$letZ#FB)nEjXZOo1D2Z{GuUQuW^NxaFLQIu1-(r4Up580)w1+Pf zV>_Gp>5hm{3aJaYI-#9yC#hZ3AOSj;xihe}MWkAoTi#nU-t^J49U`R+?hyb!ipc@+ z=yxpNNF7FQH`G4#tm>j9LgR)oE~++k4$5mVbw(7RMU2`|Nx{ykJS&w3CDOKt=RRWo zd=8iejXLe5&iXy4Vj-O#;scqv0_y#e&V`SwMg?x!55(58fF^IRKqNtel|;brleL=0 zQp-cPICLJ>a!xnVM#T5+7$7I7bE;hwD;#%P5VZ&TF%(gdJ%W$9H%nxbXdW<6FF&=% z?-9F0sm4V`YM(z&zif^3%-?vd6Oo(PaQgb9>-X|5cY56L>7QPc(DpdKm?M*aTMQT* zZRW^NkMp0z%?=lMltB}vEZo0t^iWhb06_OBDLtVjHx(F?)}x5hNi+v!6o4qwUZ*Kb zxb!5I2*A_!oA=|>dZ}2zXLHvK57~e$>>fqSRnnx3ql^p2^urdua)YbozQ8>};;>9H zv8!}N_ci1mnUfU^2bVWKq@FD_GiDWF>I zXuU~=NT7}obT{Ltm>nW7gI9-He9oKUV;ET(Fu=F1?9_A^*p-le{v;lcVi%RG4N z_CxvdMh=`P!`cPT^gJ8W>@m(RXKyNZ5>ftRMpEA?B&O8#u$lgKa;IKYZj{+le(jo) z?~?u$mi6GR`(x5}MfvZ&aeA`eU*nPIG4(`F&};wZr&V?WX3}=A&-yc1SJES!o|>wZ zd)$Y(YyeAi#d%C!Tfs6CQN*DWnC1V6Y!(QNJxd@<)gfKq60fMz#9ECO%>X`Usr9T0 z!*%7-+F7GK?J6~*3U;LRkk)GLxW5^+1k4ubY2p7OT z7-iKUl8%1I!zj$1l$~DC`A3j>P}!rqY%JReFQE3XeUT-{Vps>e{=~)0&)87=b9OR1 zeG3N*Gu=FL`txRJs_XisQvJG8D z&7nQUzXp8Jzzzd`6(deT-_Ad-SIYsobZRfUb3d{bO*t#_lrOf2%YPwXyq|M*=?biI z<<}dQ@b-NPbDO z&xYk*`xfBYZOandw8_}#_0;wyF-F1=i@7AT|2xV)QY1~8Fu<6?(+?i75%z+?U#omm zB<{0zZ5MG!nQXkHno_XbRwGI3&QFV@A*9@}ly&fXMrM&D!tnTtvLu&h&E#}SX3i;7 zEL<@YVv!>vM{1xBdEps>jy-=mY z#~>!0ZwnV|zZ5r#Li%S(eT2I(MUfPR{>qlyCB&N}ee}@p*c<9;q43)ws%gyz)62Id zPe3oVN_u-PX~<9BImc(5=ennm`r~DKRu3u9fi=fCMI()V{E?2}iYcEZ%{Lg;=inSH z?01uTyIO*d6caa3J_rT)B*%^NL zcV=09h9XXquH_qkOVSd2=()_^GKpYn6*Yqx8BFsFiwqFt(5L9p7HSwplL}DMHm4El z_J&nMzvV11&JG-dYstV?Jce~rMz(!!^Os80Du1YW+)1a%KivC^@bY0fg&uynP}8!? z^z{OTqrTJe*h6WYMr<}@SHV2Qm<{F8@oJP+o3icrlGV#XWCV4?MC|41%bs3nrSUTI zlGur)M~5z=RN%Syi!C+>gkjc93mv!k0`w0M>*Mj->X!jYs~}1t6$Y0VeK)m} zzzy;J7CWO*Vd{iw;w#Do)*-37ea8Z4)D(L*6G$mEie!2&Cs42OBm$e@;RFnPE6XI@ zHR$a>o!ysb#zi;1H0`329H019E25*~>5Wp5sagqkeJ7saAMJ<;GQBWU=JT>qvg-n4 znjRY$OIZD3TaF#el3^LhF65>*IhLd4+8T)R8XN2bJR<7X*_VRZPR;Vvu~&STikK(2 zk>}cE?)7t=K)24N&+zr~YYV^WRg+OEpEUV5NlaN(hAQpL+e{R0!lXAy_>~gc)(|0S ze0(;N4ou=)!(+M;A|6b`T3FgUNB*#H777vIxLz&nHSfo`4ty44jUSjwN{1w3Yr*BV@_GASqGr5jB9<>;^wEktx4H^B8>Ak{ zpCzxwE1t*Akz0E;y;k`ew0bpL?0F-V)`D}l8$i(KXig7KlM4Eaap5mRFUI^Kdf4RG zXMrS@$3oyA7A2Pl7?rj4Eaya2nN*|U1_m*gjoYm}zL+dT^Q9SF_A3fOR%??U_6LFB zalLwy%l30$qQ-5~#FluyJNwEAPRf)YL6&<~9-2wDL#aV8$K5)loU5C()0(1Lp^P$k z*Q?8Kp1c0i!o?EMdg&{_D|9fS0?pzik+tAYzuk++K8-&cwL=F-z%C!G#0)k+gp)l)ZYT?90or;!!2IwY8RSao)w)*3s+#h(lVhUX!i}g z%N$U**r!O(9VKp6Jz=jhc13G6Lfp3gq_^0lI>l(2;K{}qS@+fDe4ih94abxk42WiV#MR{w;SQ(hw zs7<$B3tM^5ctC}o;a;jp?VcwZMKzvKTBqgqob`-*nyZAoAmfJ2l?T3Od;Gi>{a+bV zkh4VoWiStnfeSnE_03^~4CT1acdtm+2GaR@`PI8qz5@dcZugmfQ<-G4M^RBZTZ+74 zDWTF%0;ics89y05Tv+|103tQ5Ef|zka~%0IhY2&0%u-X~WF=Q`|4GqdAm^49?!ui` z>9&IDlV$mmt|8)*uw$M-*k5JaqQglhpSB#_@hthHtHTFIGA%M5BeML#AZ8@_2EsFK z`LlCTB-|1s@knmNIm%Xq4SIX|2i$GnNtb$sEMX;qB*w4vmI@VmT&(KRt zFNp-_op+x)y(?Ys{?ZhyWBG_<_G^~|*cid@-gHwm`nSk>IAvoWO4)If09ckHNC|Oz z2IY(_WP7B6!W{!`vh1N2zAG6<{?U~~A`z_^Ty3$Y`K~3~0J~RzEDB9Nui^BuOw6a4 z4fjRY@P+R2uCg_QWL}_^_66akI2j}1TL#&KJ$h-{#b~<1V|Rh>G7*gqN|WX+&uB{d z77oJPU63QBIZmZU$O1yGMMe=veNQQn?qLMKwKzsY*UhER1alv;LEtc)Dg`w^4uhnx zJYg7zFF$dZFd9&)=s+6;s4|f?=NUKa8Ek>Olw@-q*R`0lYC5Cilzd!v1$8sJNni84 z5nOX<9fQn&qC6@JrCpTs$YS@_`8Ri153bNeiGR1h8(X|r zuI#YI!v+4bIw5%k#=fGfjOB{Z@Fr6?-(ZPR@#z1HK8Vr<#7K*JGbMGOBm(!gtuwU6 zm9U008)HffQXv^Wnm7M3VEdlwJ(8JJEgktPax5SIi1K=2+b@eHh1Sr{{^vcr`adx( z9S|mxCLkqjAZHcNJu7M{!<52EN+LQ?#q6|TCD}?Su%a&Eg}(9m(%>h?sw~Gj%OQAM zX1VinX+EA@M>4L@WkU-)Xg0eQmn_n_U3@i&-!nBVY>KXOg{;AeOw!F+ykjt?B*}m- zxJU~=gLtDA6huqcED(wJ0&_R%i=(*_u{QfXgZW5D^_N6A$FMGW{Wt(BdUvpj z8+TN%D#KK~ed`!G7d$vf1(pq3QIgEsW;Zv>A+ZjElS0hrDI)A(vN1O-MD%pNY`zpc z;20(3kSqmjK@DgOp%+`PRQ4~D$LAI9l9`lz38kp)f2CrltF#3F027h4Yq`bp!4lbjs@3Pv2t9&tL2!lBB&Cr+pW8`o)1K4~ejT zg%m(?7nzVvHCO6|atL&~@akxJ4-9JXaGJ^;U&F--%7VM>2G*F)TAM;yVxm;e_LJ^O z@X_a5>}C%$YhMWvk4#!e@`gh{*HPp18r14HQt#y#4*OTwvM44p ztIIy2%=3R2_6z?OZzSz*Ll5%j_~GyO;bVjcm6-J$bCs+tTz^}at3r#uQg=_ICP)&K z^%ufvUCCIP`isiY~C}$#wmS6*Zdc*sb*Zh5ydF) zdzUdE$4SY3(y1**XzuFoH#6NYPAsD`<@&9sw3Kb0>i?%`fN?q6gGu^1JiE7Yu^?NE*gfPR&HnY3oWY-Cui#( zKY>coS#6W^q#<}jdVg8nOQSjk;)5<~dUTtZJ)jva{VI$L!QV?tf?3he>DS z1Jdn!M%u6qLBAs71)`o!SyiQWyODWgcjZTngQ~&OxdvyMTt2$R+kh`Um@I1Sg^tMR%N|-ED zQK?#zb53`ozVN8-0?$SPwm7FQ^wFnGoczh)7?3;>%?n_qLE|nX!D2dsOLU zY<^CI$@a@!GH+i`Km|L#E?>SP?#73@tVexo-(>)W;y_YCS$($DA81{)whh&RwUFnX zml)47rR^}8vaak4HX+)z>%6ci!AH(Nmyt93EC=vhRQQ z9Z7_?ciO(l6K;}pyOHWp-pU%nqj!&0h;Vg0d2 zHp2Ig`uM(m9AXz{$$sR-f0OYTXM~ikZeL2bcd{&V6v=k8hPlPp^Vyg+yjhc${d1q| z4BrF2DZ9)aq50NRE{t2Ffy&iC+k^gSU~bP_!XF+mh2olQ$}}A~AFnS*ecNp;q#8VU z0y)JO4p$XB6_?Rk#W(mT6<9=}e;F@wgz$TOJuegTLXUb`7iJv~otIimHF0#!65JZ6 zlR@i7Y=6m5`f6O)Umt+{(Yt`UsLDul50)L5iBj2OYkg01SL3RB=|NY^8JK&k>JFsh z!oS&wGJVlf#nR+(tjtN?VPY8&!mCm~YbGeSRnovB`fWo8V(zU)IM10SA!wiWG&1HT zQh`aEx7rl82b8c&htc2q@huBsS;+8SS%|9?W8|3Gcg4A$ST?e@h>wbWI;l;HD6y}d zsa)!wEK$X_q2e0WcnK0%vG3=Fmw!a6zaR(yY^NIco8hB{o8sz86@nwQG#Qs6q|JH3 zLPhlz&c_DSY6{6&AOjEo~cw`$A*`%fKA- zDxO>gpJiLe$S;AjmI>J3mIfaz(k{#db@dzo4IRhV>m1GOt}H}lDQ|Mq8cfRD93}^T zDrfON+(shfo7gm`jV42__*D4KYnv@PvAu4zan_TbX)Xc+QzcjUJGI3(D1=xM&Vq6` zF->!i4>6y=#91o$K--!3grKCS5H)YLCLv`qW+PPoRM#2%gbRJwkR7xmo(*1Gep#R$ zo{=`VRAK-iJa$QFVIj|}4`%Z2Q=~eHVWXroTFb7co?2nYx$0oV#=V`WBc}6xofC-a zw+5T<#5RYD^fzJ4IGO$h*|?;k=yQm7{oUiEt6}N2jkh zHm%7YMwZs)$bNVpJgE7evQtV*A*uc5gY~yGjr+&N(07e3O4lLR$UIBx_}xU(hv&9$ z9Nc-f_YyM?>QM^ugrqQn+A?gZZz3OU!Aw^66bRjt)mTdR-W0WdTW|2D_t~;7L1<2q z1vS$JCM;%#>~QZdUiRw=bZQ7Sv~1lTevG&~eJqqH9x~Bg^m^8!mkKBOC<`F$T5ag= zB^ff`J-+Wp!|zTN9Dem9q3X?u|HYN{Qg=(s=9=&1Bt9`k!2H6OsSBVyh# zCC1)m$0nVKVqe2J zG5i-Nqko%Z;L%R)0?rXzQ@EdIlE60rEi*XH@IzHV{XiJqlD)DB|9n)}*{SwxkUJE+ zI(yD)MT$eP3077N0HbJXX2IBRmHFb_p)dJ*7_sD}fLXGA=2`aU^1Ow=;Z_}s99!@B z*KOYQ$}eIWNCbq!NHHSs+~_l^x~bCgQ0l`5J_|$@dxBH*BHZH?KXGio=fTXdwyS&U z*j=rER?o;(EcWyRprjfjEp%+_-lckKuG!j4R3E^}YXPX<>gbEJt78FA>m&x?T9(=R z9l{%l7nb~;l_&~&$3Y>*3=Ga1+SA255!07spzjiyZDX#8}d9tSBEcy#!kNK7grTC(7!>*<oR7O}`KLRPHi#et?NYKf4n&bYx0U?x|id@>MJPd19;TTr|U{(=AUw zLJrg*0Q4TDVbpO_$%(;_G{248OLLp{bZIqNxE=t0zdK}0xw@4}v1btDMIvo{jP^w_ z^&v%Z?CX@j)YvNyb1zrgtcL60U&YyGT!|~aQ|Q{r$WC^W_F+dlqEX5 z%(gy+71H0)R2VwM`ii5bXq#*c;aGaoi3IK%-C=|a;0*Z^dd+f-q1aR&H%r^iTT;@6 zZ)QZ#H&Jkl`R#OOk zwc@G)6RPC&dip1fUzH}2RR5X}WxZau1X-mUbzYHBf90|M7D>aSOMjj~Zr!PL8dg>m z&n2lIF`dJEO@mDJpW{D-EBYZHt+A=4^&_Z+G?>lD^5W*$hD#S5o zQzONa4(M%{|Abx&yN~<<&iogJy~c}q=lO3o=?{44|7ZUtQ2(FQLB6vqpEQ~lV{<>` PD~)-3_`CC5qw@a=k_Lt? literal 26052 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�RG#KI4*?Y ziR1UJm)8vPjt#L&Bq}KcfNq)W{dlQW-E3PbXSh|JrqUvJN8J_WNVomh)uj%J&+GAe zj=U~30q6k7XcQL+xYd-95Yast;bgz7Ip*hcVg;2>tDn}ul2enLahdb_T~&yyzQ}Kr+_;U4zz_3=NN?ACYsz6k}Qotead=4 zeOM(zJ}RU3o!>(RS+W8u`CwE;vs3JFXBL7azv{L7f7X0~U}Ok&`rO;X*81=~Q-0iD zZ=ZY=(48v;1oR>o@zu?;=X$8U6_%e-!`+p`#$tcI^n!&~dP2hnkJsI*spKaW{e`jl zO3hRr-#wMrl$(JPIvf)Wd9(tr)09L0AGa7Z4*1{fKdH?BmHkU|mc9u9wA~;5;L?Mp zBs(#FfT+E-*fAzYuO{#^(C5zDlI~QLN6lF}**tf~xaTxf^uX6c1K-C9F{vaD-Og|G zYh9l;sXK1M_J}7ew2iMUZNW;@RpuZPk{F{OLH-?FNbw*>(3a4O08(hJJ`+Ugpi$~H zso7jpL`*tzI%u6_Kx?G%UcC&WCrQeN>roS5i1e3V=XK2(=k9JSxW@iOOIP^jruw2; z$@%>DoBGf8+qMmeUf4te&V_{E^%>q_Ilam}{M zC~X^)*puppcd4vz8JyEyjGbG;iM%GfD&t9^> zg@-E=K+5Q#A;~`O-#8`aR-Yi`l66dH+d`gUp}-qtMoPBrHbmwR+?f`Je~yS)-o9(H zhYH*dcpcCy482>}xhTQqU$TYSBQP>ekmEMM9MS?Jz}oGi20p7_!0mq#QrtR*{_)UE z=Kcn6!CAd@IwDbqk-HdNAWsR)<5`1(7o)3X_eD_b12hai2I4rTp2h>{%r;Up+9L~b13z@h@aiGNUX`Zh@zgKy0@)@o zvyBLb3G5Su>%p)=Kg2-C#XymHhMvV$*u)Sbq(M~6JZ(d38IPIcxM3`dJ_dVUdm*oj zy*tq8aLV`o5PMeZ7UqdKV5Rq+Pm8)CH|q5q^dUI_pOFjeIOAF3neiH?%5!$zQKvZ_vo2FCF6NCB6I)JOEzf%Jx%*?ARrha!g0OJFaz>$nfck@b92l0--ujj;wyUBmP#T5@o>G?ZqjVbf*VPHFTTPaSk58 zWiUg2VEGQY2E&C__}mY|S>kja5(R<)QYW!v!}X2kMWZyC!clrua~=cyLTo0;!vfrJ z%OBi*tMR!sT3HY|y6h|ffeV)ptHWGs`^2d6k_;A4f1pHAlVYqvXGp&=g;BtIYZ2k_ zC0g8~*uGrgapaQYR9D}0DUe8AR zPK{WZnP9YIA)X3hX!F@n^etO4#@WPL=3cn9u#GDLf zce}?$7jmI3fG>=O{@Ke!?(3TNmvG!9XR>T#=Kl9VSkPk{pDPF(!i=W}X-*CpXT73P z$1H}1m6pnn&xGNvyyMXo;WA3SFu&UN!iUQ9Vr(h}9jj*rX@CGschh`ck8{yo6Nkp5 zus<`-tFljmPHc$7?t^p`fuVpzogW zhEgB@vGT{RCcb4I6Luyhy^M746nRi`HC|opf_e&xI+_P}cB!rex|ow&J`BShq6xZ3 z6&stD$IV|oP7D3u4L(pe6;fr7o=5WAS09z-j)`XN-ZlW6!r$*Xxr3&CV*+iC8G-F+ z_N}zb+EJiW>!(1P%=ywrynVM=!=A1XziAK}aK6IEFkB0)FW>t>>c~%}v@|=M%8~=G z8cWGuk&;g>g`|A54me_U&OiS-@Fwr{$l&d-(pe&TE$|2geG?2&Bu0PZMmp1VhXMp| zUvsJPy~A@L#p$Mk5_PcbA>#-NadllPVx-*Tg0iI%!$*gLb;KBWH{Fz+)gz=?R7l4I zokwXuUrYCHQ@cpBY<&cOnL9^8B~^Clu8svZOhmWx!r<7Nnof2=A7R7u=_yJx?8%sh1( zLqXY7&ExQbOd|p=L~6F=m8=afrLw&2rp3B7eZRsQEi8L;`K|7^lcg}~cIvoHnod9D zDPO=&TYajzKxC_q)A0Be{K(2V5F05IpEK;PF{LiinRhhhox10_2YJ`yzTp+EQ$8O5 zs4<8TeVw z2NS?*D0QnhE!m8-JTIQhy?8Qw4?=*!Jw4QKS&kL;WLimOxSETfg`8=Atle)i6$Exp zu4ni2h-L+sh7RtybkkOKPYII`-%6nm&w2!OZ%Xe{T{@qo^zuGuw00$W^-}I-_#)|N z(RxITktNXyBRBzb4l`@*eE)s|@3liZ<5##)AuWHev}c#FH_`LQLkiB!T+zEE8pjGN zDa{jqS)Ni;M zwPXA4$y_gGai8iKFg@zLeJsn*Yrhsae(2o(oa$`08MF&+-KS^8Y&&e7DxlR9=u8i5-M9HMCM z-bTcJ?JlYSn^e(o3z{rMeA@|ZH5X6G_ksUcgP0S=C zegdI9*BA-DVUvJJK|*ulO`UoK(JexVj(VYfCXOZ2TN;Sv-wszQbE-VhT!Nm>tXA=F zBYFO$7>AD=@B5KQ9G^_sgAG46$-O1(O5%D$>d)stp*h{v5He{flI}+lEHK`r;(Gug zaWDX`gF`his6rGZ7z7Uaofym5|M!RDasx4BD;`*01@c3RtMBJ7h6(YRv}>msvIpP0 z@^r&^$PIBNeh^B-Z$n>@XjRiqYC-WHt?d3PglaChd&oWaU!$Q%csNjfr3{YL2-`@# z*n#=P&Cu?6Nhwm!iqg!()XLt-S`edGRj|4~k+*6`Y8(Feg|@%O)ryi3;10B%(&K+m z!;R$YhwMuWF*kx{8a9XaI&2Q1dtDvcl_0~5>I0g

    e}Gu~|@89Zij%5hY;)jrhSZ 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

    Kqx?8)DfxG5 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 diff --git a/tutorials/getting_started/rules_advanced.md b/tutorials/getting_started/rules_advanced.md index aea5038094..fbc0297a13 100644 --- a/tutorials/getting_started/rules_advanced.md +++ b/tutorials/getting_started/rules_advanced.md @@ -16,18 +16,17 @@ For what ever reason, openHAB has you covered with text based Script Actions and openHAB supports a growing list of programming languages in which rules can be written. openHAB comes with the following languages to choose from: -| Language | Details | Intended Audience | -|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| -| [Blockly]({{base}}/configuration/blockly/) | See the previous page | Non-developers | -| [Rules DSL]({{base}}/configuration/rules-dsl.html) | A programming language developed specifically for openHAB based on the Xtend. | Long time openHAB users | -| [ECMAScript 5.1]({{base}}/configuration/jsr223.html) | An older version of JavaScript built into Java Virtual Machine 14 and before. It's the language Blockly "compiles" into which can be a powerful learning tool (i.e. build a rule in Blockly and examine the code it generates to see how it works). | Not recommended for use, will go away at sometime soon (Blockly will be updated at that time to use an alternative). | +| Language | Details | Intended Audience | +| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------- | +| [Blockly]({{base}}/configuration/blockly/) | See the previous page | Non-developers | +| [Rules DSL]({{base}}/configuration/rules-dsl.html) | A programming language developed specifically for openHAB based on [Xtend](https://eclipse.dev/Xtext/xtend/). | Long time openHAB users | In addition to these default choices, one can install a number of different languages as an Automation add-on. -Such diverse languages as Python, Ruby, Groovy, Java, and more are available with more to come. +Such diverse languages as [JavaScript](/addons/automation/jsscripting/), [Ruby](/addons/automation/jrubyscripting), [Python](/addons/automation/jythonscripting/), [Groovy](/addons/automation/groovyscripting/), Java, and more are available with more to come. See the add-on docs for the reference guide and specific information for how to use each individual add-on. Take note, not all automation add-ons support writing rules in the UI. -For the rest of this tutorial we will use the [JavaScript Scripting add-on](/addons/automation/jsscripting/) which implements ECMAScript 2021 for Script Actions and Script Conditions in UI rules. +For the rest of this tutorial we will show how to use the [JavaScript Scripting add-on](/addons/automation/jsscripting/) which implements ECMAScript 2021, and [Ruby](/addons/automation/jrubyscripting) for Script Actions and Script Conditions in UI rules. See the add-on's reference for how to write rules in text files which is outside the scope of this tutorial. ## Installation @@ -52,8 +51,27 @@ These libraries come in various forms and are installed in different ways but th - abstract some of the sometimes verbose series of steps requires to do something (e.g. access an Item's metadata) into a single function call. See the automation add-on's reference for how to access and install the Helper Library for your language of choice. + +:::: tabs + +::: tab JS + In the case of JavaScript Scripting, the Helper Library comes with the add-on (nothing to install separately) and it is automatically imported into your rules for you (advanced users can turn off that auto import in MainUI Settings -> JS Scripting). To get the latest version of the Helper Library instead of waiting for the next release of OH, it can be installed using `npm`. + +::: + +::: tab JRuby + +The Ruby scripting is implemented using JRuby Scripting add-on. +It will install its helper library by default, and it is automatically imported into your rules. +This can be configured or disabled in Main UI Settings -> JRuby Scripting. +Additional Ruby Gems can be installed by specifying them in the `gems` configuration. + +::: + +:::: + Again, see the add-on's reference for details. ## Creating a Rule @@ -76,26 +94,51 @@ We will use the same trigger from the Blockly tutorial. ### Then: Actions -Just like in Blockly, we will create a new Action but instead of choosing Blockly, we will choose ECMAScript 2021. +Just like in Blockly, we will create a new Action but instead of choosing Blockly, we will choose `ECMAScript` or `Ruby`. ![select language](images/rules-advanced-select-lang.png) This will open a blank text field where you can start typing your code. This text field provides text highlighting and some code completion which helps with coding. +As with the Blockly example, we want to start the rule using a log statement we can see in openhab.log when the rule runs. + +:::: tabs + +::: tab JS + As previously mentioned, the Helper Library for this language comes with the add-on and is imported by default, so see the [JavaScript Scripting add-on's reference](/addons/automation/jsscripting/) for the full guide on how to do anything you might want to do. For help with general JavaScript coding, there are tons of tutorials and reference documents on the web a search away. -As with the Blockly example, we want to start the rule using a log statement we can see in openhab.log when the rule runs. One can either use the [log actions](/addons/automation/jsscripting/#log) but most will find it easiest to use the more JavaScript native [`console`](/addons/automation/jsscripting/#console). ```javascript console.info('Motion was detected'); ``` +::: + +::: tab JRuby + +If you are new to Ruby, check out [Ruby Basics](https://openhab.github.io/openhab-jruby/main/file.ruby-basics.html) for a quick overview of the language. +The Ruby language and the [JRuby Helper Library](https://openhab.github.io/openhab-jruby/) offers a streamlined syntax for writing file-based and UI-based rules, making it easier and more intuitive than RulesDSL, while delivering the full features of the Ruby language. + +```ruby +logger.info "Motion was detected" +``` + +::: + +:::: + Save and test the rule by running it manually and verify you see this statement in the logs. -Next we want to `sendCommand` to the light to turn it on. +Next we want to send a command to the light to turn it on. + +:::: tabs + +::: tab JS + Reading the docs we see that access to the Item registry is provided through [`Items`](/addons/automation/jsscripting/#items) where we can get access to a JavaScript Object that represents the Item. This Object has a `sendCommand()` function that takes the command. @@ -104,9 +147,36 @@ console.info('Motion was detected'); items.getItem('FrontPorchLight').sendCommand('ON'); ``` +::: + +::: tab JRuby + +In JRuby, openHAB Items are represented directly by their names. +You can also access them through the [items](https://openhab.github.io/openhab-jruby/main/OpenHAB/DSL.html#items-class_method) registry so you can find them using a string. +The Item object has a generic [#command](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Items/GenericItem.html#command-instance_method) method and also command methods specific for each item type in openHAB. + +```ruby +logger.info "Motion was detected" +FrontPorchLight.on # this sends the ON command to the Item + +# The following lines do the same thing +# FrontPorchLight.command ON +# items["FrontPorchLight"].on +# items["FrontPorchLight"].comand ON +``` + +::: + +:::: + Save and test and verify you see the log statement and the Item receive an ON command. Now we want to create a Timer to go off in 30 minutes. + +:::: tabs + +::: tab JS + We find the Timer creation documented under [ScriptExecution](/addons/automation/jsscripting/#scriptexecution-actions). A Timer will execute a block of code passed to it as the second argument at the time specified by the first argument. @@ -137,10 +207,37 @@ var lightsOut = function() { actions.ScriptExecution.createTimer(time.ZonedDateTime.now().plusMinutes(30), lightsOut); ``` +::: + +::: tab JRuby + +Timers are created by calling the [after](https://openhab.github.io/openhab-jruby/main/OpenHAB/DSL.html#after-class_method) method. +It accepts a [Duration](https://openhab.github.io/openhab-jruby/main/OpenHAB/CoreExt/Java/Duration.html), a Ruby [Time](https://docs.ruby-lang.org/en/master/Time.htmll), or a java [ZonedDateTime](https://openhab.github.io/openhab-jruby/main/OpenHAB/CoreExt/Java/ZonedDateTime.html) object to specify when the timer should execute. +Most of the time, a Duration is used, and the helper library offers a [convenient syntax](https://openhab.github.io/openhab-jruby/main/index.html#durations), e.g. `30.minutes`, to create a Duration object. + +```ruby +logger.info "Motion was detected" +FrontPorchLight.on + +after 30.minutes do + logger.info "No more motion, turning off the light" + FrontPorchLight.off +end +``` + +::: + +:::: + Save and test that you see the log statement and the Item receive the `ON` command and 30 minutes later the second log statement and the `OFF` command. (hint, change the time passed to the timer to something smaller to make testing easier then change it back once things are working). Now all we are lacking is the ability to reschedule that timer if motion is seen again in the 30 minute period. + +:::: tabs + +::: tab JS + Looking back at the docs we find the [`cache`](/addons/automation/jsscripting/#cache). This is a map of key/value pairs that exists outside of the rule. Given that position it is able to share data between different rules or between runs of the same rule. @@ -171,18 +268,51 @@ Also notice a line was added to `lightsOut` to delete the entry in the `cache` w That will cause the rule to create a new timer the next time the rule runs. It could be coded to reuse the Timer instead which is an exercise for the reader. +::: + +::: tab JRuby + +In JRuby, an easy way to reschedule the same timer is done by providing a unique `id` to the timer. +This is called a [reentrant timer](https://openhab.github.io/openhab-jruby/main/OpenHAB/DSL.html#reentrant-timers). + +The most convenient ID to use is the Item object for which the timer is operating, but you can use anything as the ID, e.g. a String, a number, the rule uid, etc. + +```ruby +logger.info "Motion was detected" +FrontPorchLight.on + +after 30.minutes, id: FrontPorchLight do |timer| + logger.info "No more motion, turning off the light" + timer.id.off # We can do this because the Timer's id was set to the item object + # It is the same as FrontPorchLight.off +end +``` + +While it may seem straightforward, the JRuby helper library manages the timer and rescheduling internally to reduce the need for repetitive code. +Full flexibility to work and manipulate the timer is available for more advanced use. + +::: + +:::: + Save and test that the rule sends the on and off commands as described. ### But only if: Conditions Now we want the rule to only execute between sunset and 23:00. -Create a new Condition and choose ECMAScript 2021 as the language. +Create a new Condition and choose `ECMAScript` or `Ruby` as the language. +This doesn't have to be the same language as the one chosen for the Script Action above. Just like with the Script Action, the Helper Library is available by default. As discussed in the Blockly tutorial, the last line of a condition must evaluate to `true` or `false`. When `true` the rule will run, otherwise it's skipped. Sunset is available in an Item called `Sunset` and we need to test to see if `now` is between then and `23:00`. + +:::: tabs + +::: tab JS + In order to do that we need to convert the `Sunset` state to a JS-Joda date time. Looking at the docs for [`Item`](/addons/automation/jsscripting/#items) we see that the Helper Library `Item` Class will return the String representation of the Item's state by default. @@ -208,6 +338,30 @@ var endTime = time.ZonedDateTime.now().withHour(23).withMinute(0).withSecond(0). now.isAfter(sunset) && now.isBefore(endTime) ``` +::: + +::: tab JRuby + +```ruby +Time.now.between? Sunset.state.to_s.."23:00" + +# Alternative code: +# ZonedDateTime.now.between? Sunset.state.to_s.."23:00" +# Time.now.between? Sunset.state, Time.parse("23:00") # Two arguments of date/time objects +# Time.now >= Sunset.state && Time.now <= Time.parse("23:00") +# etc. +``` + +[#between?](https://openhab.github.io/openhab-jruby/main/OpenHAB/CoreExt/Between.html#between%3F-instance_method) helper method is available on all Ruby and Java date, time, and Duration objects. +It takes a Ruby [Range](https://docs.ruby-lang.org/en/master/Range.html) as its argument, or two Date/Time objects to perform an inclusive range comparison. + +Note that in JRuby, Date/Time and also DateTimeType objects (in the above example, the item's state) can all work interchangeably without any explicit conversions. +See [Working with Time](https://openhab.github.io/openhab-jruby/main/index.html#time) for more details. + +::: + +:::: + ## Advanced Topics ### Libraries @@ -216,6 +370,10 @@ Most of the languages support installation and importing of third party librarie Many of the languages will have special tools to download and install these libraries and there might be extra requirements to use them in openHAB. See the add-on's docs and the forum for details on the automation add-on chosen. +:::: tabs + +::: tab JS + For JS Scripting, `npm` is supported for the installation of third party libraries. Run the `npm` command from the `$OH_CONF/automation/js` folder. This will create a `node_modules` folder (if it doesn't already exist) and the library will be installed there. @@ -231,6 +389,52 @@ That keeps it from being modified or overwritten by `npm` when upgrading or inst There are several third party openHAB specific libraries on `npm` already. Search the forum for details. +::: + +::: tab JRuby + +You can install JRuby-compatible Gems from [rubygems.org](https://rubygems.org) by listing them in the JRuby Script add-on [configurations](https://openhab.github.io/openhab-jruby/main/index.html#configuration). +Alternatively, the inline bundler is available from inside your script. + +```ruby +gemfile do + source "https://rubygems.org" + gem "faraday", "~> 2.12", ">= 2.12.2" +end +``` + +[Personal libraries](https://openhab.github.io/openhab-jruby/main/index.html#shared-code) that contain your custom reusable constants, functions, data structures, and classes can be created and used inside your Script Actions and Conditions. +Simply save a `.rb` file that contain your code in `$OH_CONF/automation/ruby/lib/` folder, then `require` it in your script. + +For example, a personal library file in `$OH_CONF/automation/ruby/lib/mylibs.rb`: + +```ruby +DESTINATION_EMAIL = "myemail@gmail.com" + +def broadcast_alert(msg) + Notification.send msg, title: "Alert!" + things["mail:smtp:local"].send_mail(DESTINATION_EMAIL, "OpenHAB Alert", msg) +end +``` + +Usage in Script Action: + +```ruby +require "mylibs" + +if event.open? + after 30.minutes, id: event.item do + broadcast_alert "The Garage Door has been left open!" + end +else + timers.cancel(event.item) +end +``` + +::: + +:::: + ### Debugging All the same advice from Blockly applies here too.