From 16ac60e80081c83fed1a9cfc46043a4859436ba8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 00:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 00:00:19. --- .../20260512/20260512000002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512000002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512000002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512000002-Binary.backup create mode 100644 MikroMaster/20260512/20260512000002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512000002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512000002-Binary.backup b/MikroMaster/20260512/20260512000002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..593b5d36bd699ea170c21783df406e9c376954b2 GIT binary patch literal 302647 zcmV(cK>fe(sF8Cwo&*4G(ln+k+qNaqFP5Z9g#1gZHp(>@&3i#n(YY)G|)5Rq6&<)4zO zBi^}(yQb8x$f^Z1h$1u~YNz8UChfRIi4+_h!EJP(1lqL#za$yKbTg~^6hKs9E5uRd zBQMtJ`C#|W=DQF4zXlas@d=c8QsB7n+<>s>gqSRmbM{zoq-HLB-72!qx_je{^J|ML zo2Hs$l%A8{2>sTBsVgzyvVvsTi>)w6NyiK6wBY*iO*2QbGf71CTTro(PiV1SApV6^ zR|FW*^j9DVz-$Qv?gceFku4ecRx->r(^^I1an2VXYAOre5@Wp(uC3M>`S-W_j035S zkn{q^xI8lcirWDY7#Ci%&N)s_#T3RTP_guYY_`F@Sewdwd&H*RmBJwkGg}EAa{s8a zF^HN*HrX1#Iy}+jsL=gp_C4=8h+i%zFsFe6CZ!L9m)~e{V+gaoWCw1GvO8qDjV_F5 zeM1a-?Twzl{3xC}sjMbKqxIGkuJ;|V{h!&($lFV+(qg`Y4G`whTi?w!eCSAX?8K|^H53W{qaSPd zd0jRefAwEjo_>Xgk|yM-Tu04TfK=I~U4zc2KNt3N%RSHXw%9~r7c%IPg@Z;nZ^H|T zo4_l`Ca9v`U8LKhzm zvlMot`zz`3eJlg&nCZpIjH)e=@|Ifpwui0GP8)}*2JyLsCn$Pd9=#y(QQ)gkgKs$+ zOb?1VN||?XvxXhyf666`RzCW{yT{u$Uz1C7x?R++5nVZ%EQO1-tu6&$Bf|E$qSm~^ z0t3rVP7YKVi_5VmeN#q9g0vT=%MK;>$Ep{>R@ahOytQRgaC#;<-DAeS3xQ{R z!Mbg;cg4&+7>$5mI}x=a&#&euT&`)|=@$^!w%tBiX2r$+`SB0yE?n=%Xc=)K%)1Qr zuEzFA1l;fss(?v)DFrr_J+0#U=$6di6s5?#kpp1r0b* z#|ffkpiFJ3p#%3NJBNWYt#BQ!h>{rrM!9%D+F1SZlm%s2o~07Kcr&1C`^;v|wcYHD zD-I?&tnIEF`Scl8P_trfd>Cy~I@77A?ZSCWStEYjxc2rxaSi~hr|10L{d|B@Z3w{2 z?EN$sGC_oenVdfm{vk9`deG3>Y~rcQZs&Ge&A*A%6%1$46-JhzA%gWvS!6vL=i_$` z_bTb*An0y)jXTb`jK)(%FDhJMx)z(!EMyYorm~UEmg};*g7i&o0=Cb_W1`^FQhYX= z*xYd=zZBMzdqDmT|C5aOd#Bx}YsU=N9S&X^V^Vz`@wQ*);ghXbl*}^_m?$iIbVBBX zU*Be<0|GJC3)9lfWsq+i8jY}lMdkHus#CQDdyGG6fQ$Jow)y8{>CKtph%!5*PnDIT z!G0~F4O4l0n?(XD&h{&TlR|`0ZtU!KaWk1I8?7f^dOQ02Dbt_=jpi_7KI9vrzJV90 zo(&x}^Z0;Ag-E=x^^u%laG7l92mkB;xLe$yMIqu@V^m2vpF2Km;L*cE+wKMGM7xzH zYcrF8tyfOYM5N!c0{q*Ed>31esmQs+QbL}w5QL!n*s;rWRxoC5G+>F*MfZaXJTov7 z!2OOZLZ#p#G?2oeXN`^^L>;fPQ=Y}0S$@U#k>!tHW#1WC0*$!Xy-PVS9Kbe7CY`4z z3SkH&i&|i{GLuI2h-(5vuRNVkq@#=t6D>-1J;esQvYeU~?Se*k$yM`2`~5tbAFzUo z|4nC~I6I6r9Z-OR6hKn8GgJk*%^gWj4E4{1FO<7-^`7w^Nwe|RR`6*E9DHcgvRHzNtA?0!$1Az@ z92y;OyVsD{wLpE5SvO*00nYFiiVJ8P1ii5JxH*;sg+NIV`>s%8ko`gTXWB>~vIc*~mRWKMyxuH@}aBy+xhhLakA9+tb%~m5$kJE+V zdcnJJAW7fRN_I9UrA{9VA7tA6gE5!+i*W3Hdu*d#?Vupo#w{|hz0W5twuo}bt3Xr@ z#DY(Zl`x|$46KLQiRx0Mq8@}J1+^^s;uh+Kol<~9oi4E2TxvEAPGwaZfDTPZI$_l= zNT+b+V!vuxk*FFmJD6@|aw&%?q4d=D-+F{2gqNzvIwIM=4aLX^d36%2w(@Kns>)Fr zo4JNGkhbiQVc?pio9i-p-;vI+VDm~{|5(v3(|?izPMO6w$}1a4tWsPztlDe9CSO(( zhO<$P?aGw@>8&0l>}zKpNskAx{Z^B#X=p+ERX!NA4C254&PLkr-qR}DG)s9rogB?r zWamhK3dU_m*l0w``U;^>sJ(Z{-)mDBvq=AgENgTO=seL=a8T5EicZ>|dI!JN{JwZh zF!%-kZOz zNe5uHAm+Ye*hh@xPXCUJL%m*)5A7`FrcDb*|LqoJi?;m}ec(ZEdIijNIO1>9??FSA zEc%pXW5@&-5g(K`^jWtmHpPbJ%?gN|jP62`C?Ql2`tRGuqwQR|kwH4H(-Vd?PjBj0 zImQW?vF8+u#N6mF_(&#}6$I~IX>^UOyYGiffq}*yRnh|r>qS2G>XVJqp>LrISXz<= zu%f*zEheL#@C;u>Y$8ttg?paXDgxxWQs2J57zRT$E;rCvq<1`HX`MeDIqT!)^B%%= z7vwvE?26oE*wTL*`%k^0kv}-dr!wI=lWz?>sq~Pg-4GuMlIx5v{sF!2D4na|zhMx$ z#d=F9&HZoi; zQQM#8m`F2U@(tTe$gIG8>XTL$CkO!1fVA!H!|D1+<$F;eg8W=%x^CzM)t4RYlFFCd z(y=hj`J;gn?(W*xchWh62^}KlH86n4KZkHTX@32k{gnC^`Dnv_)8*N#oVA@U51cMY zrD62}Y9oxH9WJm?Man1#UukfID+!P*MN8xi_2GC~!hyl`cc)_}mWvp0)SMr$gQJ_q zY#srv8eTDXg>|-gX2I2#txbSmUm%DUj(8gD*pbxb2VF$LX^p}j3AYsJ`X@w!fGwIOtC&gF zAc$8uy-DKzjEqS(VFCXh09Nc{r6~0tGQz{|l;3&gHM4~!lmtxzQe%ezSU}MNEFsLk zp9DL;Yuegx5VC|(pVxtBJtV(`m0J#P1Gjw9?O+o~kFX0l8hUa9&c?;!t8%S8Qz4f)LvbvM#p>WAC}R zAbz34LLvk< zCAfhi`l*~(&coI@X=h#)xiZEYZ{HCZ6T)g4y8M@@AgV{N7)6>aZC(>qB-^moHzy4q^n)HfaCaoNW7Z;y96WEQr5C0ge?_2M4L66y8PilI^D^viD(#KLy^Y_@v)v|yH;`*-tT}ojs@7B{7W;S z1W&fY&V%)l+S>57?4G(Lcy_vaoGW6sd(ya(;C0)Jb&s9NgKNX3ak!D zuC_YVmMb~khn)Eu6&>9XGX&jS@ynZ5-{;fKBGVmO=PHrIp~!?Ly)BJ1TUS1Ep+OC* zU!rJNuN+dA)-VhT*P2$0X1a~|osJQ%_#9x(Z{xP0X^Mdt`w@ZJ@3Zxha2R`xZe41X zBB>JxkuzV6EQxA;iZ6ARtSAeL@jsL1j#7WI;$l{z(Trd&`K;7RH5yu*FM~2(atX?# z5(FRsJ((K(`-`6tQ(-mHk>Vt^P81Mq#bS#+t;>bkF>H;ga1NO1hJo9jK04*nXR4x& zt+t3p>iXj2E|xkp9j*l0x zd&`2lnA7kU&+)PbGBPc5RmNHCf7(aD^$Mxl3R=TE5+wasa2NDc(ZU&3Z26BOGTSV! zZRM^(a;fNo_NAX3&@a5BF$w#$2t4Qk?=)}VxuqqZ(e^-1;^91n766C^c`!GSJmqg} zv+RIRn>gsw7V6QFF3kM%qLe}F+r=aD2Hpevq^K$oKAzm;tV#jMk=4ys-_UeD3aFax{mmC&Dt9&!$vr+Q>Oqg zSH<{~W};Q0f6srVi*jlRF<%kE{IL}ugf00B+B7UN59)kJJp5Ve%@~O8=ax_>r(1x~ z{NAf}73v-iA71>7;5y}k%D=-s<1=cwlBn($AapY~5f<>}ag##zjFfpz{-QYia&5jG zH_dZ)Hm`13ghT!sC5M<(>gTyK3OoKLK^0CKZ+xa})A_80B3P8D1C!KXC@IoSL}lht zWR)ixg4Ag%GoZ96lV;z#3D9KW!UQ|X<+mQ=3_g!`G1$8tO8f=;QT86-dXtidkiDKD zDkzPmHr$gl@aH0EfCe*!R3ylT|N8<(^St@AM?YgT6B$Brkv;k*7r*7>?j#WsxmC1f z!$qmPo2W4O<(Be5-vCh>8-(XT{d zYRG2!88`i(EPp)?@)y1kh0bBiqtKkLUDf$^g9&`WI+}tBCIL|vFah66eg<1@Y`7!pJ{)dTFGA8v0*uC?hB{JIys5mcAIB_FI_y)n&sm)^llzp}=sY+fWV>~?6|Ia+msluC$s)AeFU_d+jSe|fBMauK|OgJpu zJOPuvvR+hzYRe~KuJ9E`rm%}!^g5P>#yEc|NS$`t6Z4%>ID}0aaF?QbNyp^k zNpI)N29Mt6jYA$SB1wQf{o^MwDQWH{zeNvrLjP^Y$%hP56A=awRs^%Mnao`^5hh!s ziA>msz@S8}OY{`GCN`xqo+5JbLb2OC8o~KR;adJfkx@E7ydh(d7?tNIp$Yw#sfBmN zy3_=JED~v7p8Nl5*&Iy+*`GStYfz2z)L`H27MSV8=zM{iU%n~w!lfQ)uKgp8-bS&N ze4YYX1W%|L1E-*ArL_fdYX%AcEtSs3;RDhtr6wI`;>9=XXj~dt+srE|LxpCcDonu@Po>Jdn>0SJ8Yy_ zy3Yy<4a@dn05YWdQmwF0p>VFacOP(kAQ{%TU-t)r>Usf`&5hLyRMe+-Dc|+HRD49E z-+Mock-cb_HZc&b7ex?IuH(;tm4$P<^no-fIJmWGh>1?DKq;!gw;yc?ICw3ekm|Gf z{u8!Cm(+w6Qr7x8FpnJ&us{DoWV_+3>${Ub1&%K{O5DMn7Mq$dAASC(EF-dNCEBW~sos`lrz1|R-qTu3g#LYs*bhlAF4r|F$?8Ja z;`v=lKplC2{`Kp0ksiwBCfdQ~tf*kp zOQHN9T-1#cEayzZcM-)5DYzlCd0!$+Mn;O@Q4;cY+xYacuR z!M*fQ)na`UU`F$wMm7-R1-Ce`yH-4@GKaP0-a+i&GZ;T3Wk!BBh@BgH0UVj%WyuUs=vuEAP6J<%15g+{M6eTO5jm{F zv3_m6ayujob{`uE_!2IC`&B+h$7lPI$gQ<=ypn}-!ARiK%gX;OQIgO0NiNx9tWvH;a~Hk~8ZjW`cM8CuQ@l>aM| zh(J~qD=sIVCNLugbnl#c*|7t$W=O42F{f{-Zu03Z6fz;?Sjv@Dt6&8>9-wni4*}n0 zh)+Sjj|#k*{TEf2x)&k7y^cnXrqe!B-lr@cuyrckYq&<|#76koEMZyS!JJ}AtfBBg zCoHhRJms@5)n_enw(N7FVd~$ufzzp-%lrJWPEg>60JMBsD^36UAmyn6rB^(ASp*KK z$6iyL@Z72O>l$(5M%mL)WRO%)8If1Fp{P<$ zK4&9ojuIMcIcdIoN3_+_mFpBzYhL|f8T%;GaAwI`&)FM794f?}%Bfc0qFsQZcsE@E zV5{t1n}i@0Tpz(~i-KiBM^lOedrW~G#|h^nx^!qk$GPTJ9%OvkPXL+9Szx3?_{6Tc zc0*xe!>2m?qf;~M)?->D^{og)5y-%iv&Nc7*bFIRD)vX|rbg<1GHy)rp6QKbwOQP3 zuTqGbElVZ2BDugz*mZjq(q3yB+M`eSVeXz=Ycrgz$&<q=;tib)M zo%LX&u&qWpL_JHaY?B)14$0Up0dxq$>=qe~ydDX&*VhPiZ|UX`26=}{LI$a}Y|wrZ zwf=#|4COSjbfolQ;?>ZbhY=Ko{2y>a_PeyEAU~4-4>_RI8?ojN)vD`~3M3d&cx3WB z+Gpss*2QGq3^#)`8`Wmh}^r*=IDW?{SWkhvQ zWhU-=b)$m?b6VuRkpvkJzirHvTI?h*V!|azm(Y*U;DJ!BX8`a0no}D^=w>8vzsO>g zJW^7s7k^OI476h_ih3}_L+435JNVp~cQt^o;QA(3px(|oEiyfVPkmRYkbh|IxKf9Y zDTRHKOK}c7l3Hj${IwMk$7MJgAD248@e%F7Y1oK5Gm)xg7uVGEaf0btjmM$WT}%u8 zG}Evcy(sDtcC7|W#$LZG`!RP&@?cPb z5-vx8f-uxgq$T%}$kA(|J3Y9jl!GY#j7L%{jD{8@&=auDlP4yUNckjrI7Fl4!6amB z;FA3wy?l#E2eV+42-llLScJ;~u1_v)Sm-*sR+B-K&BtM;1~e!ScrLKM<2|E=(Z3xu zro8C5`bhTS$PY;$lVjRX@A+a4smVkc2y!vev9)J$Vh+8Xjk}d%E&X8PT<77WOoC9rtq6IzRWWz zAui$y4Gl}1Yjzv&TAxz7gM&gb*%{rQpcrS~f+e7>Ha#h24Qc~0%HY9JqYnZfe>%;i{3#3il2_vK!hBt4nq_DYJTa-qby2o-@=KU zzB#!fTB4VL!v6|`wEYhFM+sy_lu$2_uyW|c$WG`-q$j{fI@N%JS{K}H3OYhf#4L>l zQU40YmXa;YF2>?G{k1so)jg#-tx$}aL|#z2@|aEDe++(I>u9sax@<2`KvP1GD8ER1 zMT-N#(cv6FiR?sLpm)8%)rNOZ%@#*r#P)%D!Q*J#c?tc54r;cPtA-$TrMm+_FB*`4 z4=?$oaos*=O`4xATcnYo_C^QbtwyIHy&7HPMJPt`>JuLuGVEj{oo3f{RA*^mO$_hV zvvORkFTgC+rcO5ok|Ex^v4?!Z_f_tx?WTQuHvV*Y{%EQI`mZ0}dvr&yCsWWZP7}UeCHmrMS-k>^z+iJ zlg5qlv1Mf$&cK3W*Th`+lms5Clx6j;ZrlEDW6Xo!tB8tRyKnYnvge0V;^R)%z~)*c z!@+!)qa`5C7blJhE|9;lEer-2Ctv(dA&?Fs`0Ps-Ta&c|{%ScXU<_bdEKth{8}q!d z&EzRP6+9WCTxktaWB|xfT-#s;$HHxx;Umq44$%v{yI0qfAcd(dl;mW9^^tJc1;L|( zc|vy%B;o-gbpCwj<<2XQ)ttW@(#}&>a=^u=p~CEc#d|YTjCtbLT%#IYd*-j5G&?=@ z>H)D>)uzw2CwGfbyNIo&&~Q7eh-TdMf}Z|!G|y;I05nLOG^@l8@%&>(p-}{&xY(04 zWIc!gv-?fJIXL)Y=Rwx7CzDG0MhDiX`dwyv;xIa#gFE6SHef=%3L+}-I3W^zQ_&)M zE~yddV444q{h8vKu~w65ahI<(*oPDAe;FHAXK>r*tC*SepVfen$yZZ~%a6%3I<{J9 zX-@2zZYCVU@Gx;Pt97o`2VHc*Pks4g6Dp9c5{=uVQ)~1WmW1=jUa$a$WL$;XE-KlU z3AzPqlyO_osy>#*)zu#8GU3D@#BQktAD&5#e8hW6kRp)rg&Z=#n)e?1yRJ^#t5@Wg z_l1@Y45<4ij4aX0b8_L9rU?MDeAn56J`7$pVUN*GrS z#5uI72%CabKHj)&^>ATv3ABh5@&YyPpXGJy)gjfX6H^b-mqFl4)O)W$dE^O42iY#l z*YfSkK=)m)rDRQ5-{wN?R!-s+2#xP4&!mZMqk)asWDSPx3w+f7KV&(=dS(dR4_nO- zSXgK0H%xZ=N)$JmU>mcQ|mGc2CQ#YYbDEfqXAC_ z;;IR9q*5KE{uNaDZw|l^+VzQ~V8P=R0nDA5nUF8L;)wxP9St2RkBO2!wh|aM0|4;u zGv=JLf+bP}cpm=icY`G&LP)ZIz%KqgH5PT#;Og7%`7-TE+nrhdwyUqQ;#ZibQagV| zp~_(KOTx;!i#3fUX)}_0-b-UK*@exY-|it z>tUNn*PLVT!@siWO0<(Iw93l;8GjBc88Q=Cf#SVTO<4GIYIz;6+C+c!Uj!KS6{>LA z5Ys=Y-k}(>#1cu?lsg#EQcxn6gYq^Ch7;s|tmacf9EvYHIZogAX4P&gGUdMR)$eibV9p?6Ucu_{8#}J|U^b`1=Xrua?MVyN(G}u$oz* zj{*a!mJu){^;}@0S9aWuPb|vLPZv|?|AX1RkH!F?VrkR+=N7S+_Sl_f#+E#=U*E^t z4`Q=@p-LrndGJY)93in2$(W91tmhS|=52j1zPNAm6i#R{0A37I0rpaePL91^rN8tg z%Ygj67W=CVVLMfCvrF$A2`O6VPVl9|?HijdyO^O2oXs;F^4L)8{@sazz>YRTYZq{` z8=hQVdr$?q_~{v~)TnnZ)HikT~JqgSFx5;EX+C zXgCy4>3CYxYknNLMOy=LoAsvjOH((8lF@C;TMD8QMEKMXW=QW{hXZ3oiWXc;mcmZK z5pDfM>Z44?BG&4uNEbQAIMD=vZk=`~J80?rq-0nCBJWYyG<42>6}~q|z#jjI_8EZo zTG1pN+)peohXtb)vQzL^Dc zr4><>U`T`QoDHPX*hRr=`12&K=;qUyZvrv+cZ(PSB9qzNNYN_M-O>k5_9yoI4knbV zm@cr~job5#fp3omnMzxlEc4Uzc# zVSJWle{yrm{JkKk5B_Trlf=)?C-L9g9;pdoSeyF_tM^AGl{-Aa?6P3=3!2yY9&9Fk z=$x~L)(1~Os<}iq6(^*FTCy9G!!fPkK!s?5fVVCIm`q(pK?|zL=8vbWK=;W41vfvF zY^3L$#HZ>{Mv`E+mDjMQ$eKh3x3 z?fW)NX_$d(p2YzmAk$!B<4OA+5AgY=24FX|DPuDGoXY- z@ZK3kr^DM3=vNyz|EqbaI@IkbjCNqsgV5K{-*-(-D9YF|ks#x$Znq^B-Rqv#?mzXf zSD%McI$Yg({$_fz!WrLg63fZXQSol5skBr0)!XHpE};ot{?Ct+^qzt@(vvQFma>H7+Cw*Q#U0^| zA}+>e&i1kwwV;3c@J&cqx4Lt#yI(hofL? ztVsSYvm{08?oKA^(j=sbh>sc0MQc<@}<2J*Kd~x|}xE zq5-}U#Pi*6%VXYAxyeAthV;Uui}RmhXjCZr!;jTlXAPSYdx|#hBJ+}}>~DvQg!oQI zCHS@^83YmK6|E4+@@`J($*FXzr?53ppfaw>QRys*N;F510;3yk9M5bNPAu@a(%%>t za9Ijwc9X#45Lk^ua=76yFe5P>16L7fSdFahbH3>7V-@#{orrF;S_}vg<0lkiAii29 zRZr(=isgy|hkWLShSuG8(p9S0M-Y=}H*da7jRJxtb}Be)B1jvlz*g%=E67mF-&eI5 zPRKrM=NHL(#D4jReFaEs87Plg91!Va7n7lKnoqSOU*0-ZM7TDgIQyN3bp)d?OgU80 zqN=DIj2z?msXVsZd=vceq@KZ)ZC+!_y#6LnFU&wJ%CO$5!PV+l;K2%5mvBDnqpuK1nFhH?WWQwK|>D+gL(-Gy5P0i zcfc%_~o>RX??(>mjL>J_2 z>cPdO29F{9>-n))JPNj(?-jGjfx6JEkA0J4Qi%ldfJ+rNb6;>5Fha_3=qFqx3?B~x zqHxo~Dd#_c=;85c`Y2K%{Lu?;H}$sF>a0~kDePmqPIQt`YF|<5ZRWDQB0v+wLmg^d zvG5FC5m@;oB*`@HH#J&}a(SN6?;x=pF}?K8fBGElsz!7>BiW9`M?>*;vJR|54g_(h z%dA?{jIpC_w%Pa5mrH>tC+LE@Nmn@OO~$MsGAnRvTImy^1^b!annN5q;>Swo;C+hQ z%4n087Y}0d_w7G*{r%KRwR|38@9cQv!eB_aEwQGX=?U;OmU6;qlmDwnffhh?}z}adFuY!r|!tEVOJmn*TUVE!_ zf4O2B=RE^ULs##A?yBR^7p<0d>A}Szq7v^zUXC5~E$!SjuF+@@Hn-XNa$4+Dyg(Uu znaPlj8R2>^hY3YB|5S=}G9N+D3TbyZHZKiLNKBz0AR?D2)-0m-NqK2y582;SEQ7T; z3m=K$&U%#Uf=PJ{>(Rbjn-W?Z%O;*kY7O^+U(kR#-a=iLNA@S7feX$AjpNFq z{S4?e7w~JwzSD>CJ25D{?92=N;kNum@P*qi7m^3B5s>R`ZxZSG+s%_MLt-1WyF0*B zk~{;BXt;R^M98T7u!IcAD#`P$Td5|U3W#xQ?zjb=`M`~f?aE1RB)NjCH zY!FidVXAkxU;u-Ft74|8k-jIrTt+wrcG3}02LrDFeQTX9{m^!wK#)0tgYuC*3JLY} ze8`?Pr|cLwkN;3_(=@O#ZbWU#<7Q|~j=2UXM1;|EuH}cV)Z|IowLG*Zb=Zl}fwh)( zw3hSQ@ECtUituQN^Zwf#j0{E{EhG&i&xc|=ID)kTP5rBlc+O^8-rEgWDr^2amh!G|0 zB)X^aFO?Ngu3y~lA4L4G0pq#$RXCIm;Ow}c7GY8yWcmF8Vi-NTpP(q1sBnBBmH-Iu z8!tFNm_wTK0sIG6&X&6B78%nqWLsbOEx(e z0`+3aq#}?sO{|V&$DeY*4kL2qTo$Mge=8(LMq-fb*`DHCsnMCjHyRk>unywQQ)*o~j-HcwFc14_o*}P$;mhZPIgKX|1 zGmFP&t$j$eUX(|T-lQ&dk9a|U)$;MFmq(zAlJJv#&O)W&AKEr^xs!$ZUJU+-TEYb4 zwtI42*QREKi(kf*(*2Pkk&yrD@ikKWqW05kXlUg;odmrWmQ;-P;OfBz3aKHAL}xN) zz90};tTz@gRfHDSJP$L3NB-B9tWYq_kW`1w0i#7HG#f9&;wm#ZKb~?*G@|r@gmuQ4 z1$W(JR@g&npVzkvV?@b@XFMV;DvNt+lV@FW=pLskK)xR(iC(i+eWn&ZhO-tTKBI#} zNZKaL+JV2mU@l~uCT&I;Vr*NQfN>CW&afy2E&&Z8q84)CH=9@7Fp$K<8J+^^EOhfs z*8K_MI>fcIkYk$~Mn12MZ(byVrJhSC;*_&Bn%P@IS=;~+-oGSCO^;)_%e*idM(;-3 zSu+xKknepCU&MwP?3-q|G4ubZ;rE5)%#QN_l0>PYxQcz|RYi^_9TW15;mc3;@Pd!p zbHgk!$&tCPmRd;#V%@r*Y$@UrQsKv#i~w@Lpc5i~$LID;%B0}k9TivMvz3IyOJ|)~ zrVo%p1PM#%QKX;3MbVSxPQc{lD?!$j0S8{@2Q~>%}ho~p*#lvtfEG z9?<0h_kmrK0{dDW&wdtzQ6=tL%tB-FHK^CfICWa-J7ZR@vkx6<<@8nz-h&$ruO|XJ z%-8Fy*_hXqRB7$`UKJ~yV{02|rqrn)HzOmhM>SM`%K$$q)3f7<_rwg_w$Fv~tqr0E|0Ei<^=wlrS6|(?!e-akG zuAY{ZlH^pED^CqEgZ%BKDrMo8w6QITRp&#tRtiljF|y@V*c?Q`Lm4=xfbIhux$9)Q zr5s=@yFzIbR{;rv^f*7oh~OHPV5MN4coj*F`z2zo8M;8B#S2AMatIFIsM%L3)*L%^ zf*eCWL5}2JGWlG9waY4nK*K?9;SI&*8XY7mAoZP2N9;PnPyboyk1xn0llo;5%6cEB zoPOB4fu+?^@NV)S45(vbVX7TRCPJV0ZeyUDzT80PvZ2Bud741koYNqmizDN@Zci={ zRyMa|E1LnHpLDSJuzQo>q=B6Dy(Yzwx47XPa$Nau9yI{FjNVe_e>YKL@9xUoTijX1 zMrAFBf^c)l<-!eYkHDjxLzWd5-R}d=^awebd5Cm+ z8(1i%sbGhJzi9G{)OsGqrWcFUnf+Ax=LL7M)`|&xgT-bM>-QQ0jHE3M?>wa;WAphm zXfnQk38xgE;4tf0#kA|rZtYtp5(Pyu{2R1=$&iuQIQ_g0(X8PyA)h`Hxe9WjkBGv- ztPes^xgLAh_H4%Zzf){swzxb0GnSe7W)>t~qaY9+Xx=4flT4--jB@&ZV$R%8Kz-JdU;YR_`XhIX7R?EJW%+YPgM-0M(U)fV}X4RT~}F3tlxy6@?S51O0LjbgdqkJZ|2Uw=GQE93B*ciU>N{P1psTR#2_d zWH>?GN|Dp3opO(3>0}TL6~cGqrWH_3>q3`DzfeA2g!@Y?VTbX@6c}~Sw``Vm&=E6l zWO8~&fpQZP_G&;0IkX8}O$htlg(LWV+)P?=@}7pY`vJF%R)G672~I=dfhMO05N?0c z?}-={QAW2j;)+qt{y36GS*avjAQqx;y4|pr8n1+MK`x3_PBUu+cB`b*oj%6HeuIQ_ z1#;vMG}QjQf%X8Qb<3hkOs1L^p_?3RVmB}@7L?p=enT8BzS_2QK80&D&p`S{ zSUQp?rAS%&pb}!LGfzuXQ3N9{PNk@S#G#vakJsPlN<>9Zm0lR;blc_eq;e< zKAccAQwiARC75d<6ZzwU1qgQGlHWI(d4s2 z=ugtxF^LEG_ZZ8NOx5N>4Hx9|T%L#~2E$k=7DMHG@g{PZx+PqG$2>oYT&OUz#|xaD z-MPXiTczo3U<L62fb>?b^8l!oet3Saj}d+)1VvW5X=5CP`%$#tn=90i9>AyoT+AJIq?gbtm5h^|b@5Z&}AdAN%=UW)aG)!-i{-DV;|B_UrQ8075)5~#RPPd`udNu$>`nNp^Ys;YOJSV zuH0_rvpY`>h#;FRZUFy30KnC0JUdx^fg}0eCFiQi3m4C+eR*d$WvB3RADy&4Z;Ym8 zM|mEbT3I19PZVPA)h1D_iqToKv8AZ)Yi?1A#G;s1Ncwp2PTFiu!6V6K2VF^yus zT_nJUbZDv1d^Q8d)WY?T*WD5HB^O?&T|$yO7=uR*amBY>Yi_702*_)QgJ2)bXb(gQ zy^|fQ$PPApX8r!~lbmqJqvh~i<-vo=#>Mx8;b*kuB?I-&cj;wQDh5(R`KmlM?KY27 zPxu(uVwcYk0kwc_qA|uuvmmd`CVFK`EN2dC#ODvvdBosvV$!`Lb`QMqgtuDn6+f@Y z(KKVjz9{Plf6H$c#EgmXqKyxTvR(nKq_C;?5XIvJ3i+4Qe=Uko`EV6>N zA}Jc&z&^R~p$ZzfU*wTfR4>!#5qX=50h2d1J1Xo%{g>|Nk_Llu09dE(CVtNAV6Jyn zhLBM%iZ`*SkSJ2?SpyK83cP@oiF=GwRHnrhp)cv^qPN&%769nXHolx2{fx3lWTmfg#hW#il+4*V}rhyauS$$8b;$T z&29c6QM$5=Di}Ig=6MZF!70(9h?Tm>ZzkNhw1bPZ?<;?Gjl>1g(?SHNgk6F!1f=Sx z4=??0drhlc-N)GZ6pFT=6n5uv+jVzzd(Z2aAnjK=BV-BPit@ptsk~nk86^f{FfvJa z@9m2~HJ@vdf=oKB7$h2*fes~hiZeCf@8VY@vm$-r!OeaSbF}6^`df-)A11|D*M*=|K81f5JlZF5>q$-obR{u`>Cn)LN zUq{q@P{$M%XQyP-%Zt3S??E;|?aMw%BY=eldF1t(toq|WMNt{|e6S~L}jY-iO5P8>XfN_PV^kSI;&`G^b>(GAN%-T0Qu4uu={hJKZ zS@lW8NDJc3{x}7%O~7x<%b8rp+csVrfum8&(-D0U#1OiE$O3JT7^8w$gdRj4lmnWq+v|Q(Q7x#W%I@;jn{mfZt+g$qgJ@@Dv;7Uv-w|SA?A0o`$l~&I5c*@F zztOXi43?P@(KG>u5w~xX#K=Vb^O2!6)OWmBs3pXdC#U>PbwT}Lt!)5$7{RYk@D-jZ zrgo;-I_)=`d2|Y*DMRm#5YOD{!2KqKff|f~ut&~w);t)i%vJ=jG_y|4A3xN$>~aQr z-UR!rMUOJ7Iwmpy!~Dn5JJs%DdrQ`!iK81`;8NEhqjuzR(9fy>NZvfoF~zTVX&M~H zAUWUeVgw#r&tjWkv4-t)T;hN{z8oCsxe$G# zym1{HkJS3%{$RYIV>wKh^^}WMJfn-_m0h7(4zo0{pl31)1cc1zdkBjSMS?)6v<+<`fy@tLdY?SB46K?6wpk~I8w4I0x6!jBV9kd-7q zBTROFUGdx|#ZXT1!e&*?!a5P0cqxP6(L#+uM&Jks!^FchS6_Y&Z);M@ugSh0#<#$c zpEWmZPPX*8m!63`73ai-@bfDpxxERr-nr>lKp{_bjlT*dfZGoo5C8P(OK(r>NY}RK z;O^%B_&hW&88#@Fk9Z&Y$WzJnf*AvCPctd%Q}2^24S_=~mKW2%T4Duab6{PrlXja_ zX)Msxe$*H9WRT318_kTsPds#OcQ3i9IX@vHFQ`BaPI6VZZaHXLjw+nt6otwfVn!bx zSMY7$tM8&&k211hl|pUU9KflLF~|6r2dB;vJ-|BIQanCFM_(2}hi({VNiD0l<&)y5 z?#{jW@bP*}ilhKV?9znfaV}Y?*+l_Su}QMJv5zXPoxeJVr~4Frn``NeRi)@`Q2pNJ zq2|gb#v5+bzAB8n&m7t?(pAhT9n)cqv`k!C1r{X1D*{b*?nDZf>yh9@X9MAKwCo$` zrTgSGYmBX3xtGe(1L$X{AB()gt~%gx{B3i?Qs(}$oBK7^7MnQA{}^TccJNyjyaJ^0 z))BRIS%-zZ^)2pJ=p4Kxw%r)JcK*SL_aX?=W8!k^(4SvP&wkR+U zG2^JjdsUekUCUYU8tYH`|L1aLHo|Nyh#v|6HzzTLw3H@e({R_De|ro^mk5^FLeKBS za*}xdJ<7>!@tYzYzW$jhQ}DUig745)1!TPC+Cv!)=jDnyv*32Z;744klex6Q`(ZLQ z@TCAafb-)GQ;@Sm*7BB33)SFHfmg*_WZ?5;09)VlU=52EFPi5oX-ALkP`lZJN zB_Wt?VX62yohz_7cLSaDxJjRG1bhsaq+x)UWS_V0F zt)H)MA;d?fEJWsz;!u6b0#C*=cil%<(n5u}?fU2f&C29V)8sb}C7JQGcfCXC{>W}l zniP8FuKvH2j&sbnv;oFF+M_KkFEh^C?P^6h9&-@lrSpE5r5R1rc1~T`1V60mHGMyoYQ9(V4ib{F(OR$=-Z3}*+_AnE6 z(cmoa+%@jhx7~Zx#~6pP%R56p6!0ugVdk< zyLlHn7TL+G%AaLm*C6}AbmXio{Y=yt)o-Lwn3X$+kRq2_({c1~VbQn;D2w9~up;Y{ zMDMjumh}98AYbwAK)14d8^(eX+?)Ye^GEQwXC%SrN!mp_&wf?ILxDvl&X}F*X^;Uo zG60m0NgWVC6xxLRjKs=2)%ppn@uV<9)a@Fg^_-1%GF_J4vpFvG;3=#?yP+Z@BtL9^^yQ+$Ab;7J~ zRdxj@3Af$gv!I&+3ppf;MekcY0Ql50p{(M94^;%fy>BhO|FmLzG&IKveCCZ4(+o6d zMSIL%0ES|R!omsC(Lb~%-)b-!nMJXGDI6BDzqirE9^F2)DE&wB|`?5l7S; zj=|bqClM3AK>hMF-)26nBC5dp{45XoWOt#HqG4sxl%vTbBRo;$-fU3UilZKSuRQIb zsHK$nRUEgmxna9wxMV0f%F^kfEV09Beej$`v7eXHX;%HGlXab4kOU!HG2A**dcyCA zjkjf~wQtCN>P|wZPNw;z_7bFUqoyX`@D49zNGwGASj%e!BBnSbOUD9aNlb1kY#Ydp zwdj_Je9xefuwr_yLK$#0>1EmDPR->3x+qw!xaP6OofO;!y22w?4{`26g-DE#<;@=4 zTc0Z*wCh%V9MBcDXdL$bx~2S=#j z+&Ht1o%N5HU@3EC;CO+$6AHv8zlkhP+t>^Pxcz`W8=EIKpE|ug{+o8*H*RcKF{h_) zKu_`@8=R7&&}7JGUSX>f!ZX(nrf)kGN;1(-@G`7XQ47mG`)3KV9wgB|G}a7&F!PKX zG?xi>)z^Yw5MII)d0HB$&E`?Ig}?_$gS?Fs43CTG4;276tU#;wuzPS=^b9YYiqE6! zGr%s;6X+jFYqOWWXRR)<{u)qjzqOLml_5kd1cPoLFRoOM(luE1hkN0b;fXfbOMaOU ztAAH-r88!X*%HGZT)oMQYuXQCf5Xb5k0FI42wqJyW??~%)VZ?wjM13?KxHk?E3r8f zO3PQUwN@SmSwePR6bWCYL@S^Y^1=t85yoF8RFO-PR^^?<7K4rSm2`)V;J{Nq1TH#e z?KeN%2KLkDmV&jjFpc2uyu^xi8|~>fvM2{<9rLPvk<#fR#!qI$KHS4^=GQr0E`hSN zQy%;qgS-{dHH6iUI*FvI@XBbU4TwWP{c5*{~twB2Y^??17XT&j&snnfOgjq$@kO= zV3O%O%|bGvB<)P}efaNefu{y9vg5`@ijZLUo<9j=kj(>X89;UBaQbTDfg zdReMX_w^}Mbi=}QQ~b_LoHGpfau@(#C=h0IlNVvYvsrGu*?mO0@})>Pv)|3_&16F-z_Hl!Ac`8bcyvN$yC1e6Gy44$H*;X3*y z?tdFn@mIeucrz$4#zD{1p_J#LO2173op-x6p6U`VNvGOC8~x&d9I#K%HDZ#ziHE?_ zn%}%M;>$nk*ilnxUd2~KQutLd1d_Tpv!nYtneC1i4DT|6!IoO$O}0Ji#Ncc(#|@i_$g zm)ol#)z(kiqz4VK>vL@g;Tz_BOrt`ID=uh-(j>$gJyp+dwUF9(OSUfmgnRRdJJa&2 z_!w%ai1NFBBuMqoJ)i9UcZXo*rF2aQ0ef<6iU*=L)^?D9O1&^n$oDj zIr77gZ_fx9)N|FQfDPGs-{=4%q!!quY_3bmvuLZ!`3Zsk3zazYpu46ZiOSWGybOe@ z^I^}WUwV=pjhB8IRAgo;I+qKJ%$G<$%z)=^$qs3>pbxeSkkC8p>(@A@oA5yXkF_>U zJoFsAOMsa^Lm%^fVcL($T~yV&K((0bxaNB6_wbR`r38#f6JRd|oFQ^yOBa8|*!A#0 zjq=VbN8x6flnGA8FBEd6REJqTp4A3YmRTRCrjN1R(GFjm| zkJw`Gxu3&|PHUYGNnHRq00Q2aA{Tu)n)r_)g3xQjC>k!9eL;|{97a#hwt`Z)l`1;* zUG}#i_0dg30zLmW{xEBSTqYKv%v9@T{6DlEVs=F>7gjn`Dp%Q4vvWYkUO#_B#;-#g zabUn5p|PA|*cMlym3*^*i`bOb6e-|*$&)N*DcR#eEbghq__>+h;i=Dzdek@X9|n9k zoh?#zh_RC9+m>o_#mD8l6thZ7V~WTXSD`sEVmjiFl}EH}At#2lFH|h-ZYW|!8R%M5 zay?)iyIBv&(n;XJsgXOm7-fTi_JT^&$24skbN442syl%_7Goq zQ9qL_%7bJD>VuP^`KUsRDS(dC7($NgbTpSiRWu-Qg5!Z%lgMyMSkgMhsB+j=S5r`B zKmLwxFV-f@3?Wba(Ij@mNGdKe5)R<5kUWu=HXGrU6H9R?K^xy_6{v=7b5rYM`wix7so@}@au7%aYv#b# zbbU|A$Z?hJ*t|_fQA;@!79bJv7rH$yHUH+WA-{lB?JdPROqgIqY!P9qZk0wnfc<4l zKHWy;Wjoy?>0;z;>I5v72S#hO)yx-gptYhN!R zFP51*_aH9_opC^Yo{MR|xd(*Y^|E*;)OR*8qu*+d8`KF%0|eu&9!B~y3v{%yEh7Kh ztI2Dirw~j;mnZk^9MK~c@e?V_ceNdRO$0Bb;=!e^p^Zlrg?8@MDjY*4R)JnO@kUB+ z2QF56g#We+5Sw|pz|OrLf;Y&{JH`f-ufb)Sh!Nx`jO+v>u2+V?`|L(pb_N@>%ytLQ zw_hvgFSyd+JMWl1ReH5@+J=0;}H0Vt0myw zhTleT>uMmGilo?sZPx$6d|6Y6*=QyJi39z&ILa*_G3HK?nh$0D?alv0%XGM%8MyW0 zsP+y-23ln4vKP_#29^7on3uhTT_@ouZ~Xy-w%(ra0qGhNny&q*W75l$%v#3wr4n50 zz8s?iE`NKNOOL~A0}{09gkY~;nGD8dWB7_AaKQX~M3F&{d+Z>p5qVZHEZf;=pP_Px zwv2sq=Uy;Qffcb19U2*xGQ-la(r)4;!g+mWR^(H@5%kZ_*x@uw(K-al7#rjhabsr> z_$q7iB0F3Xya=PXhw621kJ{OwgJ@e%L%zu`VwqQn1} z2S-pIrbs#p=L{rXg}P+uD{v@~6+Iqxe^Y4SL)#QuRPvZspl)}75h?c2GQw>e)vTs) zlT+PU3Ho1&J|{|#mLzj6vsebOMz*c)(jYrV$3#AIRT>wJ*gAtKX`DOy<4V88jE?#t7Xfpf)!@TB|2y~?i7_i<|IL8GxbO}*>VC$Va0JN`Es_EDH2?9YbqkTJ|u z{Uvh-uNZ_4a7DT$P)80bLuXd3F*hOr!M(T(9vF8>YSK%;mX98HjGF>aGJ4}KY<}DF z<#FvF680XtTgac$U~J>OdpM{t*%w>LT1G*osrQn280i>W1St2qbF?pUIj=$Fd+q0Z zt6oW8qM9wqrWkSSPiEAwN4E%Pc0VdW3Rn*#3TMv?)Hw-Kk*Mg|9gb*GL-)jIy46b{ zO{Zqoa7w_e|7a2*<2-!}u_k$@WqEYc?dd<4E`{jBG>I!tOUfD@Sc(Osqbjl*pi{9r zy#&^qu33a^;iyWy`V?A`*=~gm0jk4H5BaP`C7NV4eLp7MgjSSOTNGF2SEHEU-*%)e zi(RGeN63U{?{+95R#I+H=xa6)z$2(4yIq9^^;bp|E(5A0iHg%bY&}w~^Nv1%NSyWO zoKk>j_jD~>V$1gj4Sf~HduJ5kBXM%*3} zGd3~Zbm3smH9Fcxuk}sLxxDEnxXO5mcH7}sYOAi?(Yq=vbAi9Vl8Z3!Yu>_PFPKC_ zU{<88nblPXfUFXF4-+N5$rxpA>;`WTfcYU@)g;)F8B?wTK8jJu%t^Bk_>iN{OM^3d zE$?HRr>@f-_7>WO5n}=?aLsUi}#^N&dlymK846 z9X5wnjni4+W8kBP_rEnJ+OA6(wZ?~cJH!Q@+e1fxi$XjS7dgAQBdOy6C~N$IRrlZl=fHE!|}Gx zULBDLKlQXcF!L}EEV<4~^rnmELSu{WMn$KzsvseX3MZESiwI#Oj&&t<&V4PS?t4O} zCeXh{veoZY5g>E|B0ff4#UOVj5l$8cap4|ZNL69Y2&c0;j8lSpTuuy=Gg z@KbeB6{}-agsqmTE_&QfAy-qGg*f0oyQrZSdzQg7biW++#C`X>RjtVk(TwIKMg8IV zY&57&`fg{AMv9}!B}~~3m3YtHai{%b2y(B+)}37TvweRL3%9GX{Ev+7aA}xgM&L{%y`y^~4 zFbYi-4zPTT=xQ~2eU;3_eg$DTc09$nVWqS=>nK`pj>*)|r9iix3Qj zrx%o`d|v(H8Cfg;5A*Xn13C4DvJ*`cUUptFy^ z86Y5p0s@mB7+SJRAXisI^YO>N&60D^p7$=1yvF{?+Ze8g3Jzsli(7cGWfTe#1v^YL zk{KP8)7enOA+u@3;L2ecOS{c2*j^6}b$v&K`Y>Y_$-}Urf#f4F^K#3T`-zqtP?WMM z&S`5nPyW~)BmHCa`OPsq8U^YaoQ|j%oE`2vhlPnnFhRPN^IOtzJHGRmEnx#4L;Cd) zE34#2My1pHif}Or!ZSBVf?Pplcc7t=j@Vb>z+!IQDf3NVdcx0~OQ? zj0EfA=BlNimd8n43-3jc)mEBu)&4}^Mwj5ABoeY!wV*(eg47Juvg3Y^=1-HBX=u28 z*!mV*D%WIBM8h!Ux0qxeHb{_+&s6HRd7JQfddH639Fnh}Dg2+rc0s?>02}T)GwhG~ zH{~-L9w($kx(Mklw8;Zdv)@y#iB~j7rt62?V%O7u6wQfw%vylmfOy9{a;7enQe^jZ_LI1&dVtB z!sQZ%QE9$Dn~^FWS+D~KuqfyloQ;1K{$l~^FX(xnC=PTLHbv&_$H9&Oe)!O%L{~4q z2I^UX{76s}hwNSIvaF;fxttK+_E-^q;?n+>%z7);lTG|HxMj zpFO1yTm9_eUdOw`Rpbl8KJO<=_2fk=O`nJQj-=s?1_GR(;|icgARH;nA~rEGg_KysxGo*5JI1hLfN>p_S@fPf7Od3O&U9y|5_RbD;qqQ$lTD zEeam$g}`2kw{NIuO&3aOa4L0(A(4TZGrHd1;Xo_i1B_Y0Crinb#wGU9KM=>Fs}o3d zL}s$*aR-xfLE_u|02&<+>`ZxGh1l&uRcWDx&L#VCdP!Knx~{Wo;sK@`?A59hJt=4W zXy+?q2m`B7J$zIM;D@t0>?d%nnDZAQQaB4cqWKeW1a-KT+8VOew_wK{cBOD#5q&nen(EY|oKl<0)~-uKu<8+qIvW&RG%8D@yi2_9=1%J}*)khxs32wY_o>s}}w;j!_vLELU+GbF0QDI=&){KTeV zFp&fG$p64_xP>h}p5SY<38T(^kACdVuEacct_5C8DPqpIK`uTp-(qNFgK0$99Lk&Xq6adbp-FxD`$)e$jHm~!29u6p)Cwx&*JUBsCE%MW6jB@8K<1k} zaNZTCHoj!zaZt0*1zPFIk!!#8b8 ziObhTCPzP5*GL_^a9`gJYXq33tJX*%=M?*1ri!XTdI=X%3_{#9M^sAh-bM122PHc* zGSq2dG~?0#qHThi=lE!VV41;ugKzAZ&_^7YhRCitdYmj5_x(enCuZoQ)e~OOrAk(< zx^D=muG{)vvC6dfTyPpxJy7`@nK7#v5OHDbS-HS~lJBC$kE^~uH29j{2(SZ;&tB>z z`f>|BncwmWygiEEeSdJ6e&_mh$rx@^p>`#?5YupV%`1)1h754+bFG#YS?9|oy&QQ1 zsV2K2XUwr_psmF?R1&(()VL0BQEvBEZR->p4bLPd`31*Ah z?lW!rYxn5@UEnrBg_OT$RxsC0`xLj6-zzAv4q^o^5k?n@eIMBt!aIN@&#-Zcw##o8F%hRC}uQAy6_(s9Q6 z3fjA`yZ==sKnTP>jM8q`@sh0fv&Vv&r#`CWoU#kAj!zR?VR31bJkZ;6os zATGZ5Sg)jW1W~jZq<(Fl=whHxt%D5f>T=4x#UFaKr=F9f$o;P4Rzq z4+fob%$pThxFZx446(jCLVCKcQ|vl!7CHaS2)0i~cdDOz> zl|#AIYan08vPB!-7_W%9+P5GnXXSzZ%*Q=Wr!4DA$(*kq@W@7VW!CsQ{+CnNL=kl35^!0@^8X(k;baT1pn8 z?HbBT<8Q~^)#u~UCpBu9`ceF-QBpMZK%#6a%+rBsy|yOv{TIjF%fO5-^}nA189zAg zyyz+ksLyF!12XHlqz< zX~o#E0f=}6ns>zUo7Z|v&jG?lf-smzhU?6)@*=3@x?GovxVdygc*6@?EM0$*KQ5D< z`E=e{^TA$PZ!$zuFXXy$vcR{6VU?ZICv|t#kmZjAKOa)mpTNaBjbG7U(pia9SZ}o` zqJj(!5D>8CoK!=p=}MC8Y8}F?;WST^Ov%{?#m@@rw0VcW%Q@i!xDOa%g4Q%Z&yD+A z1ztxbj2MA4ANED%K$&gU4BAOEtsZorZKF)VDaNb#Z;EN-jJ6Gg@)qjK*Y~-s>%VBG z65zToT?Aa}x-G4RMWEwuB@kF=rxZ^ANeO+R)gAW%9*B@8MFM*`wi*-sccf^Yp0aF3tXvj(+1=U|M-5+6ch zB+IbvnH4pHtQI}`6D>WGu{RIfo%}3~Uoix(4PBtp`+-^admEzU5>>=tvT$Mk_$8xC zzFj`|WXWZ8{jJRLFx0`EkwN?YQoVoLVyc1HPg5dxP%iwKUy}?+6 zT`qN>fzqNjTuHWL!!XNCB_Gla2sl31KHMPn@~c#k}SBhV#!F79xnP zaI{<1C~b2A4ER9M_U6sdB*+RIQ1?aGleFtW@hyEmVk;Os`8B zXi42i#tr44iH0e=TmK+&!RX~yp7(mOlD&%Bw;0m3G{C@RWM<`5ABCWtu)TBg8T^l> z;SOMz-n=Fg5L#HJbE=3ADnmsI-8h>tof0b3hka^<_22Nn5DSX{&sct3rLXxZV`6AqTfflzjn#Zd(E|~*^oXR~V0?`^@GHlmo!9TI-T(|T5lvbU z`DbU{Q`TbI$%w3Xh8^9Xk$wqLf1IVn@#31m3?^z)fiNmx0(>} z+^X1Nje~1GIr!#%LP3hQRUfS;$UCeEO30$R3Ml1d?oxbh==lW6It106 zbDfa85dJ@zac6pR@e=;)Eu*I_Elr;gqhR}1IZ(rwzZIv*hM@IJ{Dzr0+$wYOgY35h z??!C!ws7M~zRHddf#HHi4dwGD=MKg+IevL zt3cQ+xC+TY;>NMF9U=8($h)zvq*5MkewK%RwN4vksgQG7>OcdBRj-haTj>m4nFzcI z4ML95TpvIc+f%w5K-O@xQSPwM1QAmb7oevCjUCvl=C}y5D@%j8mDw?3rYY(#1tw&E zxB)xHg_9fby~BUTY4S@t4*ZaBmJ|Hi#jCamLR;MxGOKF&m8a~20cZ^d+4SbkqR999 zZb+62^1qf>SzQ;R;<{$qR7uy@tJ&Ww&DBqTIhlcxV4@~UZ(7(spxUVt|@X5#p6w(J4y zSNn7j=q&oEm%q!(B0FpG_Lt@{;I-SWM)!?J+@UPXM`JmNi4u{JkPM~le7+mtAvICl zZ?%+cQJ26wDX=@))7qZ@B#^ZmHYRSDg+t7QY#9|0~>*+b0=B5a1Pp0+{|U|(0?s9wK?!F%%_8y5qxf*tztZ_nx|el)D7 zZ&)h;Z3V&DQl)FlaR8ni`55Iw)Idfc|kpUMHcRJ%o%>W46PYnx_|i*T{|z#0zY#&Y98`5Nl_MoE&27&y-(MM}e%o{I%aeoZ!w{ z7_DFH59+$}Y|ygKUHoVW-zv&kS?G1mBr&68(to~x0QN1FU@3M`%o8u4^xU@g_bY{V>n0x$4 z(3j)DDW#Ac1k6MK4xi8R_d8AaQj56oM}0nn@iRx}Q!)D8|U@J%q<*Exz6b zxGHM;)|=!MN#>*l_Fu&aplUGttQTh%f{PkS0pHp*n+t&90$B|XEzb+@-45>Ws``O1~$ zbP*r-f<3;E5tD2K53Gx&MEO|@Ww!*K#>w&^5X0nnJE12V_Ys>O6u|V3Pj&Jb@^nZFAp*vG;l;bcc+_;^%EE z!Lfv7WgpXHsR&ml=>WTc>0Ym8#U)#F!f4VkV#PHjLucyPazolbSl)x6%=_E>NkPSJ zQbmBYTz?~_zQ#eUV4q{QulNk5e>p9I0~~}RnPC0#!b~tT7e8u2WejP)+%`~3Zo+W~ zYM1{l^EJgmJS-}T%E;JJ+jllhYR_!ul6j|0ik~ze(H%K!r)fbm&xnVpG=?}OvsSwf zzSD9(1P)s2J5$8`Q-adjgnU5ic`aiaCX1~>$@Mnp3e`}yTww1WQtbQ3ZG0{oQQ%l> zSth+aA(T7E41K1rX2ByLk-&^rXp4YFd8Zjtsb~&}ld?X-XC;5L7f$V-r0t zy};wgu{zsZwjnicDu4@@gJ)wl3)jpd@iu`6hyT z#i@DD{j?)!hQqBo?-SKPs(<8JpO7pL6o*Z)MasJ9!P@0ZKUrKbKpG!@+%x1UDI4#2 zma^F#558kB>KFZVAa^|fiLITgACK6gdYV!}!}}+4GdKC?`-N{_BT3TO?*4CB>!4e( z*ca!{yjGw1p7<)V$n~IILeR!6=ZjS53}k+6iVf&RbC$J>xqrdlOOSq9Woi6xl4%-e zDv8-&1U7v54*-{)s=d6}HQH&`t5g^jMziC92-l;ARB60}Tl!jCTaix}HOKJ}fc3B# zvgadpgZ|V2DCj36Cm;Xy zT9U;tFkU;j)ry)#EcI2?@;G=%i0(doxd4^TgCg>IR!tx9CA@64ht7f#)z(K}@Ll>- z-r;&SQrhV`Z3kn_2qAewlwCISnSCW{Qkl;-M!Bu$rdg6VdP7qc9{TR?A2WwDY?wgO zy^mau0l+?eyzPMt1!$WJ0387>O81Nff3H1PT_ouOLh0|)f~ZO+!SgB5%qWTt7X#c| zq=$7I=FJ0l=&eC!Nc!QDI^7-7k@F2MdQB5*dWssU3^!DyQ6HXs_&AtC7{yit?Is)9 zuHJ2DZA!{5+EP?-OG7EzQ}O$!wz-?Ay6UiFYws{Q@L0w+=!z6bEt^+4;X|qf8;4`A z4%&ngguc*gP+j>zFOxZml24dTFst`j?}Y@4x_0I#kv%o&JqJS^D2~`u9u3h^eck5l z-)HzwC8lH$P9XQZN5}*PSY>j*22SD9gFCr%OJW&yT&u_vZ4%Wk2cBT-iT3hQJ2lz; zid6wvY4MH3uoR}_A*(ZffgngEvHs(pwpyFkm^iy>mmv6+@o;dDbcsrX93>!dDI_%y zoLiP5Z@*?TusZl2U8;fL({&A3FLP9Y(t;}FG*ti`;ki_bcX&*l5>N#SOlvS*dVUW(#q-` zuzx#i>MvfSl|lcsmZIa3?ej7Ub;7*H_v@7*OuWZ3=3`aP^q!y^;eUQ4PLjD*MA!`B9 zotd=$dpC<{$W`{EoabZmlS_cJ)qfSsDyg!vQw?6{2wi~n6#!Gvus-HARP`1p$MqU zD6hs{@DS@55cV8rPCTI_;(Y+70Y(DrsoX9-AA_QzWH(2QS312}21Wl>8z~~m+pWka zZBl8yGf+pMN_Gn<8|s-ix0%U&q8#F?G#M~|M? zVy(cC0GbOXuCwkA#7^BG#$LSVH$N=3jKKiBis%IznUgKXoit6@;%q8!HZ?3cZ}o6ajHAsXuxl zN~o_R`80vT0N9LCr7bPWN0mijdhQH(F6nt_Aj4kRDmA#`v)F!2j);c}2d^;RoZ)hb zN?QC2w6*BxN}e4ZVxqp!J!WmtS-7b%ARZR1y^)KMP6W+Fp~`1mP5vM&XA=rT#*|_n zRW#onrXo_KDEN%DIQBjlfMlp|`f1I^(pn0PIr)z^d&aOJVj&QuZXq}qJf&fDGxjDC z;uEq6oTx!Dr;+$jmL}=K6O_Lqr#-K9q}VUC?Nkoo-!xvX4=BoP8F;7k(&HwOI)!yP ze^mBxvLskbyhh*%Y8-E`&tXR--oOyG4zK~8Bxa(-IVBwEul$|0sx_aoMj@Dm2b|TP zACiKVL^6VXP--uSjf+aJXftr7si*z5%IHi^$Om%Fn%8S2DHcqbiBaGFB-by>0`Z2R z4*FpchLx|JXD?y9hR!)E^YZ77>|q*qN6 zBfjEb>(K8x@-{;#UEtBJx9RMNc-6&hJadiBOb$vF3*Ze(f09*8%{Dysj784Jv3dXY zyMqwNdCx~#vgd&tFQDYvk&jHSz!57iq(;IpFBQgJ7+ZH`u~?(97qD0rA_BjRpA_=q z4A`|PaquF1N(eHV!ACd6SH z>Ag$7g;#iD#ax=%gw{o^axBJOn=|+)qCa*&a-4PpL691 zMUR$xF4N-`Pha!P|5I8UpH(`vh(&{J*b(5&24?5n$94J9NKhCE-u)=)RIIc2h5&8y zgGzSKDotB6ocB+%DKH~_Ozfou!;4Da;BR@e=k1M9+!MUWD|**CVpr zjm%~6$%V~6UlMAQs}VgiccxBHr>ukuZFX_qV&MK&go^KGeYl<8x^zapkW03ywK7Qd zx_oT&tljY7=Qo= zh&>uXGt$4DZBjK`6 zU=gFW049q$^jY<>h^*zq^h5)V+s1#O+-kdd2{8NrpI@A32X2#bsM|_`+j|B5d?FhK zli4S~!tk6^mGBwAn|^~~}22ws1DgF5=Ff3n(B z$xm={jaOq%LJ>_;DdEQ%_^~ppJV}M=DOpBVm|NUZUBMDDw!wgJ@O02diGDIn53C;; zmW1(&x}o0GzYsU+Pve8sem@^ptOQ?th1R$Sd@Iqw-d_O3oiqB5B=J#?ks5@a1rgnh zK;QR&ZxSZ76B+$~g{5pj=oiFpQ>H+W!(oGO+#a+kX6EN*E0xb5rAIr|1AHzf35&UG zV-Yf18xDEV^3Xw6W84mKV1}PyKff+tQQ(Ap|NE{(Jg+}XUKm?uNn-FpFfOzYG@|OZ zo%Bsw4m&W}w}zCCSBLW`@LF|-|4hjRYb&V=#ubIJPAwtXd4jrLvf2upYx>Io`LR2z zPgDB+<8dS4<4eXeqEN|jJatr|YHDVauTjVzXB=i9Tx8^qx6ak1WZ`w!nF19~q_-Zh zt>^0X=6Npw7ZZGz`MB`aUCOc_Q*tRp4f~hP|6^XK)$N=RWc{Avsl+?I6mYh+=Q*GY zJHLg+!}0XF$vDe07GeMdUJ8%hO#CspyPjl3Vumd~Dx!Wmh%ETPtqqv@xOvQ(KD#dMUiG6T1(pNcG|W# zfj3D-v#2c84_IU4!7n33c(y#|WQZh(+E&NXFj(@r)u3m`&qaT?UkHA(Db_j5&_Sau zElnN((yZhY%pcpDnlT^YEJw{FjQ|2b{lBsg?RBVeBsvC@c8~H0%P(VMIg_tp5>DGu zn!3BUZ9!c>H`_e@M<~%mcsp9fO*-K22@cy4dtNdopoXC~)jxh7joCB$_NJZC%z5)n zcBuN??*488F^O4+jCC|X-KXRY)baDa(9iNw*d5n1hdVj*+fYt>b= z{$(I&WIS~-dYn<~7pkQA9t~eZjbyBKNcV4eqE`|u$6+xU10Ce!r|mfJcXIvBKC%3p zpF?X1!kPt6bz?QXr4#`f_$6a@8=##je_|5LS@?w~q_o!t3BAb{!d$<(ck&V=mdfdo zg$rU@wr|WBucKr~jjF!ya|>?Gq+N~;ta;@b7H+K|A#>+}lcTKZPh>zj1v?bu^cc5p z#4UmCP#c_;VSk_4nHCfEC8jIpp6`cGMd=5#c4iD>BHMH(sL4Oj2LJ3D5kpdTCUJQ_ ztmNaIj7Nna!7sAVpV3cG1c0hO${G{;E`!>m}2d>5R3Mcsz zaQl&1>_iP)T+U_%BM46a)IH^6o5PO^`B4EWhQyBpdO^K6Pi*6elgcm7kg z&|c;D6g2jqOd!GbQH$wNhiq>#rz=y4#1l8~@PhaXWVpLzuwv&ZZ;GMX|NzYo;?IH9)izg^k{~&fDh&h`c zXP^f5U}BD-c8Z`lzc98RJ}pZav0b`$$3(aiEMX1WM!w!Hd$VVai+$v3^N~UuU69H5 zrf%UCSwB-&3{2@G{BE|5d`q4dcRkK`Oe$(l`HW|w<$KW^`(S8D3}ru=+0pLTd;Jk$ z13c;?fD^P(lFjyHt=j8%uWHOf^SkNj9hfz2hur#%d3POur$xWeK-O5gW{_`AGIQ_E z5xSM zdBf9JCktdi-(dOz$@zQgL_d}UBb(<~)anLmW7>3bIhSN#Khkyd$_`{93xM%SG0gtW zRj6Q@AMYuPK1rZE(_QJfP^!+C^W;nM}6vz z9c=maV?{HJDXP`*@Yp>LuC%^~y(1!~PvW)AS)cKRxqigi$^Bl$YD@dod(yTPgObkQ z%{z3J&jIm%;RSuVd*g9+-#sHM%w+&S_td1Na8en|MqEtf)AF{DB4$HRZ#+l7|B(|!-v##R*9Aw>g3PBkzkfRMaHBM z5Dv~oU)rjgIFEkFHR*U4hXa5KBL<`bqmv;g8tp}5_M*zrzQdh?{!Z4b%gxHx(j;wt z#6W1J2OrR!>!8KgB+LMiYdcxwVv?Oou%(!X%d6 z4Op((Yhy}WpCrDkPKSC~yPI{J8jY#|*|c6{pf!<*)Bx1{P68kQf;-ksU;q0QA0{Q@ zL-IQq2tChMgoM0|H^gX>M4r{zU5H)bBWoaaD`tu7u`-S*+on=gn2!+^iB`}u-=Dfk zX6()!tCl3kL#GdybiQvS$0}KW+orR%!rBfZr`O!j1|9+Oz0)ZR0R+;G!CpKwxhi>K zm@!UwCZVc$qm->3)<}I+nQmeGN<`gl%Qkj=sea&Pk*5V=&m0xk!Lb#^`-;d@JI>s~ zS;&8l~VnE`SHs(QMR{9YGHEtao*U01~Xq=7|V@J9l$P6q1_zN`G z783-nmQh0=mAYn$cEr+gYKR=Juyhu&@D}t4y#2yn$A@l?w8mvLGCEM`?dzp}-oe9K zYv;iF>LH)>a3oPl-Q+=M2cj z7F)y0(yJYYWN~tx;2t_f*xlKgm*R@?MQ$gAG{jgn#FM9F4(D&4 z)sMKhu1LeNw2+$n?m`M^jAW`kP({DvbkE{C!)7TtJnT|?RpAK1?sWN(G=;0t>JJQ> zt-|x$nlPX+#=^r_Qzn056w(&Eb-b@CYuxW)4skU3h{hE5M_StJ{U-`huOso4;u?Ax z!2M3w!3`62Xom?vV{etU3Tqff?|aVgx)yQt?EjwDvU~zM4b^%d%AVhf9eXNp0{%h= z=lq5hrfP_|pq>(bQ>jQ}cG#z?qfq8q?nEgP>}aFv+-JEwLbk#mGgffi+-Db;)Utc7 zB#E#Tnj=&^)Ad-SujaP=b%lMx|7w(t;%mex-cIuR!VUml;fpY-^_2khRn*usxw%-+ z?ZaVWP9$MEbHlK*p}QMA)FP zA3U!9fpq&73hoboGrtOSyp-oHUcA^o7^sehpAJWu#()l_ZVl`B_FDdM264aH^Xb(7 z_f;0PM9Bf~zOVxdv};)neLjohI2?&!`1()s-ljOfq?Q^sy`kXC<+d4BsTXZXjPUf`G25gQ}>`uQ*SHw|3h9x*-M-9x!m`@VBY9~-plFaL?MXFc)SToy_gqTmOUgkt( zpD}6Oo1PK4s+UfEoL$uK))nJpVQrHo$%TW;f=ME5IC$xP{KDj$g!p`9M6#a1IN#= zs-D9nCZmaghs~f0aDr$D)TA>)ZB5bubq_4iu&vRl+~?*ILsi;IO@>l6-{e+s!2MIb z3f++)W5u4J9xaEwk>IEt7>=JJfdy=*=SX*yO63yUfPMt8R|iC@j{5LzzJOO&Q4}0p z0zRDgiBN&=#he)PJ+drkK?O6(k&YXOw_k8oKbkN#s~#<&>B!*$cq-qOqWQhpfT>ggJ$ z%64~aVBajzdOaJiv)yb3$O3yi6oVku(%jqhMm``qQI;n{uU%KaYinw6KT-)VI^I;` zc&xSYzPlDE3qNiRho;m%Q(bT<#U&Mwva-s`4CkL6@Pw015ErxFM*9DsB#!s6viRHN zFp5i8_vmjG)8eb0NtS6`^zx&AEoqHQ z4kEtm0gcdYEGqJ6k+-_c>`Dh9}EVfDv6EP=a?vr7_7VeH7Gq>*F$e zl`585;08mln!s$6NG{B1P`M(VqA*(*dpN`6*eviV--WT83orX0L*710HPyRJnr6rR zg@x6=2Eu}YU7$DQ9Vy{zf)#nQ*iZV~Y)v_ow(5MJQOv@sNgu0rM;gu^Gy=3#W*##foA0zH$wo~sE-@L18h zeQ~1m1O}NO62OBd87jrh_qs4r@h?499wH+#Vaq>g0lZ}PBxe!H?S;!653Z!v(V{Ii zLEv-+ZP-EToBS@mFrKrCbv%jJ2`%@5sxz33(rR5u(%|0EHf=fKt`TX(pW-84mVcO2 z_t@ly?}rMdXROvK67^9Z%x@<`-x?6X&&;W@d%)a=Pwu(3Z(bTRtF<1$VSou|NC=i^ z$#mtR0#y;>^{J7v-u5rZP3rscuj<{dEpKKE$pRKacgR9(Ym@#2jA+i_F|g_08LqMY zg!BODL=T=~z#^b6g`QxCI!iY8bAh_Y;|rt~;#=8F+?})ln$gwU`Tk-}Yklla-JDR@ z{2>GX2%(#!tEEczj}WTg?nR_1Xr$0 zw5vr|?>32}oJzuo>JNaxE?qKJVCAuM{wB8>Z*N`4Cmr(E{9JbEb4jE`e(dUg2MGf+HB4252@Di^p3cYgFyz?a9CaC z_Z4vPw;^$+m^4{WynXYBMA`pzR)`5x>^OW1XSeowh#jzzK;fk2B}CU!| z5=3i%J$beTAeTeXj(d)!2YoYZanG+)|Nh+;zs&|bTa%z&FGLxKR_{%+r6T?vcZcn~ zAK}#8d=vc#&w7TkRto{=&@jo=>a(hyGmB;{*W?ck>?hA3v#>AxESXgl%T=_`na5;0 z{tn|4dtIM@_6I1QFioGE$GP;bJed#D=-mIP1qUjF!9ZBrIjbJCVJT%R_^jPJ^6kBd ztsc|=s=^3=xx34yUKEWrgj7w|5~FvWiJ>my_+-z%qcyd-!AcNz>fFWZU9BpLX1BU9 z`ay0;{*>zr+~g78Y>pPcZM;9NSIjMHe^g~ZA@(q-At`Bj;VSh)lTI35Og{$2tlheh zWXYH<&VN)#2x_!kl|2EEy+rIiv4%$UVAj;iQ#ml#!N8eo6hoM%s+~Iv?}%Mo9d`71 z!pA?%E8hz{J&C=EAX&R0=;Asx1AkWZ+CW{|<7jT#C17Gu4=-!o6VpXWZ_oM}P7fzx zz}g$F!+0M0ik6cKyALNBJ@It6m7#M)u^12`W- z(8&Trvd*~{(m4rvl|BC_mo7?Y=shK2L|>qLi_88c<~eCX>w|M0y8-PWcHUiDq@8*exR$Nos@=KK7dw01eEop%%JLJX zUL%0VvWy-?ir4lFo*fUFNdP~l&#OS3@3FzmYIxpibRb2sVfrhy@^s|HAgbW)yrbO%GX&7IK5O5A$$Ds;9`mRZpseo+`_LEdILM4 z>P%nAXja!DR0==qBw9cF zZ2Lvs^{o*4z{C>O=bM|(V99V6T+!fRG}sBySd@{!k1&w1mv$xr)|)Dw@mRa7%`Mbd z!kT=-H^ORwJcjX-yZcQ~0I|~=z6#f$WYxQl+a?zfCDw17Bg( zvCuxo3TzG9ndlt|^IRhqF$h$1zV_LsMMLPHY2T0w*y!euIK=2;=(dJ$n7|&=+eWVN=ivbPK}_r#gvOM~mZylrk5Q z0+YvLwwEX}PMVU6?cBuwWfj>Ry?SvfLciPH(%?F66*5nfcCgq zPmxeCQ)3>)rf*o5$lutme_u=FpWH(os9u~7jV*b(Z92Jp%>B0O2 zvr;JB{m)@&bq21Lf2O;Ycflu`$%)luMQr4VBT$T4ZjuBq;A~n#TeS3p;RVOQ737jR zgJ5OY-Y&DlU=E|Zwwm`0DTT#1^d5Ex`Qcy3G^c7TAlfN*1X??SjvpdnX&UoD=E%TP zD__iQC-IAEh|=JrBLK*>vFC*kzm%JogulGsV$9u1aW)`<(m8@6BO$QKqC;mrwsEVw z1;p3x0{yj{uh_>WrA?_mTOXd0tl%B^OEPgt#J@0nill45lTzLN z+9r8W;i6QfR2EzP=*(K^C%T8gn2t4ZgR5*i0k^>pOS}kgmZ?!%QHI@Sic(c3Hud*k zQ>g>m>7lnoRY=r!UUDBmgE*V+I_MgwwUj@8SVtUmxw}PjZw0^OuKGW@JVw;P0TjOz zA)ISlVhqgkJ>=b!;BThjH<`hji5kq!xARwJ-L5;mJq9F`j30u|Whk7>^bC9M1c>=| z8#9C&W*N7&{@3fs0d*%`b+pS-p3iiND~D@xQMN#@0+>tucr zV1AUbrwNg?rgGI95Cdw++(7{ZI$Fh5`$D%q{yg@TItg54qpwd}eH;X*B?$@nEf|YK z9npqA2B>?ZR|E^WG#djo24c6ih&=rije|8dB%K17JE-sTsiO;!I6A-FQIdj-dCI-$ zK5Lr&Sw-?sLVCugM?W@*##-?wuS2m=+i$jV`m?NToiDhPGnI0rM|;`G+(-cCg(3Wsks9S*KjKIKTYQ=&b~@g?5{*Lf_Q1P0*w4o$JL zpvGPG1V_VGO5EqfSs=iJ;oCI;f*Q}F+!t_MTBJJmL&qDWo>+%E)MJ_6$+ia-o?^)X z83m_7Y$bUBE8E~8$^e#F7KAL^H@)mti;NZzn{Tv@LFQm?4{r0YrQ)*sF*RWT3~n!V z1vJex$gIi@M{zWxF+xzo0cArL_46qj;X|Up@L7~rFS^ZKnx+Xq7qhikNLMmeY(tjg3%1M%*$0A zO7>jkJBp?_h@w%ROBm<)eE*FO zIUTJU{Iv+$79u3mE4cC^Y7zpSW^BX($G7o-ta+HSW4(KFWRwB1K5qEudDofu+Egsi zTx?f!^6-w2u2^%n1Lyou3VGoqNTODX!-OJ7zwc4FDS$f{_H^eb$9}99HZ-{9iWJBy z{gnJm5f-^GBqZGj`^t*X-0ByI+C5Dtp?C0y^I$i*VbFC!Nb8LO6vgnh(8=7rNEZT( zt|7UMk08jv?JNMGQz&8-)Wg?JzjMdndv7(7swQTieHiPYF=7gj;EdG2KVhqbw?ktM zI8)OLEO1f%T>A_9t*VdfY&@!H^o?v+Z2Mff3vChjdBCto;jn(m<3!4bt$LiNM ztW3@a3J$Klo0jQ@!&7amBB!lKMIS&=51(^>%7wlAu=E>Q&H$bwaK;P8GhCwJCD3~8 z9d$w2WKZ@vsAvvIqb1ip*P6l^xiUgFJHa&+?xE_M=GpbQTfP%1=|6fQBO5=H(boI2 z7^Ic!Y7E@@CqSP#?n)kJmWlzU+9xOKzB!pLeEd289X6M+s>Bt8qbYzqIyyusxoj9~ zbHMzGOu4Wp4=-H->A2TSIEx_BwIp`xLEw$8f7D^dn|JDMxM~Zn>5eHlG8Jm~|FI&k z>Zv4eZS&v)>O;DQa0$l%7tE4*;L}DSC%&t_W9=B91^&B8=OuIk7<~H%)BZY+so9@6 zc>4$PHa3LSS}E&6LhG2RNh>*y3jj2_8XQs>y)p8uweF#C z7@^+I*ukI75E;ak?Q9SW$Sp@qXPK|Yu&&5L#)FFUB{TE1oCwh)wE%;*Y(X4XoAI4D9oHZB#Od zEdNM|LLE_)UEUdAXFkVvK@|s5ps=_f|Ca$pT`8^9Rs4$=A7Ut>xN^|6O=n$4rM_ON zxZJ)lS*a}bJVPtrFc69aRwQ(N5vI{VwTv}r4x15>w}+_V+vM6-e2OH}C@J;KL#2*C za%#!3*m%Rg+P+iE8{)w#(YcneL%x>-p$8B|?tavT1xBwm#vP^}`mhkau=8Ll$rxn5YY~42pUoY>XfXV>9I=U;67c42Bc}h)KP(6EGb<2!lzLN zfI$#KHgKOh<)DS4*4SUA|0wKVk#OUgdq7;^6txrxqS7gq7kzAzc@5_94w@y0|>ot9omVdgRJoEgqIQarLD`VNBL>yKg08Q_H&fnbD&c8|L|~4 z0{3b~4uy>{9{|h>S?%WnE26HE1MXzOv%fP!V0Ghvquglw5GN88%iO?TNw?%Knq8~@ z+*So2UI3(BO3>$Ao5OJ)mufoIzRO#ePe5p86Pdyg&gqLXoGOq>96dMN-h}9#8pxB> z;|y2(66Y1dK@NJdd`wB_sSkI&j3InVTXm1&tiAjLO3JLq{{BMPl$822J&ER~4H5U%@+(ML^O zd2q=JNYAk1T`oR27GOa{;D}s)q*McTza#Kpgo4?DoQ>YACS#fpLHc!=EgyYUKmp4? zgv1Ip;+3a$lLTXO^|L=^^#Mo7;73n98z2*Z`KBN%mX8Wm@X<&!fj4C&mwn zHhlJ(>WhwUzZP^N^V*AcF1cuo31gHCNe*m*7=iZlqynR+WjE$5Bb+)vAfRHH;>|lL z6~g35bDL>9`ELbD_Le#RRy-Usz?uy5{4g9JkMp^ey`kNSxYh?ieYw_>xYvPF6%QF=zf}T+vOVErY+GIe#iyrAXs*M`eYq~WTTzGvsR1p|staVZy@H7}_J27f~*vvlMjX458tuUl_AxbU>{FABx?ICi!$He}%JW>H$nOI6Dlxg@QuazPVj$_IkCz(Rh;wHM4B5h|RiMu^7rzF=9Ef|;fQCg6}H>V z#I4RRr<8MXgB%A6BAh!NNWY}%rZh+mmDH#h0oDs!y+O=;($97T`kRchSx8E+ z(;Z~pK8J`uh`A^Z)Oi>pZh^!2)w4x|s7SOb92HTVM%lTI!LfKc*Yqw5jcEu6Xaf6G zKuRkMXP#dWV&QB8$l~Sk<@I*AD5Pk`$a<*#I)LlD;$*uXVB;AdkW0z(;9Ec0E(~Jk z&{dNqS*ujoO-P85USRioi5$>n>pky5Xps+mnIs>c{@?QNl_@}a?c5}+>Nkw}U1fic{4h=@2cQ_-*<%Y{N?T*ib* zRr&k-F^P%qW>yo>`Kv&9*xmy0(Tb`9NSpESBC^){T+&0FBf<*FK)LnN*E~Zpndxu^ zWu=xnc4Jd{N|<(jQoQ6edlEYAW}d88;V+a;>TQO;)t>SWTZcmF=Gf`4g^+Izy2y`V_@7nV8dV;o7$@u7VUK`yF9;;JSLr3~p0v%d`?wcR>%JWL>@=xt2C zT(Ts+W#m9hi31AAZR0q>|$n{l;8a-E-83a{#fuoc~KCUwuAf`u%&~#pCX` z#xRlEt!aEoe}N9uvg|+%w`S}8`?##1A(kdjGUsRPzdKBOJtX%(ZBz(F^4p$Mw15Hs z&%a~fK6Kx!xxM$?^{c-MX|C^cNMthTmMidL5}eT@7)i6!WBF7MkQd+sjQ{3=k7AQg zjR$UW;Y=vTQrHg=v~IS)!qZ#0xyVgTbKc@Y@z@}%bY$MhhiFDqtA+G^M@&9YJ~Bm8b2r_(--FH5463%K1gnt&Xhi=JIXLEvEMu z>#?euvQ4XD5r)C~vwTAO;5D|Cw7ii)BDAXy3&apEWu*#54Z#k+f2XFv>$KedbE1&% zfcP_7)=#8ZO=x_)emp|5L;Odp63;z8ZCIUQZq473eY4IJNLj#q&uQf8V(dur1$p(9 z7twx<1y7MX62Y1y6Y)wHMt;Qtx?&2cVzs$NmyeZdYnd9{{rj+R_Lm0DB#oD-@!_4~ z@k+CeE59O3kORkVE0mg5efMZ-nXPV^3BNJbOL<|z3VOGR$g_zOGmjZhb?w#Vqo264 z*r2eNBq*R!5o#izpyWGYT~uX8H$4N9xVQk76h40r53=>P7KtyQ8eZTWvsc&J_62yeu{abwd`rzL8 zJUA~Z3}a!!mOrB|Artp75>-Nq6BFwYy~bTLC*CO{YY!4&hdG7$-lvv0EGZOa(fo0+ z$rBFMNBj@>WDB&gf|5#0ey4(7TYyo;J6xfct9LEd* zTI&R<1e2U5{R=Ts9|NtsY@c`HEC!g8^l)0x8?9*)2)n46C)tC|d#Y3B$ukfc#Q@Z! zG1b6|$Ejv25n)cXxe)xTzJ#VZmcZVV#aWvsTVDYf8$LFPG3N{@t(n>4rHp7MHV98JV;>86*!K!nhL!eQ@R2|b@n98DXfPEj|w1D*R^V|mGK zMb9`Baj1`~tN=p#uCP7>Uinug7K;ZlIoh0=Z)^Gd4z2C=jZV$>-ER`P(+9%cAJ&QH zX31Fsn?1)o=;1Mjce0XNwWhrAJrgWF0mjaL~Bb)EaHf$=4M#d$wHiAn}V80 zw_~FI%>Pg7_Srl*_RoLF^=-yI-ycPGEV@*TW`I2f-=X-u9DTDZ`V&gy^(CQ94(3h1 z(4>m@*^mD8AO|x=^G{_L>te`hA6o^Xkg;i2yfe(xGn>*gys>{(B13^&Qlxs#NZuy1 z`7(4R+T4>ghnb4V;77kIJSrOex_L`a4^O9edbZBU-+w_p%}PUYE>;IN%^?a;-!^sY zp)EqZ(k0VW*}9zbgE^mEpClEbU}I(;kdIER8R?)A~PU( z<&FU8W3yE9NK8&`7lXYt7z0fOIAHxlnVi{#E6H>T&D^YK8O>>_l|5}!o-Dj9dDNmE zv-68ed> zk>8%idhd3bg`%k-2;Kd>$9!zVtZOZ+&DH@$4ZcCsiC6ow4 zt`KZXK_Ma6aam&7KZZ;jb3^+Tpi8eVZ#G&vM`DawwB!1($?Nu+5DD_6;TH^Qe^}Dm z$^=aE+1mJi-EJ@_sw|ZKCLu81qc31Etl?;{#nF+n4Lac*o8EP}rAp~WBCJDCOceeU z?$d4&`Ki;I(|9^#O)&am5WEp#8)~l}ebhX*eA3U(zBmU_0>5cMODFn37NP?{h-{?C zu_=`Xr_~1-AK#br_DhA0+Q-x6m#S**kpGOYD|8xZ)7AZ3egvlcKe-IX9I%r{kLUs! z#(r5udPyYQIPwa~gd_HM7JJVQ-wbCpMOAe0HIKO>dAh4bS4v`vi$Xv8&R5DfDvW%9 z5@c*}fp=R_UeKiA5kHZ6$f5MdY}7l`r~AJ`c2^wwTlv;Y#t>|eYYmvg_iNd6c}Y*r z=1P&k;SE~+m_(tOu6~4cwMrK!Zb-`LDS5$FP7oxaKLb5yU73iRzOv^}Il<#uHYDPw zULazp-f0<+6GI&fJ5%C?RaBBo{a!kQ23g{3@;T%qyOaoy;}ULz9=^dv3fLKpbbesMn^L1DCvRKRJl!L%-sj+6$`6W<==hkv)-t-J(K+Yp4Kg) z>?PsRBg)c!V*_UtuvLw053)NIyIZ!#UV_XZruvn4>8B6cy6q2QkFrAY*J4rbZ&dlz zrKcrg{DD5twJ@hHHO3pBvqXbuK`kQjucp<2S+9aq%y~7(n5G2P_cC{%oAGlrCxS{_@YL$&_$cOHRDqSdxu0}+WkvBauhr8b@C_YP6Ka2_c@eQ_^cu+$H`#QvCUpynj*sGe^ z9&4|d>&ZoIZqLi*PNmhCNzBmUV!_$0^&u=`rv4`}^jHpWNd&zlWXVFgTl#pus|hrX z`x3?4}Nf~i-Y+o*?;$NhCDYxP)O;9T+{ple=xFjFt z!%01hq#Tdlcc1(hxb3y?9a^=eA}){!p3Dxov}#G<}nSi%uS0U6n?d*Y&`t zAUkJbc|R_-NJwJ`jXJ5V7<&U^^`pB{|AQUr{p%guZgJLGXP8Da$B=I6iEfhU_6y0S zAFXoTOA#No+kN67xs%dpMTXu#P8x69q?BUq2My2O&6bq@&wv3RF3wtch85DQLZ59#yO$}#i8r?dp!0(<$@1aJYBXgAd@l%Q63zhWjYC0fEubx@p2L8n)yt&`m=h-I zkj02a+^37W=(){y#Y~9^mR3{nROikFeN~IomX+Gy&JIsWafK3FMVt?a$GDyE^u_a} zG&>HOoh~DV#c>I~g&NY_GMK)PNdiC8Z4{))E-ja&n!0>2i@$T1iL`D&uX0PTJ)u!K z&J=tHBa^wYC!Es@&+a{{S;sFYRGHpwn0UY zWbXfeH<=b)2}qVm1x>1Br7Z>oGjy7Yo;iWZBmRa8{Cg|CHUPxJSHZv@LjV|+S4%-s zm)}trW^sm>7mIm!42IfuVy5!&E$spPVS7A?%6P>g*VvHk3a|TE zzpie8fxp(o3rKAfxfH%)RvTLIL>v@2IPKP?9e)Cw28q(30c=p1_Pz}Yp0Iu)5N;y+ zK@;D}1m<$K6U8u%%>ONj`Q){{OK+}bNxnHPgc-%*rcoeGQDr;BkTiuzq@4_c4#P0_ ze|p;xMFw3%Bqakt9onM%oxnk`mRZvl$sQ;@Ih;Bkj>RqnU%pm%YP|oL?0dBs8nj^8 zROJbaJ^J<|1sJCr1igkn+{m))iC7wp2XmoD`Nq05np7Q1Xb~$8&Rk$Vx28+UrF`@C z7$)UPc$IrDn&u447kenHQ@p+%W z*LI}Pa^j!C8ZzFEB~+@e)7HA3xVL@;x+aT?8Xpie>y=5ld zJJab9>isvCeKR#;wTz`Zm;iLX3pY{eMS^en{bt#HCqcV48g?%(zq^PzVDDxRg8RLQTuu%Ofhu;~z3e}=iaPsrq)5-w^H#Z)1sS)KaC)yh#-1Z`fg3AL@b?r zk<~%BEO8=g-D7zYZ(8a%tM^jbYfs5?i(sdwL7|9Wn!_{hZNb|Vl>vwy*#4b+0>+PL zA5(;BoPY9i7#|+!CEBjhZ#bdcm`o6ze43^)bJ{VgEx=a|XX!}90LILDPD-Y6aKzw`1fUsQ+cvbc=IPpKvod_I9S!+JiA75G)Cg~ps4%F#-~7r)9wPX(U^RCG$K0$XDI3y9Ux znSOt(-7p)AFdeM@n$B-nm9>0I&x293YBDsS2RH6P8&0>gpjWXfXZJy%GOJ+QHyDgp*C>!iLM5z?MhDZ(`0PtgPjP0g>lC#4 zOe(NNW;+y)c^P*)K`r{3izXrOA(s}xpwJX~OQf>DU0TE62_Q;KKuZ7rmx)4V?jHxs z5aDbWMGHWPM3Paar5xPSzOgZOJ>eDJ3JKYj!J+~^RC$YuixRT9Ea;fz`X!0ZuRh?_ zy_}4)w(BWb1t42O`a2`Kfz8g3IX$RjfASoff9utsu^M9`L!P~4@P?dk;9knlv*-Dg zx&##}O@Ld7L|M1<+nhGYyp&e#8bX6ZB;QLa#)R@6`hf- z&e`tLTKu5A#Lj}eCId}hVW<$&gBgtBce|R1s@Dc57_p4_<{HNEiy&RHB$&kn`TmM^ z_31nGfsk2fKF8YEs|gsHAMmXcvcA`rfc2Y!&3 zRpZZ{6QtF$ohef4kd3B7kGVzf5~!p7i3%l~*698M{>OCCii4jYIVsGbLm;?=9fUQ} zcqz7o{oOJjq)@LBZ|9sGtv`=HALu{o&56cCW*JtSzk`2gWWpboz{G6EsxPCVT^U*mUp zanH=Wh>X||vMC-&S*wMP)Ot5fP*Ufl^e2s2O)dHx?R3^ppZy=t3>_25bar#BA@HU_ zn#v`OC=})*-CQXGEU)(g+FEP$maEtjt(P;>u%8Se+BV1%3o6LCS03Rvz9HCV~ zE1gW1!3%X~G9X>a%b@j?$a1uHsIPWasuDvWczhWj0ZIXsE^PHIj`Cy(!dadKVYmYo z<~Wv=eNC0lEn4O59Gu&khZOhpoUHNnYXpPGG&tpP+W7d4N+m_@883U@P&gu#yqgQfCTd<(?-t_9ngII@J=Lm~)4pY9@0 zX{Dg=PdX>Dk z73FNwl-S_g=R|z-l~9)iDBv_uJ3|j}IL2sJjZ=*-d_C_evU1W4pR~d(MQNwnDUtsw^RO+Ioz_OQA;ULgzM3rs5vI zf&HNF!A`wj>@MTidO(ra7I2> zB&id1+HepbSe!37B~)}XUR$j#fHtE1#pq9)D}w0!MZ~_@$VruHj|H^cHguV=V~n9f zGh+K7yj(@D1AC{71x;Mh8Uk=i_Fl!K=5Dl(rbup&l_eURQE8x?NTsw_nR_M0hL3Ee z-qqRwIo*ZOLpbNq=oO~DEh2_3Ko^H9AG3m5h)2$KAVFWv!C>$b2dF5#i3uTjpGyco z4}=gj1NB?;=33>okkwx>^i9);{OAig3N7*)YAD)V_6*gcmx?0a)Jdo2nd~XEyHv9L zdO;Na8o+M@-5nL_V}W|Ny!Q(gl};FjWgLy(^ax*>J)b;No)O*CA*wU`a6YWLxl*{7 z#B63IXGvDyun20ZivmmSn98{Xo=$f4OPGImdhz=|Cu*0KmHgsab1suPcZF5?%9F3O*iCy-Q zXv(&^uL25y$~iEOiOXxhJvyFLf<(?WGK%XAty+LXZ*Lxl>i$MhjAI?or=UL(tq6-_ zG~Gnj*_Su+ zd&KqLTm9`pES6?fT&Yy8Ou=d-+2zgQtZn=dldKXdYjhh3bv|&~*~C?0|>y%y@xq4(fDQKF(a_{ns#j9P1P%gT32yD9a!8 z8fTiR4oYV2L!rEe%`ODsjoEA#<4{(lHtFzueQU4IvSjGo}Jd945Q&X zOadbfnYNYlG~P|rDnS4~vs3=#H0y;%55&7S7dM;tkjdoBT|DPitLBkT)W%Q?ohwF! zcBv-KCxb_LcBm{LD77nHFxoDRUA&I`X*6fH{?4X-3OdO@p3(Jmc?KnJDosvK>IA2S zsxBX~!*j;aKpfP-+fob}{9|HC#a7y<#8vG8{l%k15zl>PZ^uOL)jyFl>QNRF>r~0o zMSbMUL)K5^xfs^dxC2Ai3zJ~t{cMZ1Cw-ei4R zQc}Xb5Av^J(a`pllW-!+F}Py>Otz30z%$)FIu0fkZR%96k5a>B#}y$Uzl&?@)@>jh zH%`5SszGw&74tewMdAH8g0MWsG5`~Gs*(n5?_FyfT69IV{2}0@eL-?J_46<)2iy(- zIu(Hw`EkX{765iojBOy~zlGo`^M?w&LVyq)a$!$nkkGQjV?$eJ>BCBmAdC6FUo~bF``M^!qjrq# zrLzo;XkZiV%sv}4P{6sGIVtqC&MPMuS#~gz#a$P7x9uMtTe1J&l7g;Ylyus-X0leM zF3X@Z!|B0G^CL4JUk)lR-FC_&lOPrN;~1cJ{5YQlZ_goTgW+3zfH92HQ}4prDHIwr zw6b?-Jjc2$L4HZuwN&h+* z@l7jgUEwm^M^QePS&{kDwQD;~Hmv9?Cv)r-bU--10Xfy$-cjl&q%^V=V#aObU8NI* zU0MU67|rSAR73f^O|_Y}HxpCXw_zu@9d!Gih-6sc3fl_IGM2AbvNN)4rwm|-Fp42r zV29UhD@Ll_{ghI$nd&R32%(Flyg>Z3g0EFSYD|Yno5n`~LV9iFm$B#BfgRcwbJiM1 zi9RCpvo|6>MwK+L3|9o2c%^D2T+uUAnq_l0#tH|7B!l%SceYT$JXBK&_oEtYIc z8uq8YvCNP-ihl!KS_Vq^*n-NFrHn-rw~HI*w+>Ol342qk5b`xA_B?BkI&MIjSGZMY zjNVu%Miu=y@q^pYm(5ig>}-&MkVuo3?Y+5C5NAr;YnM=i!vb9TFYu^zN1;H_SqfysL8WCxRtIIs#EA&NpfvsJ7l=8F4*qFSf%% zh4}hAGu!+J4KT^`ZIKAsYnO*jsjS3NwoRvhQa&R$q!;UFZ9)hNinO*j4Pe}o5a!(| z8Z#M1(?sIwhH|n*Xx%biV+B-IYnHq-0Ht(p=#YwPFA8^kDBP9CB4YWbLzr?pNEl=S-WwZ15tL*Ksaeo3U#zyQhW04xG6lWBPHdLU$+r2#b(cw>A^nRQ1WwG z;OMmZZ_SpM1zZ-_m`h)xS8ORZ7wb4nqv8rdev}8BM0)#%d`gm0u_VKT?9ra%BvFDt z&l)E;jFGgD`(le_87F(`N#x*UenlrJlE#n+VJ+3F4G z74#*@Xgwsxg;UD3SX;T7zd@VI2Ow)!zit9$=v+h?XUD`V4PS3v@@uQwx^n9E@OAlkDhCIo_0I((NF~**Ehq zD{8yohC{VH-gAb-HPpRhwSmeE*;wFb;6V&o9XBD|tbhbt>US7mAS|{q*|4_q31WqdyzX*CX z;7d5*3qXHv?EuXUX-N0#oyj`&VMy6Q)AyWm>{ozq*@0_Mw(bHBg*iK zaT8vz9`Z5Hcsn5;(t+?FhQ6}F;SQ?Ri@Daf0=u>gY{AA5N473Jh|3NnNZc)<{yHPP zVEFC}(phtB^@JdHHzPVej7%(tzzZ^5sO}Ve!GS znPgZt69qg&QfjQ1wyu64fnP*Nv9NRTh8c882qP7^09|9rnl;laQtQ_DZ551%AxR2N zg`S`_6$e;L6Itoo)RgT5w1Ay4Gy6dah$45;jw|+Asn8%K+C}4Gfun44Z0#3p{`Dfy zIcVLbmzy@#U87)j&?6CbgEMgr58l33$xvqLY-jcad!9VTQ5cl3zFqp%qITQ8Xjk-! zy*bLvz+&Q~@=oGIp{$Yd8SZC-DF~ECfF;kUA)@0(`Uv;D0K3z*j-QH``CkXUM0I6o z7x{eNR@Kjto#20RY-ZFUWmHig*-B3XX)q7?ojF6dkRkMI(4#jrn`0kxF_-+wMH5!B zoBJPsRwyA4#b%Be%VEXhzDgQb)2pH4D+*JJ+9jj*&qWhma6C5af0l9U3R{(ex$W|- zY3Q(Sp5Nk4at{n4H=cQcIb^)~{~ZYhf|=CdndewWf9iTTu^ftob6~awtut`9V+Pt| zGA-YBa1n->!WELnbqP2UFw?8ES>B8$X+XD9f+UdMVHH#FttXgT6iFxR!VNtRC|A`7 z@l*GW*OrF$qpWMOD=$08V5>W54Y(@KEjmDUOfrnV=QR7;f|Ai1VdFw1xjwlR3aFU# z6qahZdR&PHrFyZb?Q%If)x((GJ)lV1PwgGVcBVJT`EY1 zfr1N4Qf&~gZJLvFC1_$XntZY81Q=u(kYYffd9*xGYoOCvh=9?EjnE&+laaC^G90FY zUH>Iwrp%Aj@(@QI0nj2I@J)UaLbsIJn`49_wCD+(O#dB?rmw$fWy?{ z*U&Qm>Ql7zZ3-1G)=&J)zhewU+_8FQ6*}YO)kDy_*1q7G@pen}SEYQaY*RlT&orDL z*5<<10z$uAm_tsm9NixLamx59GG!?V&>KZ zC$e6z3jyNyih;y$*hoZ&PC&Q?E@7A`FN`|>qZL5O^#9UhaMP5OI?2fYvgS5=*3+p{H&kVVD{LIBV^(?5&vOu zE1gKQSJPD*-5}SYGyF=Y`;v*=5fV`zYQ2OL`Y*tc;dfrZA~S7*D)u~r`piG+qWfGI zaW}A1E|Kw=Xr&44FMe$t=;c|1{41=C4{Fdi7e>-8DJGn3lce#z9BK@a9O6uME{KJc+HJ!9ZD-H3^(ttvwj;b*p{HpD>K$Rte1gG_)~x8U0TdiA+HC3$EKe@{Y7aeUOYmS-74};pnH0 z7bF;*IqyoH@?Z%cQj6q$Su+GQ*%uHjD`0B>Lm|6y9^HdgmQ6CaR1ZUHu{z8rd*x4` zH?RoVk04sw|D$YYvj%KR9b53kQkrmEt1Kc;yU?(aQk{>`qJUIGt3fX#dJn*5&ilm7 z%s0%)r+!X_34jUe-8Ia_gt1Ok4gHcg#`&0YjWkL#6gIB{DUkwG(Y^_%qAbtPIxx9HwZGH2!WKIHD6zYzvK{S|^u%I~AU;3- znp*Nvvw&iZ53XrD3U(UeRRSWff)Va6#pamd3B*9&?dC&ZB`L$6N8{kqj&!| zApCth2wi(#pE?$Y>@kT;?~+6^=r1i&aTL&cjy7g?(4|5*a0Y);bu3}!(~?D=r%NQ; z;IF|USO8rsi6vF24Jo5eLy+@nqCwgbf5YO3({)eO1?E@;NO;BfQw_15BIIE7jnB=o z4(CbYHXJEl*F{Sa{|;v2Agb`~T#$6~<0w}|3Wc0l;lbUT)(^u{WDBE^yq&{JM&tB% zT(1FbtkIE48l=0uMJvIPgw=zV&Nz1H58@ zrqgPVq*U}s6LhXb+nCco0q3JrU08^9rv|zhO&q@dOjkOLR2`)-GbHJqxlX=9Gg3AJ zJUr%Ej|aBd5pGtt{m5LJynX2b44DpSEbyyV%RjG+MHw-U_kH~HL4qAW1LxjI=`0)5 z?72L;cG5cPo-2X@X=^;k+}cgZ7#Z(rwKn=p>Wf6dkSH$@qq+cWghBn%(A>Zj)D4r&ui`6D7cIqkmxhpCj_1CMYJZBm_v;+?xTFyrpDJDA0c#i7P+OsTxvZouzRjD30+!Dg&E&;|z+3&2pr;S#!mw%a7NAgooNqSv%ltcCjh1QL5j?ra@|t)rA-`=G&w#VJTOThKpfv7SoS64g zID1Ka6ljR;e{DYY_B@d2%gg4GPnIUsZ=A|=cc$J(dv;>_qZO`yWtpbhS8~&vZ}$|` zv6ka>=1W>-4fIH#N4#%9Lk4aPAt@Rp?-7brCNk?fab2I@+evY56QX(Ev2u~W1!St0 zdzN8OM5C&<#8^6J%sk&WW`TrAwmPRK$u7V>S*xdpp^MOn#mcG2VS<*Ix>RW5fbO&- zS-`kp5UY3TIxAeDD25Ix8$*os28_YhA=%rm79=C_;hm8u-yn6j)H!U!hFQrn)wl&V zfzsp5zfwzJ`@zfVw4_n8t!kNbgQ$VTchj{qtjx z?g+fw(FF3Z=uawt(C4Xwy8u$`;P6KRkISzfPMEh2l=VyYyEJ665!X@=To59uP5@;~ zpwM`e3#n`YRMgaiOpA!-O8T-WPyxnQ5Si~H3`N+)Mp~76c9&DIO22C1_BWhuwbyZX z+6CS}*D)pKy-Wp;txUCO`_4rNboob5*jvTCM9kgRNq+NK&Z+W2w5y)Ky$pDR8MQ5g0ml~0*qHxr;Jt)UId4h88e8k)u@Q&#%{A2NW6bR-@zjQPR>&iZf4wdQ>{W)kzW|l^Q)gCIF{F#i>lPYDsJ@?W4AEaa z;HIXEpAhE?V*^c3EcuC;ES}?By^`{fC!&jceuQ<#!2i$CuUX^F;=~%1NH$BW0<(L{ z5a+=3B3csUCCROesEg!P-HeBx^lp{fTVnr8VjRdZV!_bU7D@oy{^Ix}kj3Z%r9&wl z4w9IxcPxf+_qDCha0Fx=KWo|B#9sS!ncHJm*#DHiA5p&uo?L9GY8!@Zfq@O$l&Av{ zZvFZXu3VzA`z?I<+|?&kKSZJz{IWXiVs=VzoT2^;Y)S5lKq8qkZ7GhRV(@wg25}1; z>f&yo>CF%`=c$*ceG^1v7|;fxG2;1LBM><*FT}I_TlpH;7zzahPv%#5HRER)y5{e* zIF8bD{Gf>XFQ2E=A7CDvT#);^?&(^U#*xN#lU@R1xe=ca&T><3LfpeZR>%ak2yocC zozsY6Ck=^AA4{EITc*D^sjuf^Da?A;jfYkkxi|(_DDoTZa*mYsMyyj#8N8@e)7H*& zUS0_2_}rxCF+inRUn$+3adgN&mu@gR_wK{{8W~=Hg1q4^_xK~F``jJZ|7GSq7*w;h z)%IfCkp<9AqOc5jq}6f6v8h);wP;lc(2x4^%4)y}O>Z2(*^Lxe=+XkXD0+Em#@LMe zTLcL{nA56!4TR!#`>Hj}4Ahu(Dew?Q16_r%1&Rd?CpyxeRe*d@I9kOw>7w&3l@M2` z*5g8JF|lGNe2#^M87L@D4wwwtIZjnzdgQ>pR1HkpXbXn8ZaT4OXTexwB z1X0{Ui5)q?OAEQjNsbu|D_FI2wFO%Iy-?N_P%|X5zj!ul>74&b+$^Rrbn)iCn>0mV z(M`N~f7duZE2d|O?s6;%bHl2H;WmN2Eu(tBrz!C*xa&*{2K`?LL(o`Abs6mY%CsuX z${qe3cRObYZK>$T_WzPx{7+oZ^*89+Tvoo!K-QBwDRZ}7Ng>{2DK~eaqo-<=r?4E+ z`t?JMe&k`RlFu3q3SobPMwC2;&IDR0K$Z@26hac$7eN7UVdVtd<#QKkgSe(ZK`!ry zOLu?;&_7aZVz^bOpZg2Guw$;Sl=R(Uj3{**pmR$85>4_LJ*B8xM>H=wz{s>X#jSN{(Qu}#ob4`(KI!SwnQ$*MbBF8A)7@_ zdQR<5hBoIxg*G)mq^~M@)~XxgF5(y>hI_^A(Wb(<6pe!+l2<~$*#23bD68|-7Ur$D zG5cD;x^|93`maC(UV;8o;kz-EmUxdFmL2aJhkvFISRiE@O-TwpE|$? z3peZ!d%*OUM%`R%*wznwKOeKTUHTl&pluwAV!DcGB6n~3RG-Nq6)X%n4ba;b(sK&~ zbGSP!6H~^6rm4plD{{3+QK~wd5!7)U6(A|buSHKGcM9eLiD-3w?2tR@aoI3e?z6X0 zf~!gK?j~!Hn)}hop`%Z`sS<8qnzIi?`W@8IP`DuJs2A(q2JXnF3)v4eSb|>={CM)7 zi?B?6fs)jl-Z))nN!$dosA0-aMCShW7DB zUiVU8dCGel;oUg6uugNuT0rzXF_M`y4+ji+`aw{1pFO+7*vZ-j%Yj8#`tz;4-EeLJ zYPCJB16HL$7lT0_bw~n=&^P)6mT1*|@u=}oO~nTfOmvcO5MTOf`X(hXALP-L9Q_q7 znV0vAi?JjCM!9AoT(c;01THISZ={Qr2?_5a-+ifk#PQJaX;eiKwX9`0rBZvcY_-Mc z!f{jdwLHY@bKjQy!sX1)i9KuKBPT%SWvftvR|rj#(R5OI%a2SKVDF4@3Km6zU?8EkH2eI1dHbeznj8{YP{pc{INfdgYY`)%zmN`^5DsjsI>%Cm z07TMKM&|P$_)X58Y{(>cbIK+_CXwc1wW96bWQJMneQJTE5C2f)v_E1xhK7FM2pRTU zs>f8e&doetQA;|a@ee8`^k^9O-L7KOS~wL@9M6rT0<9-HL2K+-TBV1Q_Q(QvYy37m z4q_P}$`%RL5c3~uR=_wUqe8=IbyQHeNdkdsO+9Z2JEZV?f-ri_rGY6Q@n8{ny4O|3Yz{k; zy&$o$Lgj=K5!Yl?U<=+p4A_ec$*C>D7{texZP=m268I9H%zVpEM?qSdlWcQM`tii3 zucnfA#xY_b7wxBsb{-L-i~0hEWt*S59IaGyKhN*27l7p+$CQ#{cGnlX&N=AQurbUQ z>L&cxzfuIh!u^%JL`c^08xk(fh{846aPT*WIEzQP*f?@!SxL-TV|>=GkB_k_^xZBe zOJfx$c91YDP7qLuYqTM=^3|9A(lr}Js&&Zh$ap}_29}XUv=@~1Fp~;nBL3Zglepx> zo@ehS@N5P2>ZGlW)|J+dcRbNZC)5#-K2x8Z#qtRr?`Z`Mwxg*=I5Wnk!3JH9Tg@96i*qv91V*VfTOmLS?D2Xww|+2}ug2jPd95(M01 z4Y;%DI$iQktDSL{q@j@{zvYZ1_W4U$vs=YqAb7-hD1JR)Bhw!fCP(#}QKulftceDD z*#ksj54h7Aao%?4V|QG!a~+a`?C``B&ZgDQ4H!I21er69u3~g(uarOyFWLBA{JBa! zr9mdsj{Ub{+-;1~Ut=M-sU5*`#J2N+gHO+g;fONAU}}LUX~kdZHV=9Vnd^3ss!Y#~ zuNPI2f;jqVoCq@K>@HzJlbT|($wU7M{|(oBxZ=F=Zh%NPRPVQRjk0u3kypDN_dG~J zygK#S3D?H4!myNzIxl)X-|yosgSyL8PlG8}z?y8gvQ0?LC1f{~wj7PfN542{bX$2A z*ELYr3sL7%v9Vplf`?0P^8-gWg-ZfVs~O8xpZx=A+i$)Flz$`Xo3VGaDU@Nn?Z9@! z=mNfo$b|fU%F&?rJ?TX?5eiOXhS#@R%@Y$L+uA0E~p4XdSM`(L_V)Z)JpR- z@%`%nLJvub4jYrMgqWp+-4*3%8R0uMGZ30bRRTyHD?(GGc+n7uH%6`*_o3EW$8X7! zK7>_>w}R~oZXT|a`6kb4UfP`6mVi@440t%6S083g zE8cy`It++woSog>tub_PEsP~U%FNkTT~2?Xpq~bw z=>xl70Kw6?zKrpwE~mIuj;dUP`B2xahjwfz$J)>dF-SIVn#|4Kc|zLEwvC(1mB)ov z)w&YNDk4*l?>dyyM~O5-K2&z`%%Uxy(_=$KyX*3LSb*J)T*c+4VR*1xlBaG^)1cR) zS<+7JaQ)ZW4PnXN0$zZ2TAgneqBO@CE9rkHqwCd%SCpXtd`S1U8EgQ`Eua^dIDaH% zD!)gC$21-HuL^EA(?AccqRdF=1KGW{n~#OGbve=M@wklPZ`ZmAG8(j<13$5+L>ry` zf~zM_CTCr=)>PvlqPTOdQ4AY-G$?AV66RY6<2!g!vXM2VVHi1{pmgRi@Rm)n8Hg|B z6>duAH>y)_w?enTXE6oGHd7A!c2A=nnqY!+RO;Q%EL)O+7Ir=+^)-5Hf|21Tu^3Of zaQ6M44*f9J4j70_$VJZS=f7+gmZ?W$ ztMl(mGtl{$g90ER#}xzueyV1O9PhnvG=!Xa6Vx;_!{HSHGmcc*A$X|3_=i&2{{C^} zu0ILI)Lef28UD8JvX7lg_u?PoZSGHCDYtb#nefbqW!Ovrbs1T-fgGRMs<) zvamK)t%JIditwwVwO8{>>uhe1hFs+dv|?Wb#Ehc_D7bWIC<7;mZ%Zj5$Ik4|s$suW zXf6RfRA7~uzNn1WS)U}_X^?Eg>K!~5aRwC#yaJiywS*ma9|voM8!&0Mc? zL-n(C)3}9gsv+VnrcCOhxi^Pnelp8Uz-YtnWhYtN5VF~ z&;`%P6L%_gWtQXNAQEbwR0@2i6+zl%`C{AmW-5%nR(oVLT8vpnn2FHUXc@hkUskMn zP{HZCDuQL052P@t76@SgVX=J;Go?Q2P?YWrT}jkV+bdKDG71MR&|#&7pnjc*UF+V< zv6=Fx*-$^GnJml=(}SNSBfXc6AmoT>k_()K@P~45>--67vFSB0gWmkLy$3*+vonx6X#I3UUUeK`0%)raSBzvgBGxHVQK@cp-kOT$?z!A(BGWXppsrY$ zm5hn;a2R+{Q|lvT4KW9f{F_0SRoyY79cgl=IS|Mj zjaeaM7L3&iZ`;jwIxb!M!&bt+^xNW|a4)Pp zZe2L;maD}RC{#_luOjQ|Rjr+_ZI-eVUi$8H*!hHxXw}gfdjuAFGlS7xoIDc15u3xs zL#Hr!$c$x=SW6`D<7&;ZgnX%!u6&57^dR9M=)ODMa_N+v)?aVPaA~8iPk#zO2WNU4$ zi|IE7*7OnomRu5?ILy^67@^1F5yeZBwO8;y{Qj-&v`1E)%4RZW+I$v1ai!P zeK)+#1~f>mOB%1q2)K1f3*tC-(ZmeLm#XZudzsO;DeO5&oq3QwB&4nY{^=3FlLuzi zJXTW?wexrJ;M>#MS4ue%WybgUxMSrD8IH7ke1;x=nZUo0rGb!d?@PL`sb6ugb!VRn z%Cy%A5(>_R4~uN}qVb+t1OM{n0vMV?4!v7O%AxntvFWm46(eL828MrGZ3ogwvIdrR zx_D_2Is42%eihxQpn_+~P0Jr*Ulo0bzc(N z?17VAzbj^$7ym;r%$Y}iJ|xYS>ar6I-+8odS-reP(hqAv=1Y<$00~32Ph3<5xbchN zE)zluoN;9(sqRDzN5sgbV=~&yA|$XjfsCvNRn4FLUOgh+b`6WTaTW+NG?6%4Ps}o) z93md8)p)b-fPBR{5D_h^A}m(>OWN%8N)rVII46{EQZ%B4^A(2yrGn&&AE19jII5ie ze8FQ593<>4+kHk`wE;eOFAJaFykKPPcxbtvGOiO7TXbY<&p(^FdFhOhvqGi5g2?(B zXOL-^;p+asDD@=-QYDOZWN_*5kA+un}O29f8!X&$~tiqVFgS9}E>%)5ZG z2Pss4dF@FsBQ*ZA)67Qbiu4RRZ&7#Lf&t|Z+->qJm!-fh ztO(>%|z2Um$eHz9p_Kk|N8OOr~`zt%QEy6|I{1SRid*T)fm4_+NA~-fVjzYhV zSO}bww)0YxvvXz&A);bHD9={O5xN-@@YLuYl!d~_ENGy%J@b;JU@ZLN3TUsXHP;0I zzAMeuO0wv-K_$OJM!>Fj_>1>e0;DNWAa(nT`Z_RPb)dQ6O)@N;PU?>Z!_VRh&O&{W zp6jE4Lv-m^eJbF%xJ`UPg+g8Tb)_7?Nx-1(kPu7R#xc)+u1}RfMReF+ht90@fQt&u zkY$Cn!F;ZyOs{b9`?4_^_lAgYzd_T?Eby8QnD{eht3phG|STJv6VxnEgM z8e$mhI`@#B?L^OSPNnI``N+?=D>hAdFxGAu%cZ*m%j@5?sZGA=SCqG!^!ZvvFIL-Xl;ai8CQ$W5CPMlJ94b#N+FAPzDG|BWi~7s=s1ksGOR_XL96@Th9B|>VZNHc zNLs4Yg`JZnmw#%mO^u_FR*VJ&DlcsP;VX-%(85V+@#?87o+Ni!iXI}!PU&oqLNY{# zB=;&sTfi(naVqwFJe@@BCTMkSY~3PdzJ}69T5XhWhMAjxiH?Duy__13Rn5B5C6Aq| zf1Qgd@{vVxm?nZ@M(UWWAtk%X7geRMwOyMD`n1Q_GrLP+AMS-Pe_NjYBkXzAqj^gS z=Ie~Wm4erCJ8r#I;M>2qG2ZnqwH==(6IEm(k&l+gPU|6&FSFmZQrqG{%7;3cd>z-k zwagq*dXy*Jp0u*f8Fxgqe#kvQS(%Y>U>ra z>IoP?XQ}(6;F4Zp$LrIZI}Y&WDqtKDKQ?nKMfyry@Q4PeD_l`Z?wJ$T*>WDt`~TB~ zISY-d(IFKw)KG{#3j3p|SBQr@UqdJ1bBNYfRush?_NkRKn`aY#*Q|3$a-W&Vl{OO^ z>|B2SON1$@JSr5}ovZMR^&{iQOiZ+K#2M|5Qh=P3W6VV^Cym4w=tYr!PGtWbW;gw! zgOK7?tap>IfdtGKT}>u%E@yNxxhSeIRx<4+`2F;B!0oV+jn&Qh&@|7zB-kZsDJyXw zl}L1H;wq3>qPJj!ImT)gimm9&|J_dT4#Z+4!?prpKJYKXl~gTkuofT97Y*OO{$eKI z|Aweu=gBPF<9T*Vc4AiN0`&}@BD?dq5Ijq_$Z2wD7yB0wbN+uttzQH^YpUStNW!JV z9$vTSs)Z{ekYl~rs3KEt<0sioN?nEfSztfC`SAluPjD_c&GMzE08to$HB?p3+U(3T zMVJ=$C`Mfpu}qmywJ5ujf3SkWIGI)$CSb^EyeDO>z~-cZ18^{m4efwrd z07i0$-({V;C{&bY`t)bB*-7xPE4Yb~fsO=Gu&XLFzi&m5KHzumzg&}g(t-I5d@SUj-AJWlx`c=qNy8 zHNahcON`&zg$>9aZT~f4i1Jy&9gQGs1gO5R48Dx`=Th-79wLj_KS*|+-O%b|&c2`yo$w(>dONtGYuYTsl7a>CgLE0I zL`zP5-+eV_AJ&T&Zr9#cp=aZD>*HKDE|i+lnKggxKMdaeH^VaQv*$Q3F-mJ`W7Td!dC) zoDY9xe|mA7(4-f~jR76kPS&s9QpS<2jK^q(?%--=2Srl2sgv(R-gi8jOp1q6wF_5a zM`-#E?H3w>9Vhaoe^F7$nyGT_Zwo2z{!215;$BHgbY6A9B8UBc!?B)n`Zihg%@))f z%=y9vP9aVscC21))mYKQ8c)cE%Nzf^_@%JEF*QB;76Q%vav`i$F5yPI&ZAf*L!8>T zG^NnuDf#a@9=b;H(|75{x>EaESr9Z&d`L zU8%n8n5I>X%t5A{ITqD_(x2a9qPWdzvkiSVEuwz>+>{4{myv{loivZGM^C3{W zWJgF3`#J8ErAnRy-*v*GpBAUK(qnM9XWx?XhTxNxUJ2!7%ecrXVOgFZuhV2p%f15S z1dx*VnoKzUeo2m~xuJvs11&bL`zW@OPoeJ9p%uM+m=(~j-r@FLu+l`+FdqER_^(1E zG>vIP&!OadJ$DvdE~yf=8cN_&5;<=d(juk&*=ih)G3{syA*sH`B{fGSW=CI`q9__= z=7obyT=I53sFx##+8+U=vtzfzmBXBAY89@s>ftgimbZ3YyZky~0F98O%Jt&snXPBd zsCXr~_pA3~y|q%b@=k{aGQB)(dj*C#NIU_{T;+w6836GyyJ41Q6?nF|MFZ&ZEYk;i zcTk%!(8g>7H~^C2vhG(Iu#_%l%t?e$h<2G`>g%(cXx=$~W0vH8D%kQSxqw&-XTgVA z15S-3i#nf{{JCbEa3fWnX}ob)Qck;rB`2~2{KEXba$IbT=*+mj|vY-K(wi`Nzls1H`Umm#8}05n5_XP zH06#MqsC+GmX`_aj8~c<=P3~hT9$jU;`LFu%{#7%bXuoG`6^GcS%vMLeKJN#{3-PZ z*5}1Ya$&-38c>E)fy3eI0(HhwPL(S(X?RIBx+}OwbWV&vK5KMDg0^D_2QkJkN}rc% z;51obR9LGMT}wE)0@T65;`NOg@k_~!Box5}s!SsC?16toz{HULlZ?dT5!(bqO7o0b z|7eT?;2*V{CL|}sN#?33$;0-%rzgADq#>*uf}(AiZa&M(h2A4AL+4t~dgvX9>NHR7 z_bUOfcB92`C@&xuK8`hVh}&i7$vU8GmT-Eb9zFT{;4BhlAlE~1qnvkG|H|25-4(a_qQ(~A{1+c;g!O8!yR0jM{)^&J8 z{|(_R%f>LJmrVH*AJVR6h)mMEYrVW6eSYAVj4`egp2=>h*P8kVN2BJrm7cb^1(Zb8 zS%q0!gi(*>dD*7MgKWCs0;l6^*_2f_x`-gFzOwQ&SC37~pbG z!x-#Tb~h)f&H;3F%-0#GPb@8~zv<O>*zWZWUTktUSw~YOB;ui3}X_4A>clTjjwfm1Qi+hOSNI zOmhv^Wy3bA&Si1aKK$3_GqlH}-02HYZ?tL1V*&lrbvi5V2!ZQMTBC*~hn6qGM6w(%C5W1xES5)Tm1TwKoNyeuLGf{c;b(?6|%OD<~+ZmjE-`=Ez0GVZF*Gc&^3X zlxcj806(-NGEuuE{P1*3-J3IjI9HYfK3Xis0c>NhiSPoT0iMjpT;paZ3=FKGuJ%!` zFK}Vi=Ir@9K(2ZUfk&fbJAHza*V-2 zsU>eFE@H72SFe1XFNZoT|2>3QVQkE0hOpnrfhQe-yY_P9`DL%vjU2=WU!E2W#kf}~ z*PMrVX?wX>KZCJ$0tjPB`L0DAe@)j`|HOlEEc(hgrap)*@7~f%Ql}=oI3@cWyl7al zy4MTGBAvm^FtREZ+hyjWX4dVw5Z6n?dIcaomMWuzjiW9%iGQ)2z>^6eX6~!q(wG-q zfWQu5H1(2%W`mQ-OfLF;U!bIU#g%>|?hRp76E%uw2D@t^kH(x5iHPNN!CJlb-84QE zmB&Ek@};(WY$`OcU#WUTN6|?xx0rUN78j52Y z?1@*f(>#<+o&8gYq0`qy#rcpT0U+OJ-ddW;5NHmH` z@j>0@SYBZWAlq=(q)2KM#z)aRj5_#nYq|!)4vfza0hPE*+^ivz6St-R1w+>)luLZD zp&joAP&!2M8*WRnCFa0}54`6_n`2@hlGy1w586!I-u8eNZdYe69I(30_rPg?kgQj+ z7pYQq1a{S$3GV*;4O)t{00j`c%iWg?54E9hsSn)jViPa>zyAsxHdl zU5p0?3R#X4Rc5C*ds_ONXgkiZ6ew^0?G1$9^TPs$26CY848?+LIeW(Ttq@e&-0n!v z&m0qj4x3*xtHxB8#D9M#KwO9JaSVW>f&dYC{@ez@2tHn5Pbd&W-umWlbWRVRLvBV) zPv~V|=>P<=El4d;S6DL8*le197I};rfK1uQnbvaDAZTve)s0TX2~^&XDtI%g{=-jc znuG$q=v#NqSUL&KmuP8M2Nx%|M!5Ws+8JHZ*6k^buE(rG$$L>Z=lbi_w_H)pJLv%5 zRY3883GzzaSZr5;cP7u_lq@~e#cXqCS&MC|JTceJIxy`D3gjv^LV z*rPfOo@Z9Gg8))!C4+Y5!%Nyh9S;E|`?Kpt92rJ|;^LiES%?J~Jyu(#p_>g%A6+NR zvS8$p^;}B(!w4X%&OEz?Cb=7{O|W+rg2pAYW{J}H9R|TdLcCQb2=OathkahfzUHi) zZkzatdzLxZx4jzzb_eB1061FxkyWph}S=st_g}3<;+t(Plw%#bJGABf(gsoNwrrbQldJ3Zo$72O%LSy_E-~cd!N@Li&dWd zRhkSnv0Ag5{U)_aj>);$Q4-VN-&b>ckFEVK8g9~Moh*W?7tgp2si;l&KE@IOP@pxZD66aMImCBL#b!y4jaSH=Hxjb2o6>E2Op^R;&2J4{q z6*!;qLjsJ?(kEd(8gk)3Oi7c`k$Y7M#O!ZGAL9(`1u9s}N&ITo`x)|8CW=(bPWm1Z z_)+3v_EkbbFT8<&VN(oepSdU753F{_B3T}E=!k>_c%3C8joqB#0RKM#!2RM*xjrXs zN8Dn$J<~KPQY5pxyZR87Peuz`cN#*B9YldgYSjYRKT`;-R*t8u#k6EA3S*hZDskrq zoziq5w)f(lB+5}Z{2pTSVf?=}W9@~lE9W=2E`DRctrA`4BEa?Emmo@sUZim#lcg5> zV2C}w4Yn((LGhM``*vYq*c(B$VIbr^;1gN7$}YfrVJwKrfmY<^E8+&d_-LFw^b#UN zWj2iaXA{9~W394h`1Th)Z6^)zPR)oLYm9`Ty5iCY6$x;09pLt~!)L}desDy*V*T?h z({Td1{dw=k8yUdIHlC#Ltw_nqs7RXvPIxVTelkq6yUpAC&t3=WU#UppS(LnHyBv+2 zJH3bY096SrrY^j>Kmxdgj*Km-$$|SyMRJSNqcch{t-2=F&%atmM7ZVtq+zER4d0DP z1=;IzM?2_(i6Ff*gXv04M=g|26EFsN)`0)lm?ZHCn4|ru_TFy$uP|E}p|X%E!B5Ge zLaQn41z_~fKuhO*Wv!oIsQqY^g+B8z@?z-wHAM0$4#8xzn@xm>0l>6q-qrw&ou{8;Dl##1P8N)Jt01vr=UK2nG^!ti1Rq#!C(XaGn)+- z@E-8~@30-0qLv2?+UYB!a36`DV<4R~y&j!m5zD{X!Koh zf-w_Z(?z)pg^z`Y0w$Pgf&oM}C*~VGaa%WbIm_{HM$N_rhawC6DO{hjgla5vwaAAl zWFm&x!ThD!*LN*Hye7;=98sRtA^zhi+T{tU??N$)neMe5ZlVHDsfO&z-M7&Ua-ZSD zLdmQ|CUs)5l3ef}uIm0S0~K+i`GZmL+M^x>%&3*g5avF}?5B5j?>1ir0EhCOArWBH z{+p+Q!$e50G;~p(!4dHH!KwU|Y47wVP$sBTXR>!8nIL~Q{JfxIX(sT(7&)PwZ=pn< zqkhau{l5~_==B?DQ&Xo5G`h@Y(y0xAH?&Hv&bfi~mW&pF?DeNC@YSl*Felj(KX06# zld+XBVrwgK1>+_{fA9$@9NM$$GQ&6ExffXh`4+g(in&Vh>$R^VO-jT8wNY+-(h z8d^Dd<^C{JP56GaE0&$oH_v{`7y6ZEpZ3P_sO6t>e{|85-v-!2L8Mv$Q$OpCqA+2! zMua{b&!*vD$uWdbtgSFKk{vi;uH_guyjTN~ZCGtu8gUmVFE|wFUQyjcnIPpUdr-)I zuVr%g!?X!zWa3=!xjkP%`Nt}H*=A3P3RZe{rg*NDQEdwY`M&Iu3R)EXl9yzk^N=T? zS2LUVuV%x+rtq-q6*WQBR$nf^?6;s3GLn${~w8FO=u z36}4M2cAsMGFkfcukWZKwVL328tN!y~H1HT5g zsL`vrg15%^bHb#=i)uGbG>Jwe-&ojV_-DV6?iOM9;ULD>)1qhtXwn$=>zd3G@$o4U zgR?BXr+;?C%J+}%0^EJcM6qBf3gRwpMFV*+q&v&-{^tZaDn_4n&JE95lp@UJeV9*C zGNu>!{vThUYU4i5z;t-Ms6AeVsI_2Ek2~0n5F!+rS0K{nV~;E?2`j{m#wv1x*JeOz zPDZ@vhs!lucu9TX8wdt2&Rz}f%4tN0i}WpFFuP;YBhv};Ylc&~j%~U!nO!YI_@lKp zFOJtpmexpnC$HXWu|6WQB(ZA`aZ-ldQ34vR4(_hPA_*zzyXP`?22E(=(fQf8-U}9f ztXZ#QVOdS(^|-I{dx7IzXyb96qN^ngsFW2S{qDJ$pB;v>C_&~^K-*|1ExVsi9d!`N z0u()ukgdjA%Rn07aMyHvHsq87QHVdn)m_i4T!I^ z`rGi-07mX+6Mp5-LVbe;A_{SR1igHN zCdYA>T93@A7*Ydr&YpCYI*WU$FG4U^y%1D@?`q8|ZF>l^Mt~0bqK|n6a95KN^V=G} zc@{Y4K@3{h?Tc979EK$PATAx&@LY_?KRFVZd&ItQz^&rE801;z<*7UV(DsCj%d%=^ zc{of~Jx2kSt%o(4g9Q8;)-Yc;x2-`#f`F>G+l467LT)NpXRJvfgJj^x;Lp8?7BgHU z9>QZ91m+%w?E=yy{44T|GVVAs!14=NpImC3q`Xlm@2dr?{CMNr(5b3M{=?I0<~qJK z(4Q+GWWUmyDF(Zh{L!fViUID&FP&`h{x{c1sIgLgak%yVIk$Q$CA*G$h1xQ`vT%wR zfbKjz(Iqhm>g_w8?-sJoEX5MNk)ILIIka=hYA5NIJE3qT<-8@m>`P&;DC8HAs zG><86R~LXr#jm>7M+>xS1wB03NPuuLM?sa=XR6fMC2g(D38XUW>uNPa9i}u>bzkU< z;P`Dhd34^W><*YDfVP?BPO=c>;q~)UavO+YysRvWZ%FK9LvFU|r+w!}+?OB8yKOKv zhD|bXxbAP=eE+?83nQR@-}@g=cPj*cG0(y%Q`$YyY^+O;P(FDf`?eze4hWfH`pGsrhVc@z_v3n^sx)r*K!C1GhdSwDXoVXqiV`1 zkwq)PzZEzK8TRx<;AO-%wSJzJ8gg5K01$oXE5;pHc*!s_D_3`{TzU*6=Tr>EiB!oy z1rVEqvvW<}eRn!@v+vjQCRuTDiS?7PU|aTu%sx0heEXaMoFKfgz!X@1m|Te$%C8)j zpd8^VN0pW_86$vrx)PL>B;dv8ikh*U(n-RulS; ztxNE_IF1RJ&vV+QmH5{kgpaZQ<)M7*J#X7JwHtB;BT@4mtu7%;T?=Oq%pnIYV!pBw zjVwM5YCh{%C8WSYDU@OWQEbPxD?!$7H@dWvfqdo zi}{iEdXwt(Vs6aLA_?2$S|C2yIvLHqOi7k#&^5n$v^h!R?b$p*9QPw{*PxCmk>B4D z(Ozy1N@LCZh5shmFmg@L9N%=9u&$bDav`VK*z7J>NQFI$i9)?%k?sDsYhrSBDw9dI zV6-U;sNQ{R(NqshbIU_SPSd#T5n*q>E#N>5_*x)(HGHc|#L~GEnI1TW5tvCANZ0J3 z2U6e*&cD@sEVyk7a&pPAP@2VV<8l+Le2D~b>fw7c`#F3)P*Qy_!y{(!cT>JieZa#N zi}x~6a2LePt4aL`kS6qM6ew~@cjf=q@_inW6{thY;hl$YK+19SmqokVn>lxsEa?oS zN)@xqCv+evGqzH_zuW%|XS&26+jQ?3#X7>=l9`^#;e5&O(-vZvkn>u60MXdF2%ybH zm2?Zn32<{xK9s?vHr??8v;a^}LDIkqeWJLev>6}862fRe^+ zw?_{gY!SlkMcMB3{`CbE<=M!Mki+b8Ck{HLB?#m3 zp7_~ykOia###!WT*lIvwGlPu>f+_IYalBmcyzhUQO9+P5&ndL$K?m)6jVe~96Q!7f z*LK3fq3-iXZ3q)MjytI4*|x*~7AX^Y7pznflWX9fJQS|P=g-dr&XSqDT@sxl;3)>t0`iYexU{s9{zj*Vxc~|alVkqss74|S~TMCcaV5SI$2F>GUy4gZcmyoy|PwamLaX$zx z&RAn%;OBEq?$?_?yKPN5APi4XI(Z?`f4IR^s|3@=G5Hw)@i}1` z(rRUXiKCB)eO%ZVgNGB;ek(#KI6Ge(ULNOIxCY41oj2GM&;8?o9 z@k{x;8HvRK)cy;$CopBXX0827p50?*1LI-w*+}r{)vv~3G|C|>=w^pQ- zMQ1((N$JAw6{`#0W{vWRBe@!f?AkIS(QpWDUg_$K*pF^sVU$8FMC3-l@;~V|W?C99 znZhxMV>G4)YRt~WtsJiH4UVST^U|$7{Hn)F&bP!P4b1#C@6`1k+ZFd314|di0qJu? zPtbGzGA0Sff1LV!FgW=!<#=dQ-fZv`?U^LU5dZ&8D?k}DjJyWbvC8eR$sEV5)P&ng zKrC#h1(1WI=Fq~1aX%j0Qw_32`KAM9L$oI4P;%3UhGp8Q2X3VsH-rp=8zk@fvUg3al#c#?b<;hA>% zPb#OPe>k`iX^D_Lq|4n;@NlCpqIH%&?gT>XVAh{p(8RgQ!`IIG3qP$P=$)2pZ02JM zw`0r4tVK9v^;wTWB4v)CTCVMmk#e97sVA(Rxw7AD2~95L`ENFVcyEP0w_(tOZroP4 z7S2nxrT`+zn_NUhvA%a_DTlhv*}i?nbf8jVM0xn6c%8kirG>2#pK6gNry9zpW<*dM z#>}sxzF4Dl!nyN4>xw#_+lVe=SibB}IMjooY~(WOJZ_hM zTcUR3Zzr7K?tnvqUPCNcw5davzAJ2MWz$}wU$>Ht-24}oC(8W3U@7zPC1<86fx_)J z3Q=+j#^~dxXuf6Ah5$&*0K@OT95EY3XgF;e#f{`h91#gsmlpX~A~R^j*u zl9a%0*w$~f1UTZg$sk-f;?^T%uf|!0uW1#&->kDQR!TU32D3|*Svyjsre%+MZ1{8O zZ8v2h;Lr&=u&5Dgh}HOvM4j8Y$M!AvcjuLBEV#s?E>^=fm4a7HW_q90sAOJ`(8$;x zwbAO0A{`Lxt2PgTZXPY9D6zAdSUGK^l71rt*`=g$&|Kf*SMKW)*T`wrglt3|TU4B^ zY-CWy0(SwM*S>0Omo(LtZAyR;$qnp!ZyTP6ei9}_QD_g^7|S13=_~oZ-i@BhYFFZ% zOp^J$(oLH7Mg3Mr!&DSw%~(lGZy`L?A&?(6q+QHy#|xLN5U=6c?L<6wJl0q*Q*IzP zS-2ec3lee=SL%x!XP))2Ur-rTTYUPRHE)@7x0<$T#3UZPnO;)@FUpvh2}^^}urS}y zZ~*@5dX(N!{GL*+HC*;`(5@9S0Iz?tvmSE0z$x;3z`{CR9W#H@c1o84Prdj?q66j$ zB;M*hrsQbjQi*pKa9zM{JKNyXp}o5irE6)q^bJwIen)nU{QN4E-vniHn*&ohY|{$j z%&n=sNJDW$#y$rY?X9&n92k&XqY@>m&F?{J!5u=$@}Nj=e<6BgIu64Gs>`#4j-*tz zWptZ`J%-e?s{QDfFS~)ew4B(Or6|hyirQ$X$cVOLnwWxk{<61jDa_l21}pDMvkH{A z)J6Tr0*xKAfw*mUw0I~{W&3?Ch*%k*qGMbH<9PA<1dq$Jph@fn`ETjQ3VSoQe&J|z z!23HPSn%)+#B{`oy%oJcLeo!-50F-Wf7zOJx1ifn6AXlJ^(jIVa>+NPMjztLEJssd z;>VK2R(>B2oh4$}N(zEe?_n82jADerD~3rRvH28h#s*s2eIE_pI&UI`eFgy&OKpX! zys_)PgXp&zSrwBJKF!*^0hqVMg$Io>1idSCE9O=WL6*uKYVIs<$D2nHAv^_jT}uzg=7Ih_a6W>>vCo0Pa6kdlEA5<;A6y43W)m{h5|^(W z2T4g!ez8cyp0;6tt)^&yQXuax=XDYoi0h-t23f_LhB{No=S=LpV`{y_iGddQy7g#Z zbH+8=<}H#FD?FCiIIPp83wx->4nLX|;I0X@6STudxnoOi4ZNnwf-3?3EKUJR5_Mxc zo*$hI%3a=v?5&_r-}dN6P3SdWqSLZ&#%Zc03EDZH@2xB!X08z1LEr>Y2j@BgK5yEA z6Gs(^a$hY~J%=Br*s%Dg!X-%-(T;75xF%A*XI2l|>GCmgltrRdsE#R(TiCp-e+$S6 z>$Z8yu|fAe{q^@C4$m6Ty#6gs3Lx0E)SiSAl2Mi#`8xu}PxuG{nHr55R59RddlBLt zf8lHhy^DtYRcIWp`4e4PLNuIGa{);tB>`z?^=!(kbkw~!-=Iy~3u9*-42|19q=|Ca z83i;ElqkW)?)dfG9ltQjZ$1)1aK=xw83Tv+kDNxK8J>OqP?3Yuq_xGf=c8l zDNKPbU@{eXno_vzC<$VYT>CXlbDUUmNOHg4&2dG2(E2)QC9&`VFd+Y=0WPIX08+3G~xZy>qpi`z_cI+VSU#ksLytCGVIKO?yY%HO`=8 zgLU_eG6DS#UVib^1144TpaYdN;&2MkW`Sv7VjU!zlOb8M7LLRR zzD@ASYlsofh)8A~sm|3E$ea&;M}Y|V4vhv!OhFf}3=2WS*gGPYe943t*KK?)`ZH-_EkV`s=Qtxm^aU8VAZB{_H!&RL4z7 zYX#kLM{CEP8y7Z`zo<&GUFz2V?^1cPXv=*qm^dm`p)77E+dRXCBCi~nR4-%875DZG zJaciE{RU*_Cw$h%2b?DN-RlC zEc_M&Adb$e5-0CwSVeVq;zo63q zqDsS8Vw)o;Uu~MJ-vEKB-m()PgU_B4pv-4}alq>k^a&gXWJenqBce5eBvF*ZGD3ic z&N@C}%RIJz)9bBubP~QAw*jEu{?`pa7zNpM2C`|c(Nc9w<^H-vI|*|C#%}*2ibb#J zol!6@&aBsRc_v0X5p&m%?>kP4Dhx!6_)INqvuE&8hdZCbeC6m{#zpPISF3%%fg*A2 zdV2cFIVre0ojPp^q!WhU_QX+oNS)Zr*bYc_OYWAL$l)W+SGuihq84=q8+9jGO9}FoJ@XX?J-|v%l`2ThgSV(w3M7! z5s8A5Zj+nZrNYMu@tbi^m0E(Zet6HeU&I3(5T8pCU4p^X@Ky-K(x|t@Z}n_%i`wOB z>=8*KC#&-e=ibuZld2%{8lc1JTU7|VmG_)i!)H^o?}Yp$61DnLqEoRd#mFG&3Q5G+q}Ncr=)?%A}E2fCt;uj--Eb{F!W0+O;J=FYnX{33FXNF&yP5tl}wR2kM{YzT}ck z%U6xsL(uQckQGH0D?+8y59Pz2G)tE>erbbl%7j4x&<0{bLbxLgvi^z)IER6I9AE>s zo1X@Y2y0|1Ru6QZZ{Rl8D*-Hv9;RDAMO!fkQc}VP^pbv>Ir@9pj;nSNZ|87R(=S1@ z(4Wd5}JbI+na)hlsV&1E>8=@2Vkl}P!3EKlLTZ-#Gv9aObVsChhp_e5G= zj4YFsC44|QdI*s3F6dMwsyP%slH8v6=2CsR!u3|L*iWRl+YW37U!^#ke#E?&Ap8wR zu@9JT71`E>mXu3To7cc07t!w}rm;3O8xmuqi4kH;7lkkw!t3xt9YiloR6%d3S0pU( zNVp9xr}4GaLn;sXsSj}E!^?-TT|C&ja1{2)E&d(^d~{ENFtlSiMy&6nyVTP~h2+=X zK2&ZR=29YATNNm-&t~GG4@pd)lwwH2cSkp+nh{>v3s6z?D7s{ABHRwjTp90YlZ3P# zZ&lVd_fTwBydns+)%nz|Ggd2fm5m!$P7)S zOr+tFiwQ`^;f%`7z{^wM8~lvnf1NPi2=Tw_+|yS-lx`z5llt9R~F*pG7$bz($j4R!Bg8@n)# z9GRb=6ijWoM}bK8k$MS*p_ejUiPm7;%B*APucsCPSmYwtVRtO!fZA_KDO(>pGlZ-O zs=ExWf!D$W^V^YRLBg4Q?uvpY9P&&Zi4@lx5CV2cOuD_|ok{Bg)z{;ewynjEPegSs zzvVf2`rOYhKjgjj=v#Njtx1#~5~lchqBrGks)*jbXlw;}%!G7!U+DxCe7?C-M9EUU zQp-@-hW!OO=J+mp*Zt!=g*O3~b-(in({D(K*t0Fhk6tl5j~n|eVfKaN=Gp7tQBoV8=MQ7C|!5 zH~U1nwY@_$Tf!-9uEnSasw%x?yec%*Xf5Et0~)Z#HmLL47E}JL#6puxb^5BOSX115 zeNHN880lAkXl}5fmf^G;vU<*DqE&#e3=Qp8voT=J{NcviRWOCDZB0&_PPEL_5=`LT zdjFoFjBtl+Ge|3VK$p+TQ8x?*JarFi1uapmDKkRQ3Y153JDaG`Ozy+N3$fzH@Yrti zps1|1ArtJ}rSx=i&09sR_?h_jZ(K5;U6IJNxUOI_m2CyTrVxU+-0eukRs+6fbj?AXe1`Y>m(v{I`<bc+-VO9?X@G8D0ICrCRh+-1W5?dfimVRq`--4Kl69)8@3Y}Gj(qGp8 z(PP)jpKO6PC&%RYuiPhpOaXGdd-3}arDKHPZ8uL?grNGlya+vD(g%mN;6k8lB#XU?ml`}H!E8LDkj#c1W~KsS2k z%>~eb-2Y@d!aSb##}>ozLYBNUgL0#K&xlQ@`~C~;y@G#WWs$oVmuvoBY(d%! z^baO+si_gOk%~i;5A8->S>sFUPYzIb!} zYTxFAlzjY!=joW(dsb^Cl^z}kO2mR%QW}~%O*m{QVmKPP!b@zRs~2sXG{tC;NE~Z_ zZdtCm50S@Yh?#!S{yY7YfVlqhU5oPsKXUa{;*TZtN)QE9Kv!ogpBT=hUX z4w9a2)XQ?xLlm(2d?TzBf>gN28bFb@1qqn0SrLF&w(?dpj)ul05ZGF~j-8X2%&;U-jr zFRGuY+m(%IT-!p-u(9hT6Ih^*U<>(elIS0kDZ34a$-ICi<;Y z54+L(P54Z`HaQV|Z91>UY)UNUF-ediBCq46`Wthdcoas?!a^?*S81So?wI}avbFWZ zG19CtHjEw!ybjD_*tznn${!KlC7mwN;GZ3#VKPYv&3&hWlJgc(KX}OtB+oHl8?Zi@ zW2>7Td(*8qqo-elhTYw1P@%=OMI_vqImPkAh-~v8YtS+W>_o%_1t^eT#78rP=cNss zS|+9pB;t?g`SMJlWUdd%cHo5QKo(Vep@N(?Ck$^&T~KmY6U_ga;Lv*JdbiZfw@=Hd ziXN?f(xP4UF;yASaKlC^kR2!aObLp%LKy%AeUC#oDFO6HE>=&*MGplmRV+`FZ|U=p z#bnS7O6!LaK@Mr7>vu&J@RY z@(nj|IA15SBU(e>8&cChO0Bw3D5`F6K$M?c^ozMwb3kGD*DJ3;1b)NiTLjQsAYSE+2%jU?0u4w?I>)eerZMi+wm4l`pB3RKI{ zDO*c=ye(T~=prAXJ&@fBX)XBOAd?{m#%0}Lw+G$GgMKM7RoNf zT<@+-5zo6h;v1U}7B!Qh&J(wiNswaB3$5|rmWFU{mwRXz=vYbFvNqm7_qgvMhj51U=nvPx@lh&u6!8Zs*n*FryRXzi0k+7^mVj}A2c$k1 z0dyxww_+0U)GxyC$+>b_l*03rZ*~owNQQ zlQ*dy?nQKsbA(fEJhUbK3z`Y?$3mt1EbX2p)qyenlHeZisx}>8}NUKj>ce(cb zN}xP>6tPa%;`{}TAbd1tYZ*t?uWYwK7@aK(Ak1*Rkhw%Q21Nv)8aj>c-Q!utK zK=c3aq6Z+b2IzTsOJ&)q&(=&s=>DRJWE&_B#Qu1gQM62-{e)*cM}wr_%U_z&I49!> za~+Y=@PoA+|692jADh{PyFa_!MK2TFbt>UJv=Yy#6_cCBNIx5^?CCkWhV}H zM7QlQJ0|)_FS9i>XdR-+@#IRhdq|F2co$)-;q>Z>ME*+NU0t{ggt?$1Vpi`kZ#4KR zI(ZYaKs!JJx1H~fwi8`N4+F}HPG+_2-YCUL`fESl2V8`4;A7@kg@D?VjQ7cPFvP)C z@W3-lan%edVs;{=i^Esrv{~5oQq9fpYWqQuSJB+ay!3&m&ID^5yr7FEIOUaFr|TM( ze{aX;j9z z6#Oa$#OYeq@M}MmAM_OgV!&G&8|+mNZzhrqpNzAYa^Lca3c+gk`)l9q|8(j2K&|*B zf_vEsMa4*_ddNHR1irNXV7tp6!u%Mn@yOHLcSOWjI{x+gREu&el-0?S-({nxA65^5 z$7#9bOaYTcAMQ02(mDPrx!))`HGJnWDGBv7R}tkyU^u;;3FfcbcY} z3|@u=qxcW~%Z%x1yBQ=#ys|c0MtkFfCtXfpV{TcJp`rm{KS&LvsGTKitBo0Ye*GBR zM-emFvu3eR%vv0dc1-l7bupGhAF>r_t-CG(akdzKcypo*+HcpTCQ}H9?XTW9SS#`S zb`(|JcN;Ck{)xvaFjsmkxV^`oXkFk8(Oe7easy59pH&K`{E6e>w%d-7W&@@2Pufgd z$h7yE^ZS@Xw3yqg`ryQ*EYO?J+xFc4@>v(+z%Aqc;828-9GJ7YjoMyj4mKDd04&vH5mo4K-K z)YuVju>6O!{m<=5h*-dODdqw1<2cFtS9(WXcshDMiY?pT<ryos_HWfbHon?4FiZ9$1^tv!dGVFGi2OX}sff6*{r@;AiJI+HkrpXlCXz zk$@oJwka8|q zjgjpx7m6gG-7P($gHR?NsI1hAz zz+)g|FX_IreCE3w0n5Xz2D@noWc8|0G&|TUef6;J8cO+gxq*xQecsxh7I?OBJ*dO! z4?F=*hDc4sE6V_qLVd{%wc;svas(4b8l5nNp;s6BVUdJom)wCD=o~;dEmAasFB&A7oN>z(jS$_ z2uj0aZ~n)tAIL56)R4g>@EOwB=9V(n;pF#f%St(~rf{5CZ2;Dq&c*8!8wSmGr;C$C zzaqF$#|s^`L=vmYR=+Ai%VLE7ja!h6>)q@6i_3;?9hV=D^rAAjZy+{vN0ip2`c}Bt z_zKK*PjP(As$S7g{4Zt(ur6x0+T>^IcLi#jr~Rxc>9{pl2XBPc#ciU9*lYd_OaSkj z!khpid+tPsIl`*$P_M+V-T|Zx!pPssli(7vlY~#OHeA{HdBxf%_+|wr8*EP%myReK z59RU6Bv}Pk-lLu)9u~+-azr6sTkV%J%c5A7D7LbYUkO=YOyZ%dAkz)d`(ibcpm+zh z&3{i>3f;ddSOi6}VLXz9of3*^NeB;trC~||q6BX`4HB&Ri@VJs{35?mSKH#Z57(We zyFIGPkWu>@xgfHn$WL6?7pzj3uBB)P0?LAjybl~VGEmpf{oN2b;b9#i>NJ=3&MA8a z((e*$QK9g>^UihUe=s#dQV|wu^Y;g!)t2S?l^eGbHR+=xS$yA$JOAO8{}1RX$8i=` zj>itglXy`_ZmOY*0$_4zCbh9AhAu|}mv%ll%|Peo(`eD1Em6EW9@TH^k=5iu5R3|$ zv9*pr{!+-*sD*y~pv34a504e!{OCE>pzG_QrF2YnCGtE$f8C<;Ip3{PGUn#$x-dcQ z{#*UMvI`OIDj;zvmE~e$1oBh-0$Ff}QhM!^56Trg+rkfx>$_k;EiE#LBJXJtNldWm z4>5$18E`Wl8+`?iYT4Ha%)1YY7PLz&Nxc0jXEp=0OojUFDje?l90mo>29n73D}7>N zlL*TKC5a!zP+gOqBp7w^+BwPF=3Oer4?fsH4x-oIA0cdu`@!Y3rDVHR3rD=hZ$`-+bOTCbn z*z5c#iAh?)p$JWj?%rEq@yft5v(Onyzz!pNRu@r#oPMQ)ADJ(cnDEFFPO%z%#{7RJ z*@ll+uVb2*&`VGYn!kOlI+M%+(WnREB)c-pd4r2l6OWSmNTAQHZ1op&B??9%W0H|+ zgp?~l4l8WOa2VoL#c?fuxfXcE9fotabT}?kU_#Y=LgYzaqx7t)>mKl!#jlb7s$h(H zbU7a3LxCNGsuP6VpPWG0G+)XU3x(dz1umwbvfHO#cK;-wDq{UMy?Wc^+^uXb{^$LJ znZo;-ds>Ng$|>e)+GO6R#X$T1_dC%9gH@lPAjz()Q0GqabxY^!kK8lJgLZ zL+K2u!-3$5G>rdgg;?XLd~aNNhs))4nJ(+ixQYY#AmM34`PTXI`28FT8c0S6tu?g^ z41*e~)AM>z{7^{S^dfOUY-+9lZvJFbpb!?3VNW>0LIw%Q+K+LHcUhQ8?L-%;+$rKz zRAz6LyWX;4Hiav7Uox4K%fibWh4PzKc4OJjZ~|lTvsPbcOg zz5Bl%VKXu7CWhJ=&Z2AKf*s`U1}t|ij0V7t@ftonEoPZ~b#@qp*^&x+Tyc6p0Y7s{ zs(S{8Td*f#$)%8xlf0>;-p51-KfDk)^2jh`T+6!*Tt6BRn(bWC?Ls$pXZpi zd6-fLIB*;Yqrxxo9$qqug1T|(oD`p-#T%?cYoeZSP7*_@WJaz*7#SK3&sPi=0~pn8 zb*8Q%OKGxxXd2Yv6x*%;b_PwH4BX?pdZ2>J0o2JNerLz3D3$f}EuaoK2w}^smLoHN_FL2qm zV0&dc#6h>XGi&v5NeF>g zK+;57mep6HcK;cC|AY6FR~NEp-hVJ^m%6(3`x>7jeU=beKWx%-yzEG5CKF#X63z0oJZ(KYE|053M)`v z`7gG>>j5Aw?Tz#L-6M)A|FS=MBGA#~&)3*;ye2q{>*#*zO)L++PiEs(Jlj@b09#^+ z$TLJwhnA&z^;hPMrep#fLv(&-InQKHP%R5RFeh5kHw^;Oz=A8b&I&Jkb2A>mSv^TL zx(NiAqGUV~T0MS(xBcM{m4t;2O8jBKUol5{R9!qg{dKvu{Dr?*{9^R0a@?Rx$B4sI zbbzH%cQ|_+My9~gahm>dO=(x2F+RxMKT%XIL+}a}JE7v_k%>$RIO*(S2mw^n7j$EV zJ1$1n8^M*cK?rsyMuZhCKQUnOnPb-3b}eW;CVgJHgEnY#*Bx}vn)qF^9aD2aaJr(e zXpZRzoOcgFRWizIGyU4YKo9c@rSIe6n3-aN`^-xrv17ludSPO_35oX(bgwrKxqAV z-&{0f=4VAJ#fvI}UuWfK(8P`A^yWJmZ}I;-_w0r+Zlid2ApbR zEq=Y%BUE+;ga#A=_VK4Bbn=7rlxFvwI6nXt6MIaGsOyVA#{hiA`u>r0Bv8x`$)i#@ z7TJvTI_ezBdokrT2nvF^EU2R0wftMK;6Gy(+=QgMa)!kPXF5BLh%fc#7BhE})dKgb z)+m&wV&Hf^fFa;sbfZ3F$bzT>N9H92Vx(q@$V@A`%+$-F1Qnc8q0!ysIy$L!btAJn zf>o)%QlV5uDX&8;L^EMJ!(I~>t%O^LqP!}^Q4>+fG37R-WU6Wr&^}$dpQn@h!kW4x z{Pj9A2@?dCH7+@?X_PJvk}#wrlHC*dUi2ATZEjHslWe8RX02LNevWvwGWFGbmo#U`kCHlI=qodBjbb5qthfjm{41C24&CC zDcW(Cp8AHkYnV3^pfIwpTpXRWL zlu=gb-X;r9N-jT#76<0tpkn-$$xHy@awC1-Zq={M*1cWBEEi>Rn8MN~vW8Apwt8(6j)Dfuk~JR+3e(Ur3E6NeJ-QFs z4;{^_YS{SBN1|GuDIN=4Oe-nBIfyCjqOg=bl7g`g;)@X1Tq}w`7?xcwWW?9=Bf@Rh zt~R2)Go+Ia)^yigRKEGQHlIddi{d(Z-Zf=BsODpa4J1m{Ba&W~kO~v#fu-V3y(iqF zBD)$)BkEsTT$7wZYPnjiV8I@OQm%vkDPhQTfpk| zCuPp7)U&?h$?QIJ@OZ?Xbf8CcV;TCdgTqwiT!<$w!s3S|=3P3mp8b(XvMc5aOEjxl zUat^0($`7gm|DjAoLAcBbWA!LtQDJ`2tp2u(82f0IB~)(vw3JF61<_{!LXx*R6GbB zAr9=%_DQp`vu$qQbRozH$@*_KyNJYV#tldSggO0 zzSPpbt5T`}iwzI~L)ik_|D0+fLW{OXc?bm&cDQ`g=-HL_Mc4uHHx1!y+1Q0uBD{5| zwKNgg_BCus%@KuG-{z4JD6mkyR$J#vVz?is{052>VZH7cpcyayt?cC5sqm)tl zqhbi^JSHAaI{L{D(u7dr!Y^AhKZf7-Eh1!$l-p-a#BFlka9C6`T0M~2VG6Z^32iWYv;M6=Fa;Cky zQ$LPC6ySi*t$_sM!Dov#c z;huj+T<$exz~A$*U|tTOk7GsvQl*EMZIBLMqtNT_7KgsB=D93Iz|*kW=RIHDW{U9b zq7!5vJ{;^ij`N^laZdHjhd;`$0?~Ne@@^RHZ9z;^^mz^Vd;@TWm)7ijg-V){EMn<* zntd|z(u9#B$g~f=FewTji5ZHZd71Z<0Mp)~Z9*V9aBLK_9fxw+kXn5o%Xd??_p89i zw79N<1BFAqZsg_=x-{lrh*a5?jM$JM3m*X1Z`jZbKC}O9xMu;OeXCy~4g9H$2(nMWq8dQ0#>3!d`?+a2*idhy z@X7x$9z#;>BF;ft!wiV#^=1V-SY^R5W6=kWjlmYkr9@^a*+zjl0RKM# zz!b-QEiK5)YomyX#DSNFNLOe+TNNq`KuumzAx*6Gm8-6XsGtB1wkS9gRdhqZS zjZ_w5~-db)I3tGw;f_K~_@%i^}_9#>C?d+!m`%rQiF zD;5?)D?H0dcHpY4b29Ydfrxg9ghhwPAnGuy`tdXSs~&CNkDe*}T?=t+TfldtK$2`l{?A+i z2nxYTp+b@0AD-57+Yqbrm)z;vrfLTgr{;%ILm`bt?mtS&cW_;bzRK$(`mdHJPS6+(#k7UrqYdRuuCnZA=? zNLN6pjXJ#YxVhW& z_=Fq_@V8NA9V*a4h-Qw#Z_AVAch10$cE_Zn=HNTe8!M$6;Vb%~Ppf*=h;Q;9QLmbY zjmBxjPR5>~zfD%hXPCwM^zN~~fFVf)1dH_-;DoAgrVN6uhx#P5FAjqqUHfSairrJ0 zS(h@Q$IrmQo;!V@*d*5b3~q9FL2_NHGXX8TTbMF8B49NF*%HQUOIML5EN3CNi>BTm zD?2!Y@KpjHQ_+7NQS@Ynk;j$DpZ41MxvA{zJy>logt{sJ0S$OA3Zi@_B{Y?qcWcw7 z3s=*EQYw(r;w>$3R;khZGw!bfR_V?Bg$HT`eW=_P!y2K-Os;aee<0(=^N=aOav&7Q0@L(B5_;Ge}xBo z%8Op1TMc$<6Bh2G_<|BY`ZnXYH}a=W2f~is-P}q&ZXB=l;a+sCF^}j18bVvVe<5jP zuL{QJ<0=6IBgH8uhQlMVaH4-_ajlP3U}DK-$_oF<84L@hmy5l=rP<_I-e{q3>PP36 zJ`1OX`6QBKEGJp+dk4(IgIcf{4ZSwN+5-HfDrfsje|s$#9|JEx$6?&e_?5wFbFVhl zGdndIk}1Rl#F|4M0q3BZDes*$ zeSowj(u|f%3*@W>#dj7LQrO~*Ttpy4!~IC{gXnGuX{!Y|Xc#tOy9?iZ9Lc_wixuTP z%_GPcWPNdw8};aG#QC`P&@#Nv31erpRwVi^r(n zuzgF*d&QXAKxkg4pUJL4fZ||byd`~uQts?~Sa;@-eW+K_sB63zaPPlPfY`j2cxwrf^5+bd%- zX4Ic=-t5*^UkRBC$kL<@r(ytW?$7htd$%h)#v3$D1^&xqAIC?tai+fV6{VOsAp){! z1IAcsFxhma1Fmt&A&Df;^@l;MA`f>3%wO+_SwVhx2x`KYv{PB8d&qaEQyDl5N5e|d zK;XV1pks7u%g-n%PP6b0ooT=~{EbyoY4N~Hf~oK%(|Mdx(EFlvn!IaLscgF&iK)#~ zX{j%}YT;dsT~gJsd0N-wpGES-)b9_+wbH1Ym`)1SUuq02*9dX^Fscmz!hY9!jAP}( zS>vs9n!OTeYRK@`3fiW;rHJSBlnOP3un^(lU z0w!wFMp$mLccnVa7X#)TlN@Ufot^-VMJ-U1fX93;UJ2pY3Ag>JXD=p`hfy*xnzO|Y z;hByEyI_bbhF;fUg)9z{VLqDMu=H^#UC|P#Jt&Ew5Rn2K^D=o1PxYS^6IGbgy4p;c zQFqWA5e#!3c9DYv|nUkt?Hg~NIBsd&N2Qe+{0dD^mguVRN}XH{nM3GqC+_FLb|-5dP05GEDweM%p^1p|E8X?UgSyaG>|(r1VpxE?%Ew0 z?g6A_4+SC8etn*6AETJKwRKU|2E;{Zd`iwRo&}fpW&^1?IfD1in3E1aF!~DIgMQ!( zV%9FiQDWpk{H*ou(f^20PbXx}!{N#wvjcHRH%AD zd?m?G?G^ZgDNVBA9yyp^FG69XSg&WDnf)M;!%kCp@x%)2son`S!}?r8izJdm`r&r8p~|xhRVr@iWGiXN*FO zmJ!>|xgd|V0BhF=&)1;UaF^3of5=M-vU5Q0#|BOL&F|~*#Yxl`e~F{ z=>-&H6&>MuGqk{gS{NiY220oi_jYjeaia9$?X~aXsW=QIH#^AGEC?>&mBGJ3~P$pq~L-4NtX_2)0K@a*N`WM50TH&=%~R(3;4N`};`8 zE7BHJ=$ZKVe2L#>NZ;Sj-J0DbqR5E7YO0p$!~RzQe3P8CY5DcGluatypUlsTdsYYv zAH#y}BqfWJ5A*6d^FQ!~%#%)iqDt~IBED_$&il7$_m2p7el&}MR~T7YL&9GCKq!yBw=5Ps(k zA_TL*-6BsnIyO`-Syzv5is=tu)P!#s0Z z_YoV^qA~!qQlo!GaJDd@4s+Chd_y`GDw36}9!}z@0QXkzOp54o!|)Kz5_3zTvKlvOQ(BUc-=+XhJHC+ zitfWl>4%1|w{s&*Sqbe-&h1&>9 zRgY}2Opj8u`UsIKo$phZ5^3 zIZDMy3{sRh0n?<=tVz2_a088Z?M_}Ekf7W@_m8~een3#|;;W7+cn-S93(TX?g)#s! z)tr9wmF^W^GHgVkfrwsox~lhCI;Kf(<}oy*-uRU*6#O)IQxd(4=)nY{iC!IFWHVjJ zxuBM-dQme6G+8fE)Y8pL`w@N^4pQzvQ6hzT z-=iu)!L2=AL6I~li4Y4NhXfqB6ft#Hs=DS>Qu%w3Se;q>P8~5N1>j1IKuw_oS6PKa ziB_e60(#KpuRGWA5Xp+b(01b>V5A}DZ3nP`PD_Y8r=K_(Gi_fjh=&L(#6;ofks(Q) zWnXfO$l)arFBkScu{$@LuJ+H#xRMs5Ht>sjk4Uow_c7NY5n&Nj}$)R`I#FzY`J zOWyjuvQ&I|IkQw}ErY0YcunSI@;zQtcTPuMZsp>ao~*yV@*A_Vw0?RNC#|hJO+Wz$ zBfiNbK6J6bm@9e_R*Y z6fPp%YHcu>sVX>p=VBKS4`Fxuj2!5)cejy!=GG_5lQ6Ng26pY$s^3W-+I7z(Bs@o7 z4|KK(Nc#)Y*<_X^e3Kpu=xsj54xjL8(4|Je;vZm3L!LEtcAeb>OuRc7mOdk0a@DUq z@wkYSFG*VV7oE@SvXCm}q8}_=>m}^~QeqZ!945>z$yeYpckC3!C9AazIE!aGC-xSW ziXN$wJ(2IF!>MZVlD~bv+TZF}eiTy6Y6B34#}oOPRSx~mnTuGKF}&0UE&J_t+x==5 zcMfn&xE%oA8nrKNCi@Q`vdyR~f$P^o#ru@!9-l_#)2zYW)H29|y%D3rJZ}5F?ArCz zsMPSBBj4$C|0@;mT;7gn+iNQlKoeClk%RNZci7V6Oew2M{z~s_;@9tTJV*res9BdA zn=6S(`nB^Jq4iC+_p-+D8$wCfb@;2ZJj}|kVpWN7-8abrwC1A))qh*>XJCXcitTd^ znmf-^JOd0Jm(JYtBq_jKDFN$KBSQXgH0e`Lb@*cwOF~ZdrWbe@K$jNsXfdXqGW@lY zy!r8{Sw)xw{+V+GN!1iCxb|ro#=9wI7Cz#qNhC==UQ4p1Pal1tTIYQit1^YV0W89qts``vjm zn6Y&uKA2IYdmk;3sWthISt3s7HD>Cf>D3ty8~I}CB_mIj)V9DLJdd+=3j@uC5_ zK*um!s9HTlZ)hXv1Zw{x zuJ(rtULPgc5x67H?8gOwyPXMMf6DOY-YA@NCPL|EaF6leVq1C4W0w|Mk}MaKDi^vC znM!*e6$odm3e!3)874NsF4)Xh=JI!LYr9)Tg4dkh6gp*!)hQ5g zwIA8%3KvqT2(*T|Y!UAt*lk>FH)6n@|a=(YorB&_siW7KF95=ei z&Zt2K?6mTwAi@Y4?AQCuYnWHuYiEryId1}X@@P*O{c8vxb(DTrYzX8ZgUmZR`7JPR z;?w4~5z5=F1`tZZOyjJ~E@@~^stftNFvPG>z;F`{5*{%UMo-et)Nz=zG(NkdApE1j zM$+ako8YxN5Mr?hzoCnY=|t>e?qq~gTP~^J&C&);HlHf@=0O&xpm|sCrtsDXe2Uaf z-8IK?CFr6GEKEbyV)4M__51)S5wDpL@s1v=$t*{fF+pobE|h&@M-y~Lqg&NNc5$F3 zEK2W1)(20{d$5eP%B7tH{yps!SuYRrKbiSbsj-F0nR7E?Tkl~3Bw0)4rr^v(SET^$ zyK0=<;$GoWf*13Q$U`M#@zWyhq#)2 zTW?r)GL0=~pzAimX4EbxEjofgtUODdkbL=8M2_%{Lulxw)?7O>D`eug!{UNSsEQeN zJB>x<^PztcZJ`1}pIB+nDKI7KW2k@Uo6VKL(K$@M_mtvjN8;BJ6j?3=iGSw$tPD8c zAQg@z2`hB$a?+T&p7I-^`wV!#q10Vc(EJBm*04d5G}<*jE-;XU2e}e+`7|}UjY*H9 zU~KC^CIz76ni(i-cvUL_j5`Y!+fnPj0>eo6f3A`tibmW7U@#Xe(GL|9mb^CCw5`NX+ml1mmYgQ zX+cB!`0fvZ3B|fCPz#t_kSmKUB*B9y2kmKubTH zhKqS^Tdr(46gtw04ZxMe^XN}#!?#H4(qGuKFa+P^!`Y#DwpykSz2<;ECjqYai~79N zt3h@oDp4GGpAt*CxN4=ZF4oHb#~kPqH5_fj7+bJ;Pw~Iw`uO2kwa>}oN0$vX)D0@j z3sz=td%f#GoRhrDfG`4g+$XIc{Tie|d-U`iy3sWQ^~J(fqGa29~%T{iwOD#ZA<4V;hvwY{qvf|yP63`lu~rtH<1wVg@He=FYj92*u-^GC z23HJ>+5PH3-ffvt2#~xOh5gYnDnQ{!3F?SMpokx)MjwU!9{N3d9+MbFxcT@76xLpn zyQ;Rt*scTah;Bv!HrfeP3RY{H{1i+ zxk1tlozrqC@%Kg&AFhkX4TkI|S1}@Nef8Aa;j~Ao@$)}6v5h{6*!tPQVUs#x__@{g zM%|oUzy3P~4gSR*%HTMKHbsbOiTWYj-HYlT8o_EAI0jXk5wg7+sV!!%b|G8{z{wK_JDaHHmwlG)N>p*`~= zpgU=^lkk?aOruH-J4^5v{e4mKB#pL}sT6TL06w~N20?9e!F$u?4m1_A53#;0q4r1) zB);Xz{kAMIFDa@kt=UbLu?m*C&(^hZA|?uS;_%GE*ahEX#cj;&^LVjuI5C=G&J zki7v*IhGEQjB;bawXb4ZL}%^jyTR~eUikzBpb%LVh7Wi63fR|$9IbH#vh>3d>Q1)~ zyZb$oTe!r}xDY>>GSaan*Ispc>u zqdmi6+2FNfKyY*MM3lv_h3U57mZ3%mt{2J^8gN`lM{xlwZ5$=>1R4heT_fiAwyi_W z(zJqyw~Yr5`d@te$Uej`SHxfm6J%HnRbcH*Wp`A{*j5(5Umni&29PlOz^*;EmNLZ; z8!$IB1UH%s@z9vP1{1n*(BZBnt=vdG)0-fU0Q=JCQ2nP-&>$-?uJ>Y!GFf(brVsxo zPgwJwhb|w{A&fJbCrch{+Y3s>IW8kh_pU!GsHVpl|J!^-lNV;s1*2K*ap0cN%0~R} z11y)Tv8D2*4vEQkr$5kGP{u7BrlP?vmNNCoMufS*AS*O?i%JZM-3ta2m^~W}x046+ zI~rt?67(UDecCpB>6bEhy`0qniGKhTSu0pUfNp>Wb-{6rOgfP`c^9s<0Cj~lNRKnO z{rXt;`^JECjcaR;GLE28PJ!*4sjQx*-cv=%xFGA>uaBU zy@pIGWQ2~q#Q+&0rXQ`Y--%Jf@CZ_t`X}#ELn+h3p?oA&L{fSP$YDCj`U`Sr_=dER zdLp#cQ5+y0`uh8|jEzKGcQXv`8vWwyoLHbZZ{%_900;EOrK(MI@;tx3uf;doM*nx# zz;~CV9y(Q^oTZCw?42_JKmj$R8j$RWSGW6G!?6f;#FkG~NxYa|*Rlv0kIO=#@_tHthYoi0(`{@f6i9pTO+v!1 zzD-dWs|;?eKcgd_COIrEJm|*4sC+`qJfmalZP8;#_L5q*pyCt4u)#A_tB*K~{k|Wl z8eIenDs^&zx7{0xi~i`~XhvpHKQ{JiiSaT#6CDmB&ERwUNk?-@>BG|GA21Q;^PelV z=h~;$y%3pJUYKZ*eM0va25Bew9uR@hV3vpBGCKl{|L#5d&h`|v>ycDy(FSjfnYtib zMo4g-uIXU7U-k;YF+eLOC6|xaro2*v;a=K-$UYUC5HG;`JxQ&#nB1468Ch8Wf#x0g zCLn8oFC*qr`Y6ZS(2b~190O_wQ5#bHiF@i9B8x>mLv)1|m8Wef0D?zIp-*Elt1HsS zl6-HK*RzbS%^9QhlN>>{iZ;i1s-vBy!6#Jrh21p;3@)ORkGL^=An=VBfNRAtTQ%l& zTLn&91Ki+kPVFBy=~Y$cZ}ii8Ziif3cGqz@la&dsGsC5Th>9R22O@@slKx_JqTQ1W z%R{wheOkw z#(EQTBd&Wd((<+4HY?=VKj-K`Yw6xV$}lot2_z89s_V9b+y=0OK!F;6l<-V^$|t*s z=b0HG5EcDUmUxL_yh@avah&Xl(eAd)L|Lr8)Mrahb9IXLk^+baPoNCAxfoPbw>z1D#u%2Ke=YZnt ziEBn0)f{10a6_I?ZOTC+h0f;yMkql$Yx-3oqA2z=c?df9I*E+Vd{Kiax`dr!uY2r} zzy%`Nx_ZtMrN{>)(}jMo!~RtB@Fpu|=+w?3fKXD_1>kN+AA2YF>~PXy^q}!P=*%nS z3xy}wn2iasO$|{2mLWKT4`Ki^^c{~!8D6s!FMqPOW|_CR)qX@%GiV?!i`?|2rE!wa zt8lJ($n9cWW2yf(N0l#}bM8EwkAq&Mo zLi>8?%qCYN`5*QoGP&4rPvRn9#`!`b8IL+O?S(jbi3uh2hN`q6a_hqkE=6~=543_} ziiaBM`j?6ZiVyy~_(nJq#^1pVo{V5Mg3=nMPR{BHI$yHzPQScwF;u|q=T1{xBdIBr zsh22Z3EQdJjfwmh8BR9qND_zsE|HoRUBOQm8eDGj95@{xP$GJh52<%WD}V$A zgjRuZB4jc|B~BqJL$&79DlB9m4>AsIVDejuqvWKOV|HZQI^|6-dB$Tc%)XmEH~l-6 zGub3RUhcY#zK*Vuh*Jz;EM)IdzZ&*Ik4S>+eMnm|r76Vtjd)*Q7$}}4_l564w<9E) z!WOMLb6j68V+Pun^)2UxcWg{$!i}!3vZ9RC|251~Sd+1rI24unU+~4k;)Q!l8o#hK zjPrnEPW!I_Ikj5+9wsNqR)<5C5+i8RGeheyGa9;2di#`y2Nk8a8fkS^a}6#c&cQVn z80b(zmDI+k>Lvq%xpbl|LZ*4CN^C-7Q?bZUMh8h>riWUSm?>t6-J4`o^8EGg%h8`y zV2)(*Q(ybc6bBrHo53)50YqV==v7hZG#uG=wj=hlhQHH7Ax|Pw?yLA-GhE$7QjJjn zZ<54S_aG?CsYI(j;a+7gq-2wKxCmpbqt;Q}IyOYKpbT;P(M{FM9!ik zofAOuC{Hvc7HBUCl}SxXVKu>pOtq!g8VJlt%f&<$5((I8iYj0y+|yr6pdLd9cl51l zCOw*3|5Cnx@st0M66xacO$3*w7z~`X(xbODF^vTiG@f+R9S`flBDj)KK8pFOJu=mO znz!-6a>{6eLgbgqVqou3yMYM6*TiPM*90uJz$e(1pVs2F&$pJ&%ZRFM%k)sK@}`O< z;gb0A>qBBV14>vYPI!h-SZY1al8W;X8oHrLu2nE)@3;};H}AaB82Y`ci2pL5X|%ur z#AgPadjlx1EJP#fp5Gj)gB%&TmmshEVl$J+knNBPML7#)Ta|-=CtLOys1;^J6fLV# z>DgB88$niLk`<}#eyqrqsSz%}+K60m7R@);d(S%=cVKw_IN3!fqDQuI)pn)KG-bvJ zSh2}2Or=7i*vzw?G_YXN=A@D+bXGK7wg8tY?~vYr_QMo!4L0veg)la07kJh{n#4@W z?ff-6{&$>UglmZ^+Yaus;3gwuVOHC6*hNz-Cqf9387-7xVWJ1gtaNi2IqQSrpC?E~MI@~n~K1YV^118N*%*J*zl zD{6*o3w9LcVfL*M9UEwO8^$u29xl^*8;6KVjpiLuW{l0m+9U9`&_=k3&!J4wdrM^q z9PIRJSdYQ`S^~YuVis|f2&}%7cK}juo+-kCPy`@=L;8iHk7}rce+ddaAOy>*X3#sZ z^ImBfFIWn2mlmEW82*_7a42om@_* zsH;R~be^|GLtU&?c=w}*tnauDh@lyQHm@7>Vza`b`q{wZInLP zu`=coNO&%=19TVLlBO+Fh0xu$QG8X8?xsv5R6wNh5CB=wG(NlHdOaS7S*f6YN}Ygi z=QaCD6F`L36**#fKVWV7mr_zq$TTG5SvGw+b*X2cG-@$BkGk7KufsGdFul5SwF0o! zE5&$7oQ*@$4S%E1xF}v##e2=uJ2GhIc%kU0pRA6PA9J((=|X1*G77^+Y4=<=iUtE2 zJ;SR9fnD*%{ZM>Mtr7AKZOrn%}DHRFBMGXrxuWLqRD;fo?V{FkpHlrfkA+(K;4AaK&6i=WnYo7;IgS5!Yv)sj{ z*N-qvGLl8Pv{rd!x##@F-8#mR@i#}UCW~CPvZ+`%5wXn_#{qeQp23Qleh^yq(Hj2@ zs&pUR(%%8x1M5Bb7E5^J1*=PYUGQR8XmcT}Q5NTYu?*$Eu9oYTNV&o1UqH#W)kL8# zsM+i#>oa@}!O;Mf#ct_?hMMHsrW4rn4rJuEsaPhqq;x+;}JNY^cO$#?!UF8HW8HGO&>l8%~8hUqM(vF1V|~TLL8)jx%heI%Hn0; zi`!SLIU#FsRw$0u_j*y7s4#b8UOf#-|Mh;DbmL zx_gI(&wGx$IX-hx%YGM$WNT(p#(s7U(bEa8 ze$9jLNji-(+Sz}-=bnso%)*khXZX-{YaKnKI#TM{)6=#7`u_yq6j-0=O8K1)DD8tl zhkC(|j&Vz=Z$Buf!p;co&+_7SNq?Ig32C&z&Y4Jci_ZBAKz+a?=Hl@6OJm)eo ztaV_P6#DjGlxX!hxPH+qhl^UI$1D@O$9acKAw%U5fyk66u2)wng zMCOPbT$BrN90#AvIH@+7&{B2VpQ|PHtUBOU}P)e6aH6 zkKIFBFtImGC7Cfr-(;y^x`yHW5KF5NA#j3+Z}bYT?*NmoGH<+a3Ve36oc7qWpyZk| zsEFsk7mf1yrYpKToNoRu?CN@GhfOo3P2B!Brw{4iY!kf4Dy+lWp>vc5;W0DZM>9VZ z7q)RI;Jsj7o$+YF6PzV{ek>+YHxMMBA3ORG)Wr^?66}vx1l=yujdy(n{Z!x?9*+eI z`mPDv2=Sf)FiM>;oYh9m=rP;CiFW|vv+vJ^1-s2g=rIRbR-0q|yABLJ*;XEOU9|*M zxJFKhHo@{RMLMlyOH5-K6Ahl;3ZuzS5?I>Cs#Ckd^K$uFgE?v86nbehDEX``vi(Tf zl_rT*Wz}I4He*63^Z<5<>tI2zXmb{RmK-y z0mwMW%`;B37^L-%xzBYKHD>IVSv+VKE9NOpUYxmTyxF1|KkSZyqa$%Y0OAWFZB~GU6THo%QqC7OJ7qpI`Au4CHrpPfAFilflsg<`wa0) zN=Ir-;1@%BM%fcqFg^}b3vpiUhmqFFTs&v7ig4E1NZcdo=hLC}Ghy4FS5i3Cv@549 zwGpk}CM-R=bf#z|-Z>env7p=HUw3-9`EiqYJsRIDfk$S>3U)z?8sVnM*c+OlsU} z-7x|>b^M~`@orT+`qMI;*KI!1V30Im*bjMt|MOO^Wo7KTOl`Yu4nHNMMhct0XWl3? z0A50egJ!j`zHR5>4sbJ+MsL>n42!UAu_+vg(s(7C9 z^V*&0T*CORy{SYOi9-mvIx>Mte_(}5xtBCIr-@!amaFJ3t|VnMrf%fH>I#>Kj%fC4 zGse7e%i4zO0$#?>60mNuvmc8WplfvVKcmU)qi0-9wPY<;M+{3{|Y75V4smBGX@dv z&hueYbr?T(6W3X}gFJSEUx=n?eReHZLCrEqyTMlCz|Rt6W;3VGbGi3G4jb}c!-YmF zZZezpgJk=YHa#ZE$=kt`l;8Qz^>mj{Rbt87wUOYuFhg+OS3P43E9-cJ%u`K8YRkwt z#rIhzJ>BK4Rv2ga|Jy8NGfmqljc^e4fALVPK+VrmmBq~?vP*Dui34cTZ%h;oIdxf_ z5pTvz57QAV@$3sG^@RKM`C_RgIJk$x*&((<^GK9qGQeeJRki>iM*G54WCfrm86Ip@h2n)nE z3KP?vZ50HoSQ3CMOryyBGP7yFF#`AKO~r+?_%%^aet28YXUsL7V2O18EHS~wDT7%7 z?zZg@gY-GHUT1gP;Y5jFfDqL|^p}OI6&mB?Lp|`1xk1gr+kOEkqjZp;Eu8D&)I5`~ zj_GVMw$p6JaDSv~uFLgH4i!-mY01f}tc6i7KJXtasPijuFTTnD+xG!|peI>Ujr4*k zWr2DhZ^@#@HM@QM6KuW7?BKh~RJ0)YYGTctu+xqC||b`iqKxDIqJ_ zyN*}!b#Re}DVkyq#amn_@TzsjTK4|W;sB5COxCB)#(V_v2ey&U8Y%>pena&2HSbU( zZXtdT>M}srF9K0J*SY(KaY~jCzxdqotb?|A(yDX%P40s6-B+&we5Z7aswi*^hj4=2 zI^=-_$DesXgpP^L-h!BJ(Lz*Tn`CXvs;O*u0i-_q})1mv8n;*9y# z%!em`d}RX3ukAJ8T3-*m7nWpn`wH>xQ0HlQF(f4%0fJZrhB`gyq(r~D(H=$hC-g=7f)pR5Y9sTVw6 z24rN{Q=Wj10TD2uUa`r3x%%$91TAlYBjnkcs^>J}&Bm~rhjkxHP`!x!$tCYr>lAir zy?a$3Lf};5t*aH~+sndAs6jp2$I3sq*y&C2iftnH*nV@pUOHVAw8ce-uihGHdJrf zADCmptJ9M>3Qk3v`+Ax0)l3x2KShb`Ha|JIfm6(rziPp00kGn`ve|7oEp&e2`rz}Q znb@DMK&l}hjweyGjJ7djO`9q`5R4h^Ya*Kra9lYDlELa@OaZF+#4hLE#QaT~nFhj_ z!B#KQ=nC%KPl)WjWs)qL5P?p`U+UYd*wX&q7O|4Gxs)jqnRir=!B*h&!xG_G08`c@ zd=(?ZJjVE;i@ALCB~UqvWX8S@g7PXX_k0}BWrqU4!FMG!J*qt+IR6Abg!FKk_0>(+ zV(gDhC*G^kb9!=Bb66o^wmUZ0M~jmJZ~$G1XyGK~_y%ZE6zdug34XG9UCPvlyC^U7 zx|P%0@QHF2);Y8pk3%o6L=ZIvlkL9*stdik!NO^{{mGH6Wc9+niq1`uwM6?ODu-#u z&_$;nxNFR1S_M!%)PE`HB1BPj{`J4_)B%uOgI#|QVzv@aIa&nH+F@1cm_DoD`YRVfZce{tPv<`uO=>dCM3#EJ8Ct|j z&~S&vTJ$)|_~BQk=xRNm(~YJr=1J>`^k5?aseS>BWh5OFaiVVt-VHkO8~H2X%r60t z;%9Wz8Ja{=C%Bv@`HLC}^DVhKvN5;2VcN$?sHI9Fqedfp$Y8a<*YT&+vP8|4i$yhZ zd_wlh5_09!yJdbGMWQ2A1L8~H++U{6er{wA%RE!dA{Suu7&RimCZWo(;ZeZ%WQrVV z$%g=8GV7(nwVNILye3I@BU0+dH+^Tc#>}{JF9;w2$lFf+fxG~I!DREUf0w;-E+f+E zD#lVGERT5qQ1dAI5}~gr$bkK87pxZ!Rg8_e#GYLWx1;UOZ&W0)8JA>nV$!TDmG6%|Ia-RSrl1Cjx5pYljQZKm|oI0yM=zRNM z_sMiPWNN#H=-Lutah6K9D=8?hQmCtteEU^N`qCyC9it6S7H1l?XlZe3M0o)?c8Ia? z)Xo-lcXYvc-7XG|wU!at8$6pHU&8Fho`i>m(oz@!5%nl2jd66_b`DY)3DJ<`a2@07 zBC_jvRn?6(fZ@dgZ7+Gziug6$^u23ew~u?hM{IOU6Dj?iG?OFzMWXbVK*O#9bQvHpE=mwQ1>(eZ;=Vd{0a3FhlmtKLtg=2^-S@qQRwY&eUpy-? z7_M?z`tHORl5+YLGNg}Cpd;is*LzDYyJ2c9FTAp}J2z5TN(MCQ79;SE-)V3T{V6Yg zju4qLL#nz~=2%yLgh+|7Y9zi^sqpmpK6Iijb9xe0t~`wX^C>7pK7so!XN>~>L4bfK zKOP9RYzvXSm=gm(8zt=;g>FKUylS+Or4E$z?9i7c zfxnj;9GW*O8E+ds&ql^9N!>++dE0!yLb#{#cZCRHvHHr)`~ndGqO}=0f9Itf5x5(L z+0N({wANEy>Hcy@#dU@FnlLdrhKTJ75bc?OABqM>Y<|;jJ%R^=Nkr!Z$HtXmwI~G) zTB4Pjh08SzoGDcVybz^nld-~cF{ZZJViNFL|1|d3v)_{#8hp;C&;lPYf6?WXm{)r; z`uk8^xsyQX^@rU5Z%LV|MMRh_lAza+s+|jWM850*S^OL;a80BM z4bAh(Aus};{jsZuKNI^HUIHe-Q`=Y6-WK~X=A{a*%Aih?8%uVXgA4Ymj@2lxp+vk! z3%zv+>|_wtWJ1S5SBzcLCZCB>{lmYH?|5WKfGS%%Ll_9JZTmD-@+R(^;b|^tiPr*> zf-%|_ZM@RT6XAD5vETx~Bdh{lK-r>nX{T}3Be_QZ;iXc6NeXZq*rjLh|Nj(Dku-Tg z1ZiEu@wOkt(;7^}AQc)=a6OhT*P=Lt_XbUijqP~yvv6xHn99P*I{KIoWa#sa4>G-E z&9}B*OY*CW;5x)V*gpx^r`(ST?X5yzs^^nrad{tnjIMCLz#P71(+aW>32HtOC6Z3y z`8$q>wv|R>YF&empKLVdR|Y>c>Cwmdj^8ISPJsHH+mY!y7&}nvKUl&P@~pZvyeaFf zA;1RwXpH?|-6fSyRvF){RzCh*93qBkXm&{t)w`MWTw2MhzbKq%lQ-Wcx-Oqv)GBUEG)JYd)*t;ZW$Ep( zz4ye+n#SWFZM%}Cmo-ujOq9z4PZwNXSO3^nH9AQbvp(dIuZP$Fca88#iVivOI`%A4 zKR2sMdww=54lIPDp$$-YmMIs4*BXIHEx)k`rM(g+x}-3kfd5K1=(Vg*vjGgwjJIAc zJ&%t2B3&6w57I4R9_m4>-=HYg1URcT%eu@`W?S+CjP%*mxOq;)Xh&0)xS9`)|78_D z&cn#&0RKM#zyT*WMQ$N6kMGYrZ1gCE66Om5Kp#0w!~6V|mE}+i8_?s`&J*+i?5o0SJihDPJY#Wyj8>i*)l_zzwUgOYfhpQ}K{ ze6aZhJ);7qU=OTbK0Q=5 zN^SpE(EKo{#Gz?uzDCJRRJz<3kG)|nz>}f7Ki>!p9C9*!k3_3nz(6x9LAk6AlBH-P zmx)|2A+pA?yn?GfL&WLR+8p7&KyIju z`MYP@|^LR zU)-E*JYT9>Loh0xtr3-65c6gn&XP=Y508zpo7+tb7W6usw`FV}-cD#GL%5&( z#?0|DvY5sX$2=QSt13h*#L~droodwZnw(-KFfMEkz5^jg6lMwSOC&zBg)0!8Vg6XP zaBhX#NihDoescry+NsB(oh|RzpA=z@+*J(B90`mLWG)SUeo@c(0XpxxRgF&?K^LcNXx65lV*jgz zrfjM4B^**?KVKr$tfBd}CrCu03Ogl4ht)ud!Uu@Fv5jDQrgO}P6Q%E%O@^M%dr#MF z|Bg8g28b|m=(O88zG#}`3HEEDcbY0^!trY3b4PUwpW^eBvg^9WOOzt^7CLn6p4GTQ zv^5|VTak_v%tIw>JaCuWH9&A0^NDN6(#H7sT591-16> zN>)~rfUqA@i9{)@Z~|zKq@;g=!Xt}3OsQWGA(7*|)@KXi<3a|BWwnFf{-s1@4^eyJ zKrVgxY>$%%aT=bvxxE&W{ydp$4xnVRhik#UvE`FxJ^IO!8vpoMd6W?K^CZ;d2WL0^ zfQ?-v)KUk5Ai11d)f|2d&C5!2{T|8td;=3)dfUgfL#M{V;-UNFxixQceCh=X;BpG! zBt~XG=u3-Vl+w&p@4q)8by2*mpR>=66Ft(YEHK&UMs=^3OggqQ_s<&^Y^cF9ilnGn zI$Tg!2}{LYc5l}RbM42HxJfdU+(Ui8)E}Ns6jQ|=;m$2>KMVbgd;Qzfxbjh=9Ja8Wc$%qwbxQ%ma@4;4nn_4 z1z$*GzX264Sb|LbG8+E=Zdv_4SK>^C3S=eC8CM}ODDbEPn9vRU2B23y2z9w}wnwzp zD?$lo&2@FQzxa&1#?aYq7icn0M?WwecqtYI%%%gi(3PUkGr+5e@4E1DJW0eOsTb~f zk}X@#A94zCy7Mz1yjV&Tw+W*5XO54B?l0XGt?Q6SL6sMEQsJx*pTItM&6g9g@4j-m;naiyNdKB=Wb3mOXep-PS zioH;U!xV%N><$mQk&IJnreF~&D2iNaFZo(i!7-avP0Eou<8i>lGaD8?y8Kn{8mp1@ zq}ac_4Q{HnTHzVIFQ^;3!0zUN6}dw6Q_z!?`f|!iDtmAOA2p1Guk9^6W=W*|8lE7e zr={Qo>Jegwd*PA+`;lVJC`by8AR637a#VnKJV&4^v(YG*hj@xg!&dnAycsYc=k3$V zkF6)E&c?-;1tCmY|6w!2MvgZ$vA4cTkRVbJ5D;ptA2e!(v3)ZbOsbge)4mi8Ep$XJ z%ZyHraH=gFW+(p|r197Xqc8IW0B;i%@zjBORje>5uzl+619~%eizzkCMWBQ?T4n*l zJgssFNO35j06-0W7yNi|Lg(BwrWmRYc7**UWI>so*Q;E%(( zy>1#o%YD4Zco9d9{fId-}kRjWvigQ+EP|{75+8YH(*ay2~nV$4B8EyFZ z^3PWfcZquHAgu^#e*`(mvlyjIb_Y&i1ayQ>`q#_-nFuyIeUTzmK%J~sIn8WWrH&y! z@p4#uOcQ|egd!x)>1`+2%ZNz!*+eQ|q^%Al+vB5fRn*z)7Ba9S_9&rpFiLJwq~1L3 zi{AR}ej9mD(3XN;+fe_j)zM5PDOlzRuFig{vv>+xMCeiGogg8p2z{nwGRxcMi(UEB zTCP+r7SgM%&V>ll9N79jst{xFrbK6qG%p-1x`SQbe1101UTybP| z&;_@;zi7MT9Y|6jM2S%kCjH#Hx)9`?iorF-oJr(NFh7z`0jlpUNs3>7nekQe za@0Gj)d?7rtMraALjc`Ptzbh!F4PQzZfFH~aczvG#T1iduOPdh{_fk8yE+THu?>j= zKa&zRvmr_7-#~kXVwb1wm$0Ky@-)W0NnXToOkp>tw-r$rRc6cyMc&kdbfNn?ZEbK8 zRGZzZ`0g5!FJwH$8~j^Ye&aS9WFy0JC*a7BC)?sZIF$FK4bDpye&5@UH}kJ9OWhyo;o4EQhpKvdhH zSp^@$0CdMpm0q>#^=tmH-YA2`Lq z^|mjS+L9F61@Bb(Gz7gs>bGaT3U2y_5=@M{3wqKi2ELM%M6#KU+nfG1_a!uw<#z#g z_#R7uL{CMwWH4RQ6O0N8Tna3zpMP*{VdWhrSe=$w82j%ra*TLb_7~+f(zKYLdbM!h zD^iUeqf@+(V>Daq_?7}r-NL`oSVC$BT z|5SEKkM(}hh-%IGx=UpvSAEuI)+)$KWP*-rxbd*e@VeL!x4cd zdHolqkqc}&3g0yQpj=A*ivlff9CO>WKl!7R&}x3z&&yIo*lvqB;z^>huwPJJHx*=o zFa!EmPA#AtOqKj<5tr4*DR+G9mXN-jVA8;_x|=at#F+oZjGbAW3M}%+U8YbDg{aCv z<-L?ntLVk|2G*Z&TEP`Yac;Z&zfiG>v9s>iK502+(cIEWoNy^-PECs45%HriLb(dt zGp%azxNA8{`588D@f6CSOR;P8S0?TfwQAP1jb&d;Aawlvr{@?cDE!W!!a{S?5Hj?< zcX$N=|BTUNyBu?GclCHpX$VB5thq-o@!NjPN|>-CaRVg@k*fAgFV=ebfDsw~6kUv( zPfo2D6INbYpvHSK{^?zVuw@W*ucO+WjeW;@*mkunijQI-q zd-9zV*2f897N`ZQ4;*gsT(sTU{s&~I8MqN*2{d68^)v=I-vLoAbv%(R{k!g%ACpX) zQ4@PkC{k(;kR535!nH9@E!YTYC>r z*%c3-k9jA0)_R4J_^<+E%!aL;?y2^GS*}#RB-AV*sgNFNAC;HjAggmVrq=c}obqEs z>s9#8*_d;-z84vP$Cu{YF$UhUqs$ppH#0W5l8jXut_8rsm1^CMW)02b749gVwNt5C zr9Hz)?+NQtZ9!eqKO5f1@Q?`*%v{Za)tndBeYC`?U|!?4>fwmS>TDMM_eLnIFR@Lb z{RO^Q%9%Q!9E{2W(d^@useSWCK=xn3@qWHzZ-2Aj6gPSzY-C8rfecjVn_BO8|s<89HVVq+TxUF*{A0 zW6_?jsCNPJCI18^ZO~zq1)(V-?iKENul5(`;78320G+eb)A%9@MESvTjlt~ioy32) zfIA0ex-G#k0#JuquFoj+f7c}JT#opy$}3HFOp_-{nW6C-(|OCru0%DxhM^$%5mQ>; z1*I|SkBq&mNr8!87X0Q*=ZP03paEIvqY}S|95XmfS zN8NaFRdyfJm>A2qsTrA2Tp4PreU%9+9BLD!dqV~vqc!2GXYah_U*2N*SJsWjD%jJr zqu+q<3B8&xm`f79lQc%cY%y_botKL8&meX2phbO%y>9wfjlER8h%Z+nwitL)g<`rN zEMxd%3!_25&6^ecACJ@SWVwis6XdF-qI>NikZp`=-M810&;aMR#72QulP{8_8TU2h zu$ukCaT!MVjC`^16;(j4LY4M6^J7pFGcCXUz<3Mbl^|vZ46NCSLg2F|K z;!ANyi~@JMS>=7(_Q^0la~5-GQTnw)18=(`6ponMc|mO*b5eDcCon>aUTS{5=|>HK z$Ub^rMw#vMOV3d)-`UF=JWW^qTr?-0d|Su?M;*zN;EIuSAq(zvs(kGGAE0Foj@rwQ zTgi}FYfqG0=0C}}DgUZY{M|k?wqGIT#E=br+GWIzNga1-3xO~u=#jIX7<;e$jLbP7 zlwd0q*9JQygcxfsN02|7B@GnEAn+Ilc4CtHboL7u^bm&HNVN0p0%76-vyo>m#}B@%?dDZ_{8 z?g-rDJ$3m+kt(zfMXIjzk3iZDi^7)o%Ny%%D5>*Gz#Y` zOvB=h2wlfuznj3y%B1BRy;uK@=Y&}kEkVW(D&6x#Icd>Z<5$=Y7>6Ux_O`TTEKaPk zfx?K6B+|khRX;5aBXXvD>NfI0eX$z-_B4D>z3NOoK_m#F zWq*)^#ne{CTzi%GGwbol>HsNvyV)1CbZ#kSNkn2r<6l3QD&ao;nkIq}u01BINK+g5 zBJ{E&%FtqG?AidOaKOmzo4L;#UXU@jDkhrp2i7_A+t^;n~slz;Vu$pv@nn z`At1b$T7P)lyRmXncgKbT8fNkzm`VI1|_ek>JU4GmJV>umv0OJIzR>0iirQlBZOhh3|vZNIpE;%O#QwOy@*i7EzwuqFF1N4tbSU zZBi}M9CgAJQyEUN65J4-0Xr#)yia`!i7Ar~6aG(#0a3ljEF~Z?e(Yu(^~{0Vjz1c#4V<|lYfna|DTyvhDbyyH3+h^i0fm87`q3~5t>Rj{po#r1KNDn z#$0YPU~TDV0u>j+P3aMw`u=Jda|WFZ=yTOM0LDz77tDHU$ksesI$sSH^=;H zAi49UBTfk_AgO$Md@A9Wiz3e(sLKJrT#6B5_b! zV#-W{Bt`#lZHPxXjrS0qdrK|~f=hTO?-&?h9l8fk*cJ{qq5V8cM-2@dpC$chVV=$q zJ+RdUgejkfD!pfFPuek7#-)s$CPD5}%ELVUPmTj0#|ZbpoAkUgh}Q6?0>qTKUrk-4 zVJ_iIJCFYVlmpz5Ae*9TVkz7{E;K@&fQEc%#h1KzyLZs5%FRS745ITp;LU~{oibUo zoI2?6o`@_Upt-Wf#AS9-W%-$q+L&g(UE_1;ZwE*&@(|5@I?+J@0=1eXp-=^_iWJ3s zSsyXSY4UGfYQh)GJD^K;DSCNus!3V?jx}XFA!eK@-eAQNdzgS4N-ws;qZYh@t2Ln@ zON`Z=knBtqY!}1jr zy`YBZ+y_!PE}X!%H-3!N!51P-4Tgzsd_sZwql0K)HMW)$cI}h1a(H?SA1~@Xr=xvN zVkM%|eV}&M4`LXQ(9dQK86GFIjOT|jQJkWhUIYC#sRJpXNs!*5sv~f9SQvWvd2Z^f zmeIz#A+Gb}ZZ1p&^P&ja3a|;sE9ryo9_l7HVdOT{*}2G7ba=mQ4mW5S5*@)gWtyzN z7Wc>r^BX816CWMcj_z{4OL?mhM@S*lma7;c%4TJCFdKsgz@;9^sQlQtjyc_13&YX;aFrba1Lwqr- z<~vG*4nt5%jn`ydxG_kbbxsO^6aWLcu$Hh z4ae4t!rj$AYEWmKIOwvWe5ri?RG`O--^5qNu6R800b?JOzQYG0>EwL#?(w-3rIqwh zE#MKqdDYYi<01p?ueR~O^-&O;jmC62whPDM()E@$FI=83C<{8Dg)v-MKL3eyGXG&~ z;O#-Zk^x<$@t|Juk{b)Ded=t)-A5TJX<0oV^GBMVYNu#{&U~7h2b0%h5(Tnpz%l7D zHad^UW^LflX93w<&oloPLoy}jv~3fbuqk9~5lULNw#|6|^<0!roCb`}<~<`kF|h3s zfHC*1DqCiD#Pjb@3|>eS%!x!)_?!cPeZ%GHT*cgu6ao=fGrL{UvPA^WcMItf(ZG$Tf1j z5(O+i!5ZT^7np`(9bj|M?;>Q8dwT=r+m*;9ZukEegna!skep|UNW8ocCz%xxjZpeX zaP&Baj2;y-1#yGd&a5z?(`){&`84@L9_9$YdJ}OHzzH1I)7=9|Ly7y4khNXHhq8%e z5vbWSn05QEMYoS=I{$vil71Z@MmlpOBhKC6SA5jgUp%ox%*=Vb2s=|WzC7>JYtC3DWzPvZeWceiwb@)l`yXsa5#;`sxA`T%r8LF&Yu7Pt} zb%L#TpqT*biq+Z|K$fPWcGqXA@96(#bo;WM>hS@xkdx^?9sQ;m zWwClmcV6r1yd{rwk||L_^+6sS0WFZM%ey2&z30OP|I)-Tkr1n9%?rybWNSKR`!juW8l(_fjw{;v}#xTJ9FQVs>R(T2Gp2PvTBr2T*dX;yzd zlf)gz@vmJN`~ziw^Ye98)y=oRL>rL4hk84q&)SKgyp1VLCBI%VrgP&k9lKVqRRNX;_+d}b)UhTTz|OcG8HY^8PMrI6%+sHiZehnJ;mMKhGi$hL z?IrlAc6MfTWwm-H;!OAYx_JR=2enthc=Mt}oyu7(P#Y>=D;v@79}$2wM=7nqCS73- z-sjD0^#yr!M)qf6Xa_|OiA_WJt}zX>jLvkbK!Y)R`e1L?FAcz@i53;z=r#seT1?4n zkOEPuwF;e@aDGU(eP#gQr}&83rmxGTI7cGA^4`n4VxRT zyTn$t`O9e86L1_o;E>&aTitSXPS{f7(hc%vV6kA|C!$-eVgrmtt9%9$O8#8m_eOy# zEsJ+$T>@ToSu)FtjumG5n(2vdJ_gOsdiGi5&+FAtqbMI*ySL=IneC zgnrS2k<)tumv47ZMweUjXDP5O672#rz*-eWuyW;lYogk&MP;!K;yGpT3C&g%!7`fL*r2x~1c|0GZMi6Tnig ztHJ>(=LYv~S^PRAFu1=1eA0tWN2>N!aj@c^q)%hnVdsI6C!bbd?zHyMr2KVud(?iV zkt$lm|1MZ5-<{Z)qeSznNg*g79K+gQs2({(>|m=GGod!~Wq_14BiX1{9B4@mCdpHa ztz5mQH`uLZSatky-3Y#e4Aw4%!dVy?mpGlz9U3D_K(yV$m*{hXcGOW?bU4Xk+sf(A zF#jVw%b2puG2C1Do{GR!fTgI>Eav%LD#G&O&m+7&DAuItbw{?4xt zhpax(Six{!81x8@xcW-ke(C=;!jBM)9eG5(jFI#rNmtw_p}wRSiFk+8lWEOoBw1K! zOC&l}cJCg3g*wS{$eh!eI_jSgN{P!UA&h*ZUk7`tr`KYMoMhY^);zBLKQhWtfPJ57 zkS=M2jg0&)yATX4MtXD2M&GsDuGRvwU~sw3XJOjoh6f|v_wpG{)w66%QhXwh3f6GD zbH>vMkq2>TQpcjN5X_|b-G^y+;6i&}R@h3T8$3Js!FAIXfcEsIf{G8gNpg?#fnS zaJkXxSpkU1ltmo7bjS&Q@>FQ>3=aR?C_YBlMEUvXHz-td{gFk|3|Kn_x7%eh`Fjy33)9)s5T`9)HB=Q>{0IqM6+je>)bM+j&qqEszstFNa=r; zg{aC8P)7cgnWp!IlZtZ(To@||??MoOVIV)atmIMzwaUziIngG|Y*PMEehz6$v$1`$ zhAq$D=+iiY`iX`SFlmnou+w1CgnT>-B5ZJ*Or`J8*6vI zVB^Ec?Qx>auLJ`t00pgmT6<3&hsyl_t^8I3qv~>@$bP?cM*YFk+pk-(paG@-i9*)i zMUrdk#3Dn0v!K%O4OND432Cg>494Z=vQ1 zSN1bXDYWj{v33+CIx2Ur?b7G#1?G5|p)Vm;x`b~JyJT8EA~%fa4(D(v;Xt90f`aR- z*pmsqX|5BCY$#~D=if#2f3Bey+iGw+u!9rxWdj$&#c!#h+BoFx4THZ>Q!rqz!MvdY z%F7dYp7zz;3{YJ4hvyn?@Y)(q3{gLb(iA`4_#)K}!=ifziVtW$hSZ`Fj{gUFPF-+!}i1DxtVI4w9L(tw5`3i!e`b+k)l*FTX=gVmk+l_*X-9 z)FUjo?p3`Mb!jjOYtzw9%}4zY{*7(#{b}s=YOPgvnJyehvEFmYT0>%e+*`$=`Um$D zQZ8M8V`*j;nC&r;cOpwQ2Wt~70c|3E8>-jA$?at}xrk^ReKi_NF777;nzx;c9s)@b z!w@AwnOWV8ce_sxX84((ao_Em&|haa~KH zhDC>-?KdW&&^JW~TCn=L+iKlU?WZr$?V82Bq%QafNI-6t2p`>v4MpS)8NF1xi{aOsh>b z_n$*eUixP<1=8~MlCQjYmuwwa#OPpKL8}F6!_jHV;)pJ*=W*Q)l@{UWi7`NyB%V)rF~9Gu~?K6Uy;XxKSK$67@GjOc7#-9BCe zG<*H7jB$Hy6I{GzQUH9E8QMy{Ww+*o#^MFe6J|&Wm;DPsn?Dli9UzIO><@gl6OHt) zZbD-9eP7Hx6aU!-QCmL`Et`jnrJfH^34+i5{*RCo*81>rR;yGOL5@(@_&WcDUKF=; zaKIMBJTpo#HSkW<#x1b9##OW5x>`iAWrNZ)x;c_uS>GDT{?QyhCzwDu)4HefpA2FZv?SIxS42$ z5?Nc-!Qeuf9-pMoDCEc?m|I%vIz-~eT*q-4fuUqOB_utp-ETFEOLiq`NhN+jz-Oa! zFvjuP3^AvVVC)kO?)+JQOn7A(rEx zZ%de&OJ9WiU$Zf`-?@YI=JnYT4+;#Ox%@J3tVx9QovTCo1#dKH&;Nv>I&&klQtL45 zUFKLP#TKEM(`(+?yo}*yF)T8wMddrzSuXfpSO$JK>LD$Qdf7!m5GDLHWw9#eYXY*m z@eX!F#G#=~nz4{^T*geou*LTKNqTKv*>f^4YskiwSj+<>SQNr4 z+;Zh=8H;t_H+=VCQ!{_!qRwNt97$%Z{FacNZfpTZ=tLR^{wB%nW z6Hyl+vYozj!j$W7WQYQsGAt8z9e**2o8>C!C~aajKpybQ=zscm0}PiWhSRPY;K*Y` z$4A`ALsaV|M6n&b2rxfNw>q6yo~bhP*trOY{f(WP#xenw@YT4m zp$1axnA4a_QVO)z|v+3L|V-bgayzLmJ*uT1sb8tI2@ z&(AZkp4+?kJ6rbpXmgQ*;q@gZrS<9t^jJjou;{&S*>G`-P1jQn> z-jycAQc!ag$qGdDfTaDjDBzKZ$7BuoI?Hb>dzd$9JS>fLSn>w2*|HGZHKpKwM`__` z1@bBXXG_lXU^TxfcHDC*xv&bjZf%Mpsdr$(h9Q_wNhd5`$Tyd&FY?${ZuvHa4pO5IUH)Y;z?EjC$Q{IV@cu(SOZc+$gdg`Lx`;D*|@r=tFgC7Q}6i@Td}(O zJrK&EJk<1QVDyNkne^SG6)8FnKz{*#UpkM0G&PAP85aitQJH`)0lc@9WjrGt^G-OO zrl@m?Lg>$$V1nn*kpuot0uCCE3#mBB>wE^z`m-#ZJW$++ybSKo^1w0Xo=3yp7^v@` zgFw{DlQ_(n);zOQ&g{Hf0sfMgsH($eN?Vr>Y~GHVY$lj&FB5|nW$N;AQHAq-2CYa_ z)B%|GL)pxa&@^Hf3-C&P0Cgd1y!FG^ifjQM=}3k32Ay(REwJAo(uj=T!ei+`s=v>0 zU@j~PdRE!-ghf90$_s%^{ZAJHK?1H@35E9bJ4)6#($f5G8wk2N%nhA3v z&I0ajf$)LIz?dg&0`I9=HN+t6qUH#$AsY)Yi#D4)S(Csp;pf9L_@nicuT^6-ev||40A&B`DlFXBj<@=9_$N+!c9OmHwVE1TR0z?41SdD0Pp(i zQEAW8v||J2=N7H`r;>)Vh5RQqtp5HeyW!^Fp1mE=kPHQ6eNX5EQAs3QG_C^*&PG7j zhfl?t_Y zm&ttp<(NdFXP~7PWAkGGHp%W!=tzuGC7=&d(DT#QDwX!!VVs7ZeK!eci!pOZg1&GX zrM=>yy?R!v5Z-~(%1`$p9VUIWnwW>6fJMf&wpW<4cF7_u11b7miIUQn)*?jBG2I!B zT7iRa%yO_StjmGBD!G0A>WQBxJQ%ab2S@b>S~sal<2zN0T|3`rGH7D%bz~6^n1;7v zDRGWoz5;4)bUi9%AJ2s{HX=DCy3g01Tf7qyrbDo6po-_s$IAJ4ypDw@S634f#B_5o zeIAdZT746?{1E5F0FO5Jqh8DiC( zl6>3^66*-Z$0=^&Zi3>L`(w5AA=<)*DXt~0=UrAZ5jJgZ>_Zg0cZ@=#ljnVgWT$-j93QUAS?B0Yg{XA#G_SbS zb;xT}#4FsCR9KgjQ1ITNa(tA@JT3OOJh7)QNQ_njt|g!tIH&4Nl-x_G3%J_Jx~=&a z2=IqWA^~P$E$_juVNTPIF{aj&h<l3#4yK`Mvbd}`^OWF|ahASDaxB+u==~Zk z#60E6<%U?f=7wt)m1y8i(W$xkv(=*TR^R)FkAfx-!0za_<`qxft&}AK83RM8Z3k9) zCoK9+!tJ~-+e9pZ75Gs4iOp3rP!#95dneJLpq{W)NueGb!d^T*)X;6-iH{**O$0RW zeU8yp#(8u4jDCWY{+0!_1nN+ttuLcW^sK*IW1M{d(w(`*P(p3X4FOu-mU6H z<{$bTfjzk68tl}}Z$==`pp4e2{dAhj<0#X^sA*`uly_U`V z(HK*4=~QZPnIlk<20PpWOk_!0s7IYqMnM0pT3i2VQsjd$T!MMi+pnyqj@ zWcBHns6OGD^QDuzOn~RH&fK76M!Xy2aBoMp(g*tF8pAI|upN8IyO+T-zwq0_U zOMcyBQ=L|XVJJ&CS-c)1lz&7{2PK+?#TEqAzOLpD%k^iw)IeckPeh#+~5*Q8mggWO{^!tf_~4#leYV+1+Jzx z0vS|j9ki@^MH97ixk4MkY zv#^PC@v*#(mUTslNc`mtTrj#3tUd%^<=8r+{Knc+hEUXN_b-iREqP66_Vb@DRNIO; zOionv6;dR83U`uN5;*$gdm+GzZ`(_8US3uZ4=*pEiQ*Mr<2Y94lIk(A1uAdN69-^oVtrnk7^)eA% z#}To2XOSzEem?+a_m_}S5pE&+DUn$C5FaVQoa4O&7KvZE(ij`t?%E<~9Gw@y*KkPK zVoCU#&>!P7#p85)IVUEJH(W3uH;&`Saw7#gnJc%w1u_9ipFi@tE8-i|Xe457ZjJvCg#UV!D8060uDUb3~_gG$b z1?7@Evs8v=b0Nbs+v+wOm2JnRKxy z&!Lf%!)OHsoOTEn#-K{OJh2YYPMmQH2Qkm^{3TWJ(g4Kb2=;^Hej8a;E!{|H@W-vp-@kc3^ejT`=6x18uI6*+p>={>r;88e3*U4#_ zDC?_D_FmZa!zzorM`E!Icd!JZjsi%d*_UDbTVe7rb@h^sF9lvAN>2cc`qqobuma@rZF5NPch$Y&lL%!|r6=U$a1-@EjHW z5?{n^Vt@@U+kZSa$6xP(oqUucchxj(Ieqwe z4r7H`u(`=LCkAB*8|c|OTQ{lATS*y!j?f&*izPX6h!&j?Yi~5SWd&6OU!JF&P*-^4 z@|*dQccW73Ew7CAf)2UOl6eoR5PLvuOHCB{FVk zH%qD=GfIiUnvlz?oVv1|tP7y5Ptd5BLI&NYxk$^;Q{oZ4j~Ofg@{3gf`-&qDGBb<_ zV^DW>NGFsAwwnkuQ)c{Y3jMJXaT+4|_1xIu8^i~P7*d0|_QgSmjBOlW&W=d!fQ0n~ zuLz;m{N)ZK<6(Q}$nx&|zd{6|aI9=qHHDxie{kG=|7s$OsUdoFyf4fV(lKiZX;R`SYt?Gh&z#R&7DnSu9wWCVcktt?Zgabo=8 zpRSs&HllVuiNe+fT$!eRICzC0+yU;i6RBO%@>jV0aM6U|cbP#gU`vAZC$Afav|G=X zwReifnNU|7NUD`YhJgT}+~bQ_pc{!I&}>bJPJ4Xa2{+484d&2Ei8lW2)k>DU<4HZ+ zZd%4jWZV{{_>TvVnIE9ON|<5Vse=^>wJ`Y@mhDD?!zo!I&WNVDJaf3_#S>02-xf`IQDa zK-Ur8Bi|(MS!9fl)F=md^j*m6AOC)0(b!_yy@gG+vMXx;xCkt8r*Gi3zqG2=?du&U zI*8%NQfuKM@y!f(@?#@tCU{J!`dMpMA*{fwUEno^5c&$8`M(F_yR~9e>{lXZdL-M? zs^*ga*v;xq5_@Ch@%O-1Lr1=|wB>6Kp1mL`IidpFcZ3t?HvPKrS;2$2xbwcT;k~vp z!i8<1x$y{y^GUP;PD;lZsl22D54Hq2#kATf>jzU}ZdUZKG@+Zw>eJv@H{@ zy@X7M@2kCbo|W<7vgySgQC+Z}V|)uN7czfYqr=dc_(N3@`A)3$2E*0UA`laGax17U4cETB7;d636EeP&HX-_~b*rdRDcd1&C+}5FcEhXEz4H4A9>Jk53MRJpLgTYejuv4XBP z@-l~>v6TcTDRj`hEE*h?e@iujZPi{x0Qi%hg?>3S8{CFiW)c_lXtO~H>He~nXmHX! zILMVOm&neAvXJ0-}M0ycT{f>IJRtx{CPj~^4;^ySB5#cis<6LBl#|rfZ8enxyUC;2 zOi=t;jO7#;bo|v3_+rIOLv#OFW4^p3yuv~G!mCo$m$Sh?&FZGzohKxzx)j}PP?zE> zY|%Z4A7`C|cw5Y_Cvmy=Aw=kB+6M`D?U|V98+%Ufn;R{7Fi?=;>3F9d$A`!#a;@=< zca>y3S5hLOM6c%Yq*0M_b4)z)22R$hVEMi`k+$RsDX(FW9PsW~D-QDP-o@*}7kO4U zNT*LiiARr>D`eea00Kb$zYI(&h20_77opgGvgrF;{0X{@^+10s2#xB^o&N;=kX9?o z`T!vT1D!p^eVDH~(HaK8XrJ188Uignd}>CU!FJv}X^*es9&>}~$scXtohq4>EzBXW zOYWU5>)rqXgnLdC8>&~?yR_}sJ^vD}K;a)Ja%hgY3}ZC9R^NUQ*aL2=n9Wt8l*@(v zC-=m`dD59Q5$p`ytlC@pU#r@zKg%ic#K4e=Ab226FU|dU(>M)pl?n1AZ~c?h^iALc)PBd|M~|pIy++Fc3d0 z5P0UJeUYJ7Iqm*zccN*l@$Xvois@T!Ktfy_`N2XHU#Gn-1AW|&4fX=3IaLgO4t;7L z-dh`0IJS|x)2gf=yctl@9@howdJmII9X63TxYW-be+A!u5no5O$&XNi zNkmyuf2;&i8{+-o8%~=Nbv5E-IHb;>?0XF5#vkV|dvf-E9}<%Yps5K~EEo59o{!L( z6nosotXWQG7%o1u(D#Fwb#;N|?r-|51O<8a?!+V(3Jt?P?f~J~a04F87@H&LNZg^q$GUY>DpSBgw=`Dv z6+~-p8+yF%p??YM_nNG3nKm|Toitu-P};DCFerVtVV6@;BIHt#j*KxE@?0v%c*>XV z0>+UYN*_An6$U< zoH${u?)Bn5RMlbVtUVmChpzqUWts9yIi<@BvM}9;ObD2{J`W8pZ3`0IbI-er6nEK6_ds@B zb6(pg3n)Xq9`EEcXjTA>IFTii!AAwidCm8dAzI4jy3yqxGmS9n zkxuM!;5UB=jful*D>%^@QY`NFi z2N5Pj)J=!+-_tDIJ4jP)_z68a)^jz5PJwU|I{a5*%DR1GBjTg>y!XaaoNNT>t3;d- zD7h}C&*>T?)6Qz{$2m-Kzpl(b6S?x^)nJdy28s{qMpq`;H@XHHdOjoG8v}Q2-qw7v zQ3dbg)Oc-WjZ5FT5&$*Eq5RnbE6QdH>s$AQHTLcIRhT{Rw=B}RBsz%{x z4}(ww1i$ko&ma=}*Ra^wzMzuz_|B3Pf%cEI=tLUbG`KT*8lYUqC=E@`_c2 zV0LQ=sdfD{1Y0IS48-FbTogHOSH|YoN-cDxj{r%M(rVeCXTVSn`DzhFUq!1k4P5(p z(&D@&C2S;Y#L7c)n7=KbDjqXx1EfNE0a?b?=FtMs?h=C8f4;u-^;}hj1!Gm-i~kQ2 zb=%YeuQUG(^vw9sFfyAwMo*WG178{IRG~!zmdS+X;*}@6Km#;2W7k4C#7Ex$LIuMC zka((DgJ3O6iM4voIgT`(eN__ia=C*^@mA)=?nx0f+JoJ&H#$qyov1p`Uu7F6g_a&= zH9#gk<{6ql0M{Lnd___3*;x`q`h*YXA^NEilYk2dOv*L5#AzLb|ly$5yvOSD4Jk2 zO!GW}c_2-`)AMV#R;>Cs9F>8d?Euo2?Z5<(ELLk*k{dX^%6-lu#OyyYuj?rF|JlC3 zW0Q}2quo*U=e2S>#Om_m%LHYi<%9Z=_=1~>HWeasaB>L!U?Qt7MHjfWby1_;TJ<_b zeW*i4wV0VWsl(PZ z`-Lw!Zi`DQq-%^|Ldk=CQt=I4EA|WuJz?XU`%BJAx+nBS`#68o`u^&oJ3%lK^RmRa z#IK6y<{S)>Gv%p;M}De$F%V~I5TU8L7*F1OlL4QW>4^(OInQwL4-XNEw4d{5ba4!Y zgf3)DPjU7hI3oj9Kkl%nE~}mRd!6N;1Ym&fD=aDD;?AeNFm{Y3YwvNem+!2AmaFln_otU1&=_KuXnk?2B^VOVR&X+V?3y-ngN+7 zzALhkyPpNKU=A0ZMZh^h->3joeh5%IcxVeyVq^&u%P9Wp{ce9`Yb8q9+zzF%u^)>V zBdqF`;6A_rE#&&%4!hCq4$%=7)}I#P9G!nQ%Ti?H$e1kWj3HwoYzozx2SkIcz!j?t&n%B?$wn+{af`Th)i5h0>p55CTvK4yFZO zd#7+pBqZ}k=herb7qIo}3}t|oi@Z1laW%gO8R!qcY>AW00#Qm*i~G*5T>kuG>hY%v zyd-7VlM!TePyNmWhf`-P#48A7&(vHFG^?@A!wWg>qGoRCM(mOu?2w(RPrqh)Naj}6 zxs>Zr1k6kKGH(9JTbV1QKZd_j^#KiBL>H$nHB|z*JUZg_=MJ8yQ!Os*x|m_wdOYkm zYwL~bge|LqR?w7t7{)U{NIs!;D3aW1-9t9`LP}tNqfV$kXUmdZOBA3F+4dd(M*Siy zfi~Q~s7?$s#=6Q32H#s~r0j7&=dovkp_kz-4>-gg}x=|6(9c)&AIRS`rfR(d zOX(^J8kIM27`ULMxC#$hi1iUh7?CQbDP7tD|Cr?}bKpB{m5v=D|8}U6B zOS!V33+o{1$_E|NielPFK}~hwWH_)QLoa$J74_|3Js^B?qzk4llM%P!TEnROP-XGoK1v(--^E+U46@0xyMwST+ zOtepP^ATOrph;(Qi(S zXmMGz7cIVf;b2I=jetkYLXJhCLqz+qBCbJs;+INcr!yfyiI(uJ&9?Xo&;o_eMGbOya)9O|c?kKkKZH_ZeEq1ukj9b9BC0l}>nQ{_zT zXy0ICi^`>eLbB%jVL0{uqzcA^=Yg1@)(whE)AXJUA91K$io0E2eD`h0z}pJZ1-VEl_Ti3ghqzfo$-~I~|Ko#y0pQWIW-3+oRcx+7W);-TZ;%_H$F0MxQMpDF! zp;oPMi5Xdr5hPtf;gBWDS;|4~)Xkdi_IQ#6(oS+_jQ3jN?jrZPKdSAqv^-YkkFL_d z@?)(;JWnBAz=^n?H-e6_#E(13Enpbqpjn6rkeBkNwPep;m=Em22te+%fE3q#kz6Ul z?!QuHfp`Ez9I{d4gc^fZ-Ao@qb*f#hp#YG zB4iHEEhBGv!PfE?^y$Mq^$R|!gMEdfGu4+54vn9^dkEi%cWoU3t@PPgMK{Mee z+C(()rrzpsa$zFRrisq^ZIq4Lsu9tZmq^dg@KN(>&_K%{R0np&bgyA3$ZzRlqAZ)iwgOG3vJ6+&W;ZaboR;f;pP{`!mH#Gpk#spN(|$OJcduh{Pwt-zOi#93d%T5bC) zP~D1oT`_-G_V>X1GU6WuG^)J5I;rh)X-pHc{IP5xU3m$d8O+VjfFLN_fF%HlXw@7) zVI-n+4{XD7F4lpTrMWnStOeSRb3GLE);JC)&Vg0c1_9(-i`%a`1W}N<8TuiXPPOHC zhP)7@UP|(I#dot(SAmWJRJz-yE#@6{g91D?-0TaAGs|)bL z{@;1uArI^rB1$$mg>$XSCu#x zvtjtdq#ObIJAm;Np))|VN2ZwEnj*61oWK@+W}?*Zq(9CVD#|kdkf}o;sl!&W>Zjm- z`N4cRrnJ39#-IHCPE>6uV2Mxq_z2`1MT4k}s05)#EjYr$1oZCH=Zx5{7=wdVzbt9S zys=1+#b3KnXc5`lz9!AK(Cm;*5WI(uck8ggVEJZc;6!m0446Tr^Uf0dJ6jl$ZeQ3z zooo?+3@G}tB=n+g(O-=@$J3Q=Pac~;tm%!&sOqGHCo8h&s;8G;IWwQYYjo7-V}+PU zc)9|9{^I8U%^ZGab`{>`5)eNZnTHsInWS9%hN{B#Tq_^Mw*`L)hcDgI>UrnBhwByr z0JbSc(cf3F4d*Zc8A&HLl`WCdjkSkDx`c>iI!523v>OWzCYWC06ohx>b|$itH*ErN zaKy9;lRn(ry^XXYEj4Nwh= ztY!`@U}g-2{GJWmRH^sFYJW8o*h#++2gdIJh@YEMf%L(2PKil_Gs?PLUkVXF2>9QP&tG+(Nt zGw!b(H7%}MNhLLU)m~zw_iS}hc=d63^V_*o?{i|#@F+5(~sT5t)qy@pniMFs@Bbv z>wFd;a;uasjNSdHb|&W+INQl;um@+4ggKGOE*jy{ox_%LtasFUhMx+eaQQnb4sm$q zPDj&CW}y|O%zpSoRrn&NK7)5H{CYAQMi-GUJYp4~n-{E4o+?fmvlmoks7wwP>K2u8 zc@?jrVGEQW4@1c~x;}0)BQnp>gP2f`ERC!LbEFwKM0Nma*j}@tbMVwt;r8S&9(+*` z$tdnIA$QhFM3uDcFM3ZG1%loFxO!2yy?6T*uvk5#F@QndM6(FPzbc!})%gjNxYama z!Mr^Ed{)?9p5SV(E^7}s2-G^xG+!<*TZ*m;v~UvLQc)wpKc>}_U4wN4dE+y*S>ZX|EDG^;rwCX7I?_77H%&cSz%*E5B7x2Zf zvF!|Xk#+TN>b=99>07~GM48xiXLKuX_rjC+p(K*mMy+=d(rnM3uT~4AcU3kuTq2 zE^cqk{*kX!MTUYs`k1cZR|b&gd9kjaR3T>_VIF6+ivy;ZIU)}eN9$p7H6M%47DHS% zC=IHf zkTO0iblAfsx?F#rS)VBzWKTnltcGSkRnkw1y&+>|BAViZA0ctZ#oF4C zcSjsrO@k|f~~y$S>wWR!|j zrSSwpU{ns~54ES2EXQAds(ios2w3n zB?+#AOCQd(G$vYacTiD=RBmYS8Ft5?F%t0;*R$aPlBwSp*2@=cy zAramb6ZUulj{K(PoXT}k4Z#R6C|9|t+%AqXq{J?m%+Gu!u>Cl+asDp|ZoR1UEf}3J z(2xE%U*A71?Ol}{{c^C`zHKsdGSy)Ob$v~E8~_?S57}=A-#_dFKhTVFR?&H8l6PaUFim&li-+lJKo8va3 zM8jL_P(xR^cf@AA#g(R|YpN#q1=%OK!A(7g3`opAENa)#%ZuY({cV-sT@9dpqDF9OSE+xrYwKZuKnzVw9O3wkk@ zf~qNkq4IyQSSGBy@1Sf{3YEO5j8xj24yIt?O6Bwg2}v*<{&wa4lqYVTLgB-h*wn2uMoDM9pAH zaWE_9Z`S$e0=MOiGJ~8_crZExogq$e(wQo2CkH4Zn-(?xxAbvQj2C8HB_!r2GZ9k@ z4|#uU&n59!7FgH$sXFgsmr0eUnLFHvS)^oTpy287$6oqGK5)1?(1<)n!Y4N15H&o| zo4WUKP;k5Ssxrzf=tJOll%P6F3v@zW2@nB{?ZrbgbJaK2B?pg;#592y&MwLJ5 zeB2V7p6w{HNh@tlz9NO$X0TTW0h+mMR5@cJnV9?95>^po+IA7NT>B?2gF>Xxxe#qb z95T^8krtVxdStncyxV6)Wee|!Kh_lKn;j{gUfnep>01O z_^@bCj;-i>D4ep&i`3gNj0eTq0-b-xI?o@`LYqgoU^Z~VvesLfVVCfVRfiss>|I~6 z3wu7OwfVo->D4)OG&y=;8qMJ8H$Ybh3XIMdt~To+Oi-p_H_)~WeLMllxO0F=gGO&kO@kYP zR2-3AkdinFD(oRvs|UhfB}-&_vY2tVl!#5LLmc`pE-)lDP)nbRg_6|)emS|4*R}B| z3fVh59xaDJrQ+I9Sgky4SJ}{F!3(`;5&KrSfW68^>+p^vg0N;uhjhdinrh*6_%iE0 z0ehVn8-5n$yJt42!Joi~biia=XES=>ngEYCZ2`)S*jn3)tk;63*{h8i$}T=4`{hmt z?#9qeffC_1fq39cos_`(>+P>yfp*XQ`@gadannhR2H{y{Cg;xbH3{nF#qlueReY|x z9E;RsqF;2+p);Zi-p?5fgyB`9MkFj6V7vKk$dR0Q6 zRDX^JBXkBvZsH7Ll5cndqfn@Qt%(tB)#|G-Z|pDffR z@}?+?b5gj>EiP#D6h2F0KEtIoS-@AP#$fOR)`6l?X4M>kFt;qS+KO&jmiN5dd3^Yu z|6891YDHi3749tQ(?1jh%zlOS*KAhX^!y87QUCEgMpj9ZzBji{9|Z7GstLoT1SW+7 zN6a-|V!6a)e)u)P8_na~q)mfhy8?gZLD%HjdwD2?`th?%d*An>^A{g2EL&bT8($MHP|L!dkgB%U|Qzo0nM5wm&4D7#5kzR4vF z*nN2Q%k$TYLIqphHpNPS+9?xg0)$bZmy{|Nwlw+m@k_Ae7%BpnndgNj?L*hJ+^_pN zm$TzJ6L=i^oUKg80qDf2m>=379%M5m{bc4?c`#@%{!)7L;OcWqVQVo)NgM{g7Q`@V zWP5qCsn^aA(C5jeFS|@$dI9O8{X{ygf(QSHhy$bDao?OJp}<2|@?4we>e#xpw)`Wj zDAldlf(RkC;`(HrU-HsF(ElZ<(*Z~Oad)Y`GKn-m%2)cz^+@j6vU-olnSl~BhGE7@ z{b!^hLU?!L3^l=;%=FPWQ-@YyMM;)~=F2fsg8Mr&7TWBfW zcq{6n+_K@`vM1PZ%M1vlQuFr0sVRG*0=qQ=MZx=2Dh1Qf0!vxk2ZlO7tJ--B)Zc@$ ztilgeC#6;+)qSSG6xkzk*Ua+{V8>vLQ~EkW5=Nu8vYEWEAi~2MSV`zHwS6W8ZON?; zU!CaQoTIV%e+dTucF$CL>e=VdmA4fE2HFum6oclOdyK0MQL7{Ta0u)K%Utl@!q21f zfkxj}WzgTTG1-GxZizL;vs4!Ee2Xy8L{9HKbUZmJX2sNs*log*zj2c;POJ%$u0tpv zD5Vy#`!Kw!7OO6M53zA)V&Ro%sfUGMHDL9ZZY%HLvUC>3<$RvZz@vh}GZR;GSU8&K zkCkz00dfKctU`D3!6Tw2*0ec{^CPhm|Grmy?VLd(0CCM}=ML&7bQK54eP9Qk<x!icD5svPB5*Us3u{CkmckKX?Z9WB?nrL1D+nm=4`o#NDa3lnuc~A||;OPN(q`LJC}bm1Xo!mEIu=ul2@>#(m@? z|GV%~@57%mqwoY0-dktPnaD+1wI_>{GNvDF{RcL{M`;5Dd5xJQMq51Iu6hOJ|poX{CQ6sSjtfIwuUHkf=&|T?OomHOYBbw(01iNG@#F{l>HK2Ig>uVwyDVgq& zbXdw$#JRL9)TTTCGCS($XmhCbzP6o)F5p7Lw`z#gAC%lggrMMI^oD6sUz$ol+J-T5 ze6rTLYV%fCpLEM_nTp`?2)bmr5aBSK!u3{)@6tT(DwnHPbBwsaq(Gy9Sz{=HC8IHS zUeAuWR{#{e zsGQ1B_EkS)da~pvrV-tA@4CC?7*HB>oh-y%wO*6N)dcs4jx{<-_D@&DIXIcQ@k*@q zl#Hyavnpt%$3v~ug0eASK%Em}oQr)nsT|2gFsNe}f&NEReaaM@Aap5)pp${mqvr)Z z+ZN_5!>dfxQ=90qgb7+@<|$yaS9{IptNeiyo3i7y>D&NtegHu6xL)MAHjy2>6cjdz z+P5U%qKNKCz0Z7`n6{_{TPQK+wXqmzc@*4?$3xg9s=B@i4 zSQXsTM-smW??V(%*^ug;>#JY|&%K`Y1-$4Kdxke5@n?#x@X(l`Er$v=`V`6K^U+_M zdexE>1ps%oCsl(S{j%EmRyFQONh;5AD3xAg^8A%?m@ZZl7gkErv#s%Pp7rA5KZ6p* z%HPi2O%Wg;X~rwD872JE&+*a(Olp=?LbmC;ykQk_LWeC}8YUI4unQ+V1c)S4bSR9a zGJ#(AdamDuJILIp5>$zK(Ka@ob1YwhDx;fIJSPNg#PDMW88p-Ikh~%}cttqYj^aoM z`CMc4r^l|BcG43gIN;R8cwB^HD%aGS$+sPK{U;Q+s&idB#B*)yX#<^*Kd0rXU?L5% z5i2_5LLgR-nQ-Z!1q*)&Q#XC=CtI+OTV3S{TJCcSfNr3j4&{I~nK;N&aC7pg^mRV( zi85jHCgPEI1*04RV-Sinyo2U~#E2Kk#Qv~tVtt2#%ZptZmhPC7OTwof_D8wBg&&2a zRSDc`iUM`C0BB&mx5UhGGO!XnE*zj?<>&auL^UfVre!X*0xg@P51fz{9hbT_o`THr z#@ol>w_8&C*>VSa)ubySh}&?T*|TM+$%%v<<*eGik=RxT3RQDLG7lWyFv3H6hBzJK z*Jd{^N9jhU)t9vsXJw=+t>aqoD`%E9Bp3)i45Y`w7i8>OpMsM3x!CMfq)u_d4l0Hj z@6HCPk-AsrFZ8?}J&|M5(huFnJN~a@=5uvrFnVtVv@b2?k=hbl1D^Jot%L)?>A z7pd*vEd(Wan^x~u^X={l`?=vsP_k&46`Pfl?9Y?hEO;B!TC9!l5ZBHy0w?11L>|d^`b6K7MUKGVMb_5xCF5O&JhJ0IS!S<40^B?J zZNMe)@+>;P@C?WlG~=gk|rvk(~V4MKp z`sNGjY`C6p>atwyvNmc;?DL!T7(aq5?adMw%+U%}{u#iNb14{L|`d77exFrJ5AP>MBtI5qWRmh!snvsSr?a zrQG*wS`Ffdu!dlLMkTCzaO8)X4rW%%B26eItV4tBQ=p&LK!sgvGphPl%CoT^;e3fF zuo9bm>kf&|xj6G3pWJY5ioEYu;&x+k6;7;Sag2%{_CJU zKovPo?2a-oJP~}lm(T_fdI!Vy-Qq3S3U)n5)FS^BKAC-85zXyd znDHKz7h%et+m*13nATJnDYKV#`?_Wq1E6boe4@ngj{i^t+~2xa5T=OQg@zXdiJU5~ zBC(CImg=V#x{3GDh&c9U%Xs18u58_eb;rSc@Yt7XpBtDfwmoSKTLiOf4Z&S1wD?~B z3ki!fr`t9e5Cu+)jA8QQb)c{JH6lQ+WjFz3HQCj!W8l^u-5YxKv2dAuiknk2nN5xm z=UlPZDP5u7Hcmsn4Rhf`*$|&o7m#QyL&#zX40xdpLE0i(1#*(6fPL&gc#?n2KDasQ zR9>@XAU0O4@LsI3x)fmK?Mt|Yx+(%0ve?u%_1l_S)_yb0|8Lr z|I<2#A%f(l;dRVv8;_g{%d>y)>NqY8P9m4EZg7@wv}GB1N?xXvnT&d&h9kH*R00s_!0-f# zUe56=2p=wcAC+4O(Sms>6}Sb~zhLb?V%mfw%9h&pj+WUYMnbVC&x(cRCfI)P&a~hr z=eibBLE!i(Mck|}4K8XTJBEe;qo%eEV@s$NQjq%svt=dN;C&&5oxX2B|0z~MK{4;C zD_qHH6wjxHk@KI}4FpCPq_4+6VoFgU$4(Sv|C6Lh@)R=kTuFbBVkVHcr1RwkwiKK= z*74QklH^)yL6m=Scfrm#t2`0em~nrnu-ze{dng=*U`mRtG(t<+z0Ziq1dc;oq;5@E zQ^kG3NaUbREaSzm1;O~tP1BA>s%_gfr#(i96&GWudg$Wz>wa20ltyAWE+E#9rqHdZmc-CHzALd8blNZTm~!{#P4|Cjpw_`Iv27kwG{nFn77 znRX{blxxIs*GgKEr%&cGgzvjWU3qKx_CbcCrNT!p{2v?_*&SuVBKNyBN(osoK~@{5_s{6FQnC%H>+34s9n>X+5^!LiTMEGf2caP047(p>6TyNW3&dy zp0StrU@}DO@{}7zODPrreqwjC-hx=8lFxLVc1yonbKGT2>a9wtR|otn-j9rP=fu|?rNM5o+OU0OqG?5v+d7Zm?e*d)_o&OtpngZfMVuZ9KvE) z3&}MK;pmEN2wh4uqMy+9C9sWDZf{8~uiXvy`tHm90;z!TowC&N1<6)8J!GxwDX7BA z8%pw)_~#G`#ZkE%8!P%tjru~Mx?bjoRKp88>OBTq2bCqK+2d+6E{L>cjvj3efR>cKk`z`D83d1SBC?I zr^>0s8M2dfk=JNX$d+{Hm@1^^BnAqsPi=hosa69}8}fkz`(Td(@ouL=CXAK}A#!9qSxMZu__p zQmN743>Y*Yw?w}QHtrFY%stT^6`pLRvSAf>=KMVAiwEg9PtXmoFk`NG;(u;g#OAMs|UXDkB2;hGbSOk}%QH;GcF z2~S9w95qqLYsF#ltkI7RqFtP5u7AAJUn<=~wCc6n0ihUjMo_J%*hf92Gu{1UC}Wv) zPci{{qFO)j;+hL|K|K{Wsa zUpL>jdWpZymZRRhtJu6^jyxoc90Z;E(EtSRl&IR}XFBYGP75Ql0Dx%adx@10vQ@IS zv!SK-v!RtnaKGg98RZisAIkNJg)3%#5?y`Z0)o*}i1$3t`u4+d3gx}Yr|=W9BzV`cD1q? zmmJaVZPWhM)S(lLbCZ7H=wqgc=miSG?I-}vGO70a?LA(MK?}-9&JbSEYIKVe1DW`h>*igr(PmE<%yhY3vn*+@1B;>E8At5mobn#W|UI_&DyKQ=KY!p&*U} zrDT_e1*6=j&#OCRO1i!P;f3~sFo`@N6`?;&Zn8O$C>J=3 zbCQ?jJ`bxN7aripKIglJLKyYjcNW>i%Dp8My+I_T2V`(`j!1 zIeJ=bm--U#!35D>e)-h)Rg|x5IV_aRz%J}9%yw~#6@alsbPj0snhusS1Z&Z4U}M{p z8h|GhpY{Ge>=Yh(Q7*pPW6l)ZP@GzeSvp3`!WVIgY-49TB{s-0>l8!V`7MK^CfkaG zl^ihBjAJyGOg^UcINGoiZ1cR z3+C6)@r{a216{cIxhnNd&8NO4hV-FQD!#S$TZb}@NI9Tw&-~hqB_0Y6&5r_XY1y_N zEY}sJRRiB>aX8$*Gy1`eO+>$%-8iBA@WVlfbdy*!gmhciEuB9m%yqRWF3*<#+no>>g+Ar* zEg8j_$y!V^cQQ6>|0CKw(#M=Oz%<-YgKw>|vXq_F5ntvH``z-nA&t5M`ZI0aB*kOm z%yxt$KBcjTW#L%Fc1w(#YOfIA?TWBEA?21rLR2ak({QVet6v0tQEQ5ZP!SNKGxxvl z9ArC-@Znn@4jK(!K_0v@@<**w{nzAvK6^;cizK!Be&g&Yf<`NeRwQk!7jGWrNJ!KN zagh11m5Ok+n?i3ql3P|`qeq;!7;XB)uF+!=*@0wpef!JXm)>}|sGeB`gXjj@gR_GB z+dxm^RN{W0X8C{J&t^9YWOi<;0@LMpllCR?WX;f}`BpP9RX;s=ZxZjfnAfjFhDw52_P_Hbp_(CyQ~nqdo2tCWU&6#OL#CNQe7kCCk5f*GB8PD3tzT<`c!JL zKRG=hdGC~I^HM=n zV(wK-%W8-)gm@6ro07DU4=R9P=C*Zx3-E(cnzN-ihXbipZ+;B@#T?Ov{XfnzD=lx^ zx-6|L_yZ~cCWnGHuO6|2 z`NmGUy`2zbjeBZY;UnKvbbQmVv(JbvTT!675hk6PhQ>!x#!e3UeN?#MPD@>MveM~G zfu=p#A%H9Ucm%3)B6-``94Lv4uDvyjKI-%E)lX+Pnrx6D$mX#5Dh7RTczEo6~RM{wgsXy(>#a1Z{!5KW1) zG+Ok{v;{M2V5l!8Cf?`6pn1UUt&R5Z3Q@B`l{NF`sZiN za|T&q!b-sc;<{#jrakZbC3BBdbyL;4Qq-eXU42}f=DJfM6 zi0m9R?A13HIUrs`KKq*}0NQlj&; z2rwnY&j=2-9$BJ!T>cD*h-xstNS$L(J!2{PR6rX@Cxsa|Pn?Luo^tZnvClrmSzfVc zfuf)v_$4jYdR0eM@K4-_OfP`+nm8Wg9cqv5`|zxe^{NAr{%7~W%=jJHqZEugUEdmt ztB=uq^z;?>-SG7)IN|$@Y+&td^{M;%tR3+KG}QbJO*E1PbhfD8sTq+CHNt;Ao)Bw3 z$=OfPAFYgCB`7k=Sru%a4g^qQAz@3Qj2By*S^wR&;w^udO#E_}2=fpZuS}P5%3ExwZ4Kku^Q` zho;p)^3Rsjy&~fLl>R_d7Xd`te$*6dRQf3KRO%Y3d^J1pG!pS0BrCL4aG@LkE6Dja z`0!L;#y{hdukp3wjr!*@33{YxDtaZ@n2fNp*URZfb_8>_WxoS%?yyHdQxd$eA$l{LYisLvQFKEat=cJ6PyOGpQ@-r)Y3E~ z7aNNAx63bP*Z2@x$k8vJ1_zTzDqQPuD{U60@+Z&U@Xv|1s!l>W3Nq(bJPB3#n{xvl zUEBXH;-x}|thG!;Lh6FnjogOAVQa+K*QwiKG4$EQ}i$Kfne zTbf`)(HCaCd2_THy$=HfAe6E;gC{hn5a^;2KSyEEE})|CZx&n-u;YIyqz~y>m-G&u z-~c7~+9Gn%47#S!p_D_z#!8y+h9=BwNRU_{%i-V*7$)X2)DX~N2quXrkx$(+$5s!T zY)&qOVgue1pT0q(z3&#zw1y0XO7&J;d#IF;#*yD3*A!ngQi_in!jY-us!>Q!6oTs+ zUrs5}*9jHbDmGmB5RVcy;qA}d(GyQ6xB;VV=L$p6KyfQ1{)$K3f*`FU z`?bBEz`|(j9j>`!F_emlDh=m&gpu}PYPKLut3$B`%p3j_jZ?I{HST6f%{5~rjj5=~ zux32Z_pI?dDC4D-@5HYIOmVqJL;R{>JAXSL1;m1ci2M>*5IN43y>#X!p&}n;E_vwyT{AI%u5k{0tw%8v} z=LyqI1Nw@so7rTX~RF>(7B1j>%+eN z)zc;cc3ZCAZTWH)=UtfgKjVqGRWd8YuT>IAEJ-^A)I{A5#mOOST`>w%rVF;*3YAR! zvIMqTNxqT53EDfWs{j&}CfrP|<_Jh>DI1VVznb5>7`(a7Iy70fhjtq!O1H{^OoDkD zGpuZd1D}7S&qrXZahm=55GEc`lcp&ZHI>*8fG=3=;MD|Uyzwt@pDI>QGFRV-3w^8FnNct*E4ng5OAYZ#l#4gj|* z7N@Nk6Ip3|2t13ti%~?^^Y6<1{q(K6M(LhRjQ>LMsv#eyzaCT#*{&WfGXBt~2t^l2 zxQz9toi9-1w2?cI4Oc8i%nyrE(h?(XB%;2APko8t7LJo<<;WA|0C%v;XOvz-y%#yz z7Ce$g)uDPvRoDs3^$aP6fA+t`I9kt;dA}Fe#k$sjw~mmuEPj)GOZ=i%6xhJq;Lje5 zk=Pkq+C(JG|-4b18SM3%` zWzEt1*$@j7-jcp4#g503GnP$KdDOQd}U$~KCC&> zE0C1P9?8m|C>$b-Ko*#itD_Q#aQWWHL7~|UCcLBw?}jhXK&*_66BrfKF!9WxH%`Fu zs%#YzL`F974Q9wGWFalwRiHL5WJf3E)aeyz+HvCTjRNN-K+{I|4IIDVTJvjd|4#ETCFl2k*Q%!K<%3U+86a_O>PDx|SUsghzA2AX) z#P8xT-w*nxsP7)SQu$cwJBv8%b6;kQ~T<9uY`#r8u0aQb9GB`eZM*p$vAUf@4%B+G?ld)B$T zy%=`nRY<+?Skb?u+etLauduwPUS+#O4UCA#D6umH%M?|g<{^F3I``7}y``!nBA|ws zx6xAJEOA9O^7$*{RR4bo&Nx4aE^+Su#_N`6%p7K@UK-c71*#f9r~ ziz2BgH5sCAbuw)Qpn?b8jo{rM$n|DmLU98?r=3}-51S1eoA#VaDm6QJ^r5Uh9R4zT zpfA{I9-Ot?8ySBMy{*b3!1TW7lsfx#Fgg)dRJcm)Fr^Oc8j0Q)JB0F0;XsMCB4pZhO}4TLTr@*XK4D51GR z#a^e0Vrdgt%Dz9kmkFGa)NbfIc({>^p3?~LLwH`e@J zP=^B_;4_m(BjsnztOFJ$nX&yMmYLBYzLH{B<-E^7Okk2PER`go45HJyussGu`Rm1i z1DE)aIJC%;LSo>9(7YxRBZE_j?c9gTdwf!AylB%Jvm2n)W%oh$46yKmyCnPIP7nh* zk>fB((7rrqqnU>x^RS|P%zi3i3=oWH@O%(tSO(_6-JBxuTyfc&GMW19W>5H9ngf8f z4tsbE*T^l&sLTRz$5?_a+7s%Kwr@ynYY|)9QW8Oh<^|<(O8{Z<%#Wgu*wtIn?OY>U zx`%e5)b+UVEa4zxMGbi^BbW}8o1hG(>Bo0!slNDqUn0e?pSxmU?Px~Vvj8Vg(CKc( ziJEumkuqQo64%$L+6G8)S93`AKsJz~1R#w1WzTp2ZiJnT=^{~HJa*c^_4e(-A^ zQ)I$>uE2svR()ZRq{9Jq@EX>VA z1?Qru9o)cJFo{xC$OhJly82Z^jxRs7@rAiE|Yr z2h6)1{AiHS#HZPRSBo$SO<;nM__u}e{dBap;+aO`DfIDZv9ZZPfub3&$hb`P%q`XK z!@RINbrt4MTFb>`*WAXM716rzQ~wWKP)kAM+7Hlw>;CeDNOa+}#itv5H0%KqbXj4W?C<}G7hBhqdXfU+}5XNgP--7eelwrtd z@s!n+pHug%Dtpj?z;&vgf$cASM$B7SPa(ZYDmu(ZCxiQp)R8r1n|f{X^2KfR9+8eM zjWq0snTG^aCHMozgnoFTJhGi^kWu~3%5CbdKQNhCgz}`o|mx2e* znK}?a6#8>yn^?H#t`dbh=p9&kk8W8Q>Ac=gl}8$GYILIeOn=)MAdO*KVP2mIDe$j3 zJb7wb;i&6aTr$}6>$8Gi!vy)rJ$=Q`dYfG(ZF+wF980>C5r^Q!T6v!Qb2~ryK-9Ks zXZ#s-Go7PfhaK#Ac8~y<4)ICv!m4+etf&lZ|BM>u-@@kffi6YrFiFs<_VA zKvUNn35tw{q3*Y`RQq=qawF8jp)PZeom=Ji<%!ew8vlmuuP1zF*jV&;S_WIMKSKZJ z!jy`8$)qw>Q`lYX@gM(nPwD*1bBPWr6z)+iD0I8&0uB!i!c!&iT!*AFC~R627ffim z(`KUG`b%OX*WVjG<(#8Rd7DIaSe4bEiSG6Y2mC2sb^flx-r1q(hr#D1)RM=(CXlzI zsu212rpfgGc|wLa_;yMbuoSCTt~)ypZS@T4A?KP%jQkW>WRu?*I2ZyZB^j3BHgosX z+@nR|d3Mr={6W)l3SfU#Q;onD<*XQrb@U#h2dS>itrU4hs2)8u21N(Ii{u&9@OB}s zF6oTmjV-EVf~H+c0nADGTZI8bC$x%tr3^NU13=ug4xT#-svN%MQRjLJFecb;;|Htp z>(Y(vQRPk?TsbbldSvF->BnLa&e+Ahw~~+T^!=uzJB6y+`H(%$M$S!v6B3s;&zI#&@)E`zA zL=NkO5Z?_AFXk)W8A1NO*GezVCpoUM3ksZRo`CG5Q6VIz90)6{HwM2w>XoV3onhm7 zH3V;6ooxLvrHO?yaT!e+qA=uNJVQxnj7}iX3$aCpO__LyxpHlQLJcw*=k-xgmL$Lx zR;HD&GujlV6-02&E}!JV1DP?=M3BWHwm3^C8tb|Y*XFcM$k|O{H+xl`O1Bf=d8i8^ zF9mX38r+y%`x`_BndYP;44eCfb`I{(gA~=l^yfwk29KO9<;bTb1b}k_EYLMaUpCTp zVIF`kMbty~c99Wba6Xiq_jg41siJA`z&%x};ZZndHHn9O+{2NW>GC(bzxYpyzYFr!e3lH zJD8U7QP+i1FHrGOQhCPx{j-exfwcrV_8KPn)NhY7fiJwm^0;6MY$wX=chJ2=I~ zB!3)9{^LE&_O&`tiUeJ5WvQkWyU;z(K;ZWf=g1r~#G?TxbUYDkP0FOWrlnN#aunWJ zIz}mx4$J1s0tavnMO|74ff;btm_C{PY zHH0K^uv;#yxCJ*EtZN{UQ8uS*UE_2PAm@U3F|xM3o$f?@I$mW*iqFCS5)~lOZ*#O} z1@e7c%&;ZO_XrgE;2F<-Iaw; zcp#Tq^_oi^MO-$T@wOVBXB>gC!tzSfJA~4#jnwLx*&a3EM`(X!gPlcD7>-klUdYP9 zL16X*_DZZ&W|ylWfRXo7AkBTTCa+{wikBd>Jk61uAO&%DeP#q;mbEJ#F+If)8o|SJ zVv>4Acy<6b&cGTrHP+>A*aQ+A?K?q`9_9s_|g8D$eNh5i;WYI-S8c9Bpzt1|zfv50!^VD%J0 zdBtoZZ)P|i4yF+$2Xl_$?hImXo4S@An0!n|o-xm-kB>R`4ky0A_VNvF=VNpF2^$y> zYM{mw=)NWJ+Y$9Sn2O&+ILlgQhv@!d-s`v|NOT4zarb7I1%4H93*EPfL zJR8>a@tEq=4cZD!xsfTyDS zDxkw%F1?o@!R$p|LNO*@I_A5YHl3WjVLfpj2%D&j&lZ0nWFc3ex`oICV?}A4-a}Rz zX9t$ZIXb(sultEy@mPpmDH#&2qKLp>guNNm4ZYaUk4VaLvla;<>{*0KA^--7Baaeo(w&+ZGVF_R77^Wciv!qqSNtCr%xIQD^?JubN?*`x(z2v~6w6&^5?e~Gb4g6L z7cD34JCrZq8VtW-Ly5E4Fj5nFYsyOu`cs&bA*c-|}u zxj6a6&Y36bwk`>x%vQ7^MvlI9=nh`Gwy0G3z{meP!(YRBP>&X?%n&Vf5;de(@qE?~ zCbw(I`0Itl=@`G=Rw0SUt*~|)AD#c~vyP+t5|f6^-<1wMQ;Lkj+Y!L_p+NB=GvzFu z6=$fd={E@$6A|GJZiqUtjXq9L7Zed`Bf7iMlqGk#C_CcqMrT6@#VYUiXEvAbZ1vC* z-HX$X@|8+SZWiBY{ zfS9PY!07;hKO6IdI(yKLpF!0X3 zxdr{+vxvwws+s?93p?`Pzp)YlSxRb39>8ZjJ^#yucVHHmUBg%yF&U>8?~XJslrsDy zb$BQUJ`<&>S=n$mg^CwkS21_4#*Pnx9hEVEyPB+kTLH||<1ISBGYZfRS41n+oyn$% zQ~dNz7JNm^rjiFpkf;`7a35#+^qP@UILO~%URWBS7H{`}H>)d9%@z&R7~=dQf`ZSf zWN270MV9#;O(b4i*A8Bnr833z4?CW_N@&+yLYpg*0?m7+jH%N%6NBbM-XMJ(pJI~2 z6{e!8qtct52p!iiePVC6Dz5T!(56=$+dI{hqK}S4S9a%Vsl%NGFpU|#Lndj26slY^ zT+-xUXTe{gZIGcPhNh$=5oPHN=w6rTvSKj)UyI;KEeAYsWC_;}RddwLlsa3Sh$^)i zMmfJM9kSS0RkPX>=zz`TS65JR8jMq$7tU9^v+l=qMc4Jb+?%$xn&Ko;g#j5@ve}N( zzAp{bgpf%VyIaX(CJ1+J+%%AKO}TpVGH3l~kfaL@pm#9-%L7YTEqj^hu#c9; z+)LfQM{r?A;p|`9`ufxiR+&Z|ukjbbp}UP%I1Mg`IsWr&*P1gc3jnn$-67IyqSYl) zy-Q8!8-?8|DjD!RT~(4Zet6tZ{-yXF}LtgmN}h9u$}nSy_xG^2uRoPMP1c>1ZAQXUDTf|O`{ z3+QHBX|y$+bLibG^~^S@7UYEjV+bk+{PtUHDD5To9*c!j{bE%HGlb-baS%%=hkLgo zcvg{^te`2yctA{(orI4g&;1Z{A9NC!+fXsBzbbOb`Pg)YJiNEJE2}Qf9`S?_Y2?~4 z$xQp$V9Quc;Z0^i{FiaJ)wGEmsz{B@67-jyVDPSR)8>ohKH?CFNiMFo&va!ea&wKf zUSX3~+eCPHqQ_o2Pwbp37zVMT{XaCNS~Tsuy-6S>R1aj0THE?aY#D&&q9ot0xP!;b zAnu;=KyVj>HJH+W7*v5D;>S)v0z02=c1Es#*v-R!Iq0zDLi;W7m65xSCw~xWxyOHbQ4w86zoj=iFc3gr-?XiSy zGK_6JO!`^`LO`eh4e&IBQ-O`i!TenG;{~f9z?ViX`!e}vWw8e@--s&UNvEO+xZZ5Yu;(xC^qH|9 zE(?cA_mRr25`tVdMCApC$N2%b2Gu$~U54mPEE*BXlI34t*6w!Uak< z@nZj)xOQZ&yvlvOs zOpRF|+9H4<`TtR(id@fcsyQ!K?I=B^m&`%MzxLi;H97PG>J|-L$aStX`%>VsD__R5 zJDlHFvvsu8L9@FL?+1K^t6L)(ZDTo>?K=_axBYO(46r}tN?*XHAtAs$?-7C4Hmat* z^vy+Y+?*5wIQ*(a)QY`-b;&*_%8shn zHivKVwcg6>qYkr=Vh?`3Hpu7@nEq#N>DxNEXDS8R zR}H$Y>E8Jzo#NU6fi9y3=u5ebb&gJn--+3njOUml#Wap}w+Z0kvMZ`tjTxT1Zo#E) z|3W6+Pat1_U8VI8{R#};D@C{`Ol`w=oIWfd@K+TZwtRZh#Ffy9b|b>yYI)@>ym0Gk zl}+^{3Fgnl0-WB?i%XeT&QwKNU>`O%?r3cJ`yb5s*h`0@&L9yu2Kc5Aq-(PQ$^jdJ zP^SO>9=!}dN>NV$-PkVsi+oyxFQP-U(Pi*5;6Fj8WQY4nYioWo1@lW1n(DOG+SA^c zR#(gNz-H#W3@ERGAz7U0;Rwn}ZKG3}P3>4^j_2#y8FUKuVl5M= zJNT#)8|m2^GT@{?{8Ky95Vij2jf_Qvy}gFCRuO-O9bQ;54gtPajU#O8V^3~Yo?>?6 z4c5jg*g^#)uT`>hb`Ny!V-{Z>Tk-!=x0YQ${4)0b z4~dx~*)dGeNxsdc!g2w0=U9%f+c0wwTahp(3ordxEX;mo+*V%V{yZnefao$Jt4H?K zBUVtyC(^5a+2ky(;ehAqT@UGMRblB ztlHtZM3wrr&U(BBpAD>eGoQAvkLq3OrDn{Z&^L`7tsbfds3Y-0zIgaDv`)Ba*Ko{u zg;9QIUJ6tO9V>={^{RA4w06fd9%Pha=wM2%V!C%p!7 zH{)`51)ls@Kqtn)H6?^x@ofa6QI>*E0kiT%%Tu>EL13H5@3PzsjoQuU+BTk)m2iem zqQER`!tcpG66xCNS{)iwXXUNr-w~DBWnsVWOufWk`I5;2wU2sVDqm76{-AB@A-%@# zF5%?2+j{ala|UhyP{84U=O5Lm&o)pxPYiY77yYv3ZQLQeuc`~c z_D9bkFEC+s@Y60nqw_leTaOaAsAUt`i&YX?1HlHhyMH}{`d1giXG}4pQKgAK878M? zGY*h0q&Dw$$xG=ky1;b9l(k)tn_}KCtNxZoa!~Jr$)|XP>qhk5)AFRs=IZIUZP~}t zf>rjF9KIyrO%Pl7NGKmvl)Dr0jQ=eGl(NrH%J}-Qr9__yi6LA~^tQl~KJkY=)A{ie z7rHdo@AK_`R{~3?u{T8w^j;;?Ly3-%e0b(UXX9s2(B-9@g)-&DlU=RuW)DZ2UG%4Z z?f` zMXbq2QStlQPdNk~BSA+K-Nvz;G-8X2bnvfBDASTYRo9A0puKLNWBTXkoG#!?9f+tD z2^%|yKN2hH(}SBRBou5`w&!$jNm&?Z{*WT1(BHaZ&bGAq!iQ8sHdU(Nibe(+RPRYjjw+dRx8xA>YY_3Tnv&TR~#d zEYP7!$90d~>Vkudhf|^F73ZLZ5d9~ru^4*J8Fi%U-fPOBUir7D5vDV?&Mz1-;bm9Va?O>q5yniy})aH9%dC>hQ*h}Z*UOp_irAmIn5{C6&} z0kB`D%1$Kiu+dVWoUU;B(;xgRu3OjuO@o9O)Sx8DJcFL- z`}Ylc>%dIPV~lz-JHkRvV$!6)HQl+i=d5HRm`Fy zJl1IK>-C~A2h9NT-8Y(wc5-v3#aLNWqWOfINqQ8*{V5&jOm3RGJ1<;cno%J zKKwlJVV?1#ILCq)pv4$85pD7Nz)i*1h8`Z}!N?{XB?&a-4ULjkq=v+!e^ycmbMdIR zm=k+-FX-}cVX3A={XD7KFzNzd4xIqr`qZoXzCh-UQ{yJRZ-s~lw`U(?gm*(;KEDL%bW)$$5h9eJO+eAe#h z!QMS+AO44UXHM7Mow)pSE}l?{F*g$5C~ai~*T?NPPyOlfX5mrjGvVw}kVx%b&~afw z#4X4vbO|S>;)Y^rR?&~!JJye$JWuK9@uTp@qS)p5&0`>G6(U>dWU)5J1M865`%Mgp zdm9nF57_dqED>{oxG#|WA@(&rfmem56I65u@ro9H-0J594<^L|;n$-@XSVwc^zwis zINUd*XPVR{II|Ld$G6P?dZhQtg&bumSz0k}9^QVhSqC!x6FJ-55P;cH*tK_&kzu}3(_7#i!Q7bY2r}Nx6`MLXE-jioyw2f1f#v!g=6oC6qIEe>szrc!*NS2 zj}I5ZQLlyvGwu)7%MbDCZeQ=HJjy)ZXdyJm*DX72FdX;2S+9UcYb2F{6mL=Q>NUQP z1B?Z8`8&ECdRkj9MqtrylG{)f@$bkgWu!_8d@&K~KD>?i{pDB2!UgfW{^x*piG^s- ziFoehkA`x{fq3q&>8?pyLAMSP_%j}mY4}t*crB8vcl?WSP$GGZY2Yenomg3<-N=8daaZZXd!xyFl zx|+NnL8?AQ3Es+Rsd07+u#JsGL5S3(KS}Os_+$QAkxuS!8xQmbyttVb7@3De{R<_u zr7v#hAOL-{m{;l>uiv2bV_$HD&3X5+WHXzud&ZO@KfjkuJ8L}=Hl?|Tl~Htr{kRPd z@P<8VvZ4b1Kh22sM>gsyh`ZHI5uF?_$u39$jTVq_wl>Y+7;{WH{7QY;h)J&-GUUQ3 zBWfYRHm`8F45e}fg9+gC`#1hC4poca<~f?S=wqtxT8ij1h?NDptW4Tzy8f>b;aTcD zO!^oucj9gWA-Dm%a{I_@O8=`UMy)jC-mdQHT8wr@;yLD|z-tNB27T?(*DL8I7a@2S zek@tIBzrl(Koj45Vs;cY76`wyH~?+O`DIW?UQxmyP=i!F)K&%!+bqB zMrCfr1SxW`dHP7%k&qhR3Fyp{QL<0Je_-<78G_!IG-wY%b{AU%A z9sm>4VSBClA%2AOSqF8hU=fspG$|dD^xg%DP27;m# z8`=eukQkmINZkU2@HROaAV$4DVwZkny7h7t(3L122|Ag)E?d`?bl72?T6v%@2u%j> zPJ*k7)STzCBnNDxHdOFtHn$+xjmpXoBTN#6*d0&_eVh4}XdvAqT8!IEq8%3_-61Ur z!ElEEC@KHx$X#<-Me7^{nA@t)UepvLVt4;HzIrFHZpK@1tw#RoWF96+4~9=Ak^qB- zS8*Sl*jq%X%^lrLFV1zs@MDw+2yXZRtbAp2eee^cci0wQg$&P`qUkE$VrF4Sr<{EiV%|eciFN4K)_UDZ&X)}2u3AOt50$c0f3pP1h z-P4;V0}mSqW$OL^tpAk(U^0|OP36gXCh^+9n?eoG#4YO<`CR`=Bmc=k{eJ49s?&0O z_ZStQAvduk9992_f>dwT{kKO8C6WN5Q4 zwUFpMW1inBifWilrRl;oe9?rXcsZsRi4YAu)B4HNWn+`F*dqLwvlfm(xb%rTnHQB7 zwhQVji>)VBiv^$XW~4RWr|E?(g&(v1>6g#fZ|{!HT6jJboEnwks^3VuWm zB;mu*bpPUyI!37SZ(d@8t*Npo&{x7@*7>;|qNpK>_)UMjt{5FQEZvcZs|3UwKP2OL zi%>0*7B167T7UkyZ$|pwOdK(e?7|QawmD$krU)jsO6mlNMr6t+)7Z2K)<7Zq4+C4w zWT<3Fnp$z(eR#&q_m}t}S6^OyQuw6%6e`twhYV``Mj9l@Y=xT0@!n59p5e+AHrX7< z`LgG}lB;51!Xw&=xioO6Rr*fxAcdbjwcI?o44zW2@jy5NErph3(sU)+5u)UApB-gc zi0gitlXF7K7#g7r$iNRd3iyKXXi~k(P30oxTp2)6KBH))PQ^oCkbHe37GhR*0*zuM zu06C0HDD6`{TAyWO0B@&y?EGj7-3~Yl!2}va0ilj8=|y)7E^?>qMu73?CKD}N%=+0 z7F}O$RHcjCY$gL=5ptQ_fGU)67r6e+w*!DhRS<#T2`-eEcs%Y$0#Lg&p7IUR%BQfw z)lv0TL|_W1sy=N}%iEvLl9@SOmllf#bs;H8u2A?AhCHILBiL$!OCwH<|31O7*8#($wPAr=9~!Smk=1$Yi({L=)mpGLaJ)(@1KR{?S9N;e^*cWJ7QaT z#|5AZk5gB{PNL8s2Jyz*=yo*REd3Z1=m^P;mQ`_y2Ll?Sr8zItM$1=}D@?(k`!ulQ za%b$6SRnd|u&00Z1V=yNp)|%6!5>^m(UO2UG$1fT?qG5d+craybV8NrdH9Bgm-F9n zXD9T6_?p94NMg%Fs#TP+k1HnD(1q9T8so%I@Y~rvvfE+v^1@e2b@2&{Mp<|G=-#OY#- zw6p>gglW^z->O%2R~OBW1s#^oYDn-36{x}bp~X?>vbThc_M+VoLY}BatYHIZe{Z@^ z80}>2ino^BY(LMtvfhREe8^$gN)n>?qks{gxAnvtrBun8*KOZs5_`;F6$Wu)%Ppz? za@t`SGL4qxm~q#~DInF=N6nDddCyrqV;CTLj<@QBiZpGPXYG@L-5;2)5Wr;{X24_H zSC)gJ@@MO8b}iEMV|h~1_3wTdKnsR3@3*=0&Rls=CjrloZ%)2{{8B$=@(>CY7vv_ zLa6Q?tSGxxC-mu)G~ZV-?4L|hrM)}VwGxMzB!`}26c*R=%PAc20A@^0_F7{rse2iO z+QJ;He(tc^xud9Plz+_4RcWa*M4(4soua|gV0C>z(gXtylJW2w8vk}DR0HkEVN_Xg zwhM?;^6-!4Fg}@mdyABqi?o2%&ksYLTQX9CTfYRnG3Fp#?zLkQCG4H z72m?O(Is(sdpLO3)*1}a+>S;l6ZvyGfJ4pSKJwW~TH>BO9?yYIGBmKqlJr_IpkErO zHT8NH^Ft#f_JN7{PK>nJkp-KGy-tsp4VfEZr1~IhSJa6U-hZYdBVlyJrc(Ix1EbzH zZ^*YWofI0t@em~XE>F!C;Cc_xiwS!I3VZVt<$cY^RWO|U;soa~60!#ED|fJNVgTj$ zwU}>)ogzwRX+`7wL$-MyYq7_BE|XFWnv&joc#;zO2-%Is%u!oqrbO(H^=zEA+@F6S z;A6h7$sC&0#7N~1<6khfdg0ArXBGXh@6i>$D`9H^p5Lh`XqIOnBgg!rqlRS{J^ZI; zUP-W7)gOcOR7g~IYUtUu9^i!PA|DrA`df*8kLeUx|Av-zw2YegE{Mk;dX}7 z{|P`mhHDtyB|>aITA&!lU|Sm}0!*A^G&$&lO|p=u z^sY>rSYdIzBT<{WCcKD)GilMK6TT=<9Aoop6qHwi< zEBj~KI#@PNz6Sg+oubIm<7pWZ!NPAJu?O}Tp0j2GVD@6~Pwmf)`ylw~>wn!x+ZXw% z#|8ck{oF!FpXxL-LuLMuj`pMAhOieV3@a@-|tVNtz1I63nIK_wL{bZ0VwS;xq~ga&$X0KRDA3i`EX># z%knW%(|4H3HOPKRrUpCm?~lB?UeAu;#D)uo-A@c-<_wy zyAJYOrm|8v#{MkLkcOD&uY!Ta-X}!8UmH~Xp5f305psA%|LUvC?*>C<(=7mQO{tP+ zHb2;fk(=3}0dEvvFN@~WRSebMMH0xAh9Ru;xE)6YFScW3sP~_%ZB|g|A4Q{}WUnCR z^tr&A|D_FL?#ws6s(ZFFoNldLqKj8V-{z_I+a20Z4v%)(j+r3H7xDJkvadcf(BG0qy6OF^OD&^&jA z1w^H1_dP^HQcmP@v9_Q0%rJKHUy3{>N~nMLkb*X2o0p?pAX`4DRgs!^#OD>BjrS;Z zc-qYC5eM&G@~>m!#i=#g$}Q96B(EoCh3vI>BPII-1NU|3EVHDwv;X;clKDtygD=AE0pEf~~zmd&lQIaWcGfBIi;%pD{8tLsmsy=F)qSnB1FH zX5MQJCbW72G&dozMX0Kn{V71!iQG)r(6b?ll+Q;HS(KT@QfdNi#L%u1JHn|4ysISd ztRfA#Yv3Jy((DpMb9Jv7m*$jH-)xeDyt9*~fd5d%lg(C|ovCLWvr=0m0<|Z@$z3AR z#&H_tQ?2kL4W@ZWPm|G%0~XizY0HxKRWs93SU* zDn<`jq;DqtA)+`sg*)@2I;g74TBB(?&>^o{P2R`_R1VtX9%X1j_wVELBSTp*K{`zF zI8Gu#RHh2nAC2HuP~#1EGJ1!F1{v)o?;{S5>xbI@nzDeIe4m$O$DPz3BI#mzF&t>` zZFRMrFP@9-3y{ScqqrvceN@H7^yZ0^@C{v+od4E#bvtb?yUT9>?xV{yz@BMCaVSfZw@*!BS3uL)*ICj)n# z0<3-^T#hB6ittg&eW(hXg*kgs{jivV#;8f&7=Qh z*TAD&NZShugI{InHB$t>P930;=B-D-( zfA$HZlFaEjQtmo-fEE{G*P>&G&TgHbp5h)wEuWwy3dx$ladnupTm*ikZrx2%>k(mw zK$tM6`mOZG!kN%YD|w9ii@+ z7I|^8O6NzG2@u-;VkM!z!14ud%U(rTPk|7#uFphyMEbEpt|}iWNyM zCRBHGUxG)ark=<3d{?_#=bn$Xx`2pM0MH~OEoKB=Qx1EnJKD&RBbBTz&6{OdcG5X6 zkAC-pFrcI?NGzUFvods?3w!=rh9y4lW-98ikO#NW(bcdw!5Vd*;h3h#_{j)=b`6S7 zsG&RrwT1)9lfVDnoEgTKc5TN4(uO5M>up)I{H9dwK_+xlfW783vVA{;W*lO`qvS2e zixu7j8fr+v)7w&#Qxs|slhvzNp`CdZ(4U&BzxqIv(r8wo<>}1AhzfwKXAgN$#mUkr z_8!D&q7PgD8VeTks6Fz|Nh4i}+6+z6^A2Nf>jN^{8b$*HbQ{AM;|1*f!>U*rGD>o~ z`Os1A?FJ%LKK_GyeoXm1knrg#>co$pMZ4XmPsBL#&jXXJb! z@+W()ykB>e{yI22-aTIw6Y0e%lOM{3_PDXqN~}+gpQbx*!4hjX+`7T_&rUYz!Fqy69KC2 zaU$y09+GE&t9Hk`&cn2tA-m@m(>R80v8Xy$I#kN3c#sErZ_3NuqZhi=o89WBpQI*s zlb1E?Hn)nb$0j!@BdBInreyTOo+{{Ucp@ZNfA2dCv&K$wFbzONM>*G6TbB+L_@mi$ zvjSIYoSSWqN=`7B(PPoFKVYAqWyjylbI>#FT4<49`7U0BaRd0IRs^%WA=d4x_@?P3 z`88-|SGQ8Q)*xjy-_CH!dyEcBt%Y#llE2&!_AIWGbZ3vc*JuZ~CU}VGUKg)`#dw{jI>Tcdw*Otb-@n=%uV?kO$LahxuBOxCWBP` zz^kA}OMQhD<-bv>0urUM;_6r>R&fZe^({I961oqkQ0=N>v%9m|9)JGFK-HSm+|LHa zGG?eHXm@;l=YeyB5`OK~r2W4|IWM4To@Y?$K;{*tLA=pZUap9756hp8o~bJg?&}P6 z`^?iix_d;4JHSMYGXN~*UHC=ADUV-p0jBIsj|b4KhiKY>6Qw4Mx2577D7>b73?p$j7#(s|oaYIZzhnr1d!AAy#c+ zR5!;(1_f{`f$6so>0c?Zwov-n_(Z#t8L>7zv*}n%dhG*N6szwoXrf~K+^ePTlV5nF z9Et&`)udolen|Z9D5$J}1^S|jF!n_$(s2bAO$_!bHjYu`tjiXYo`ITWS+0Ik$;uDF z!BpB!V`dIF$BuZ<0L4eDH-_P}@!l@;EW(tQnas7IAYrFS1%>mNRg;v8e253b@t}i< ziNZm4`Rnu~V(rjzBKHr$-!#$0<{SxEPw!X1Tm(0&GoJRqr9>4^i0$0Cu2;GWiFe=5E+K*@g!ezZRFKA8DER|I(`~ zsF=F;*~3mEq{j|%;d)vDo&*fsmW;Bn8?CJ9UKH8cLY<|T;uo_fkofesnFqNN5t_j! zw3f>#hXCOij9pZZ)Lryli=drN$OFjogjs5%Br{oFkvJ)`HEmEj8bEoQB+N^b zx0dyOxaH?N=Wzr;O%O)e-3$k3oYrw03Wn7g8%ed}r|Ii&=8_>{feiHIUDwjiOC5#; zNCt6rIsyta!;OfVqSX_RNO=p{DHQZM!YE?)~Zwz;E0bMUm5?v_DUMF3iiX4ZJLzLb~w30iDI;%k;?QVTCie9eR1$`8t8 z9>VL9e!dmS0tSJ3^|ERd#~i!sJCKeF-f2HXp*WOV5Zh{&Ej9Z>)V-%M?AbEgzRJ_1 znwR@f(HX~+*1mtc!~8c5u2!P!QF`7rdvI<^BC=cTA40UHMws?Ykjf7Q7yQ=Aa1!41w* z-PC~bHTTS(RiJK)VZ)#((Xr&kGeiDj zzw$}ZE_0LED+r`SggrarvZGArMSarg(zppA=ncLM!N)nKq;_yw5aIUS&X5wq{ zbovJk@(;nAkK#pRNV@oowwt2rwA-a^DL>smxh@0H2?pF`NGoCpN(#$SaQ}xQ?QwHa zPp&~D<60ZCL(fxYQ@2N;|G(1fVL5serH(F7nK_=C@cfk6Pz>UmD@%5Y#vxpV%3cb^ ztSo6S*awwX6-%cH;QCoKacl!f*j<$A=V{jwz;sve6hR=^!*kR7Vx09Bdf3Km7e278 zWY)x?mCW+%I^qRZaUd}Qs^IG(`o(hvGByYQovyjQtj$RZyXP-k+uuy`hM0wuzOu=D z-1ht$Jdsix1Ls9K)ul=oLaC10Klg};MmG(WzN|ByaN`STBO$eNQ|c`}r$vh5)Y#GquNJDUv2`Lgiqaod5>0O)x;e2rVjhfmKQ~n)-iea^d~+k$mf#uJU#T{ z4KRzPL`Ha#-g+n(>G3-bB_$1w&tO&KN8(MlLqmobVh-jo=F2*_(hI;{gxYzzF2w8R z|NCS3iqB)f2AkpC2FUT9So*)R2Uy1qFFYxwl~!G{h{d-I@lunI-(*8bCVY0I*AUyp z$Bg*OzHqC56bo?p{#g-oo**8LV1yu8C6=HEAzE`8iBRi*y7$tL{mRVbX%J4wOiV1I zZP5S6G@U_HDbrk-;9y)xl(gwj$vvt3W5-uiL{IAl6aOxwy53uw%uhTQYh(K8n-li# zHk0Fms>d89b$`%ciT6z2_k49sqV81B^fHv|$yv$j>*n~6n9wbV-VsS#z^f)=aeo1~ z5<5%q%}Z4nrqv)Ox=R!;1}fG)F$~(t4_aa#GI>buxpHvq)!^h9Seq=0UlqO09_Lgw z26KqMIQwIY3q^Az{eEO+A_FPlFj;fPU(vK-#PsL9o5vP?cADh5ULQrv>zSx=!Ucw? zfLr;|*!*#JU|@XdCoBKLB1aY+5nk*#pUrz45@e!EHVjmlkdlTf=kDys%-5aGIgT`` z)cDoCv_U=0t?6^gF^uy#VPn*q81iZQ9T}cGVG9%#$rdP@x1iLmexT&%OV(Bv@`+dT9O2`FHbbODeO1^P|3! zap2OGFjhL{w1O_z>{&0-MhGU+b=5=mLLL4Xh1rtqfi)z3Fy2{^%pebnXuWvDt7epm z@SKiC+Uu*?f0f{tSC%@2-F~t2ok>EbYPI}qA!ADeq*}4!&s#CDV`xn7AohWX2!^5~ zh>sQ39I}a?A>`&S%PYF$_pq2dl@ABw;p}QwaxiP`gb(O1X(3619*CU@1A6X3<{7rE zN1UFy-I<`-7r2;{FD3~UUD1Y2erJG`+u&kQu^If|1w72d@w{B-@~Q|}Kh_<&f+mkt zd7=Z}yZ!3F1qUK5S=)qS)y(@QCCG3Plh417K=Fai)BZ+*(Db`DCveN&0u=x&UWi2L zG1SJVr%Ml^LckdPy+%lH&CyrMk1t#g{?)*|88EXr1C3GQ8<%s1I-S6k1>mp|IbF`C zhWJbc4CGGpF784^4!AqY)8K_gv#(U@&I7?X%opTSA=H%}WflG3$Umz)&C!gTg8>lm z^a@+7aSE-X(u;g1td$(fp4;% zSeSZ}AJufXKv%iGe-182{|d&mJqEd%sI3C(j<)FdeUKyjt%cW|-@#Ya`XZGjP2vpZ zi5FUxhbx&Q+Woqe5N4?fm^#mi8OZRdZc8DWYz? z84-q&40KY@SuxRA7x7oW=5rUR&etJSK9E^(wQlgzMZQt&L&!fdxtPE||n3$sqXaN}3f;y-k}6o*Z^6;@79 znccmfoSAKB&}?qf2|p4eqX{MUnVE#-3=-9GTEbWKD!EN3lkq#SN7WvX!^`f(W98R4 zQ<}9nAE1}0h+nSYt`m!5k!5LW7dah-zk?2BS(nXZ8gtk>SA6bl-|U{t&LK8eiJ2c& z;366cwJ!hnoZ+hnly7M7w^cF5L0uU&N?>7H78q;8b7HL$q57N;>B|D6T~z-X{zBd* zxBfR&RoE*X=lDCv%K}!K0%p;uug3y(Ydd|%v(mipi$vqg?zgn~02UZE?7fcy$C&b( zYy3pq1&m!Y@~uR3546wsf;hps(fS|yo+K;yu2}RPYk*V1_IVoqkrYSK4oIg#GkRxAZ6&BP^>b7gA*LvSJ zQDwzW;$%+0rO^pm!Jpg!b0$$|(UEBH#DJmGs?dI_B3h7IBhE+Gy5yza?Pemsy^a? zU^+=@;!_ep?mxGYzrNihS!$&jtptEZKk~OvG!Fy_OG?;*T1q(FRY6qc(g^&8K;W)MiFkWb&W zDI}@SU^0xv@MY6^9*H{mL*L*buF+b`F60<+2>6*>f-bM(p8uKQJ9cwbl3p~o40I;A z(UbAnue&?gX0ep=XVBRi%q8gYyW;J=y6`re)Ay0)!^M&-QUm~FbZyE1(+rqs5&I?< z`Ap)g_bfi~7fj+FyoL@$M{?Rt3obf1JF215jPqDCL_XU; z%J#FSYY-^WpEAg&9d3IxZN&Zj@u`YCzfnS5VH^hw8}7+%=5b}${%RRNbo2Oz%UNiES?$g5b33mv(TY& zeaFX)YOpmZ^X_I#XoMOo$mlSWa|n96h3LJXsH{08J?1eyjVneQS3`f>h<*paT0u*= z)a+~{I~4q~?6om$Tnfa}WXg=~x|#OwOmu;8Kxkvv*%2?UT@GJQSy*L?*-Yz`&Mr#k z{n1JLVu6LoK}iZ*AeV^Aj4qn<)r*>a0)gr7agas6jkW(QmRN>7A(w3DungSapsIa% zv9!^==|q{dZF%>$?X4AS!54PffOS0my_t++K-^T0M7v0yAkiZ|-^F=o zV?m067%^qHxSHC!2SKuc@W5WDZOS6LPa%MY>Oxl=bXXqbEoonIm7Az=`7ah;YQdgh zpTyDAjgT14VxRi%*a5G8vA#Yj3M$kf$hd?g6TY^tV<1Cq$)ANifzcXU(3VXk+SOzv_% z4c2=cfzz*yP!-(>tx0808w18`L>e6=%W`SUueGxFUZzj9KtN)&3cRP^jMQi2(>R~o zZqwoeSHR>FujMf5vL6LWGiP#NMb?%5+qh3!@e_j%{6mfVNv|6|wmc-n?Ws;Ib3z=M z4hlr)W6}#lpQ4P6Pr*&CvW(0Re~ZN|@Ani`{Rnq4|8W*&gB0XAiU{{bj`bX6!_YWd zyjob;#Rwu$Tu*NzKvuMqM}NY1^DmIUA%-r}Il8!ycQL=xzVSPlv6YdxRok>NnBERd z2ESsfu9pU1=KOx5duwyW?Z}x_%Nh3*Ea}i=0zq&P+wN$zJe_2}iC7sptCTsLoEI$c z!2Jq&<$^!FbdvI!mkHtFb4w2#&f*>m^NvLmUC@*6A@ePFwq3#(#-~2o-s%I~Og!dX z)e%$g+V&QPU7W>=cZHhM&%olUbr1YAPw+IWB9+5GUrX$(q9Oi6zo%)59wg~2_hN24 zBIqlKJ9;r-`$|h04h0c00G!8-NzEk;PXm+&!I|xMnv)>((5l|G>YBWUNG6J>=y~>ypZf!i^LA3_dwuRC@_`!!A_w$oMDT1MTWOoc zzIlyVA6)E=ru+SdNKAM}!ZPBTJy?$$7X^KZA;V1~jsmsN{~g@vJ2e1@;%%KmRR7t` zOfgVuPe^jcJ-UjN&`Q6{teV_E0olKjSvnF05A+Pjkw#|~yG}!6E}}$})|2TzXSQ=B zBLO%=BC~%NEqCWRdTQq2{;TXXUh=7kj25Oeh zNnaU+mp8?RXjilM0h(OWOIrEvyj&{Plk6ev%L!vXgWv|u)czsBm7%S3B&|-DZU{yH z7kotWMl$^yt4pV9m_BS^ zv!;p?v^~rK>PPO6s3)|$Ru&Wo9jOR%qf&1+KpL#8JZYgPf3u?+T_E!|n2t z)pM-HVM76H|EIaVK~Zph0@RR8t6a{d+zIbC`mquZC;Gx-aB2*ALc=#Dq1 zpXgY~NR+pHIotIuMaRoep*D;#JZJ^X)66D4KO)W_kw;lI7!dIQv*3?-^|MgcktddeZ^x!31Am>}796999~`;hBqw~>`udku72sN`CPz){ z!e#5{d>fKH;wY@!>=b9WfqXulhHZHpmarM+t5J0L3@zUh;+TtFx1Wq2*{+>64)CzU zeI}0t+T`gS81$5g$*=iF3ER=^+5X2PZnmsjStz#r+L`WyvXS@T%Zv}!y?H*s!B~0Ha(uQC@Jz#3uyY`Y*^ET^c>qXS7wA%4y z(tLPF4kYeCOKnsjKu&>E(q$0|GV8R6*ap{YP*X-&-{1600o4F@$Q3OLtL9IQGHz*v z7O99A+mZu`6(4%4osL+-|K7Xp^aR2akYm9M->l1mO0&o;r0s=t7yPUlI*U+bcXZzg zitM|tyyy^qyyvCaX~%7#RD}Z72r;ie){AxaADpmsfGz(=<11zmLEIboT5o(-dzU%j z{JCYF&%~Ok^2j#O8mE2^+*0EO)9cOyiEZozA51-n5EQ8XQX;!Bjwar)mA?yk?<4@u zlIjlkFrR-_X-efAOG)EPIBumIX!U9M&`0aER5uo9&$n%fe~Rj7+AubkQuF_kc##+Wvnh|sYSa^CM`0$W zC&r*a1f)>Q@9Md$L=w#8OT&hWK8^bs)(^mEIR?}KRAB>?1C|Z-dnp7y4pw-^)fdl3 zy(3luuw0MMqtp{2iFA>3tB0Ddz6~GFg}wG8D8=yXzoTOp=8X4sMGsIZDF2eg0vSY3 zmPhHYHFBX~vYqK%ij~3M&ak5Plzf)z$n0m$o0>E7v%$RWL__eN-BX-krNc``>4fxR z=vNY4C3>scNBL`b@uNb0n}C$5>`%P`BBi`gZ>H0EesX`tgeb2EZnjO2x2Rpl4;|G& zPGErYvCdQVroUkw3=3$Wsp~f!)->=zV1Sr zd#Q)1l2=rt#^3!v$uIli4>V)Mq{s!E@^I7WS=isySG#daT^h=NoT#Cg$7fpCX-2+3 zEg4)f>__0=A49MB)Tpy;Mq!zw7WWcFdFxprFGz&|KU}>R5E#qH%E`Y!o^N7HlT#-y z%dfG-F+?j;2pjVD#KKp2D$$t)s-D`q6CwO?i_&~O_ZasfB%GJ4jSQ^#p?!C&D@ER% z*j)I#+o%e2EIbs#S=^*7?DWKFt{_`qo4Y|XfDp{aEINBn-$X_~jaqCZ^KLN{Pp-DS zJ$LYcHr`xMGy_|RP#-M9MO&gEQrE$d8RXiS7d6@$4Jf#YuVx^9?N+NGSWm5cq3}JJ zmibZp5CX0eu~!;@Ru-f+lTZL{k~%rRd8rB$v$J;mc;f^OHv=GF9c~d82^m~7*XuWg z94moh97Liz7LBY9Tc5cxN>q~yrlGcQV-hFZw5+&Q^uzdFhk&9|nlpkkGR=MayS+C# zexYe_)tE5*#r~I_vOW}~i?vZfmDl*q%QQVxiUz^NpWNK;4^6mxCTOCw19>CSHlFoj z#JBp3Qx0X8xymcg4fb~70d<_-^1(J}c{78a6CPxj2a^&Yfi#+`&t?0-TY!2|`ereN z?089biEH`eY{Pb$>8Lwx1IhO;_A~sD{_m8Z9C8UoesTV1zC#lqhC($Zu@GtNws8cG zCm&aU&9&(>U(W`!zb+ZkdSRC^OOaAH#jQ~zS7SjNuuzkD)?mpyZZ{F(;oGj!qn42H z3Du88J%LX~sVX$1cPQ(uNzL9{3QBKD4H}tJ^sTc9x^$Wt0hGg zhQ%p52Ca9w53eUG?b1T=E;uj`G;#yPiRr>(>G04f%Wx|lQ+N*`@Ye)I$@>7gdJ$NiOt;J>N2j;IiONeaPbDC3NP`s%vdGDZ!A$}gGUKq zUrcY~R?uUms27-N$#*>{Zu1+&xLRvc@C0W((5?H%XZFc0A->8lXZ$L|Lvf6v2VSWo z0sqZ+&ZjOL00c#YaV0!oAmvm>yK#$OD#khOQVpR+#=p3KR_en&0=EXq z;nt@*!X;=4w(hy3p$%K{8N_!h!T5|oI)fRtUIwog}1etb05DA;r=T$|? zi$UI|0@eTsn!iv%>ibT<2zpmkZShE}P2jcn&TX#mwVS85cv_?Y?b4*ca#69gxE0~= z{1-dKfvy&UAy~Q-y-WZ^Cb2AlgKUJMEQ$rUb=6SqGOA2?|KqW0s;j%%SiJq@lks)2 zg^gU2|58nf);@Te$AF!?Y;|lAhBOD-A{p$rmrBH%Tag!{yky_&0Q%KY@I@Mf>Zq|G zvA@xPZUCHy0(a&+Q$bhF-!)ug!@G`J<(l7Z`&sW_71aQ9x6MC@2Pf3j#&Vc~W}+;) z?ee7keuD)yMtYjFzfa<^ZRQ}zyl%D{$C?Y7}>7x7ckoW0% ziyhO8RyX8sX+eQ_O;_N6ImaWIt324yKfTT8+gw*QsX4%oHKka`Y^;HSdy7-$iWFlr zU&^8M3Dcp9HKS+0+vXA;Yl6SSrC-{L*n0vG2}DYbe2)r1rJSuTo@bC7bUEBkDLA=z z;&QrC#UP>-_%Jh3;~yOE$UzYzLBhAuw>-MzY>-;Q;NF7@j22E)x64iaCGo%1CZL|8 ztieK549_oTA&bqfB5$9jyyEH#ItLsf+dShVwE0A??HtUEofDAG!Kyo8T8^!m zQYvfLva9$PPgu`cPoI;<`-@oqF=(33A~&m7eQVNO6hf*I>Dp89IP;|$B#jcbZCDZ< zau|-Cx!|r5uS0+vPu$ZAs%-Ee8Ohfe#ms@I(|@-H{)E=Lt2;`>8X~lk%QzzgbIE9? zFGOdt!O&sHa<*@QU>uyUhy&-a7tg{!L{ZygSCXY?wE}m4&UA=6v zfY#0c@Mya(A}t?kxdcXywx#>IWImgs0U39F@R&`sm^r#=5I&hfg8jHX7mUjLL>n=( z99;(2l^qh8eY_(0O^y&c$If<^xI0oNStPpJPzrn#a8qal+6HnEWeRFfTo1qLR-L8$ z8kNx%#w%P{2sKuX4)ef)jf?!TGuU4|^fWg{Z_jmMRt3AhXZS<;bZj2!tb<5UW+|4s z*DQOQO1;j=|8jE$@Bko`I<6?~t*A)#Sdx5H4y#=U?Y{~)64ObL=17ld)N4q#GMfGp z3VnzcD+FoBhpJrzMH!Kb&$#9OzT@&IXKps3_?RXp<#u?FeSlBTl1>&{K56>aQ!@iQ zdLr*F7=G)Sk=?rhtmXOx&zi!dXA{?Y09-%@z(WNuBb!&Z={;!FV4=8FYk~?h$B|#ZTL=WWxB%i)9D#+2W|?o z);ibCjduQlxQm;|B1dyC6@3&z+0_w@WGm`Y>f45 zHg@aBrm=$XAf^%W#~elETrA_=zQ6S6LwkasR+XRMriX%}AjDt7A=vSVMB* zF0qLjI@QT`f2~b8t2PQojnl*vfKAIG-2~UuIRJxo*fUiTtN;#U>$@Z6tnQwb=&$qR z1SunAaVVEC)GGF2iFKp$cEhOChFm=6F|Dsql>XPmNo29>^x@9EXO2n~t)v{XRr~SL z+?!wms}3JoVy99L&hd*1#9;>p(UD~+6&8$2(N@Bj`?267EK4Qli9Ai9p`wqz7%!lInUH=zz-7bptPi+BImml|zBEtO{V$iyA`h;yJ7>*k2@>&5J zL7gPAw75R;j$9_MQzyGw=j19jANJ?tVZ;>L7r=d^*7rV!$p(=hdZf1dLGb&Y3f}tK z1}6e16GCa{>H-l~AkHKU!}B)VH#5F^OJY_Z$lMUaYqFM$L;Xx2l1M{4GC@nbj6!Wj zSOg=|WWswy*W-UjIy;Yo-*6tnoBnB5*8{EMlr!)HhCC;e#R{|eM&C}%AUKvs9VS>{ zl8XW<1vnBYJP-&^oMz3QrcCIZLmTKPW}OE%G~rt|xrtMM$Fb+W+|>b{&yJq~XcQJe zm_=M!cjWbGo-wf1xDT)nc~Nt><~3x^98cybJ2UWRKO)2$m9n#dKcKeOlKkDo=d@}L zj#t6pIq@x7}unoETZV~QJ0lETIkr!wAyjk7Pz@X9)MJ!ozeb_A-|RRx*i z;>Z3(47Qt5C7XxX6F>9mcp5rQ@+7`SE&pXpW!$@SNtXs6Wf*{PF)3*YH=*F7LG zD2CO<3@Bj4&1D30swS6`&`rQEf)gr(Q9z7#a$?y zLS{sDsOHj#kiW;pJmp?SN`d5i_9j4_tHn2u^{MW z4XaA{7HSe7Vu$5G^FqfZV)j;$T;Bx!=x;v9x&3qKLz^O8;?wxEtJHx6sEycG&de*C z5l`_a@;TY;|nfZ3BzX?3H#rsT%(wK)Xl*CC9Kg31Nm&h29m*zfkjSuHJ;Q-S`;~-6zzpBJ8Ru$Pu{XD6{iA2;&zYz zMBo~0qaAlfqjXjEhLlaFZ}qVlNsV-3pz=|zn%3o4;jS{yAnyZZma40D1DDQSubyLk-Eb! zjRW8;;^x6{*~MtB_Go^L2z5kjj&j!v)&sOU!&|VF=cTtoXnxyYH)AWL2g_0(s4V4B z1OH?@#~Tapz`N+Z=OXW>xlB7Zc!)B9kPhiIF|lM>GjR`a)rNZ~C!$l^C zc>X{o4me@RP~gUnvmVcgU-eiSc@@_}L1VV={w}?k$ynCbxO0tK^WGtf`YCEHsm$nOLlR=Vs(_6;*01aYIV@B3?)Dz4kK&JW{aK@ z*iE&wC?1o?NTMN3jsOjws6HgEb_?k+HG|%^!GR-EEaM582>ux$cFc>q(V-YY71}(O zUNWyme$IjYa^V=lAIDhLBHXs46sUo$iaF@AoO(F_jbp^?)3dFM=ythv;-+yX3DqM@ zF1yEY2dTxPXKP!9d+B<}!bBBRtP5JtZH`!#MygyqijSd`zWJcIbLr%C2bmUu(E#qL z4Sy}CrI@DqPG>Ff9mfK8ctfBCV&$_#5Z<(RW=}x9!*s5pxw#;y6I_S@^B@L76mn4QlZ|G`WkT|k~a3L>WYC4^$w3I%E(V?toB zx*tpuHd7@2|FfOFAt4{qx@G!tjh5E)`SKR% zb%;m%`XH;5aN3TzEeoNst}sdH<+aTApO(2g^Wr{AuU_SAl&wg>R#5096@Qe>o=^zO0?nrQ zTy(k#-==;O!z<78TcPfu5P)Q?$W1=sX{+t#uchV>m;`?RefLp#orYafyH_WK`!@}R zB<%O)8&hXEbTNG_E8Ba$Xt%GF=Wf>(d%VVep#Os%>n;s2Vcb^A`?hBa9v4J@#ss+(ksrk45 z=x&gIs5IC63nF^+PW7rh(J8!Y;!p3h`TkV5XNx%^^Y>6jWm1k(SjZH8cAoED0S#hB zKZxzZwOOuZyDVCbpJx{4<2t&ELTS|_526Fg09lXYHT5Yko@&>xBOTwPZF*Yl{NF%i=5E6z_WGZK zbZC2zna@TCKwP@Lk?u$&(tDvWMHvWlQ@%d-jv~MZ!uC5kn#E*dzFTk9IJFQ7Tk7w^ zHZ{u`;nh89q!JXiB?^u%rC_bd4Q`hP1NgBb`5~lH%HVhVbps-M!w{E_Az38`FAan6 zH7N1!ki{O@Lo=?4Sriu152xwIcz|vQbXNE8Ho7gDaUHGGl(m61EL5;~N_m%Z*1<&K z!<1#f>*7g@{MlVf{7ht_BRY{Kug{c=x1C-Jumkui zT)zJQnkF1~wX=w79yc9A#yG>Z&=9ujTvO8~-Is8uNS3@6(}2%uc}}1C>lnM}o1>q` zEbFCIt*w_zo1f~t&oqPX>{vyqoP|x&4Z(;9GR;ri%E==8m|k$$JRm1{?B!VIJzSh?`hD!(S@$ zx^T#4#a~c2^qU3dV}qbt6Pf$*5he9^g^>K38@i4GfMFH5z5EKY48d+|>(+RVUb& zpqyilDcB;33s^|5YjZzD2+5u%?uqAU-!O$o1m(1%HL8P50+5EKfv!7)@aNltV1jq> z1T(36WteVMq1s99yX80W3P@nQd&rve)7&+d$IHIDKvD+{xyN~7rTkl9S&mQr)!$V<3_mnQY}6!!0S$LLkW4SM|hzC6Zjm z#9o9bz8Z;BCJcR2r};i^{tJRB4g3Ce2A5c zlqL;@uy-ue{sWxfrW-U_SD&sg%(&PN-M5%jJSbvn*R5bu4WVSC8q^{0%`JocuS}f& z{-GA%7{u3Q^7Dl?0A7N1ZohnTE)Eyw6>~)~skQ8wV$iDj<+Sr*0r5FvlG2Bs>s&jM zF7P=zGY`Dv^y~fNN%?1D&4FefeRF2_mAzXZ6FmrsHzj(0HczcH6XuXp{oFP1oD525 zSk161ut{uyv7jAg3yYk_=N&R;H)DGd>Bt#V&N{pc;X0(>Cr~xG3H|h|JGQ3eON)%8 zNld%-3n=itO-M_ixAieqJ-pN$1cJdl2pZAO@RtUiX^NJ{f5=J7Dyd75x82%Z&-4j0 zh>NgjiSdc@wM6rsig8>z$=?41wa8)rfqbI}nK*ElHg|lV;Ln@D*G(g_O0W4R-Rl&| z>~U|OQ0pZ5Ruh}4DUq9Pow3QJ;{RrNikiL&=!4p; z*N$KYGxzZD_v6kDwKf#wO|Z*ch&e}Q{1dt8WYOqdbb2DlnGB<=ZV1qu6t|dq<{-}8 zV?7uq1@KoughnO6JaA{e6RIV&*9SJwEo?d!R@~Ye{(2?pmarya5YeiM(#KyO* zBH#a1c}qOH4U>;mG{^d-)6{=TIn|N`noq#>uC>KBq-|xxS*7Qltfn-kEENzS{u#qe z1-s8ASpx|CCi@!;N@+d{X^I4?yG~cex*MEyvkCrH@D^dZY^x0`SY;oe-$ZWA(f0Ee zu=cu1qh>gmzVxUm{V{QuivlfjfPH0g6vfyHKRJMGc<_Q`sKbJU^BETs_$aj*6kc#y zc9mo>e$iy*8SK-KuOQxB@!rLx=uXXv_wC9M`f@N=5zs?>XN8eLNxbqoHYWtm3~p6b z%$hvC$!s<*uJ57|-|r2cnfRDi8S++q?`&kNTTQg|-^dZgaySz>^jtX#@t^O@5ZxM~q1Mqeaeb!~QUw_vX5ez*sL*_J7X5yyb1w{an%}7Sm zK6a0?rx{1y;lkENyrJ~KEIBKHC`xTt`0tBa`shP|ns4(Hk^|sh5q+#@SfAXpd76u% zGZmeaeW$J^D`U0-@>%C2$Q50zhs2V0w_?igo%UrW-(p7tnrmse067&d#@Lds99AlURkRBz`}D`9Q)5ifcORbU0#? zwtej85L%mucu1U#K08lXM-Ka)zZnq`PCfc=oT6P@E`56UT ziF36}`bq+OUYgxvBA%(+I)>e%V0vs`QM(Zk^$>Ug_=M#d;6fo23r}=a%sMRo_jBN# zf;|cV`4qkJLRh`5C5w0&TjX7$5xkC~JhajrXqy){y@f2;;RAjofVHmtAkFU*eo9S8 z7G9Sq$pSk1SJ1mOrwo08<1VQDov#Dno$OawA5E|Q))Aixadh4ZsInJ_Vvw*nXos*A;dF#*#P&5D(3dPNU+B&gSx2_4zbs8O7pux=mzcvMdgY%S zd?o8xQ6DPV6Quza|MxT#bX2Y?i<-I|UAu9D8iC=i$P$^J{o!Y+{{GF;q5D7~@_?WE7=nOyQPaIoz7>bH0VrLRl(joiik54fwTJxY^h$9I!7t|YDT`P{H)3oHO zkl%v0Z;Uv81 zx{-4Xg>KDwQG8bGc|FC$r1Pg@f)#4NH{yiNY)VJuRx_57VYD8yGr8Ho{!% zIYiCFI{^wRvw(!kAMqA}Ea-CIN4hjNIciF|Ohul8RTTtEt+j=eZi{u5OtWsoh~^k`LEaYb z61Po53*!PLzMcXQ9#K^|0~zo{r2AGM?mwOd)Ys zksuGNJ9;1$aNH!S)p1D!5SrHCI-% zN^Z%x@${FTs7F($?wSqo1|(o5zjS6~U9k2AZbLlcV-?}?bPd!6vsyiS4(hq%xoOFq zoV|0I^nOO@4FhtiZThfyG`U^jkD%XT}7Zuc74zldEVg|IePON(k^8*p0hiOV@HcMh0nDWi|X% zf#onqOhCGe&X?B6Dt5%^2zKMtatg+W1?Xh9JXUU3{kBs1dP1!p8^QqpKLEf*d4J5n zmR5GmBYZzR)YL1EytNhA4+)XY`@R(Y1p%?{YXoetri%j(!+$zh*|*$;3(?-)pAs;N zCcQxHMxy7P)y0MTAYhg3_%h0X(a4=Ef|2COCB}Iq--?U}-(Dicp9belf za)&Wv+dPNnD%j`Dyo%CBu!cqi758}_emJ|F_t@Bf({g}de}KK~VWP+UjiDf|b3io& zoZ>j(3TV@$5J-TOQ#rxo>mB@d#2A279~kN5Jjig#T!G?Lf?;AYQm9P9Oe!EAV(=dM z&-NE(Wk$6;rjoXFvB_#ZSta(_C7aB`?uYa+QF3^mjp(c7b)U$e_Yi>K*7wOrY%h5M?!ex8un2OBcA+^@a)j#n`d zMX=^CTLSht+X)@Gh|#fZX_aZaFCxS^ti4mgGh{2EMC3!P0N2#|$K%Yty!aJeg*gc$dlzdKnBr zRUtrhhZgSHE4eLQIUS?(tO7qt*ufn>WZODD>{De8DTQ#$z#sdjuN?WqpjX+@LpJGA z!O-#&y?|i95^vv5DF*T{XyQ+i&w{+y5TJY+U zBw-;gn1Mvhc*+1^mM84P;n?&pD`7BeFCy(DIL1*zVnbf&l7Hv*tN|p6YQkJ_vT54( zz$u#qonD5OgRETH_-mYmItJE_hIA}~(zo2Sk83yN2Ky03P;5p1R2NgfqJdoqKHS%w z`{Qg$G8|6F<}vd4UY&37{)zOqJ1n%f^6PpgEX7;$me;+n$(IFzEW6IZoVWvRc2=&$fOErc-miRh<}IT9QrVa z6plqFqc1s_z57K}py1dwKF3{b!uWgsR!DcIWJn45qL{Vq&KNCI4l<87oEvd3b6Mx`8$H4;^FQ^zb>$R-K3X zzqjoqVn1aO5aKB_)H$EHN-XTb%8>=}HZ^v2!l@SfDH`0)yhRor)u2ei;{!jf320^K zQ+wulS1{OrWD0&!C;3-a+*-1Hs|W#zn5O)J^A#DKT|YVF`f-eYjb zT}8AE9oy=UGsKutU4e20plYIjaSCWoW~)atzeqQe$o4M$yJQY0%T7BnXR}!@ix;j3 zMpL^~cNKk`EnNG?bVqh==G-djS|v1v0k$QwaVsbMo~oOqRg;YsY|kGwt~sa|L!d`rQ=5ys@^jApJtDg9gj}^QoqHX7lW=_}zsY5)!;A6CsteO0G=s1D*;|4V> zK6au9JC8UgjG>#y@&K7DJio}h>jR%73oX9zvJTvqOkGz9cbv@k7BxI+J_zam^(|RyQJ4Q^^V!>4qd>xvaH>XFhW!{{OQ^n8}Gbl0NIfMDguY-o&f?R&PS7iRp z(Ax+@L(0`UT~J*Ub0MHpbUdDmNg2YfJ{}>dsL4ggkr?tx*;Q_PsCm_oHwF^1;0& zg#|~&H0<)P0lhi~-H<7KR-27(7u>;h@)z(F!{SpPN}Wkd4Kx4zDr5S-!ZvA@fS|~< zxp2Sg6?|SGYz)q8`3wJ`**?Vsf_SflIuztab#tCAnwFN(JZW5{LaT*ivf->8rb#%; zr|;hxqjN3(ll5%|bDN0VUC%YM)qNdmthV3CjJ48c9b(7pBH_UAily!|m3xVuF%Z|^ zg9tMFCEdf5eoUTKi2ElD0coxaw(fmMlkw-f+CgE3quHp<5-mW!q26jOSJ#i&FBZ^ttwYJiI6u zQq1PY`U9&PQoi(vWCkYeLi|4yP}Y)s4iiA!ML8w7LEC60c!%pok_~Y&2|IBJ1vfd& z3X)jL%rW?xTE2G{YqQDhkDFD^M6)1wR^w6wMSav)Wij z*O^cgQ-aB*+I#nUUU=Vdg25s}lAg7jtq&vsl}W51!sV|-=E21E+oIZ^>4&dSGP+L1 zl>kuUule-h5NJgKs_U%kre)P5=G+tPVl(lH@h-=fa6lS0{3vrvMhq~otejhh9t1O$GasVmD9aIk5lK}> z$kNzXi2KFqd7AC!-Bx7!L<)Tx?A`l+fST3O!+c_|Y|(G+ylXTUatN(T5F3OaA246( zgI+p3D^P6ut8|+gGO67SZm*BU^v3CmN~b|B=GI(d{M}}PnL#I%sDTTpjYl8$F0eL> zC6N`ov=XY)ab+AZvv@$bn&sh2dR@Z4YqS<4G#~Y_j{}k9?(yO%+?Z8DciFPpJ~kgT zp;7K6c)sA4`AP3e&j32jn^!o>zFyEt9yscCYSax`q=w;T575SDfX}ckqRMuYF2>g$ zx1a{|F*x;89ijDU{lQkq4wh3lghSuLuO_o(-n9|d^v9;QG9ljeR?y!JQyhqDv7H%* zdJ6_{j*wy^Rn^g8`d_COhl|^pW9eUXQ{3|5)z=5~QB{b!??w^l{Q`7;Svbv_eZHWZ ziglk81qVUbGEU_<90x4Z-_~G7VU=@v|7gK$H`IAg$XG&V_lVW3Z0UzpMj+4lpNt>4 zhlPFnu_iyrKjyvYOSW<|q}AEB!>T`l8GME8x z!sy(MdEmHrDKOdx5Ly9{eO~^-RTG|rf3_*`9OuP05c^CHtANQlNx%{16 zTMtj@a#=P6l!xKPuNlmSWamR#J4UVzsq%4=@{VBUr-(V+x`HD@>kSbehf;jTXgFk_ zJax8jT+VfH5_#E*rKN|iaX!w-qBees<^qj3+k7G;G$%E*n)8RhpV3Ps2;ftGrlqc$ zVMn?!PRL`9);@ga%4dX-(Qlc}E_VHZa*B-gnbDCguJHC%!WawY_p8{Kcnn9azS#nu zbjIke|7c6+ZK{cJQxr%8y0^Mjon-@sWr+!Yp;K=7w-0H%%(ks#D;}F*PS;uQNa{na z7Q9Bjhe5THB0mOM;}13s`e|-OZY4g%qUo;fNw<+l8(ow3<84S&)~#~>%q)(d!bg!M zAgqYUr8$sum%9Rsx>;uN+Orw5`6f-NPV}$Xd5}}+I!DXYNDg_S_Q)5N$3YZQ-vvWP zG;z~*rdkl=pn~UqW0WaG>4--j()}9 zoQ^^be$$@+`1u6h=(wz~*TZC%g{0Gf*%PuW)d zso1sD%M)gFlt-{JCLBmDCKyGcCA;V`{vOd3j}U1TzZ`TKOrbu%fDnOE*14d{3RfNA zA##UQdDm~Qz2#Y1U+W7DsLv*fv-iLTzFdB0BwZcjss9v4NJ7FWikwxEW3&yk)hI6c zAoKYQ*FzfCW3ea*sqKgkJV2K0qNP)-*&NrHJ$ zy&U^-8X2Z-yj@(K{p?75Tes-=dW?dT-Q@cWim*N_TB_`Zyj=@vyW&pYBI}MzB;|jZ zIG)(4Ln&E8JnlI29n|oSzvWO-LaOK5G7{=JclsY#2*9%ks9ml6`iOaG`l<--8Tf-# zkL~oFsCm0{N;)*}e&*x}$D5Iwht%q~86aL+-K)#dGHdc?Ix+*gST6o@HhREs#oAO% z4qS4@xdLk5St~A(NS{i1jyfuS5t{HJzi zTM^Ea~y!jD^*$8ZTE5F*K(A`uz2qOSH#PCuSn?(;X*mcXKK9VWLxvswIfZh(}Vx+;zzN-=@V#uyE(ucPM zy6-oQ-Ev9&eVCjAaVlufEFfn5TDWhJf zhBg`r00`3mD8PAVT{o5#lcbwy|8O%wH)_g57w9s^Mn9{XR9EA6LH~H4$-TIwCv9Y- zeobIh_D3)of+q(nOj3QiJbyA>`tvW%zTE1wyA*kkA*LpF5x{RCG@}CL;aRfDH@0H7 zd!8q2HQzo)z&@HN5pb}0tTBaZAFqlWs+{G^Px)5jCK7i;6jv9eCt55x(qi_?W)bfn zRs>0F>n`BJHw#2um)Vi(xj9aJJEeU{BQyr>l+P$X)UJ6>Gbz7G-D=#2G3K8d-9SwD zxa(Dn9*C}8uq18w3>BtxUF2+*;X1r8pw;jFHWkHS-+qTk*+yjasiOC`DdYa6i(i-%l)Ndb+L$Dg5 zM{;#-h3C-WX58R2)(sj<3JQyTt?brBsR%8w<%)A6h^GVFM+?aR*z#|5isrLnFI~To zlz84g2fPAiH?$*>zU?1WH$e8raWw}Qyk>y zcQ}TugswuHfQg>~I8P4|zegiifResvHOQgFdzZ867=PV;X>`Q{2$Tx`9wE=+7 zgSDZ+on=t%Xcf^lexVA%t&W1csR_@n!<3gNU>Pv<<2=KxqWm4--Nh84b+l{&^6Y;S zHNf@ywfb%gq0jT~+m`eN`ly^3AvyD3qD#m-?r-y>Z=aZ1<&p;iS0Zja%PfcKhYa-| zd6a9G=i%goE}qtEz++o6fo#B25S?r$(93mT`IrXc3F@%qtk;7z`@5-HMQ6v2`@j7S zeT0N|VK>*|&d1+KWh&ceO>l0xuNITR)A}f`@JxeUN`&Ddj3czgaM!D)87@aNik)8_p}8KjcAv7147 z)HoA9R$Gu|xoOsZ{yQ_7#RHd&dIox9-+*3*pFQxe^U8q)S;|oU&7P=v!kjNn;${R!Tc64!H}*!&#xMu7MB1(WUNGHfM?g zSAG9Bo%;>fw|VPxd&;+KymNUYWhlBZ5n^G^M%))oqhA(7;<0 zB*MkUK5bDnA&ANjpv4QD#cYvP3E1SI;}Hwn)B5h}$BYiwx!1muik zy<_Qwd>ZFxg!l7vsc@ycz7fIOE=;E6)9hm#|`S4Etk6@w;oE&G*zJFD z|1`S!rA+kbqJ^L@$!LD4m*j?fB;=dP;NHs!Fr(v2&$}nnHWc8Fd<%&#$Gf6ny}>J^LWZXxLKA1Jpk=`#{cg!+|Hnc>M>q$DJu3*~O_-bbq%1oM*M#XT8ze#CaSSD9O znJd6z&ApfW>|SlV^(o<#Uz~n><}RQ}-hZcqqewrDJLpI5uf2I#*x!s0sa(Of zQEC};f$HSk-eN@7f|18HKz)!|zCY!Txe=CX8;L^twq=?iq>c0L>Q?qIIAo7{Hx!YJ z!g^LA7V*dW(#Ba+80QegtJUhYOb+AVji&Zo=&nq*W+sgL6e6aL&P=P1FD%{-)oj(Ow_ETwtlF7|-C@EYNS366R^c3LVzA4L(gxV~j z$I>bTJHzM_xJoQB7n-stXWLAES>%KhTexmNNNO{iRc0qx?qfGhIc3oBe)eQ3W2_`* z4pmA9@%C;RNc4<2M`b@1Q#j4!t}|4%s4JLzgd}H(57}a~fyj@RIInWlqqanQGTI4< z>DT%io`-$w`CNAUMPp4Pf1XgXc%7TF3*m$x`1fgZ4IsF?cA+A6$ra!D7pX=}!?|c@ zX5fkCwA$rp^3}{eEsl8mtvKmK;OVFXnrKS4O1rbH(GN-Y;Q40hs@h4kP%Ua>es!{w z5Ny!VhGk@lXIMXjKv@aN{h!1XN0meb>bmFJKn@DC{=f=1cJ9HP`&Sov1&NRQ6EJp()KK+wQQn2D;329tjtH0S9xQ&KH0npnH`k#B+j(=b+12H=Zn@F9Q zp3ETDYZ6>mn(4zIZ!m2f)?tE^ndCir7n(9@oE7H{ifk-G^HQ~IrIcy_Q1UP-gS6{I zGj$~}E03I3-&1;X3pKMHFW}y4GU;k&H>ok^W9cssIk+mASp_g{me@B3q(%QseLbxx zqP9U0xD#34lZzOhJVCR&*Z5~x44#oNeg&gbd$n1(|5dXFm;>K8GEY4$cOe-#6x4Dw zb(@$z@1Nrks%ky&DNqu#w@%#&`OSA8ZPRMEUrs!=#N4FiCFlf*%={8ONhdS(uv0C? za4H=umGNFly;dm^#$CRbm>Cw_*Jg!QKnkqOa{CDYmUzz^z4{m#UioJH2H1|U)w^-- zcsa6bpjnp2e2c=xe%e7*w$*j5^K}%9z(#k2IO&BNtez~LULsMsn}f#84;_gGem83n z^N)|&o5}D7V`4U4&Y=lT1nT0d-7sTq~7=0 zZDw02=@7W9&y3p5%ChgM%D^@0_#&iSw7DE zIvku@dRD3|x`G)m7I`U%7`424DV(r@Ic1P{Z*Rd zFi1IxnQyNvj9TbLe6@qE)qt8|D_zuGC6-cFszTp;1vLARyKBhUVi9>or^Knc*_u>? zM^y_Fd34Umx$GS%ue0NPy2i;%WAkYcXV$W$17cD^z)REDpnc}w78T*E5D=)89RMW9 z^*W$#Iy%7w(D@_{Fr0sDjVCVR%dsA|y0v}8G$kYMvsG(|X|;AH#?x_e*7RA;d3%QN zV8%2oGvG~gcQP8$RW8{Rp|a+*RPEL-uYtP4tJGes9kEOIb+Fh*}al z2+;x!DCPrclzD)~XF&Y!GBHat8zTvcru5B{K<_98Ab+oPC5{+vzB9ho{G)S(|DMoD z#}U@SpHsN{OQvuGU8>vvhL~P^h{odwp`cHK2eDS5k>A07PR>$-iyu$l6UMF}aV_iy zWG)*JDHDP3FWH&yGkasJBX?9#>A<-y?B4vamZ6^pPO5$aw;LJwf#cC#9>90Fy85+l z3jdxzf?5&>i6Q`X+V|~81Ln0nx)Y9?PB{^eYr*T_%Df}m{R~^~)%Lmx0+_uK8qLrD zG7J;{m_@V^s}}>VX|hGpGOysBr?Jg|sD!A`)(%aW)3t!7Uv7Ju%Ai}bxY9L-(shkHyoulC=pNcyzvw=9N~w$- z@L`Dr;Hi_u9Ka33yIe$z=ZSVe))S1^#v1}vH;Rm1eQML1D;oe#LX2~~Gp<3-wau`5 z4@{V2OSLtE$W*@`Zntr|ti#dA5$Oxl4IZC~eY6HbPK0$1s}XTYTQzM9HeqnAZzj0R z)nKo&04zz~PIWgpJgiklhay5fAQmG#{l=BKjt+Wvax)m&#Zd6h?|k6aGa+bu3PV&9 zY7Q&!biTdWwvI!sp*$VcFjs!!o+F>Pl}B=}i?GocB&84DsWt`~2-YNYB`Xc^bl}T1 zf!7ifw5Zay8C?~D)R82>DVT&T7*=Q{?$y}11!)xPS7YsKu{W2ey3~=2$5)Y~IOA(W z{m`8_@{m1^q#f)6Q&?^7h6E3w6MhB9H0RlXz_oTJ`AYhs=X0WN%2oZ`y4)bJ{*SOq z?_DaG!tQYr6x>Qm8yyfEcJQ8FCbD9+YUBB-rGuvTxzUV8c(tU#09ggPDIYTmqwOd2 zA3%u!3OXd3;I*S}Hr*YLnWSXA%)5rbyx)X{8+$Qw$ev=8jo5Icgi`_FHV^1a^xsA3aW?#c_cVKm^Ch}8Vb4jY z-44JRVWw}07Pw^b{j}hknOv8dQ=F7LT9+6swAh`Rs#zaP(1JhwZ5M$y33$~1gA*3N zfIlh=_``eaFL5}zGMkK;a!Qda$9H3W2q$buItLLWp=8&y`@47D z&+iuhQAVv;PDnol$WmLdy-|3&dM6#bG;t~DwF7~BZ|_u&P)k3Wid}bUWmn6 z*NW|8leD;aa+Yv_rUobsa2ynY$LDx`AcziGOPG&*bH`y8gL&)><~+Q(V6ySBF`QXy zVN^?Fi>&J^a1WMbuPhC(m{e^6UnDnijQmyx&_VKIFIT3SFT@ zA?N%kfwU7Xgn3iXy&a|RTzrD`D)-uujmWE=4GQI&{Or(J92XtU-B@Cp5gJovle1$D zd)6f#Pp3G>n>u5XE-PTcP{-?q573t~j7#Dzb`|(M!on_&;2lHLo;Z?y?vxfaN*=Dl zww2r?zPhXCVb$A^pekE#NMoQOzx0}0g)+y`(BM)R+p)9uvD1*Ih2J=rf)mC5^NDMy z^0cz^0D=*O86r|de*sD-?7JLRgH>(#BfSApj4$j&22-W82CT(WdwNAfq7H(k{}m)L`ni)70EP|!?-@vbzK&ZFT+i1M zynqOuCtZb z^ON73>TaY-(^T(K#$}?KJ#mOUCzKx{RMCKUO#&fAT7`|<>8G?3w`SlD4BrWDjAzqD z3{t0|Dz&kVaKdl=Cf)26)W^zVt)Rpja>hSF*MEG;%gmEGT|Jdf(jZW5`>EPQP|GYt zl~Dm3)Gt156JY zfM&`&jwXPLgQ9o(#9JLYt{2~LRMvx!@IO4heQx)@v>@iDqNTq`UC^{2SJuoUE4gx; z4^ENilAJM~rB(KQ@n+UHi`OT;z(Q`{F9GU}b;c=}U%rnJp^rkAG#zvw^lU@&V=qbj zLBPzx!fk!emt|u`tt!?z*le^HZAbmuB03m^^nE|C>v+@5UzoHLV01Qaz9#yGV0D9s zsOoYNa2@2!XK5f<@TX8lrl4?RJQVGl6ZN*++j*#VF}p{8i3uyC@~~v`F83fTPTHbzbD@A?X2Z%d5U9W-B`b3Wn@wO=4rgPql?*24C6YPxqJ z*aw7s%A7Jow^SlZB53U>UnRO{tG~-{|96}U7-Oty`p051&4N=Gx*tWBnS>XuCv{=P zM16Ar8GeUPuUK-fAVO|*RDeU!J!)&*@oRIlmhNB zbu)3+kA)qx-r;3nLLps=Fr1@g0B?+QlkVgOW99mjUaNo;kxBk-GyXy7`Yx1z!ZZbWO|@}$5ZrC`8; zq!eMkI>_r$8j7JE%75XgX-(3+hIcBA8ae!B z5UI;Yru=P;$EDs9cLrB{o~MLLXvanmNIE?0IfOMpG2Sqw+g|R5W5`k4?Cn>Gu#s)_gw`8H#I3 zX~*sx17ycMfxfJHp)a-kuFTc*mxMsSNWhIo10EA3L zWF_upy0{6%0hMKX-Kwa9G4iC@X%K9Tje5Bn6N1Da!Tg^PXlP$ZF45A zDK-skkqGyhqJmkLDDfR*JcG&#R6=&%M4`GK7tT4ax2oTy_Dl>Q?I-&@+ERMq739*Vy;JH1IaL{!a`h+R{zvXFPcofkDg-eJ_u z=8Xk;92w}m?+)rw`;p5@62WQ-*U$FP=CvI&#e;reXOQNzGdtA&o=W**Bddqn>eF7p zlMPGl8Up@t=rlVZsK~GUBQ6z*ht@mQ1w?liqB?#@VV31k;J0eJf3*U^^v=}}auZC{ z71_2$7z z2s%}qZZ>V7vTPFeeGz-%6yRig!?z7t=yIozsvuSs?iMA3khPTxWMUk2}AJPwoHDAwh5NXXxK&PZ~2OcZIf zpqrryVM#r2|5Rn%N414E*p$QS-ly(cz7Dk3m5UfVxjM;OW1#Ew7Hx@VOq`SNx4P-? zof_nH41_%OicO^Z5pTu^H)UAC&gA*>Sg>OnEmOu$J?zf!-bQ-h|KD$A&gC+-(Z~Ir z9u0=`9&R!PeZzkw-VM<>#}48~EE#uLYdSfwmIJZsRmG$DS`XHRm9Wwvu0kT!2cscl zP|CzGw{Xrvzv22GTz+T&^qjm@@o?v}F&PKz z*~b}~d;b^!j>tK%et*9w&9{H67>irNTyR`X$0o3j&I6XA^-l6T?M5iGw%;vApA0YD zh?6<|ndmX4(gbkkSjNc4D4}iAKHLi4Og;kAJ{&D&-_ekfA4V#je_qP;McTJ=M!18n zQnK#3mhmccHUFN;4{mr(?t0t+EU4MFgFQ7+Dz zr!LqQWfM0$ID)@FjL1qcYViK%>d&WIDXT3_XXw01mGqgY3XA$#82B|3E_-D&w@ioR}#3pjk?2`e!qlKmN#t9Y*htPDeZDH4OeZE~0H}OX( zPZvX)8z;5t{z#c*Vv0dp9wNOK8E-@?QOT`SZVa8zTygzvG(Ma`tHiHG%m!kP%RCbf*xr zLt%(V7-vKuE*5nUl~Y$&@|)B4wE#6sY6h0`Y&RLYn5-a$H||3z8T^3*vc{Q8k+SI^D1i5 zP!$oP1neB%rRyReYLB<2!bO`jK4p@N#`waK!6pY8q$hLQ{sp~_ZN9Fz@@wN&`Gct}8OPG0X-^kb9{Xb zfX2N*;?so|pQL~-TDv=BFVn+mDa?<-JfIqo2Z8o3m^0BU>o1x7M|o1 zPEY3&aShw$O&XSyQrfGC053>2rXfRRepK3o8OR zC#<(2c))q zI+Az2v4Uvx{t`%}w+c*(;Y%ZY6*!!~BK+Rv+fO|SP5@oJBPeScLx=$(_`lZvX+$$# za~^LUIL&r-Ebx#msW{w)*KavNEr@`w6;4GxJm>_64^KqhY2A;O1L(S$mzUsW;ZeL z>6X=yfXuIP?&7vl5S#RY6M8mg0;AJvYlxQka3T$}Q4Eee1mvYn*Rt4rjSrcV#vZc4 zm*y+lD=_77O&X?k#cF(qW4Pb=+Bvr zY`y$8B4BWZT<9`&>GNGOf9BMW4A`uPuVTF-1U1v;Ns0zAuR zH9+l*hy@Tc%`b(P7?&)=^+B_p&*=Vm7mRUAn))O`dZ+xxW&S$Jqv z_`t`|sY+uqsxU!rI^ty`cXco=_P>JhoKsohIemx72k2`pdm-QjU$_IdZ!g}%VkqfJ z@s93nJ_Woy^iIb79^TLX!6QrOcss_%?)b`}HWQ{u?xYfVoLc9YCViKj@~#J*`m~VO zJF!cb{|FL*C7@=3wlh~mMa{wjxJr=LSN+Ec8#zNiSI0 z%GoF_cN+PB{38Ybg^m&9gHr_NrjOY-HN3bh@?pbX>>7Gs-tni_F@Fl-qD`j~GSC=D z$S#odu}5pRiB}4sT*sT#a{{4!DGjBhS0+UE0Y>(DNb5{4g3&1#k;g_Bo4V&;9c~=g zrab;_q>Eo{p;tZg$oDDcoZTl#t)&}W&VQ0(VQ(4P(fpv(Euplg-Xsc>TWDa1MnRRDV8)VPm~my_4vEav=-=X%%jZRKyLKVSAeo8(rtXA)Sz zNe!avm{kYcK)XI4JFw&z!MW!(spwW4nN)@h$XTOfvAoejKmj{nEw##XMKM(O<2qx| z>;w7wr0TQFQ&(a-5Dd2tu0uRgVDT>V)_S@NNRFg#bL6Mu#Z${PMpzSD>AM)`w1!Zc zl@#&S+%eECg)f6bKRJk!%=<2>DgA~-b=HvmSr^Mjz(#U=$i!^3~9!D0@G=FVF@>}V}{yps|*?3B$ z!C>+?7v6!24X43S=Q{evUW`CIp9N!srohHgIZlq7B`9Wrh9cdCB&S;-xeg z5I|m5H}SPN88GhPNrJ&yz7L)}peJ&lj&W;?$vPi9%QlNTg6MW%>CpXY`5SbMh2u6? z4R03T+P@{f1>9De$E5spe|nV7(|`Y()Q27P;?nhkePKYbTPd?}V^iR9?aNc~A%gxb zWqSgJTX`~suOQ|d>6Ct(65p0%;JDns$DvcK)O3v4x&eIGQj6W6Fj*;n&1#xpI7xo= zkc_SzT5`QFOJ)oA)O86iav*1-X!`Rq*0;}+os?p3*W7O>p(bmGArQ8Gq}1{kWa8in zh-;vLl;R}9Qm48G3bV5GwnXK=)p2Fv;`4PfAp|4@Loc`441O;;Vl#4f^>casKs zZQ8GaWKn-oeH+qk{75D{b+q7|r%xmF$l9LU5IbIj%y2 z+s$ZU$eyg8?Td!U^Gsok)*w_ptbtMQk{1hqh3~Kl(=_(tM;zv;W{#b+f9{H5fULe> zzTpyGs{dubpujisV`F??gRvflF7E{zgOLhEH~H_3a)4?bY<;!7(~*wlIG%dGXXeL5 z|8urQRJKl50=t}#t|G2U#{AqdYifeIzzYDtN{mP18~U)!gLdZ)TXa6gV2^Q7Qx$ud zmsDn+sNN~vF~X6{QemD4Z38iH;^9b)g-SG^J$Y9y+}wggi=APXfAmOC;kq%3X@wFe z;7Ke(VtJQchIIKC1te}Hk}!H3+L1>aGfyvP+;)62Dvnq0_1T>&+8xXxgDTyN2K0Me zweFX|QS6eKd=8=;5!VlL38WC zZ2Z;OO4~BiDECH>5KSV(6Ro%Cl{-DkeomqJE6PJaZFmjU0QHO(^74yND|!qdKXioF z)Yf?*d@uUrQT8goo5+pmh_^)gf>bsC2h-IVfqzM+mCuy%cy?Q3z7Kxmpt5<|NUL(3 zml;~qH4rxObR}J51c%fwl5X0l`;HVO`jVI%wu_r#r&aNcTSfWf! zE>){XLQ3ole44QI&#{&u4&CUUyy$yOhyH%nG8P7NZ9$mEj<&3UrpaAKl}$XZlf%?>kurOOH2y`2iwTA!kShS=~ zI<6>e?AI^Yi5m!1&O^V73Urm%uyk$8Vm_chOl=9DT6PgbDk66eNinAwU?9m#)>v_! zK)GygvVnm8_|+}%KQkthXXrldfsL7?&C<;nrY~Jn*&-btPV=6UcVS91cK+BN#;OV7 z(U_zs%1narOrr9wHiO26x&Gzg2Pg(t?_ zP<^H$)NTq9b({=wLz;lFeV|;f3n=X0thOg=f^niIY6LbS=Sn*Z*JghAh0mwF-q=D1 z;UdYXjcAO%kDPgRRRE;v18z3o+2@TGM!AMfDz_z;g|tXH+Z3Kyv$$kGKR8-IPcCiF z0_D>s0z-HLDD*qDxV)k}{z{)wb=ZuIINARr1~{d}UKR6>wqk8G)+?}voJ|EQwmnQ9 zSn0XgQ40y>O{m^D(plu_mbd&;=?w2Cpg!Ub;|au~Ed z#J>w0craFNeTjvK7JR(*6AZEA&jIex(Ircmla)x;?wl=jk=?%lv~ilA&7s6;Iu>Pl z`=_<`XZR3$u$@6*lFa?s;a`7X#ptV*nvHFOc$>Fy7orR^w~1a8s#DO`3C)SWj*<~G zHBh<3YqjSX#Tr*$ddn9V36xO`sWzk1@nIy<6}t^5riRBE2Gm(QGbxgf2nVF^i;F8z7YDmA{?kFlO{wcV}0aInD{c{mKbCW`AvK;9`|B|8HHu`5Av4QFP zzuBL4;6bsdm>kQ3O6r@}aDxPht(xbJ;^WR!GO3gihKJbA&hr&K zb;hl%dag=yQ3oG~oGBk70-g9eS}5r=A6x&B-p{3Yg7+fJ2TDropxV;ceJAox(1~BI zZ3dSPvWjb`oCE%){BE|D8Ai6W-_@Wo7IDhLMKs7W@PwY>0;*?fZI zQ>Uu%t)U;^*}5+l_=fJ&5!cB%H{<8*D^kUy58(lcct^fXDScO1O)K}g-8)PEsLC72 z0h>QKHIij9)E(<+Q7OZ5@gtK(@$PoZ0@$3|Hc1MFco~kV#*lj%^q1;YYOHX<|^7zil+c7!oa3D6mtF3H-}gJZD;vh}h4Rg^O<)3-r)&7pKl{7&kkTSt zva5vI(f1I7goq^IG#kD8{(3HmhEzU8QxucMhk$MkU1 zEkPMZ-6$g*wRRj7#F+j0i%c8Se07JWYV9C--MTe5e;>VO`2BrXI*`Go56U>6(ia!9 z$%2THZor*yXhIa0Tp=|K$qS;0Z4OtRMDf_FBAw(au6v*W&+$EgXs03bOdN1-qj*j| zH|+{LFp~qG5p3*Di*#1swZ#VHFSka2vlOIc2?WpzXgzlo@8?w}PBPI)mH02Cq=F}A zy?&t%ZT-J7r@Zt4p)i4L&`JDa+&PS-iiT(Lr~6sJyafC9LOM(pN_+*C3c!yZPRA4< z8VPRndTv^Ii8JfH>$;98AppOLu8ckqi}XVuaFQ98e1eRX)a==~&-=Va0&i({bux~GeO>X> zws}UIot1g?Y~oJKZ z0MIWwyBhtvi&Ae&Je7x~orMtd^@8S>Dd4N47QxrpE`~I}Pb_I!%z!ILMQqEbC<^cCguyvXHVWXvoXVHOuKwLV# zxGHyOvjM+ISd1Dw^88CmgaIyZDwd!=fF-NmaPGV*l?yUVmLUIK=?;8$-a7=Ovr)MM zf7H?VAtCvd@S}BZcM|A73ES98e{z1@=}+o~J6Y9uM+9&E-FVQ@N!;_<5N{w+dx66E z32@=NpaIqNfe;vmc5do36D@MAgH#P3+k5Y?_2&s??hvNiF~pX6$dx5vWZp-~<*snF zCT~C=^@HWe3JNsW^hi5>5RkNNN|jU+79xGkFMal@VX_yo5vHSoDet+EW~D@5IWu>! zRmTjv=U6}PAfKB<)}bD+Gq2`AzVUw%LL+%J9YIV%D1*#!&wZ7dsgslOJEJj*ExfmQ zo`@_nO}nUBmW0_(!p|*II_Gzn*x*CbPuXu~vK|+Kori;HSko88r6=ViF&)inH;foI03CsTHa7C8;$w{4wv#Tx)1DC7V zdyekbOG3=B7|rc?Ko5Lc;$qr&`-b$;ONPg-eKW=T1w(9)gTMYP!|5DG1ne_k8N4Y$ zO4qf8jG4*GF*Z*5u>cWFE0`UPkZf|~(tSw|>8~QWH5#Hptf(cEj8aw7tf1>wgY3@)R1>9-#CE(hJj9#jhTEYG?#MZwz3coEf96l5 zdO_yjLE}Vf_C8;ZNrG2?TMgt6&>&j!n`H*|L4bbr#e*!WcEatszS}0jxccn55i|3_ zZvToL(y2971a(y*fCwh&lM&0Vsv~UvFLQ^mBbJoiOsimq8a2C>BalTP ze8nIQ8X1NX04H>5$E+Mj{LK0a-jgn{&igGiw!4&B)7N@Bc(m|(%1)^OB0Yy~KJ-nC zG}j}ze$ulD0d4$8)@2sfS<^Gu)SmUOy^-R>PXFasuRxZxXA<++r(fb8&09jIEnZ7{ zaiky^wFcW;L(V;{SA0mZ`2|KN(X82ciF$WCCn~}|bHSqYdT!|z#{li6*$;^%5Ne8f zB)x7_?R!2BFqJOXP-T-mXcKsP(Kb}A%WOZ-JWSs~vh2Z{N?zuaBf?$Txx8qXe6`-o zC;9cPx7UF?nDDd~@NL~XRGDY2L#~Lp<(Ax3Y@#r4`KVPt7QQ}Q>^7^hR>H)+e8DAW zbuzJ++`IH`s0pJy&ZfBF_!)ajy;V7!gBJbjNAHZBRUb?$;Da&NX zdAdLmd9XDy5_AcXqYM9MNY`dQPu=}$qfOI39OWA`9sW;ML48Z%KcmD`?i{Q`V^uBo zm9U*opt#FN4S@BY<*+~Kb@_V17ykZG@IM5TuFvi+Az_{#5S)xT zx={aXfvGGYL_!IM06DGd2Dh4K&oiC z1)v2{#3SiB_WTq>)_)9`M+1a9>l6)uhA#*?2#KU;#$?y7g-3-dmoq~h z%0rT}CD$#~R!`yZlc63vnMO&0R(BH~5UdCYs&pil->Uon_&3;Qww37SR?vE104w3eq) zIPj}kY>rwrvj*yfXE#@(OWiX|5k;~UXI{op%Q?xH;|{&}*?z(KVi@I_YH9cPGouH85Ck=)xg%xGft62nkL9=;gOBZEcbPe=WMt5$^juNXs-YALH!a| z+Nk^s?(Nd8oCP3;;pf*pTx={ubkL1Krl2#I0A&B{MFN3OyN4wvLZ`7s^j}(Bej`ke zS^u^g=mFe7QlCN0Wa@~(b+^C5!d~FRVH0bz4hroi`a3)YFMcg$SePq7j`vw=Y*%4_ zK7NnZ%Q0zv1Z>!zI)Vvsz?}R|-EN+q#7_EGzfkfvWRGV3Ly&i|nmE^tGM^qwr*LMS zr5`4H$M2<-Scv?6*uPKd6$=NmX9a=8;b&Vs(DTE}%%#P;^y(Pof;{fPij3W6jbjyS z_DDFRD315(+B40R#@6Y8X}zs|w4}3f?Aspcr!5-2zwd;%sUHKTh{9p|aEH(o#Vt-4 zNc9H|?{y11FNB;bt#}&uBtgKh&N$b-*<;2#*HFHGb^tH?V4kXVwFwKaIkTnMrx9(5 ztfxVe^fBQ<>+oJkL=e)NJf66MECg8GnEeI@c-(ReukWP~xST>l$BPKe@ztK;Acq9< zQL{GAb%K)8=oV)5ZQERUcJ~c75l67*r=@FAFdsHmz-;9eLbS8tPR=_?XM*d8zP{^J z&kXDPNa-$9i9CLX8GWDoUXDt!=f{}Wc90WBoQlyJMj|0J<;SUdukeP6vZxWW_XEWp zb*g!QLM6`w)%d9!DGzfJ;oD1V)>u7ObqXmo?%FWe0+c;cvZRi&{4@&O@$n|cSZQTA z#SY$eh^f{&>DbrhF&Z7Yn<0aT_TP?#8H3@Yf5y1z>Dnk(kM)YdP-UqjHp2N)I=qZP zoZrZGU0Mk7P^kX0hBAnNNdklS8rQB{1-q;5x!LKlIclAVJ1qILl8=4-HUEucb&h&V z^`=nFjzB0iww`~vjPkW;hE!<=6)jYilFQx^rQX>;oj~H(cyGHDSRF63Jf$ycGyZ!$o!SJ%?6d+|QErY6L# zE{$;Te@9~Y+IPYtzMJS(L?pFY{qw#y&8=5L`b7OA7>u>ugM+FTd8GajZ8bR6pi!HQ_~yN)*G*tdK-Nmx`OApmH^mZPoyQv;uMv9n$&qQw1f7a z-BP?{Oi2%u)(ELe2B$gD|GT&lR1$8Sk_kd9)>o$vjS>ja4CZfG7s-ydn~^0Yb2>G$ z2ofnF2|87CKXP>~WjLC2Dl6#&vo1~D7~qz;>rJqP08LF$qD2A0)lEm#VO{*Ws>Myq ztr8iZ1tnmzrKKw08yDpD>{Z;fhdvIkOc8(TJU`MYnDS5(OH2GY%(5Lv<4P4R19$uI zcEbckw3#i}x$=RLUgLb)%}NT}vwUca0n?)CqE}fDVDIVWlJ|%yfXBiy$R)PrUBap) zEn`iKxcij$;<9GpAeeh?Rje{`mslG#)adIl6{g;!mm%e>I$vG{Po_9OZBIS44YeXs z+q{>wrOt7CD_M2&PS4^E5q8<{M0zw?zK9b)`M6Bt zP}=F8PRmE14jged%9KbkQ&h!62oNB4aq0rM{pvadX7@%Sy*ciHB9{{$v14yC8<>x@ z$TVC18WDXhTcWtv50i0sU-A!ED(U5Zt7n*iP|+Z6C9y%M6V-RI+euBjW9F&Ky!8lV zy2(&SgONu{mp&OZc;&X82)NF^@3KgrrufIHVZBQ0HwbjJ?B2$gsWF0uR?d`<;*Rw? zZ~+?iq_a|DQ6V4?pXzB{m=bj7Kyc)(1gF#dnvgui68!E?L3-Wa%vH*9ZH6!~*+@5j zusqC9JxpNhZfiglzSu5zO@^ZHQCk=mSKPc?1IJcPfQUhdaR4-{xUG17y%-q_9<`{< z}A9$kIDcgW-8Hf=eM7auI-l2Zu$_`U7Fq*+Eb*_)X4F zt!LaTWw3NRjk6_DR{cNGk7@DvYM=mUl$G=~V`I7AyURAEHqL<#AByW;{u{0{lF$g) z)9B@ELAlJ**RVJCq&n(C7H(`rUDQLvMOzW2Y@S1VPue#l`x)FLV&n!4KH~x3?Wlj< zoTgfrXo0Sm*UKD`{xe#>K@VxAhkv=yPBnlg%v-{m?LdMqsIHh$^yRN5fx_s9ov5 z(NT0cENKWjpooR#71}(PV>s9Sm4mr(dG{dVIm8#4%8EdpfP{WRQ2wv=3C}AtYi=98 zkGE_p>f~4T_x2X3d>+R{dj#yTT>De0Ly?=5Nw@ds_2rBsi8BT*nee*RtO}cZ-XLAt z!3-xyPH=sj4nH_b1EG&P6pwbno)(!LN~fbv7l>&Ndap9x-EHmn8aw z(qnM=k_q;YCA%wDuF+3DA7WEy(BKkQd{E^6ZDep>zneoUdQsOt?u{~R*XuHk!O)QY zLr7K1yM}qjbwluL3&bNwBA#nL+W^E^S9egY_=i{yz7N?La`^fF3K@uh(iep}$s4*4F>gj2x?40Im7_n0SQTR&)_as z@1wre6Q;eN5HPfME%0Se9c|4Vqyi+kbo_<5QGPu-5QjuCc@dgEA>+SsHk2n{1T6zK=f^ovgwz06FY3O$^U*wXF_3N zM}aZDuh2hI{5ntRn0ig>g4m-8-&Eh3S#Qw9MVqg7Ex|t8_h>kDl~y&lG#W9$pHMmr z)<-+PEEU6GHhpv=Oa z6lVmU54Lwhu`FMURPGhzxU*Zp`}QJu;xDuH0@aKTWN7N^r?IEm?|ulteT;p9&rkGJ=VD_ z8cdlD@U-o)ak{y5&l+CyN5IYX*QhZ;w}I7MF1N{g04P!uUHIA+bdg3SAfCn*&>jk{ zwqiP9U4sK}yTR~?g0Sv|fF!+Wr%}>5;h=Z!_=ffaOY%8|zm+@Tm~QTzZSk)9a|02J zWwStPs~uo=BGWLthf66V-P{ag_B_RDR<-vf;ki0BO$U-d!3K=XBM?>mLjwWS9H?f> zI8_py+7x|h= zG|rfb7(`?bw|r3t;;l2lDc%IbJ1-)Q_+~V4B;yHnMrSP-b4v{l#;VP1-EkAB`icYT|?{AmUeE& z@2t90GgE1~uD!^;5Tvy5K<4zENAT7nM3k_uwRQ>Z)3sL0agM`$vYzTp8|_h|EmP)z zWu|CLUv*m}?H}tHbl3w>>kkTak&A;MJ*kn0+?!qBFmgn=E^6xH?z?R^*NIu1Wg_#no`PBy%y4O)0?~HC{a$4 z5UBvb%RU=NO5&4ED|A1DP$(-->#=nTE#ho*UynoJ4F=u)<=l&2i@*_DoI0#z6WvNDr@2|h#C&QwB6rUmAyz?U4i z;?O55UmbIu7fWxhz}jc+@g9ji4RP@&nOdzffY01B6G3epiPOM$Kr;}F8!88$J4{CD zw%=~gmlt%LCPAvBrM$NkAk93i4;9q2coYuU!JWEp+-fgI#ra=Rq|*wZm*h>Ii@jl} zcU5Da>;*_`f=(%!9k{-9<`8OPr>@g;=|RNyG8#^O+4X!6Ht$G<9LwNud0$`-lnuWCv{tXszbM-rf^y z29^HG^a4G9;P|<$@wUYyGEhq&bIyr|)GWn8Hx*Zq^G{ZhE6~U7oi2usp_V83+cq@V6vAnHoaUjjKLEoWkoNn!cU^th zv73taV|$eH(E>so>fr>xkh`7Vf8lW93RkpiPG5YJN$g-n!LtN33|=qssA z|Fkh5E1j)-G7)6ThO(2PaGaD(l)ff%Q|$eT*CalvH-~RKNiYRk zts;x?jt=BhnD}8~T4kji^U#a3J9_#YwVCI9!1AI>nMMet^4mz{=UlCEvc)v3Y9QQd zie%M5-$pezu-#)a)?wT*w6JlocvQX&7!b0!mldIix5_vU^>{&`R@iF*Ao*0Uv zk@uYZto%MAnehN30lc+Sm(C`_s0-gMvj(SsMJ-O#;;M=uID>Gaq}#)qOEngW>p71+HJJJrTNn} zhcFIDn~n_o7RrNlkq4d%uvuvhZ9OMn&ytxQ4t9$VdEklL1XRcKZo6C;kOon;YGQx6~K^hT$EXGJ@e=u#ssLcuR;!Iiz-Qp%+uw#y3n__JG~vyO{1y1Pxi_3pF(t7 z*y-0qXCuNnMI-0jGzyaX%;?Q!M{uvh;MLP_sQ(*2f;`AS5GTL0d~Cuy%(20Ze#bb|;Fg3-)?FskGH7QC0*1Tt^#6SzKH zqNz+6j_?&F{lO=c5eoRUps8c6O?FDMz$>LpF6CsTrf<(uv>wz@a>k4RdQY<~%Yro!CC-#aSv%A$W(;f3V2Aa z!Pwa`wKBCPcx!bP{PW&$EV%pi!S;^qm-hJsaBa=1x$Y9rKXlfvRabx>X6#e26*DP=C<1bE#O9GAJdi1_TY^`_tCkzYh`^yFN%ymvi#Y_HFHC%+S9_-T;6 z=Lom#&L2$g>f5Ce_|zy7B%)H2Ar9Jetq9-p4m__A^;GL@R3geYr0iKX#mKjxBhmbxai|eIBib5?s@CLj_0B9+GC*Hln z$QHgL75Xx|_ZL8D`hXC&IWq_w(Vw-&4u#t#rpjHzDG7DLFKG?okH`WbGU@3~qvZ~I zoUaczaHt>!n;cQ<(MwEfJl+~{xrRbl9QQl5%-bhqhSHn$S8RNuQyNnU}B zX_WEM^aU;u@|$ksh5`iiv9Z)vNVR?FdJda1dht`_km4rF+?^hGbtAHlAfzDk^BUg= zGafYg18BPdKtN3(C(rU7%0Yvr8*mn#a?GXCQfPuBh9Y(oANAwWHga~V{o3AL1+s&6 zIcdhYvK%`;XbI>2)r9NzmZREmvGL5oa1JyOwntO;~ z`8K_ca#Z*6OGkyv!N+(u$%RN2!SlXnJW!B4hj~o9IMa={Pkj^UMvPzslw&OV?i!vf zcUKLy3~oy+$o7D8g2vBOwSm11`i>;>+G_@b8#RwnlRl?#;hHL>#Rj6Q)K!G*he%ZY z%PSN^n56)2`FZrA%`i4tiQ+Xct5F-aL|HLr?KHN$*ifi$0w{GBi}aP@I2eMKwn-T_ zu&Ngua#o#X{e{G+9u%guJ#o~4E7?Wd_VEzJJ(@Qcwvr$;u(~%r{bl;2l!96VT+tGM zar^Dr%SOu^fxmLQ`rt=4GWI`+cZ<5M_iOe&A~(}E7@o>0&r;FM7Ga6cuu`bip-Ld6 z8BoGt(Yli6t@AqyBzy|X$V!ybY?P2wY_0j?Zy1PsZ?lkE`V^?qV+D510|`i?*l=`s zkES1@ssA$2o7AbL{75VZfH~Z;`Anu!a(*CzskoVO>W-(o4$HL5KF81r{kp|t)JrX9 za(*UZuCyF1S7_#aChmu+OejaP;%R7iR>2hmW5{$QESfnb0RF(Nio|H_Lz=7 zkU``T|B3*2E2mI3H8FiJXc*0Sx{%sYt-o(Hy5$Sxet+DSKe3>L;TP-HXh$tD`j1=+ z54W1HyIP$PI_$pQ^MC7ez!hnwBjI7l2o%a7VSzcjAyFvKCr4*CEW#A6Gnyh&LFsu$ zpR4SSMDHZEl!!AhlJg`NCh3C1*{IA@glYMJrGS^KVO16C(7s6z+MaHedzpqapU&s2 z_q}6H$}n3~=q%?f8RXS2i)?QZ7(dFeQ7 zSJlaP88VFKjQm^E=)MCD+^eGj2YE2G6YLx&`E9)_z=;M1v zMq|BnfL^0Oqw52+)!b<((~(ZE+J%Si&yo*~ncI$HXFO^|Myd4y9a&!9H+Ed3;8!u~A#ezpIj4WUT*-?L<5Bt&hZAU>^ zfM2_QaUB0dJZTb_NhYw}u^05j1+NEiVE|Bk!Q^$(GI$~&)iDZH#18r;73*f-#HBQ9 z9c%F7F&u`1(w$R6pKw+~r~{$0RE+3Q)f9y9Q@W zu926iZ@x$~0t|MWY^A6KdHD~(jz3|#)Rt}d{NaFqy|k&M91j17ow#JRzj`0e`GU@aTkD>Vg@0>7qtkl!&L5vZIu>ot|6;uD3F^ zqUAB5s2Xy-W^WbLb1tG`b6s%IjIyEEZ5cT}_cvP};rj~6a*_y3AM`KNy{gdMpt zf25eDcAxHNMLZ)o*_|Rsr%~aQU8*=8k|d^DKq9mJ4P*G!$*WT!z)ht2H_MmQg{U)X z0+e*f*47(@^<3pD)IqaPD)%I%*dvyP0JCL}2b3v}6%89ff($MpSPJnce99jJW96%; zUd`;cPjC!!IgLa56~V*gn`^)~M_g8uMHl>L^hthV$1!Ee_Z6TOSfHOe$JQD$ezV6a zT*Kg=MLzz13}2WY&rY##n@(Q~0_rukU=PXyR78hZeT?tW0QE0shjai-HZ2^s$=($)#Z zB|m0jPA~nrj>xtG*9T%5gP4p8wJ=3M?7c8pd%^UfC~g3H%Ya;9kL&NUBZ9Q+Yck%3 z{fqziGdPJ6Kx30ty^kg>W@7!jAc)IU7HK4<$2!*8?rX&N=LVf*Y)wz_s4!!3{ACPmk2@?UnnT&g#8lEo%WGROdbFvmfRE9CZNdzp!`fs3Lr2?#` zowk#|<|Mrx;n&xE+8xG1XKh0mx2vC+=w!5MGT8KJC%8nE*UFJ2*prXE!+f0pQRT{h zzM}_zmn{t6Ga0aoYvDFH`(U*nq`BxM%z~z}7e32`80{?<*~Z(+b%del(;rFqy6>{Q zdk>tgD`?t#W(~#=|+!M1I!9 zZJEbaRG*|}lT@^~7Ji4H8NRv+Sa!r<$_?)fV4?7V)mM}2@# zEaYa;`hTw)N*i9_Cc7ZMFc&IYk(|cQ0s*D`^qB!v3`Dj;xzEaxsb;_StC#?Ah0|Rr zPZ@*7oPMD{a1f~Eug23QoVdA6{d@!8o1<=OKjYWqRi+pa%_UaDd1cArYpF>zfP^EEO-(}LYW5mKmT%gGC7K;izX6Z@hAB*N6g53Tj{p-OPV3ZK8<(!}!b6xl{_WM#N5QJas5?-YEoD2C7V;~!j9cU=Hh1SvY!kK0$8 zFaK3avRwTpKN&@fVT<`TrMK{ad{ZN-+q-01Nh$?<)j&IIh*){`_@&S| zIa^Zu8K2w0leY*wDn-&0wQVGvqe$~Fp#am4D|NFCz%Lkqzp*qp2FuZDAHg*$wv+YQf%`F@H`9Q?3xsG`z-e_CHy(Ou8n8h#Bd&3A*|8UJ7PEcI72V&nivljIeZXA}6(#JtxjK$(uxSptZq3TH=V#uG6kD+AokkI7KDN^?}D-tZ@0S1{<-AY&*69ASx7ga-=5lfWTghpR4Sj zUn}!F0u#YDK+EBoPj~mn2*M4IxB~40KixRgWsR`?PcfhD%)v|?R2uG%)C`dJax>8h z>%WX}Y2?PfF3u#{HpARs=cy%v%Fx*Q*0LI1(Vl%1;D!peKmi1lu{FzU3BAunXrYBb z>Mmz=sx^>RF1+|Ag=V~0`{wU|<*#J!y}4)~9LoO|>uJ@-qWa6i60{sl!^HRqg@ zs`)0bfnL={Ls8|0XbM50!7(#60o?C%<1>Tat!&R4{4LP#>u#THeeIsH$I6MHrJnGP zm|f1o+cp*`ea>OD)PB7-QB2*0cSDef95&>w8-kV;(2_tN!}-(DhSFjuP7*#6dyj5O*NV}PqxgAo%^RuiOCFrf3vH8;e+bC=(OdZ@=ZCrolO*wZv= z?!K%>>~{d?j*_YhsPk5n4Lh=0gF;x>zZErvIRMVo5O6Vz_zVGq1&(@_3al)}Q{s}# z1+c7irm)511&Dp501M{DUi$)T@@i7)in4YmjfK5L5=7isfGTZdos(Q6QK^s|VJ88R z+5NlRoAyk;3T)HP`s^KK`B*4DN7Bkn1%s^tq|oUfEV5=O$yk(~xR~RrJG|aYH}C;{ z^PEAt>ztdu%5=Vzg`j=ZBjozh;myb*y710STl0%F^cB1L+O1@vhT11s&J*pbu+^1Q zG|k=YWWz+FO5Wjr<7voy)&9_Y6&mUa?|nmqezl{^`saa~2#!;LBB27BvAUYjEZRCW zkD_JgZP%uyeZgP%grTb!S9wlr4}>8X@{w9%9i@)uI8a*ocUrveR-1*~eAsQCX10pG z&JXWSlZ9AEWf07x7I=(r`nQ#(9q;WK#Et1|zse5nE~QbIoy|Q+R0i9$}>DK(9-%)dex^HFUplSQV4@G zZK-kqxSgHFKlvYE_cy{UxVL>s8&Ctu5nCt)iMbUSUUm|QNjWg_fV^DWl`KFEFq}Fa zdJFq-J<$U5Sf4sMc}@QE<qlIolO15;u2lT^3QUKxN3O<#AtJM{(G)lK6- zoP~2*hq)<~d~Rq`7pW{v{qwDE2IALQH~Ya_N1smNMjEM-pMTcJHk%9ovykyA?W9v; z)xOSM&?a+^eHwGhV$qcl_awn4j9d~D2V3i)^d>jVYzKmNKhW*^+CmZnSNoiEim7xk zYJfw+OHGjoeYbkK1R=u50oCg3ekQrz-_i2Qn<_8f0VfKL6d?vp=+asse>4Y?K$roi zVI|M_33W>M&m=BJ!{n9m?KeWMUppnK(Tc~r87`MaeE;?DlyAt{=x@k@6DflQ(q zO!!aB%#me%=k(+Jpq?$q~uT9C##L6SH7P};b&Fb_q2EfiAdT`Ax%*gDC!lR5U zhyHzKrJhAxf17qtT_Qnwn=t_I0ujiZaFJH_hM}4KuRl(b{A#{c5uAs9eo+%!X*NG6QHKH=C#epgSXvP=NG8$G^t4 z5-L8 zitz{)iw3Ntln#uo!7nYWhSd4p4IkNE90t|o0()4)l&vvC0|EsXuB!`YKWtQCt(_5y z+hNA^6h(`y5n2wYkRLsm{`zgSsD<=>yx#X^v5S_4tXCRGew7L z7*=`wDY+K<7p=Ku0$tgtE(?UMt-6YDScQ)7^$O2t#6i<&V5nN~&8u7D9h5b+fEDt&0m)f}!jvIpqv^)O29|rjYtIyV8=iE| z1+9y8tS^GgRwP2r9Dr@sU`1KBcf)U@guZ3FXGzx2hzU`)<)(ZrD!WW(FHj})%|{w| zI^5bbnHx?Y4R{S<7en;%pbmp!xmW%+!o80d>XTpTVl>z+KxigYm-lo`C5!c-Bm~sY z%zeFQ|L7Yx2M^+PTi3?ih>uoDKE7*47K!?zxurNfmnCPIZY!LYmXFVt;Zohx8qrP2 zo%pPRDzb;-={ETQhb#8bMu)vu+dq10Z&L6eL~AIRz3GAax0)?W&9j-_rajE`Nt=44 zsroog1|a1Wy=(tD3b#G?qvaK*7;K1+6Zk&>2)Z4Yo#$t7&`ro%RN{W)!B;4PjoMxo z&PLTb_7a2W6W<%9?O_s$H~^%1^DHuaR-Ks7Vr!*xzU0XVm$k3z8#8z@gb|L#ZKGo# zOS8j1c*8A{G@V!Xg;iIcm19Z}Zw}4ux8ZdD@kUY}-*#C1*EPh)`fOsz+eop3a>r}Y z(h?igZ*PkoLbWL9ZC3LDcBiDxW7JjQI|!z7-(^H`kmtLN7DW$OX!iu8tX+MxOP#Al zdU2@KaAk^8rtma)zKKLfy3vW(3Jjp`rBhwgjS~4KfBpA-=y=p>PhUfxa0)QPFvlEp zX@NhNEl5rsd~epE44*sZQb`QhB6`0r6kwiQTdSFC;z5}UYK zAj78Rs3183Wl}|x%PIIPVtKD^UL`zZM24IywLgWYeuSbu)FdqhwJ;FlHxFK#frB6r zC3lltm(b0-4O_CF4(cf`7)i@WMTFAw zU=094)IR+f#<`jf_a6MWrl0a49)HSQQg-@)V?<-F+;Z&iQ3k6{9!D0H;OUc-P8S_P z_tho`4Y~a?)d|(!jnLR+wCv7biSREbfteo@?drXAIMBsHUqnHMw17_XtSdqEAZZRa zvF&o!`ijy`JLE4Bvzbpt1Dqt*LMjV3WjeG%{0yiw;$={l2tzi|+hM|NOHLidnP)Mg)b_>uW#D`Z z*pXHv=9UsFeJnsO7pjD`YDnes_g7DFs#%T#QLk23y%Eyy` zuQk=m{HIL9faT=Fj&V@(b{+?46q zlM1}*RzYQ}US-TZ(CGwW5L@Us&^kr_LT$x=ATGW9fvkO%D)6(Rl+o@wKTmTyimXNmsOY(lat}RW?9%HQrXkD z$s2ZD`@kOj&=cM_3BGD!(&yn#dhg1ce;CVM|Lo=}75qa^7R5QaJMkihoXV>}5xW=z zwGfDc9pix;K61HQRvqPF8OA=LiE7CkC>4QY7;^1<*Lrp5XTSOPhEMI0bOjgA1gpykm7g>?&U}Lu;?Rmj&NtbBjjfvY)80$o^N~-GIKv;ng zn$#>SapB0Sh{Oxg=dhg$o@}vQm`y;WTO^|g zM@oV0xX7P&m)$KJ$(*?$%Z5qkOyUq7fE!!P)w^~<_GyuN)nh<&U18$X*&~Yxqm@N< zZ*t{AoN3SQ8Qv-;X85;8WJ(%TT{Cag{}lp)`e4l!MZ(9&;|X;(j4a3`woq7M-xTis zk-fCWhYBcfb*k$$7=BSp|FAr*TvZ7qPprd-!GtFzCu+?!07nXAb z@}FuaU%Q|T1knAeRSzBv!HH32FJ>q_4gkEP%vwxc-ahRepVJQCjuAZ*Zfd}_!3Qp! zm6>bF2qD;_cR#xQit&ngR_XF@#snAoXo@AQA}z9UXk}+XXV=B*v&=-!>-ms&ELSe$ zuF-n$6HUu9o`#F5H0PGvdkenpF}4ruzesf#NBh%5iVkqA=;#efj&XMmltET`LR6^( zuSSaQegUpie;UR1U)hY&lNeS^H8hVG8uS}Znm6qK+Yp=GZ^7_KoHL24D(wE%zpx$a z27AHnlUGcp$N*Z+*18~uMt|@Cw134ImT~u^Ju$e1poC{@4ykz5j|etG}D5F zn@4cre@ktDoRW^(Fve7$(c|WAV>VsqsT*$QtyUrp)Fl6CpETeKe^s+%_(cCogvVMa zhXB7tJ-j0*Bhv!+282C@avg69ewKGM?UP}& zjEjuU!bs(PYH20-fk{KCyhvh^^QZk?wlm{4lq8Ih6dQ#|n3>K+^+erRUZ%C@pZBf* z!1dLlZ@`IqLN+h9Vg_Y76i8?i#hp|w_L%vUG=suEZr_-PAtNfM2u+4S5pzFdzG*7e zYNq)HhCM)AOZ;_ACHzVx^JQz`QNn83{+v1GX%^rfpXYH?=-R9To~br6~AtlSvxvPb>l z5LxHFH_@eQhP(&zb)~TScAXj3#i87C$FiqLT=_uQb+oBR5Ruxy`X~!e{}U17EdokW zqqN#2u@YZ|oC?JjJVY5N)w7nvtV}noIbYlf2Mt$ju^I!{qm0Kph!4UpMJ8oXYCuq- zdtOtC;@+_OH^YbpNHos*KNi#gM0mVc(lJXd1`e(nGpb`{xBaWXDuc7!XSN=r6xu&< zp%iT9V~uqOaA-u12(`r;s(--2eU&6C`wVFp{5=G@I1U0Sa`g9~9G!EiK=yhy%8c&AH?0 zW^b|Mq%3}|yUk21?djM>)3|8$N^KVTEq%&jELgSQPM2>v&^`|-v&=1PR7VYk1TbES= zL=Gj)AdZr7(w@ecc;z|WfN23fISK5-hCa%d%_6=b9+2@5)|@(}v0)RtVvUUh=& z!j#k7Fi*NI=+^4~WR8jv*p;2ooggPC`%d0ZYA-c012*a6mN^h8UtSw(#r1>>PTvi1^+P+4#~w9-YxB_Xe~mC1kbg|}#Y&Sq=PBU&H~N((YfT~b z;DGUa)Aaf_MZXpKL117yLkjwrqzaU4i7H9@a7G_Cn?@oE*x6YeUOT?V+_9$#kzkKyW1`{_cue-iOwBQpleI5^dNn;*ZfGT= zR2W>^R0zI63A#6)K}vor%FVOwZsy}~Y%W!(bXw==j5vN&;+=7|XaZRx!T2u-U7L(- zD7f(TkslF*hAinRtDJKkvHbgu$7OmVh=vPx%&bSh+K3HE;?lk(1SIaxcAqo%=_ofr!fzNa2DUc9%CA z-+tUH3uh{Zxt7vDVYGqXA6s77zjYwVWdF8MMtzhcBU-ligOj7u%e=J{Pmb*E%6Z%y z70W*+=+VjOGtFLJ@g^3>WZ>oU8SxfKYLd_ldsl`K66_)xZ`KmAuoMi%Ol*QN0`hor z`}@$Q)cY}EQbL4b3e3k-jb-0+itDblYbaN6^DP6Ld1vZxvu;p7XJe6aAowH%L=pCK za=9N(&tnH9j%Md`h!QBL@iH2&r`614HMWdf!w2~slNzBK7BEi;L#bsawyDX!5DXi_ zAlsq(umrV<_zHWxUu;$|oT-~&2wYsKG20aKU{V|z-$1ZaEa7c;kn8#3_Ha#|#Sy-* zm2@|c7~hGm8?Sw*02>eQYel`a@Q@D2_DTE@5}I_YllV;q&g(({4u zmtCC}U57ADkF|K4kPtp1BXsyLf+b^qIv}0J3RcCt#&S95u)YM;ft|j6oXT zWfgunf!;1eq&QM{jYLv$u~=gxG8(&$W==i0Ef*#WaiTH=9AwsLzb2Yg6yY&@7*AVm zKBx>W9^bmP8C51v3QVk70&Tjbuxtdv8)u3ex}}6j@m%rNu;SwE&Dmp@_{0{-{#qW_ z1l;UgmyCD3yR0(piq=K90~=0-5&lW$l7}v}+nc?k86JLPe&P0a4N5UrxCK=5J<;$% zhp(C6qSvh9*4YWmYuG1WrMFGg1F+N|I)JOr(F55z{Bx*`QaOzMXWL@6wHB0Y$ ziw{+}W)M6ED$&_m?M8V=M0j!Os~$jZ*V>$ZX=@hX;6CqPievNo1@nbWQRH*t$A$oy zd3PZQ`%UkDrc7fTH`c2+roknxzql;O{mq}?w@>!=s-7jAjh!DlGH1V_M7RS!_u#B` z*!5Q`t=;c~fHS{I5!*jsb+pbm$web^WzK2c%OaJ^cK`M~-D_l)bYK^1z(R*(I^~NL zW|(j#*eN*UW-`=`65H(0#La^?&Jbt@rUpE9DQ3P)rRZ$$kUX^TkTC6DSF8(Tr>SZy zwcV!vG`!@}Day9F-W=X~dMHLK?odG8?Diw@Yz)3e+E=Nb;+V7vwI( zj*&N?k3mPtfXLIPbeWlik{ zA6`&2&sT0IaL+$`ybnptF}NE}PY#GzHoXbwwrEvm!3D_XK|vn{$k_wKu8cP;P7GL| znwMkyTUp|4AJ(Pj*)=DqS0!wskY=09~TIUZV946V`a<%WCR$OG;svfk-`30BIe z;F_CF#P@p*BwtwO>?KF^eSuGf)sUphsC;&O%`AZg(Hwt}O^)%>0IFEUfD6<@b^(Wk zrtT={`-P6|d62FV(>>OE^;0N3o8ksd^2|$cE+f9u$dSR{7N~sD=2nWr9R!`>7LXbe zlR)?IA&~gXLBVTeA?`RNx%X<^0%5bLvc`47bJJWwIeJ$;CzGG#pz3Z32Q-^}``{d9 zFC92h#Lx1S4^mqjB9)u1r=w2fCx;TZvcv|xa?>$;)sl%pKeNz7X8s4zT0Mu8aAtiYFIxVpXB%Y z>)3pmTqp}c_wq8wcXj!<)g|wmG%kQv8-}WLW{1#X>~jq#7QD%&K^{v|n078KG^gX4 z8P{;>tdT<}uO_p2JYNNKT149FqU{T9WnF2a;1M~hWS@4J2Z7~^CU|~L_i;(4GREKm z*s*^Q!1Fk6$^9&_8hYNWljYaN7dTrNx1mu2xR;?;IN=6Ya)`Z21T`s;;U>CV{$U!4 ztjU}M92n16?4qhNim@Y~q~6?z1UeIQu!>tN!vb2{_ZU^kjH5g>i@CdP)ewYnlAdaB z`NWk^MaS~yv3(*ZASJPi2FV6|n8JUBw6S*MSf5HBFRjmxglTTqD4dq90vB{Iu}IW5?G1_xGvi588|5Pl(mRmlM_Ud2OIxI2w+Q9sca9(% zLJC6-CaMYT7bjhRvcDI}?FB!R2XY#fdXbzXE+jJpiR@ZaIINCBzyYbc>wFi%cB#Fc z#hpW87K_b|2x)HJJl%&+hF8#A?9f?X?=Q16jeT!`yEAJ|qO3pzbz|>DbR2k4lf&4=X*Z@yIkwU979#f)^R#4)1{AYK*w+usN=q=c+d5!_^VyG;Y?WhAn`E~nUVRu~ z?Lrx9!k5R6A{j%*@w9nOljd!7{&_%=OX_{DY_@?ou#>!Fub>0-V9{xk^cMjV!y*cn z9batej6IEzipJwMh=dsn%B)5oX-iyoCZNqF4xZD`S z-?Y$^TlxFQEU@bhLaD{{B9I54Li#A^)y}ekOKp?4mwuir;wLs{1T$}IamxALAkuB> zgc~jpk!vQ2b7G6V0hwkyazmotoG^$V6f6r6S^=tmVT-qKpU~`s*-R8ADxxmiSTQy= zrIqCZSvtCnH3{g`BO25RqCW~OnuWp=!-{{pJ3=d2D0QXsczuB#TNK?Bxi4*-P6Vbo zRrkJ1-ZQX`e-O}NvDk;Nw%UHgExEEE@E9h5N`z0@>8Z8)TZHnKCD5Z}js+`}ELY*s z^YgSo^;l;@3a+1j6IAbYbBqiIW?Ne^>wqRyAr-{vnNFYt8K;fKscQ7R4S3VRy;pgw z2MZOl0I2&AwCO;kQ0t0lX0%a2HFEscaRUO;J#b^?aht9qd=c1Rbkp?0T~p9f=qyDU zC{vC>(8`y!iW;5X6oBMjBp{u?!Kl284qWh&9k-ivO55`rL5-KF1Bvl$OY_+&kX16( z+sr$H`Bq=aM*ZDM9g2=a>Bu-k$V3|OivD|Ozvx>B|C(ZY#Tl%Xzr^Uer`X}>fLc#y z*=%t_GFTg)){CX3iD)VSNIjkEVh1miDQBA4p!0S(FjYwOWRIIXg~xbH~h zb%~b6chE)oC5x_l6R|ontqu5{MlAZ*DZ$bO0p{Pxkc3rV@p#r8*|{S~m~LTRO`EYK zXv=J-Zkc4o#NyK&DY2%`lH|x|81pc1u^MrafTp~Si;U%6wEuin+Y(#*xY{QghU9|R z#s^*RzOH6dx5W$4J4b8?Bt)x{$aU{ltxqPr9byg6Uw{sgcH{e{CrZ zT&4gSjtAfLtyjgrcq`CJj-w<(+Jt}!bX9fu6wVFMUY$gk=HYQ1M!I<|V(OE+1gNRo zv&UjJyTJeVD=;2kPRxXu>h7DfumJh%X5IYRc23Bez_~pxRDKH%N1O7_D+@x^71{9t z&|tAY`g?S4t5giFCMp|IMzUqmc>X0hq+64r_hZm};~Qbtuz|}<{k{+AQ*?D8(}`3D zJR1aug%}vh#dT!e3bAhzMQ&96;t4>=mXT>r2t~eL97YySiD^m446Km8GiNdnLY!ck7^Q-KCf>u!0MGHS<}c6Sq*`rP0;|nQo5#NjHB;kSx-5ouRo+ zYeKyH&YPoW;0iM6F%0((#YV=^6t&wKgN=;irf-?Dc(ZK^aA8nMT49o*3fR6V91O6j zGIBjMhHqK=r4&Y%?=xKI_!=5LN!CvH z?Z1eRlQ*drzw49&*9a{a?TI=;K4SApeb%@gLR_TFC}Mynr;iZ;k+&FjTdaWvFG{sGqDF)UM`p_YX6HZK=+d5c+o{b#immD zh2U)7OD%<<3Vu@QgE@*xUyyGapXgUf{-{sD>J7&~QxB6P$H?=r6uxXqK+F`ZuN*EW78rZ%L8 zl?>I|wgh$qua?ob^fv6i+@^F1YA>)|?QX5tQ4DrCK1R2uO_}Z1innj4&wrKCQA>DE64SgwES4uz(nzHSnSGt;QKN?CG!{)RUud+AF^ zE`Xsqq9X_H*Mz58jeruIU5C&{8h0UB-R2}0t}R5ks;=CvM4D&t=2+;b8yx9FB*Whu z!z|8|4F6WAV&NLSXo<7eSDq6YMl`0O(6O_crdPQUX=LLaDHG-cc+8JXrXyxTKVt4} zB>suu^|x zh~HYB`C7!a6-I~!S0zVl4zwHvdf*vqUpgn@os#P$vPRiJdwrt!bOmzdZ$J?G3Ske4+cL}J4C=?ET&Za*C*y@QncBj z1c>pBCuxQBMLvvikgXb}|bcPoJ1-XX#Eq&#JQ7a4VoX8I{mD zgru$~3S6Lkv$Yx0w&lv=k)$Uhwy)zEX9X0?wJC*0z6Q|VNxe1t)p&xH*pNmrqbBS6 zGg79c9HVUL@gWc7Vi%-YT9HvuQUH?i6kUb~UJZ-}Fo}?M>=bwT0}+*EMk#Ga4tNy~ z$$HngJCiB9`urWYV2RBT-ea#!JE6NC_|^yv*f3L_`Kt|BV-^*C_FTS%`el&7`PmbD zxRL#Mjx+-s>XDkE-v-=xb66%k1-Zwxq_27MN^s+?ML-IbR?y|6inO4RN)a5s+UjU| z^T5pB*7L7{`bmJHe5=Mq{S3(#rz^N85)6@$XXi^vul(!ohM6-=PZ-n_6Ud|QRvP3G z!pn_My`iP<?rko*XKUKR zdXKXGITxdt>zY88jU~$oVMnX_`7O~(5o$IIdD*^3_rP&{PCXldJh6cU(1z3Pqr|!w zQ7X3mAj$9pl|TkdMIIl9ZOf}=R@>X?C97_?BV3M!Vx+DX;y;!v42%ur%N)Br|K6%7 z@j1Bz=A7P!BxlFO=Fc|@Nv?1jy=@jLrPS<#w19Vk@`L10m(jOIIPh{mO$AGjbngOf zKGbg+$*Hs0DdT;iB?)Ks*$C0Pul}&I*73!AqE3YpIGF>~Ig3t&i8HfFp+kX=nXAzU z=+2KMqrPhkxS7~ixVtm9Yar+@_k2>87Ir6c<7*wQB6Dk;v`tU$(dP^U42#wSlo{kQ1l#dF z8i*q*s*8VfSO+$T!`X!KdC`UBJBU1wjRsC%`vCoZ?0!#vKW!F?%BI4)q}b0CKmyWo z%2Jw6%29|B<`2Ji`$mTxQs7o|O=re*!R#E1d}_%kk5UhsZv$bc`;|A{@WIsrfLTUV zT$CtUN9Z*L3=`^{&R7PIq6fd63A^enYqnBkk4m{fr*Bp|dGqKa7A;{*aDa)6!dQA{ zx7vfjvVQWJ8fE_P3xm9q;GtuhW197vN~Qcbi0`KK4>I9Qq5o5kzll5=-HeQ#RB$UU zF$9{TfYVgLH*`Ak-{Tl?vlrTep##5i82$|v*RyhJe_6XwU}L4pFm377A9#z&5eIl#ts^y-rDcUbUE2m*v6 zzMyS(JYWK&`d~~0GWXPfAJL!(lpT{H7cEglpoY&wm!08Ml1a5-D%VckDnO`R(P9oe zi54Z1W;M`LoQ~13-`ok2!~PBnRw8eRfxD{xc3L(;rrxI8UaTNjY zWb5g(J2^Vs<5B$TPSrXz6p>81@e59Mq-FibX08v}@8URtReQJtw!T#I9()xXTOjQUMC>svS41K>1PrHC8ZVumtcmAtp1 zIUIUVK-`@IXs@uI$e_bj->=)O(Y~CT))}TiRjO4aMfC6s%yXZ2Z{y2AiCQ4oA#_qn z^20*aGP>9CF|5Me*s4;R!X4pD2H)#8Az~?Yz%oA*4NIx3Ym4qWKkLIvaqWE{H|2p) zm37jmo%pP<%U{&MXq>FSxz~cE<@-Ke*vugEps(X;E=x%tNrQ>`VrHtFK5m!$tm~1h z-Osnym0XUA*AT)OmKz=JhqEu9^%2a^sBh3XH{I)7vyWJ%Va&)sff5((RhLnCJcCi; zK)3L2DfE~nN3F@E{mTP;9@&Z|))?dd(MoZm)c^pf0wx58um<0+_WW37 z{LG1D5=c!($VdxzX&lT0%#@#<^NJXoSv+&YLTjpoml*wJ{0T&NbrWb$k1`4r9`Tgu zTmK$xgCZ*y29{pOrul*1i}okk!)I=RDmRIf_%Hvj zraemC>TyS%+y3Z>fX+uk;gQ$%4}@Ck?R)=Xrm+|C60Se=97^^e#Y3XuwUmo^$At&N z)b$>sp&_?iTo^hLX*Ymp9-iwxvMG&U6|JGeh>t(DrYK(bX*F%YesWYuhV-@BklNq# zr*);UP%~n$3w2qsdSKmI_yAV2%S-Lyq}CI2f5BV_T0H{JLuMguq@Uq0Xw!O-ApMx& z{a1xsqll=-MU4i`2K(`t$j@Rz(+l${w~7H?(PgAR7(WD(kTVsR!dYQ>TVlJr$u4)T z#*mcX>OcMpP}aH`t{&7S;7!7P`BJ%}{Sqb0!}ncKO?7W)pnAyGyY#KTe<+lsfN;l6 zXRlv*>T1qtorgtlc++e}%IP)%0x@i(d`ad)e>+PjnzNov_TaMtdF8OAaXg0|NV6{Y zk)A7TZBH7b8P(fukiLDLIN={Yg(CeB zQSW~{_e!n1I+5GgI%V(@iyIUw>AZu8@jNRY^^BFp=$jzkXC%DEnWyc5;DwufJd8jb ziD%a1hk(bnJsvWZ{&P(5F%KWNVk{^Rg8rB%OpI zmHAQK&o}NS!_{o=sat?YQ~VN6Dn3&u>K`PNe&wX{Kb{7PbNCWegn*co<`lXDCh)^~ zr1S63jJ^OseMjXVfC%;#cIcFCTVAtA{gp-txB+K~u&6phi?7Gy^$Sw>i|xhmaPwx7 znj^3Y8WVpmJgW||dyq8(y9=Q;siDiiL+=q1utQ6q&%Qb@`Iw4C@zS-UQkwP}4Im-n zr22#p_%hpjsUq4s$gagKPL2E^Pr0e9Q$m*i?`*lJ3c<}a3k$c!~w(*);ji)lWR zzy^!o&L5xi<<(YBP!|@bgdMZq3c|s+;U>~ ziU%^7eNDn`jEa}|tFpfgY7GtX29c9}Vu>_!)PQIZG2&9OF1;&Q3Oq zvQweUD?7cEHUMLQAW0?GDQu6_%nB{gYcS=WHC;WaQrC`II@umV?CfTbz~p`m{>%2_ ztM6xyM-aZ4sRWhXeMb#)NmYY7LU#v|YZ7cdQk34@pa`S^nV@mCXmAkta%=wjj5SwJq8l2oO2w&|^em~u%iwG>FhkF{y9KV_6EfQ;G6L*}vGe{$ zFyDt^EElsC%$(I_obLp`38oZ+~{&aVebqvOA$tMBt#zNTd#$jt^nlI`sDPG zOaqOCmSCxYDZn}|GxXQY57X}~E7E+p6u>Pq3PW||tLJW$-uP>Tlp~J1O7pCM<{sHj zDxZ@_rJcf6pZ%rdsTRzW8w~h31SlUQVtGZaW@BP;uy8u}_<1o76c4s29&U7P400?y z7sh4Ta`qRh$Q8`_F@k^6thTZTXv>3O+9udM^8Na&=IRNyOHxhpDC`UpEdUpeW|A3He~M7Fw<}x<0X_dD&15k8+YK4W|QU0QZF4WIcb(OUb*wWoK2YP z(TH!bpq1t{(Vs=9degkW1}M4=O1q9Sn}xwaOH5JzvX_XCqpAmr%$F{k!9tcFEJ824 ziC1IPcci+aDIuoM(EW+-t&@QKhe|RQQbf@vzD7Qg(3zb+^HG_HdG(^a__1Jc2KxU@N>aKhe9g5rqrHyW?us?$ybhlZuN4jG2Ae;Mv5E%% z!Q-7t^zD|S@fA1$4a$saAsGt^!vyLpjI7Et%g~tBffAQfw$~bZ&?Q8T1U>)du*=mv zEOjb-lD6zAQgq{F-hJVtKyRAa+YGIvkJ>^Dhvbyt2e=`6INiMIWKCr#l{5->wQ()l zMYAEaGfi zE5*N1SUehOnn3GDYh~+>c3qCBHK+l0VxpTw#HnV-Sd$NIpBFZ-L^dSaOLM@Hu={l) zb4H(XNw(<`0$F=s_v7q8726;@l7aH6_b~E^Iq(z}KH5P=+1I^69dP~PoQ2U^TNSWV zwVF(3RRIU5r{a{3xFGc1YYTPuPu_sQK?WZmb~F8xIbmnI><(HXLUsCh;Kvw#?^3dc z(6&u5B3}b!ZBlPbQ0bo-lPCNYp`w+rPP|Xfg`NMZc{9D)HSmsg18njckMS#Xf!dt<|BJx4kS_A$NI`~960-o*hjxo zQBXp~WDKp@!~pl%!wAfKoAxd}`~9hWuwfQodoNVgKKCw$a6qnyt83E;TFLQL!SH3) zB3B8B{~H6z2v_cjzIU8Z=KgRtp-C`%f_<*lkJjPHr2ja@9n_vL`#=%QZR$i>lG36C zs(!_q&oZSa^@@&^2Ko>MqffmgF)C0|*^(V?Y#NDqDb4iQadTw9Q}vdQt`Hvkv<}}( zz+;NETBCZIqjczweH0Uvj%*0){Fmm}`%0ppUoNHOi%V+C z4upj@SL?OVd`bEIdlp@#Z@x^wd<2BuQY^3EfX+>ity)i=^A?;x+w%&8K>(>G4TE0v zI2x!&0l4Eq6|S*0dHn#Zo^o!^YBcZ#9GTmDre111#)HA(Daiouoh zN#bP%cntKHjfo|9G4}EkgU7q|Y!r2j*6C%B#AiQJK!SjO%`)G+_NJEC5WbsJs2~zM2$iFc)Y2d^{)GO$WC5=xVE&K>^-;%v zt3I=UX$SYYlqATLB|SL{nhMAW2pMHOL-5}->zl`Uow%0*2|Ec`dLnXdlz)ua>aDns z3O=aWA7*6fr42T1Jrbw3UQS-1#Xd9uTfWjJJY^Qtm<&oDEYWsX02E*GKxdq~pAoy( z`*#e`X=w4;IIlY$Y`;_@fe8t}IPtmK>&0#SGc90WF%O4yi#%g`#a)U!2z}*?!*s3n zb_6$?EX=dq%`C0Iv{0b^LP$6@)A-Q*lamkcn@eTzK?HXTGrI33sBz3ChLI)P?<9qi z%?m_9Xq1Xfl_;Zzczyk(qb79RPgY&2t4R!_?1jR5qfkfxb9wh~=qUOHL?N6y>#0HIBpFwywloP;&!b)Sf+fc!ZSR?{Y(#2KP&o37R?i5 zta%Q4P2y4w7N|7-mRA8$C7BdaoZ7!u*mA<5XrhB=C}IEv<@^ZnbaKp>cmxbv<<@7y z=-M>Wpuy0{)Xs;P1o9blk&-)7fh2^dVUd;1=iv1^?$U_AOMQqX8F2)0-CI&*r)`;X zDm%iiXFSCT>Bh9N(Huy)TvV$U1?1nTRQE{_XKZG?Y=!M0z_@v8NoXM=2#)0|3YpOr zao9!kv`r9QgGH$yGgS%WekWTvd6h;>VJ`Tj2ZZMxMc4Sc;Ckre1)FZ(WjdvIE`^%< z*)e?{eD4V$o&yvv?3qaoiP8 zw~*mpui#*57eHavf%nCk`*mAJjI9r+t}z`Uw~{X9o$9DMV! zEJ$a=xG79G?E{Zr53JYI97%T%vGDO+l$R6XraxiJsq!T~NypXP*g8{t;Qmw28AsD0 z6Il$#8UDm*%w)WQ$4dCZc{dMNtA-qS{q|E#6$(oJx%sdP-!l8{bl8vG6mY;H?FYiR zh;FVUU=wCwM0rhx3}%TBS{zblYR^QBM?5vDYD_s0cFkIY)A0zbvrlH&te!x*A`Gu`3RwK zf&SNgX-(u%`=5^-3HQZ6(aT|(!7?UNeu6U_905G4)wu~q7_-vv6RvF^A`w-TEa?N* z9c2J_fN;_8D1vWO&65*p>f;HH7b}4)U`|V~7+Z)9A1R5(KZvkKy_PDWg6S4Kj4bJ# zM)x4xr>+J=qmb!I7(wgCE|2+xpPe}ZMqYe=c4EoGqgK(hStiaw-88~bF1Q9<3udqsxs(RGh(!Z=afM40)RZ-_wBZR5Hkgu^NW(+7T zz-1HFAg%dMsE?^?%ZhL-=$T@b-s?u?y@~$6ItC47*%>$Fo7n)iA?DXoMjmQk-<$IG=|%6iSqfhtc!GTwpR2=j|wjf6p9)@yOUYa;(ya zXVLp~x&nQepADyy>1Pq|jdjI0s#+XD)<>S;l?%PyCvv3p#c-VdxsZlUO7(-U^9xWe zlNTh`q|+lfJ!ZgttBjjA@CxejA7|y{RC#O(XqNVZXZp=5$?{owR7^ZVkGYNW9=@Wk zStRpD&8!EeC7OM^-D)t+4=ueiI}VJV!yk*&0?9U7U}EdnvEs_qP1 z%~D;5L;L7uMbk~@!8}|Aa)o~u&D+$FTjJ{}y-9*hLY#+I$yV|5FJ|aL$x{@2wS58q z|F36~@T@Ve+94+Z z60({me;C`t+yKtO*ZS0i4rNUPyhL0Q1Ribxik@^CGr`g!^EIgNPkC|7NJJbP>arD= z_}plJQf-2T9++rdO6gL@L1re<>>=s-q*TZ=N(vj6bfL>ZOu~b4Xk5T=H0Ht3z0+r3 z#HA;QK>l0|$1&WvT`?~HU2ED<_f{tVPuZE*gPv2|O6(ZAEo&jt#Iv{V`Vqv000|kE zp)S`OD)tG_<*-y&0ph_?TJ^)&&Cz)|YGaqntO82VnF+ppGT3~4AUTbOEYIkJBbBS1 z9sf>e>S(c`$WrNOf@q!2q}8-j#qK3g!WG1}>G(R4sSOB}2(bUIU}K0A9a61NedqRO z&}E|=VgF1!NhrIi!=}KUxxS`T?2p`$`(D1LPE18jeJ$F7%^w%4|9$#N8DkflKG_!c z6c^7^Di<5;mtXe#icrT!)2wUruNs3VTzc!tyeEVO6hq-l06YJ;vAHi zy`3rAmUZbrK3>bo{)Z9W+Zg;-SQ_ZjFe+p8PKMAKu}l|#8*dxa1pVs zLMIj6(oB%js_g7|662Xc_r`#g^Sor+A}?Ow1`3VNODUR4(H*kM4m-Z|;>8p|wjUmA zL5=ne^Mhc12Q@j2IoRB}?Qo0eH0bWHHIUn~I=&!{&EDy|Kms5IL3d=~s^T*3K=b_a z%Uu+J&_^bJ->yPoc|?6I%Vw?>fd#FY@OF z4Q&79j_ebmd`n$&4ae@zy?fG-I0+?j@~0J9lxXwf6oxyh2R(8WBDV&n?-dBluYuaip_2pt9ES%|Pq2AwM={zx+)y~at4 zyHX-IWmARm$?g)7GhHVuPL^2yw~yyjQG0BlmiuwinhOQbno)q@_E|`1!X&+z2Y344 zfmo(Y?{3I*)LTX=#jCCruRxB&1Yu1~83zDcz99lL?~)>SeLb<&4w7~vBiI=(4-&a6 zoLIIfA1uQ_`Y*Vibu*n+Gg9a50r_P-=TOu4?CGM+V$m05^#p7e71NOiJQA~T7w_h5q1-@(KYgernq|2_CUp` zYw6(xqWX-*6)5#WG$3sofeHRZX+LE?B-wsdPNW9%BQGZfLxPbGJ_akEt&vQkj(K8H zR*sx;bt+nVJy3VudQM>PIykm-zCzx$)@umZy#T1it6X-b4R8z7uam%VKjh3q%sQGi zZ22vs3843?g*l>3c(4HfKLEg7Dieg>B+0VWX=+nmE;Ax6vb94>Ri1xbY)oue8e<*!xo7^E?04&;^t}@G&L8=dusU{9~qperN((f zmZ!jJnCpbi8at(4x1qHFJ##$d9%~5U6oDREDbJT;C>pa=3**HTIN_(W%$nG-;^6nI z&2Co~U0E6JPht)mvC*P#3JAIsG$Z)7Gu*Sb-F2N3_VS|y7GIz0ta(sL#l1)G#k5mo z@c(leg&4=?N~9co1;bu$B^VQP7k_wq58UMMmgWy!y6A;@tNwGCaBICy!)G&AOCA-w zS9qC9Qox!%TQ;Z!+Xkt4=Rmv$BGs3A3-gS+N~_+x7?bR(&Hy?`I!gs``;o_Z;8 ztn-1U*spKn@*Lt;B(_KaK~g#kqVBp+TDZxiBN&8RZNqo^&F!b=@2D)(vR6WLuL{a`JD5Wku7Hj3NW(ms+tBvQl^DLW|j z2M(HRa>A22M@BqHafcuHL?&qyd#gwXKnp*2y0y6=20MjgS`_~PrneALdJfYhjK>=0 z02iSizME`nXwZyh4?SP-!m4xg5WG$yLhlVar;SAtR}-@1cq>8wsnrsygCeDcHDj^= zWz?<$IUvWuY1dRX>JQk4VLgs3WZ+=LjWtZEU)6sh&b8+@%G0-tb0hRs>27s`#bAI2M{tg^!5)^)EY;qzXW`+=yS;qB-klQJ7rVp{kaglEWLyI zeQ&}vens?hKJW3%wEUt;Ew-nQ95jwMg4uf&x4sGo9fyA_i*C7MC5YzjJi!j<(_4+f zUSw4r-@^@0M& zVzB>H(!H0e7cRaUHsn=$!ONzFY5~Q1-y<3(&G5E;9?GgmD4g|pc?aP&6(Z4_PVrmf z&V0z67qd{nis9`}*OP7>$V+Wr5IORt{&aPQ4_n%3(W+^Z=h#PGCE^8^+>k@>U>L3Q zQ+Y;er|Pqt?D<+80@Y!r!Y&r!6X^=u*WA_MjJeq-6#qdunK$QtN zyq9{q%?#Hi>`dec`=qw~@%_a+K;D#c%F_}Z3>3Wu!6SAfTU%kNB8KD4q^ANtjv~k;l_kexgXgz>aqoezK z`a?`yYuepDmD7${bmY$t)hHcpm_A92t!TjWSl2!JE{WM*#m{A^o5W21}Z8 zXRpA*s`sfKU5ce`f&nZMA|qunw<^KGL2|Jrp&Qe3TwGjEIP2jX>)6Lq;238Rl7$FQ zD~_y~Qa_A=$sP<15_wb-9A07v+ig^RuJ7C3$1*`)b`SPXjvy!sN`dCgVnRu*D*s;J ztxTxTU32LpN7AiNsIVt-*+$3Bg9)7v_wVv3<0kB`dIQt1h3dL~ z5#bwRwXf5jP4b+$Yj~h>^q8RV`rDmuCsZFAf z0OaW1)_I4a@0!0)??LL`PfQmH8qLZhd1jKw5dgs%f@i{?y3@IP1=zdJQEjr$l4j+D z?EEsjEc*U65q>yk3e6Bcj%DXJ-Z6t&y&T3%4tt{Na7(COufhxnWIL7d4en|ww zrmgdvP=$SZYQzJ+!8cYrFwK|Z@B*{WlqW9ej4gU;w^NEb03Ek!?tgJc$~XZg$Y~JX ziJdQUUR(nBfBO53sp{1rFr`$P3wL<92IxlAq+oaBHG(h5?v-laRbx%W&bF8*s(|pu zHSBi?kU46AXng@ZCvs?!0Y=ESW1d%ap!M@arT&eEWP$V}mE4a4obeK_uXG zPQ28E18Q8F5D?Fx9yYa*w147uunm?%SulPGXLrn@B^L`v>ErBNi<|&pt&zh8eiq;jEU9Y=I z8i6|aR^lKWNx$R#BcACe3^m(V1I?c#SHXkBADRDXj8%n;tYE8;)zEu0`rN5!a7~WL z;vZN{H0j4EFFP|DWdbVB%gQ9jhqK3T4Hf4-<12eecv_XYSwso%?D3x1ky1^~o=?~Q z{V#%W67Fz0i6>)=Y(Lp0%hNZxacgJ9V}?hcl1kg!QFq8hU#gKCz;Nf3+#eJS$(c)& zmDi{vGV(b#al?Leva;mAw*j$BMIG_M+L58hUa%9kymEnUw{=E?ST z-2z#kDOk4O1xErqRT;?`vuAv8%iyd>k*C5o0c4Xy(yq)iAVPJF1gHnGP;@QHLi+qG zx}3x=9&B9dtGs4I!uh)895i*EpII5YrNOz%^>sTV3 z=+1a8nX^GE8m&pMOF6vg`CvKLOtAJtU|nmS*GFUa&~z=H+p9Tc!Y{qN8Q5B#uLh|L4f7z2`y1DL$K;5V}BczU&DFP&f4Y`c`G>uM> zq0wT5$o2{}g{%dSXn92vusoGJTHVAvwXOdp9DH1BSzt%gbn{nQte5bKivM=sJI^M(S>pspwD$k7x)4euY0o@MQp_%iiMC|Z6zcP? zS@0=kbQ|boM?C=xh}={^Dz7=P{l#pz@G`r-oT0wuX5Mc!q@C~V(X9|27Zgm#%Kb$ z*cPUa+kJBu{~*PqYvjP%bx4q(BAU3O$xoU0B1f;kMYrGBy#f9ATE(Y;kfo9LIm2TP zR{x*+4u((M@C^2QIQP885{hbkQJ9ve4~SuwuZ9+LOXHAXv_V)iXiM4-twz!?8q*1$ z7#~EEcgd<4hiduIZK$QFFxg{XJ(S)mVDF0y3~IC-9zr}psg7>+2gPR?S$7!q-7j>O zSC8Jr6q|4&f8O+S4U%^~4j;`(?)K4Ee3!*F;q&xi6{M^KH)v!$`lF6aD>Pm+kRd6a zLAuio>jCB_y#V@6Jxe~+U6bhIowcSFaDT@OycXyx{qy|z>o8YI^mW6HgQE8**&u_{ zNnR9LgM@^wNhG`FVDp=fu8mx^#N?$(sWR$c22UG+woTmUt8QoG4Z=8sMyLPJHOV7m zPmXgSR@AQ%CEtCld@Imo3uMIzuaZm?rB&~wNuB+yr_YBJ+0#mEqmO?PMU^211V(Qz<+C=q}t zZpg1NPk4EahDx7A53|Id$01q-j=9u)A+)VV6KtL~_K}P_AyWl&zgz3a`=^niXR6+!w?l3@<13RA)(ivK6IWO24!7rtin^;Yg0m15cR1n#Hp+LY6#r=q zxdM7ruchs8y0lz(6|YI;w6#`{-eOn_8)=K0--1it)``^Ca3ZH=D<;IOrDYfvQ|!;KhC|9 zIYW8CoLtQ|Su4!Yb7r-6krxIwvw1QrbPR(B0BSGr)1#SY(~eZ)YpKPh*aXWUW*)kC zM`m6tsG(U3Nv_5F)m^RAK|g2xw@zsgK5lCRInJ$t95s;9e{Tv6;EkwG(= zV9h?nm6eS)JB@}Zz7Q2zcb%VhqHp;*|IaMUDy1lR*rwoL5Hd7&>aj=wbHmrQY@I0% ztjogEUji#hH^F^!iYL?KspPTGXF4uU}%P)bBHiATn8NAC?&fFJ&g&8}Z!z3^0_Iwt1 z|K74vt|3}7&Ex;;WuocU9AEtRlo1J}3pe^@HV~DO=d=1NzWSo%vKETs$2(T9%lvFH z6+fK^Hm@u~CFiK>+!sP_zHoZqV@D{y&9pFf=xy)dcW|*Cfgg|VT*ZIQQZui_viQYW#8FtXKQv}- zUPX)VhY9|sb=@5X$~OqC(%p)SSAY~N6lQd&-BGsXZmTl^I>i|T5c{8k!z{}%WH@4E z&rX`(qWLs>U~G+Znb>MNyNS@TT#KThQuC`I5Vx+FDgXii_yi9msAhai;ua58Hj1na zU~Iw$ltc*CIR(9gE+?Xb7PB0X`i#k^*d){OE>mY1pV`;U2sf*Hb!z9Oh^R$xZc0@hv)%NWBbA|T*9JzN@3vghjQ!>&{$1XMiSy;`MN zi5er3za>Z8iJN;f++SK>w})4ZnXD~LCe`!2mE(7pf8%nglXtVR0%Ht)Q029gB;k#X zV#-ixt8H3Tlf8XQmXWsuF6iSKwz~lcUM5;RDa**>BJ2jXY2g#z` zpm;UMQ${P&80Iwmp_Obwz`#_AT3T>kapGLU2}J}DtseW(igXcfx%4Xci;3GoL|~YD z9;%>`3DBdukSQnXXA={Fv~*9O-}i_vT{aE*c==y#&4G+{yK@lz$uO4R>)m`)51X&7 zI{c&e?%jJS6Xhk~5s^9*N5gE7-@j6$HakK$$OjLe{9!1UQqtA}dsBZhO?mi$ zqeIyv-A7p9@=l|+hHpgGf~Le9P5o1jY)n`PDanig7^#LgUP{5olLZ#~bE4ZD&D;|q zDvm7<{~CoJHMaV!@{_|Z>3zs7k=9XmCC@y5PPXqHs9^c_t)@K!xa8jQmvw=+nzM00 zE8E4_-eFabUNIhCnqx<_h_#UsFL{O}2e=FP+>LyT_f1K_(1szWzNW1f!j?;*!xS@d z_j#|@y5xAtROWOUlvDbjjlh_!41ytEFlp)gpO6lgk}O4wle|{MXPHN#XiT{>9M_I` zRauaxMNJaxi~kvz>dq|47J${>ExWe>iB z{ln(dXK@wIs{K3)fu+bW_=@KBo{Xj#{O#`w!xhJ8fVE0sqIc_|Jsb!L5{+nbXZas3 zb8EI2gEC)YY4$em@-RJGG7_%LF-x3SI6v^tv{B}EjeISOM1pK5q?g8q@8`z0uizHf zJTMJv{Y=;PrT}taSajk4V7fVwci=V=Z@HFJM>A5!z#tqFu4_d}EmnstQ8fS|O!29c zW=$%F?wfL4J(DD*#W5;fj<=32M~jrsExE5m;|Z$u&)P~Sz&4lTzn1;2=t>apo>{=G zrMVQWBLV#?Hu&ax@ac;&Hz$Ja@mzm$Gmy8aKEC#<>gc^bX%eS1G|T!jU!4#+6tJ1G zhxE(<-x18sHf}PdryqBPxMz%nSX}s4Ml?%EaQKNh#nJt|~<7b_h0730^I_PP#U+ zm&zfMCq`2f21Fgl{KiWeF5U_nJlzPQ@{<)yqEv1fZ5v0VOuy;)|YHSdQ? zc-S&xqu`^6QcMfCYDJe;eS1|W4LYWQHuNjQeT6b363b=m*_M2|I?ac1M{aXwf8h(o zFEwOLa-Hx|n=XM@l?ugqEa#%~9C&hgH3cV4>$9k)np8}f;dZ(x&uAvrmZkOQ07rU4 zr92Di0_O5U3zx)?zW))U`vGg6O~Ee>hI9h*v@A8s0ne43BnLFVkF7v2z7SOqen6hC2+`^c|HB zlqpi*mPDb4D%mr~`SoL%+j%UALo{Ey`qOT!xsyyge6O5EnvROv9+V>x^s(q}p#a*9 zYke&+uSZjJ?(1Lhq-eK<&eDU#!|mjJbn58#d(`Xqv#ldZ8un`}7sN~w@rzQCv8A?4k6_ieCH`JAnho1!& zW+IAoA^*=%^D#_Ezzn#WwgA_YN#on^;Z|oPPI{&sB$?)P*eIBQ_h0iYy4DLAecpXA zH@tyVpWW)q??Z)Vv!v&w!*Ebr_3gXZ{L3@r zLsU2dp)|)QQ!{M-8%pFWmhH5HH~SNtgN$LvZE$EF;^RqCzzO0%*06w1-2`XyF-m!2 z;$KAzDCVSoINv)pAgtqasPcOT@JyodW1b2Zmm$^BQFC^o7IOxMls&qHjQ^6U{I_Ci2R_ z_AESF^*KGd`N~NV1!)j2BkaL%vVrELZ{+nz^5C1GVwdqby}O zM*Tpn4&AUnI6T{#N=wEL3XF0ziFu%GH*nx^VKGNr%0Vmb^caNzo0MEZqd!6zDi12p zv@xehYtRxP-#0(j5yP^8o3v{BHbr5CmhmDX@SfmPgUeIq(3r^F_94pXsy;z>vD26L zqZTF(!o7_9u9G_IW}-EaxNL3?I{!)ZyLKEeqqSyD>VyOtr|5VvBC2}2FcxG$awINi zZMPdbu;J#HvUNKp4M#W+S0X|zRlmiYq%nCJbwRu}+gd%YVJ~W+FQ&D+3xoK5L8Y(= zj~P_u0{IOFZ;y1IkqqB||^e^g(O$@%po4ctn* zOZul3vikJ8fCpw7*$$4E}y2j5x`KZ1w%s8Ef zcJaxX;q4S-XGG2xeG>Kza`dnCf&WzeIXjwb?8i#8n*&W#g!#voS7x_4?Qi7wYe{Rm z+Sx!tLV*~B?Y`mTSrDxpT^(dG?%Y=#RS|Q1z&C2}68pmnAzy07J}NyUkdlt7P;#m? z?u_Baa7vQ7AT`BJaK!_Oxt9+ySWbjin%fp#T&aI1G_{`!Klbzy-V1FvS$`rqREHj<&$z%xx zcevek@>Z-^k3PQE;AL4`_BKDg$Wa4PCtWC_<9_HVeHt@uF+^QjJfOWgZg zE33V;MPLUNBdij^H;S(m@`;W@&qEjwX1&Cs^k4<$Ih^$+Tl$w;8~vVNC-!7Y^V5dPK|R;%}vAeAYqPn zX&n~BbVjBuMm0Zf4hW3We-w}aDVKfxwIJ8ou!CSo!cWpIXK?qo`hJh2DEe_o(3O*e z&oR^XN3Ibg&6bKw?4D$R^Ebl()^-UQJc*mcfnVMzdzpxjuizwk*=Y6firfFp-5#Hj zdkiEYrmDU#ojPj_%IL`X>}n7w!?->-8{^senM8W7gKU6|IR1p2e)eF+1e)XW_?Y;= zMjMZ&V27J1X3#yo%#ZMSt!fb35X1F?8^aW?#30CIbfsR7Jg`thNC7z32AqiL69^2# zwH7UY+fl|_N2~*J3ZoZ;+)zKpzQo!*hLzrkvGD5f#$T2OW9zr@F53GG=lnZ``~G|6l+& z23@Ogu=6wRt`RmbO0pYAq~N%sJ+=$BZfq)FYyRvL?KF3Yyc;?qyl{xv)-x9Iuq*-I zy3hD;tA-&NTo&3^wlB*Fa8MZ$kj~(NAuZow030~hz!m9DW0D z9#y`;gW4!{HTrbAqeOz&P92MChfWHlr$iSLzb}m7%YCED4-0ppJ8NdjOyA?I*#)ya-aee7CQK?*# zdIB||6?kOCi|y?S*{r++a!Y@zITb@D>G!90FaKwIsO(o>k5|3b){F7wvOw?>KqZF}8o`xUV7wSEqH@ zOIp#FD;;eD?H11c(DTmCgDksLyYUV3r>=eXT5+7@D>CLi>#zZw{K~bjOqF@y%o(;? zt^!1R7b3{hEIqPx*gV9<*_9>Dnt8m#8O{W zYv)^#q4o4>wu!>8snp)!%2u)5MW$~gDo@L1@ji^JpoU;neY{cjm3nGj`6!Fj8D?=l zh=K%)$Nd>-hQQT9PRCt#T2E8R*9na&}y$*5)64_Qo(Pdh;jCx3jLM)5L21 zcO+W_IXDTS%yx=Ha@Y(K9P1?)cIb+g|8CCff%Gty)4%TpG1V)fCI0-Z(ZawKk5?#b zNNI@)o^3yj0WQG#+5$MprCq>fE4RBLGg%(8@hSjUbKwthRgp9~I^~(DinR1tPyJp$ zGV3w`+?zx&NyB`JzXpd7T0|9};G-r!g_fNry@J1FTO$_xQdnP)L|*?kW0h6_AWQHO zo;3s}ab=GF8RA>3V0o9OP26JeUk>k}BZL2y|2ldxl0JPBe$&qtV%AS3Nhg2n+_VG~ zI7|>ci}HgHqUqj^X1?0<>SaxwaI@_Y)SZ_3QEyCic?EKHk+uI_ z!J*Vags>BSP`*FGOTjUGQIH$MfA@8a26s-bzFl3zO)!MSRjLiXM~2#ovtXN0K87C4 zJkJKy-&C;x3{2WZYeyPQj1#`c$Pw~@p<_C`UYd`zPXDN+UYjEQ5fYd_K@J(>qhQtg z?L$21P-16K3BX*=aD|LLY4|HeA*7KuApc0<;FG|y>)XY3EL#(3nqbvjRrOf=H~_jL z=2CN6@9O`$W99tDxUPu^OtE52cGWm`I8sZC0(Oc<{#6d{FOH3#TuUf*-a@58rrV@& zbtlSKxmUUvwwuK-4cvl$|3}f?7TWO zbLrf(uB~V|ex*d1Qc!RYEebRYL+vW0$!+Ym$<8&{!HLQg)>ns}$Zt5l)Te6j>o$D$ zt(B#LIw^rDc=LQPKes5r&vLeOjB(TReyBN4q^?h$R~<60-)=nPUm92?4+!@n`+}7i zWfR^$cMqEgDcfndS?ji+kzJ`gkG?AtDcD`>s)3#`o=+MasPT|l=NrNp$lccPMXoo4 zyb8t!cHPdS2L0yj4tJyv(9Y|qa<$jAi|$}b^#U0 zDJ6EpOg5VvN;KOiIF*2q1zjZl`^4My=c42_(rc z4j@sly6BJ~Ub`!WRMUhMA3-EsKN9lc8%%aHe}VOb+?xWv2Idl@KAy61p%oBTb@&t@ z%k5G}qVfYI|M8Xu{f3Wq(ZuveKa7s5)Nn<~eHpEu&2T#wZ`4_~N}NZwaM2kM53D8W;6Z>&teMasRC>071tv4gAiTXzY0|D zXlc^}AxM{1jh(RUgo#^21PFzAj=q@_=Cz^=A1E~ za1YbG4xqHw|7rU=aoa8Mfku{5IO6c}C6F^HI0HJ-LW58~e#Do+*TD3(F{rQ$IVW1> zkj0OsZI0%bC-|L)=La#9jBw70D-@$#ppfrJ)_hZS>6W{segO44c(5&873Haoy~5Zk zTM?{EIPt%!cFPzDbJoknk4wzLcNt2C+swIN}#<7_mb{VL*oDS zDeHSgGuyCrsM$fDj)IThlayly5NHH#l57G#5ZEH;RKr;76m)kD zGIwc}94+Q$N>{qfUIH6oJE7Yfqp2k1iBdRR&zCeq55wGr8p}LiNfDXecQ3`cgFkaY z|M^o}mhq1z_?udJly&o)#KX|C4~YW5p9LNir_m@gBU>}|1~^gdi%jjU?Eh#}=tH); zL0SkvPq}PcqqdH^M+U_e2xy1tSnK8mXHY%GS|B-AJA|dHS)7y_-U9~vC4*ZB-Cy-R zC=Q&IN_ORBV{JiD?Ub^BjjO}OBX~Vdk-vnUEcFNks_TERM$oE6X@EVRq$P2GJ&8KHZqlF|+J z>cpo&jh{f-cYrlBGs!U~qB1r1#6|t8d$I=c!Y%J4mB9m{gw9^+5bh|RrsYeZ*8M?M z76pE|5>0|kCV=+f#>DGd| zy5s8w(Uj`3O7l_s3ehJyQY)_G$iWzHNzn;N0NJsSh|PFRBoL1bC8Bq0;6-eloD9>= zc7NctFZHrfp)WT4URcq4rGRPxTV!Q+;UtduQ;+zbF^pZiPL~WR;PggYa#+b~lmfpy z^ci>|`>hLCb_xnLHnP<@Lf{g9$*S5gb~bU*qVNoUZ|$P!4y=TSlPzT z>u;w6UI7epVsA7Qc1CzRpF>>`5~e91;xu>bZKGHs-W6dw`RS%TKeoro_3HT9rlV|w zv`5*JUHlssSiR_t3T1x?1dw8rcw5a{MjKHyVAmOMV8I|c<6~7!%?TRGth-UGU^YFt z#9rgm0(s%5Wz; z(Z_n`@g&}GAWE(>n)=qnn7A5RpmiH6%~Ya-04TQz|5~69?{L6Gm!-AZm!M5Kd1i<7 z%?pkNFF7u60SlqxW#Q>4B!TN~kXdQ}A35I9%Rrn!(u+_eV0h?@rw-JBv7J6IH6JeA z*GE;}4KLI$Kd+P=&1pR(v>F4WJ>!DbbS0${JUqb@5J~tLeWrf+1tkq`BC*qFqqLe4 z+BbcY0V5&yo2&6Q`t>UsS7U@T+W&!ET*nQ-2+r2^r4g7Ykh@V^q-44}{9lG~V>sn& zb%20R6*w0|gVLn)@3uS7$BY1|v{l2;BSi*67TQ_}f!*EcKf^BfSV+VrMPxXxXq@;S zrV#~_cpk^rs8$DEQy6884Xt+9RnYb#Cz;vw_=bbo=A7NVS(cQniev8d5Xc^bU^8n`?q;2s^>dQ1;q1@oT9FF-59R)68A+TN*^{& zm5}Z_Oc=u-<#`O&e(|X)8=`z>hPj5=jEslZY{rXt-h}znr(x?*9y1}u*}aJ6Y$!39 zpo=747l)4q^N^VSi)J(s#JonCF41Wf60_}wn=f4(amkL*=KVi%|MdthQ8~Wir+OF| zb^4`E;Ig2V;x{+qV}knKroJx#a8M2y!4b<(yN^a1{={V9(^6nI=}hNNB1~C647~sW zHD7BScxYTW7%X3)$80Y4Jy#YQKVC_Z0<>d7w58CsSWWG^2Pb_C!Uaowl;-lrU%*Kd zjD0vMQ+jDt%eT*VKd)`6DnLgbxOQKPpx#HiZ78~TG$F(C;hh7l)25wPm?D)_j-R&_O^oI;y6C~Rwox4DuCi&4>E6(dH0mxaq z6cMjxiQ$0+7$g5>Nrm)SIRi;W9weGa35Phho;W$! z4U>2omoYTq7DT8iu|ipK-ztWY_w>CI`rGQ4LP1{k`tT~O^`V*`ykFo!MWna&222Bt z=s54^QUW@pa{fnh*Qy@ZPtiu=@YdZAE4!(=rw;K)BIom>GDi5rWM9(dnI zZi9FZ&V-J(C^F(!0p@lvI`|Ir7Nx75EG#^mir@_4Q+@Hyk# zLZ>%^%ou2i5WVzN_0F)-QAK2&nO#ze5Z;@q7F9=3$Z?~_XUzQ=p#M1k=&c!<@ouH# z)ZKZCJ2SF-T;w4=w>TeOnqT|B0uxH^CP%RpozFeZ0^1?>Eg1hy`~b)Et)||}v%q+g z%<^V>rHx$0{V9XOZqPt$u02{@Me$2#!5_y0#~P|G7nJ88V^e}*6c6oHPh7=zpNi~( zR#6bm#1#Ds{+ye56=)!`zJjC>x1EH5cSWHgp~TJ+JA*IR=KQ*|t~uoR!vHK*^toG| z@qEj*4FaR&Fd#tBs^$sjd+e1W)pN4t(2v~us)XP{h(lm!7HgPW7F-`caH0l zUHp_rPEn|C)IZ?2C2)W2Sg5>0Isot^f-qDiq7h}L+a6&YmV#~N~})4FwQlBbD?^26{HM*^ZnDVX^*4YiT9@^}E0+nkh8rUVW23|R3Q=sDYZ z=MnWh?s|wmcEs%JQ|$Saa#b|ZfwIwNp`U2pSkpC3qk6ggSC;}M@^3eeAiLTE*a5sY zJ~MUS@zCtOyQF^t28|@4RVHE72{j_Dx5MiFmHz zK`3!`+`YU{vzS0p1{Yu$O#@Op$&i2)$_CjX0X6D+XA8h<#H;radWO(T$o4lJ15F&2 z7PP_e6VB3c|4Co$ua`LOn^6C#KB~@`zEY>I@ z{q4__9PoCDs+7P1d576bR>jH#+{>Y=j^}&c?NEY-7rxvkoZ+0eT*&!Sl_Q4*{9|sx zz@%4sxEwF3yy`0FJ|Xc|Z=cT5K-t$dPZ$JH=b~q>xFX(u?eO>K3;Oy+jdQv~dl0dx z{b}qT@}S2E$4k9mbo)GUB^A>7!r+71Ww5_hSQwC5`TMLxFvrre{N2kDc6mbYOYxCg zYc<0hehFfWC(WN%}n z(mi8>ke(f^^Gm4Qo}jk~Q+!$lOH2~tGd&mwNvEGQksHNv%LK(VGi zK&TZ)p`X)B#!f_89txsvpHxu~K#el@m6yTd0LQ-h`h#0PzVk0j?1YEs_`Fg)wJ{~_ z->$+@``E__=HT$SXI8?!6BE|OR(3wIUwLpedF99 z_Aigwyy@6_W9Z39*O$dJ@ES5NNHN6n1G*6QTYRcLRs+$u#ZjRIH1UY(>5iX#ZRj~g zq6y*mzu81P!asA1Fdo{7V85mG6m54g9RBR6zc&`^g}euHr%ZFPQ^y$sfOJHgWnv^4 zA2aba$wdf?#5X}8nKB5k#|DYityBmqmf*P0MEY7Hg88IonooT3I5P_*MlggDB%f%N z@AjW;ZC_{|+R#>f2bvB{z28|HAnjJ1R;s{f!}LDLV6d8lA)O{lUT8FxeKj59ke{#+ zX-QO4r-2WFVSl4Bp!7u;dOXS!sdj3PX{<=rtOH6TcZ`CkN?K;b7+^M7t&KqQYjP1Q z@2879N#I$@e19G?YiS_}n~F+qhlSz{Kns~n<)b4O0q)=_=tQ?VK)D0r*%V1`RKbn_ zHlTH_4qGk3Ik8~bW>R=}LA|7dcJQ9MfY`$>;p>6zm;MjL?eheqD_rA#`H4>OV`$p# zE27HwxB)|DYkoRCA!#C}nU`v~MN*(lt*eYN3jhwwhG1SHEDG9_;@%GFLNSodpa)fv zvI{b#tcyO@hdqDAk|;WHM9dKn@6OxISk?I*HOS$_lBQ zd2l<$(1{8<$mp9+BKw%XthxBG_yt>*>hrneg?X6h#{84($4Gh$+KDp~Kl*3*G&_;I zi7Lzn3EK%GvbP0;JQTzyzue-6!u#N!1?i>HNoWM9)(_zUTm<{CydHZm{ebrT`Z@^V zWk&jco;L8fD_lv847gHXvr8uYT8A0fxqLQwZF=)K^}f z57;r{XrQiH&AHb}XQo@(#SjDflw~!w)jm^Wo6>oMft|`ab%>_NsD2n7Qvjnyh|8qd z6i0Z%XCd6(Cr4!wAG*5~!EedTvkw0$`wh%8a1{eoW%T*lj6^}(d8$d@=;nLb{x@=+ zl8KjV2-Eo(^UQYH?!*KrDA(Sva~*9%lX2q0H%}wMWezBXw%oZK$_KA~(s#F=)YYDo z3}EL$T?q7)V6NytoQ%Rw9k*gu!*EntC+xPQ{|YL+q9;2ox}Eq3gxw>7X>YBdL-Khd z6ecL#eul@B=SUUJ;55wgW@H7DhKQHMB1l|q#k!(>U0Ag}{P8 zHl7qC#+4FnwUPS{l&qc?82uI9Y*-heRFz;_4`Cw3X0>+*voW0M0=>tP-GF$q!-Gac z4v%y~I>)VXxBtV-7KZ_oti5N7vf7{+C61C&A~bWyer6F=r*|%Y(MSI#x(D=t*myg0 zPy}=W{N|X+G_(eODQ4%Fk=VquT4$BGRrFHBwLe84Hy5c~TajgPN;A`WCwaHj< zt0IeiNGstI+=Z+=9YOB>KYu8m=TZnck8kN~Qb{0Zotve^MF+u%qf=@i3SG~97NoD- zKS)+q3)GzWmL@frk0Rx2h!TufRAKcdJkTA3Bc|`f6p(nQc zLE4>2G)zSBMPiJLC001vtU2$@+b>Mcq*o?M59DgRECcFm@|MvT`QaGV)5xYH=>BJL z-T_T|*~^B;x+gU;z($?Erq}i(VT;h}5QAkUj&>Aj-(IdH>BRn5*N06emq-m^H7S{H zDWKA&o9(rX$U0tD{1cZ@xB4bVjDCw2z2!&JqDu*B;!2ydGFPyE+P8TS= zl85>4m2;r15c{2oqJ%wuLNY zxJ|i)jfA@j*x+aO+62v!16eY4D7Tr(1=I1VntAm2*eVA)1hVyS4$AiV0EYKSxzc)O zQsP%)8AYd(8t;S*4h;HJT*YjY%2IbNZE{Uo!o`*%$9QXqStvF~f4)#9ZQO=+M z?ih!05aqyYof$vCJG-#_+yVNp`5XZMKLEgOBy?sQb8y((nTG<+*#ClFB`@j&%|qjM z_7K$wtl_L@q47pqII)`?qLiy@&~jqfrT0xN-W!nHB@kDye@l`tr7~!Yy&=6cRk}1R ziXsg7iL1klEZr=S;*-xk-_j4B3cGn$4mJb*PQ~n(fLoV%uVonJ@D1K_+L;TNF7OzX*^B@+^USy-MZxE^aFJ?R}B`=XJ&w=@oST1wKQ6#q|vfjAML4g9;?e001x!f-6Uil%qCAhZbS$Yf$Qf zOOUqi$p!QvbX-2a7$tp#W+{~Dmbv#h^viFkARejL+$VKBh*9>^R%O=OyBytwW8CgK zv`4!jIH7jQJ4-pxkQUKO1}{0a9duDjtG82au>3lo#MnRCedl!jaJt*qd=I{E4Hx=% ze9)`AdI;9+4lZ;=>>?IZPT>CD9=0xB(6y1KX2%K?m+ZDSUJ&&OPg3-+<;bT}9%2ls zdmUjdsh{tUYN(DvdTR=?Y_R#yZw9NrCAVSVp7R6beG?CzFx=+x6oX^l&kw#?~OLd@zGNG-^W&&7I>i;UKpWTpiKstheQz~ zI=t=n_%jkJ6$zQ4C%ffE{`dgnPDDCM~t4FGv;-DMo=0_SlDEdHc~ax|Z96}Dz_ zYbIULN#9`*nvZ$yoXO(4J&_Oa*z^+J8GT-f4oS!*s}RD4E&UXd7b!Z$K`;bo1slt0 zz~Y55WJy@dh|49w>lD8tV{JbS53+4}FaseI5ougIWBLvQeI&w(+?DK4|Maxk{h({P zB<*JEuqZA;Fbo+YSu0jPdwBhX029KM71a;YpgxP+4kA}mC zf-f5L92=CbKn)u`)%Y!U!XflySHZ%w5289iWH&ysmQ82d1uL2cw`c0tHJEfd0yW8o zdb()|1dw@PL)gx(dotq2r{N={y%mx03vZB9+w+c3w@;TJl;Ne=6C2*&f__;Cnv1aL z$(De?Zl>jzQL$-OcTOrI$Ic7WQ=2a!GRRC|9%nkP>%5$7c)YiSN>1ZKQDr_7eDFDU zF8w1SC0Y8pbS53Tde)gpQw5JsI2zn+JVk`nT+jeZ+@%vTs6u=@#}6N}Oc=nSqJ3T!R&G@L87$2P_gE#uW;h zmg<{uE52JU9WAKxq$Enr95(_QPE?c4|Lfn6Ua zfTsL9xBYnT89jA}R$shk78l7|K)Ls;Czdc>+qFur#o4b?jBz@b*U)w-TJEFp@iM>> z>W(+Ogxzd< zre!MGqs^$5)piKkqnViW4|l?%^!Dl3zmQEP2EsHp%AHiLPhv-8iEd1FIWeQxf?xHw zE(7hJH=plFdMt3ngMW)NC}OuG#|lU{l@4^(nE~oQAa~Tr!y@N+wc>}YF_$pi?qx1y z(ONWSe))?f`}+l=IGN=GO!1TuNxew?Gm-ue3RmqS!iL#oW zVi|vb0)TIhy-s(CxNO2}m(Iu91D5z?S`6@Fi~#4kH;?#l%Q3Ig!_j!&W^kIh&=B~X zB;eZU29UVk6060TzeEsC@C|qy;%^@KY-kR*BnBgM)(u5$&r=ylkvAz$!?i2t09T(> zbC=G`FyWp2Ri2`Z6w}dA#MO(W%US}?hX4;|Tk;KTzBs=BNR6@s?$)JbN)Ou-50@>w zMPOjxqHqVZ>;iFz>e>i?Ati6L`p+%jsUbF;4^7#>%? zM`dBemwmiRd{dQ9*gGI3(0}RD=<}&WM)tE3`SfJe!Nfvbaps*Ww{RFkVV6OpP6(P5 zknNibC${DrPG77;A#7IHE-WrZE3dJP!pr-!DwR|vJ--BXKQk7;*kKw|r~9*zMR=6X zGOTU<4DWbM7y5|Hal?S9Lb6`sb@p5W^GAs%(F4N*wy=9 z&ld0n4P@3*9$KZLgD0o+PkwsE5|&)E>)&tND~*nQ>_xlJ4}Bm@gyP22ojEg9%x3KO{!5=gJgBxT7T&GO7lS$ zDPu`vR{U)%kr$3)+t#1oZKfv*gfLj?0H#KX7>V(Fewxi{NuUABW~}+{GBRgl=Y{t^ zhDw8QH*UqHO`Q`O*=bk4Wv7)7+iwm03&H=7d}K|{;GptE5+UF@yok(Zd(`WblSvF_-|;Ctz7aKhYlDB=svwC1xLdYijRJ%<{+w~eWMbIC z{x1rMvM8cZtFEDgw#{8!{G{I$1HRxqrJi|`=ULQ&R?%A{>?yG+xmj3nDp$;lB^g_) z$z@1K{vcvQ*~#FQ?tmP=mrNlfT^Fw%60y}d@jfG!I*+Lq-W0(h?*H5T-P#Np5vPEW zGgotBAbq54+M?q@o2MTD`2{YXCr0*QJGDb&IBTgl`M?jW3OT^H?ouUkRJ)-|=KM5r zgMgdKkowt0PER3O7mHB&HYW@E^9(PmN;G~#`Mw-Qfce3?eq{AYru&=RFt9t{dn6nR zK?Mw^#1k@vy6Ye>f^w>1m{Lf=-YSYH&|EbB9e~@)$H!}7_Va`zW8`{sziV zl%Rt<+F?%U;--nzVKgU`8$atBu=?V{<&?_(9FNMbSP8>o2u4D{zS+B>tOL-|6N3@e z(*^pV$d9jj`L{)s2$Rc>$FqB|`d$O%D|xTY^q^aJ7r!>QC-}DnFm&8y7I;o0d-5*P zG7!e%+`X|_C6|qpxHcJ3nDML2K^{NxBM-v70CNn_B#2y<%Tfa$KKjxw8Qf{xZc(AS zf-AI^jmvqf3{>(GC7FpwX}%t`%gy#~Kwb`(TuCPTjyoc{ogkV|T9_o8aJ;Z-wR2BM z2_KI$rD=QK z>0z_QfABsh zz}6tgtM+QR%23Ys^~!`M4HS%ez_FRk%6PV-wLNAO6Abb1&D=1HU{?XvV5;JmNB*`q zR0(~T&K)Vx;=2yX3>GYiPC*I-e;u^ZC-o=sL~?${40@tohy^D!eR-IJ=)Kgb{DayE zVLxR1zvwB2tXqz!&S;*ZY8Sg$t02htOgHM^w5-kIA?|&s=k%)S_p;Jv*gx)(!(t#x?@5nFP)ba9k>s>*sbuTnD#$z}^?$)e*Q*8or zP@P@6As;dPlM;2gt%3<9fx}_cUY;^L@ja?Jij7Yc%dGEjZ3*5?Nq7 zV=`p=6Ag4 zgY}E$U0Hs@tq+6^U(<-YKlyAfa_A}80Jz!3-ZtrZIG2S@A&@}w7+4hWK%+3bnDuw~ z=k{43dfhyQVg|*H?Ek73Hv6=Bx6Z4r(o`dtSmI#p!;c&R!CAi3!}?eIX~%2WZ5J8w zbgt^1be>%oZi7R&&I+o5whk>U6Eaa7B%gn-@v9} zlRkHWgony4kGP0DoV1^!wz}%~UkCcUpP*|r(n4z@G1uI@38C$)+*@b&vwS;o$*wM* z=aZ~E2U)km-q9kIdF#V+C|pMq24TfIe}zBG`HY3!1KNmp5MNTT$Ieu=Kk)t*p|WYL z*89H?w+gW?`sxP4HA53O!&e{1j-m18C_;Z1{wMfj*`*UMKTu1PX%j>pz98GYoy+Rd zx&Jg0@S3(9r7IMeg?4##aw?OtHn#^F?N!TCZIc9kUM)(8~IXL?xW4 z*Co{LOiop$mwH$D?JBuc-=1qvi!%3ZS$8*nBZ5KFD)n3bYa_6t$or*{4bgO)bvwKd zM6&kp0uUVOz-(P2{^Oupv@$h^7J==nT(~KleIT>;a8btSN6Poi3_m_oui_D=sRgrw zTHNqwZpO^_oq(hi9}QG5+S%oLORN@!aNt=!jf0d#n?Uc9j94KZyOg*-3K2BP$_Bg*GKAYDy)6 z)J~W}ZUdN_fO<#$gE-c9FQa9+$m8Bpu`7-6k}pbnD5o7RPRjhHedg z|D2=EwUe&{jy@<%&1Qn7|MrQz$I~8Bpz|AqCe5MT5M=x_Rrn$u0tcdTeyYXdXxn$5;ga*}q4e|oZ_vQzEZT0P|*d62Q# z!QJj8qO$at-$B`^qocE7N8E&O%*wzxuoVq2@1xdXyJ|uVyDi$(eC4hk-B@ecKN*^e z*UHr-&{W+`+D*8{nC0}OkNxyAR{3TuqS$D=;GgIj=`dO zn;`ZO!&=V`)Ff`znfu_S&9g1Jn%<%WxQ`X=^7twJjWiv)d`IH;OhITTEwO}@Xxa5F}f<`puApU#Y(r5$byZVGfom~N~pF*PLG{eXkk=DB8;jIvJp{ELRoZvC}_v@ zkb*v;Rj~rHf(H`bdwH6!tWzjpPnz1zEQG-NEjhL`h&JxnNm3|o%+RbNU}LLv0(dt; zL!=RT{yg)8H|C>=I_u)jeXry8Ms$$$o4vniP9TTRueTO5)Cm7xAPql0+3+qFILA6q z4mimCacyUF&M%iW{OGrloR6+ujtvB= zGNZPv8k!3?WwtE1wC%;hkemaCU|Hx}kXG~=AGFdK28NJYr&f>=&8Q!`8*IrLleOer zTE+hP@C5{6_(l2IeA!wA_7B7vje51(z!)uMC!7be_%hzpDwOC<&jDCtr|t38Z~gs) zwG{ue!5}lOF9O_gLO8b^LeK`too%oIu{WyBWmD3(2lAoL&r8c{qn-hB8{P()WwnD; zO!(~OAJmQ64c1Jj1h|zvm#+? zJBd+_uxrb{x)<2F}!lhIVG8om2smOOkHtO5bh@ByvViX1A9>URsefZ7U}f+9a(VcFIuCoHIz7&3ThNxzLbTv(!hfk*iq+ z`$ZUER#$ezc-RNXXmh@`t$ydaku6^^cc(fu*ek&8aqawB8i~YQy1!$gL`pRdofi+F zDVrz`F!-W!`X6jk273T>yHt@x#$Uk-u2!P{{M3YrQEON_nslP_N-hvFQ(&~-@@4W0 zmbWDc+vf~nPg4Uu&g*?z7PlwEL-(+ff38Fx+*L!E`1rmg#On?mFM0n^nPP3}yYpCbA>?#DIMD+H@|+QXVN+9jpN1 z2+q;WVvm-BJ)f^xfSkl_=F#sILCQ1|1-pZJQ>D2cX^^k+s-BSc(5|XD7lSndMR!$= z;SrvxHQ}h5TsXeF9ynUPu|<@A&AFX}yCP{QaBGqp{mW$P&X1668aSBjbr8NyS^ql7 zrw+*v?4uW{SZhBX;8!G*LhM?0^#-XUwCg0@ng3^4!yc&Wb<)6&@b~np4|PG#h&Ys^ zb@)~nBxLlrZ#45l+71_jz$h0jr_$P*b=J=*YxXKSVO7W3il#$v8<)0Q8x+6Jz*9F~ylce+$@?$mp6} zRQsPPHs5+1&A)iy`%3lll~IB^{PKzl=t+ZoA2-A3xlOR7cu6ea#5+rK?R6yrai4{$ zw~}H|9ja>vJKazgr>*kk0Gs{LOq5QaDKuJEsfUxu*&Xh;H_*fW|*pWw=i*fs^-wcPzlEKWP`Q4EVzesZ(%0+;^=FmhhO)XXr*1E0T z-KIg?Hy7})QwkiSHoTXRTlvL(-m+OR!RO~Ho6Zq@vOriIxj~At%0%KdX>v7j{zU8^ zq^VBqTbQ%|@4Y(0iBZ$kC>4*%SsrBRFh{4!o+bW76>t3+ibC-kPRG+zS{?;E(Qq4g zBp;m=8C|Krz{7!nO~)QuyCELR%DlxRj@rv`sG~A4-|Mdz$rmF|S3w-3%MqHw4rnw& zd7L%KjWT1R<|2F&-8a+ofvCsrsOd68nScm&l?UM@!zlGb9`5$C-;=nrC;C0NobwLO*v+x`yOXauL#s@L{$sRnobzARCuW z>c^&r1S%2gua($|?UDW^!726Xo`BX|s7;q)Bt2ga7L6}HzFvBb6JY_hcJ5)wW)P)F zV=JF+z}rm4F6k9y@&O5&GY%Xq6V@VPEkmA7yBX75jS101uvj&pwmyDH?O+19{^DC> z(ft9(iqVcaWxd+lwUVbIg#~Fea8`z!9nf8Zu^6;szheP=+a%K*n;1cTa-wMWafbt> zN#>e{Am9YJcp{PJq8ILlMy)i5)nRZc2^MS8K-^b8j|y{~G968w=XF*g`}nah*neh0 zo>-rlpOJ_{F>jZA0dRvSj9wEcD^omn)w2Qha#1knm8t!|QF6i7 zyNqPwf}Hv`^H{Z=IcgMugzLdx&}mDLD(+n3Cko`H?Sw`p-|`$qxU$`!8~z}7KMggGlNxF^KuHi`pC^j zxcERY)o5}YnJv;&`n=yJYHembC<0Wfi#g_idLy?ivPt@u^_^1`(2vDP;Ej`RvraJw zqhqHuCyO-Tlyll94tdrAwW3lY3P2jYe)C?eYWdo<fb?Mk?<5MtZJ`k zG+ojNv090&bAx=X=0GCXayT*{#TAFJj=kCk0w_w6I3dd<#E(cld9BXbm_3&+sm>vW z4?|WwR}OSw^O*?|6C)<75{&z-tH}@A z4uohDQ5M1ovFD3i0YZdDEVq-dAa$PsiOyBeaE>+fFVX~{OBOE3#mh+S_1kT)Q39tm z$80)TIof-sNsa+<>jQOgGQ~Q)a^NoWhQVz`StDA8CbuhnujA&^HBx;QF6z`_$ATSQ z1sg<7!EP7o@!FOBWO?`5vr$gwC~k{AqXwq^B6&Rtclb6j*Fonn0ageb`Xu2l_jqMm ztU<3y4>w>2_RG}lO$-9uhWe@fZghZ`z(9>H$2@W>3o0nPYZTDzfT%9?H?c&=`#=sH zm+k3A-|SbEBq6vUu^@GEcTgp4MUr_c)9>kaGus8A(`0K8I2nBuH$rw&bydz>t)*1d zL6MuX7s>7Ik9!daWcdq8ZaiZ~Og$c>j50}UW!-@AvI%{!DY*6}uuVf2MsUAL7*8lf zWr_=JznA~ihj8^fZmLNY|BFAx8c_u2b%3-@_dT0yw)}HE>m0exShJ}d@?A8}xDxsp z4FTd_ns!c*!U(cEJ`wq)y$EMh+dz0sEcXP{_efoRe`m4y|FJLX-%PmUK^QM2sGC{} z=*pPV82gD9fl5zuspV7CbiRw0&aj`+YgCZE{P_z0flrrYb1GI*!q}P`vG+VTH9pMk zc@`d1s#uDQS!!BM&!JtUvhdguu(mv>;TbwkQ>cd$NEh+E#GS)1DF4O$Dye$0q|!A^UGsC?g!mdzevjIgW*lMmj(=O z28IYneKlg34tYw<;I+EI(CQMGhzK6xdT6W5ojg+c$kErzdv%U^jrXQXtjGj0O?eHxYLqd8bydF)(6hLOM`X|{M39uF_&vf84W z@->B!k~JQ=gTLv(fnU>g{lh`>c7IUzN|` zRtb#;r{yO|eWnB&QH^45l2vi~2a{8k zHSzUIjnRr$QPh-rlLt2W(Q@FB8DowrgP8+2{*A=qnAD0FA z_YD?#Y($v)W2iyHSc6j=aW6R))$+PNB<40;cNLZwI&Q*czq6rqe?XamYq}mybL|TC7hI8NkbYiB1t=0cSgwcim0S?<8 zNz1z1d(N#HMbgy8Yf&X)9o3)mAh|xQ$6eQET6-L#)gWL^6f#}eHR`CA1jE&Wl<_c0 zd_d}(AIBEjTEDjP^is*+N9bwnTb$CJ$>Wh*j!4<-U&8&AaTHOrHtUzU$i6VpKKlv= z!;}Z8{&7{7LQ=6-FFf^@zEWdoIE6-!-8X@86zR$WElCF?e87 zy36#qDNLgtgl-loTIe--Tv?IJ!QAwUImgPlvO=?L&Q>izVBuwF62ol2bgnO;!Lxv~6^0I#K5pNA63qI& zh)O)@D>25PvZS%-xzC9?;7+VL!QDb-1g2n#-_yC_4~epsPtR*J6D(yZKH_8)>up2o!FMj&iBb!1cPF#n#TqyxE~+rko~QOBh)|j=fSw)l494y#l|bNuhQeVl;v-# z1avh#qMUb*h_g$kT%#s2r#kV+Xf(bZ;LN@d&V>pt_MLzjDs4USlV-90zrS1Q$0o z3&-gwN(cfFx~NKD#pe10>2)PjKgglirxn&M73IAYSWT;jC) z`K4EE_Ojc#X7r78m^A#3>aqkf}^w#fXW4vf;5Sa%;@Lokh_f$_*zI*AW zyaNBPjB}=$(1KcmOpQ&k!%a>xnI_mR@1a=87p2DsiOX$7> z%3*V9e71(iYI{hs!uY`+MnRDR+JD_(VKaZ0lB%R7Q?jKAzkJJdaB%yx{g-iZ+>fUQ zf}IMrl^#Z%rO|gJ+n%PJQ_YhyShA3%>8vwROcxa+YPjm(zoe_ep5T#nmuzCZz+=5|RRec+>)i<9n?~VtVlpp8UhSVR8}=z--Aq?2s2d?) zzq6fspR}f?V-Pq8@b(A7*lXO0V+*@K?S?#|We*MZ)-q*?M#eki=cjlc|I|?YCXBJD z?93K-jLGC@oPczHpZ9=~+1J8)cHGY9F~Xn`sTKtTvNm>Hz0_iJ^}gck)xi4*3H!ejZY=wPh9cT9Q5SPewEZ(or^Z4@k=(1&N^a|Vf$ z3&Sxj(m8KprqmFkL8o<-nL-vfo1tE3C6tQXJl@qSy6^0vmJ2Zt+mOAeyFb?Ikyons z+NB~Z91aoU{dL$l$&a3v8g=Adft)3EjPDg&0ieO82EDr9H#F7~&C^l>9zS<&v031B zxN)K-q*oU9t7khY#i2>4pp^9N6TQ9B?2A-*5=a$_fN<@(C7`2usG6Ou5V9Zpymj_u zbQb}Rt_bw!!8&Dpq1RTTgLTwYDq9o~sRTeaaMUM&WolzSy7`pirHQ`TDnCf+Z>RX0 zm9dLMk_u{B)1-#|hd!&%*1#L$MBPg%8uk<%Ay(JunCj6!VDN{po25~V_YcM%(b=tb z@ud@jvs#;K%BpSxk@?e=j=)6o2d8BFyWVy9AafV{UYlq;5iHAZ;AYzd^bQG8=t-?<1jBg_|t?843=iOJH#5>Q1UkWqEH`iIsV zL5C9I<7sSPDD2ZB@f`@Bur?i{3PA(CMl zWD@a32qEPup4uoySooRw_)R#pnQUN5h?MV>a=xO}PT|bRD0vEhsWEyS%JZhgr~ZF zHtjH!=_x0jEd$o3zDf4tD8#ruord>fLhE5sQ()nMQrMGVxdN!EFZE$8{1(BH!A*9)_fkXEN^IFMY}n2@|? z!2_1?|K~7%C(TBeNLmbrPFrS_*fXIUICCbca1Ej@q%-{Li-DN0^oKd{S4oC!*$LbT zC#|Mp8|k6z-d$g2PpCu7xI|l1FnxpJobnyMdv7YWJ!A@A4>=%ARFR>iB-!F_)?g12 zzpY_xxodOE&13fdCorW(ykk|K0$)4hn$ie%$28dLmoTZI#E3&o+v7e$_V7CQ#`Y-W zQZbqS%}feI*i?7(^Dc17&6)(Tp@&|jM%!1p&E>Hj1w|yua zKnFWs0WWsyC#$=c`>~)UdgC`cPjeB0x>id1Y|9xsvB)ZNpl#ZCbf{cfOkVHar-iYp z3sgmBCFl+2Mb^TQ_y`B*^YV{e!I-8egt z?hZerkj^(gWW1Ct#OHb3L#~JdhSoe-4(iae7Rxo4^X2#UMflt^l?vp&_(ku!urvad z4ocI~aWw3c+y?Ft8*JyUMo9m}Jt_EyKTk9(_&?VQBN0=p+iDfaFX!W%5i&vJWVOn) zVIxytYWetFvYNBIMRY<{?gMv>@r3yn!a#7fAY@I@_1NA@B@Dz@NeT%1Q|926T@6voGSTD{>J@>x@#%mjfVGa{zrNqqC4iPCr3m zYkQrQ`dmh#1~z`NCGLSPVl8zrMxQ>7lsX&uQf`q1nTpl49TGo-x_6Q%MgW(DrR^$o4X|#f8>(oVJGf0S&w@ z)0HF!sIY7Kt6{LT0jHp5rQR!jsjbbF7yJZTp0p~p>L3v=$mZ7>>FiTsIZRqA^UQ2z z@v9NKBe38E0eL!?39P^D7FaPV@AJZ+0DVKiQNZH;9A~A6-Ko+zx{8Em3-*T+7?va6 zfoc2XxYG3-pns92(8z|uUm?OmcZ(A+?$24}NI1Hm{svEQsKBChB?)-w_o~HrjpA_SOYer0tf`a5Gi^lm+38SNW z*-DY)RZz`bxDxH$;uOLr5rjNqkTP{pqr0US&{?tlD3{fh}eA8M9cwbF& znUR;Sd%AOF{#pPjrFa#9m%s5@!v`+ZOsh|K(pjcvN51;4Yx0iuv=2Npe1_|^OX*rI zJu<%AAp5YIeEJtp8)28m?#el{%1B=_FgT)4Bl3BV6Xf@CZvz6&CBCIQi-bpKQ{V85 zfUq$7pGGS-kpx1v_{SeNHGe%1)|3>QU~JnI`e~1m3U0|{8L1X)vU(s^YEFQtSrG7=XH{FGZwZo2 z+rwaej}^%J=Z^^@Z?3_`kc13{;hx+9vPy+t;OZRD)-U%YqE1_jN?ffsvGAY@uIX`-$>PCL)pCQyQ4iKfdLaVX z5_bWt8gf@Qsg~0_7dR79hNP0Dg`x9_)03FSp!wKGhd3KfPg}}#0->C@+9$5nR|$sgqQj&;M56$_&vVhy=kQ%d-GWiT z(yR9f;hOT@r^=Lpa`SRq)~JdZgE{pY^f?T>Z0Z=i1`PmLKi^oS%s?dH)l_VV{U0ds zZ0c=)an1$6U5B}e-5}tD8gKfaxlb}g*=WK*mqeT=6|bu?pLAM*3TN&B3@h{ZL@{{o z#tMNGaC`Eb9?&ZjQ%wtk3%JOIVQvUjIemqSLt)v5;e1s(csT`fihchIi!?IjJoB!% zO#>-QWdyo#xzL3_rNl>WV32e)x%?x*Rk5#VXT7xbrzuCs2b&bCDR^~0#nZHlir0=wW#_sn=b4+Je|Vd19w^L%R`m0* z5uMtpiS+;opPWOX0_$PbeX)sb>nZPP_-E=k;WppBED@QFJbbqN@tzo3lJ`a0LsZTp zJMgj|4u5=gxYuA}Ls+KfxQRH~EFE|oMFNIh9E7z5WQ_T!L>6@FtF<8?BHI~qMhw~I zoy(9=N!$Quw03D2lJpn;htK?Jl%|P^yL5BZ%~vHZm});^@pfytNJE29Dm+h|f`PX0 zew230F{ZvI9w$)m7dWPq>a4A|7BsO}Vm5@+@Q$@_2xb??qG`jpSjTzublC&assH73{z>C>m#?oM+1inLm}Z4%XMCW8ywIPBjOG*2B`E zMeY;ogP{IQWI>ZBe4k20d(z&D)%UeFJi`I!Ifq;etY$ufvKke>H#X`r-$D(8R0i-kUdJ`qedUA{G%dhv_*az}Zyl{v zr*HWvyZx9zt3$T*qznWXB^EP6_!y&IQXNi;j&U zH(LDcJUL8fvTlNA`;L9}NZuYvBGO32$2Lm4`cK*SBwz(|X5Z3T30@iE@NK0p`ydY+UUm! zYnoQSxgFGqN=l_FG)wfbsr!k(G_=tlEq24o8z^G;A&Qe5n?_r|Y1uQ2mJ5!|ZvcWF zv5j4j9v6V|6x=LM*0%MM6qqD>FULP}f)ypTOI zP&i6L>z?19-^(G==URsA(HZhA=z#1x(y91tY_i@-1Mv3h{|ja8dBR=4Z*u}IB`F8J zo)J4R!Lfwoh2||W_~3uYpYx>CnZKu;sGZ{0(daFl33aM)0*~2C91KVO=Z-6Id_>i+ z;y3v8sMmjfg#1i9U4V2c;HD~^Ujj^)|zX2thTx~iLm7{(J$M}6*JXmEjaq!btmP@WVQh=ay;&d6I#p};6k;Y58tp{%7 z2lM22hS!DK!NNl=wW#ger>`2bqFYd3(5b2%JvU`6sDtG`WBmj?2{^eZ=r3DX6-RJU zFuw&;UBabWe{>>JyXY%Nu2yC0AKLAi4}1W1V~YdxG?yNt!{EmNVmV7*UD8b??s@qh zr5Q4dU(6wRc3$lovc&_b8qz$T01aVGDK@XsZjcdzwxckF`2y;Up1R7nBIAwNc92Fe z=B|br;(7W_Yih`aHx>-R^NC41ZlLUnCfC8w@n~A^bi%T>+!cP5_&KrUu5heTdPj*` zbUOH*02YX>&UZ=Jn`kA>pXc8gHaG1rh*UX`NiWn87_sZxE}&4Ke3>C5mOJFo3P1{< zlrcwN7B><_u#f150pquqNes#}D0FGI&*h|wgTiY|6g#wG#9 zwp31q$htR+rwzJ6cBV{Y*d5?X2!dqd3+6ec_wy|XDczp;*8`cCRxUx!npO958EajG zl%|F=L8Q~0JSYCIZ)OVj%1|Zc#5$8iX(lp2ZKc_GMBtxjnPk6K9MqMSPf6p40r1f0 z{dJ54QoO9A(QcRAT>4Dn)n=>5FB0i&c_&aNDFkjrU4Hy}4n4DMraOxkExYcAJQCW& z##ZFw8}WlObgkc9BLnQNopX>eXt1s^l+ux3R9aoT4(j7>Mk!cUulj=UmtPS@)_1=A zvzGMK_&=fJ{S5?tA8*HgG?wliJAsmZVaKp6jsH_$Nt`e6g{mz-s40!9dyuxrN=qt9 zEtRs(NUNzNIn*B7X;x(k`pG0_+vutly5{9E@DQxEa4Tq9R+q*gyf%*)$C5v zS$=sYO?vO3%LhkdB2$A>HaLKxPbv0*>w8VLFI<`!!wrn~u+u>%A~D+e;C@f zcx>MB;Y6+Qo}Rz=ySDtovzBQtw?| z7xq!58$8?TYg{#^-ttjnU^90yXuw(?>@?PRoD(A7Eb4TN54AB{3mH$jHl`-%R+S;A#OnEU6%ZQP}$(==F^s&RfwAF$^fV%haaB-c)BZ`TP-nbGDPH+ zurneeK_0LF?9wS=+xC09s8ax)7{ab-na|!)?ApFK_wJE!&toz)oxU0+%2_^{%Chq6 zk>Lk;uOJ`RWX-G5ku)HlRt3Ul;+ozW{shC3koxh^tR#Zc@wPkiS%Vtjt9sr+aLnFM zce_tqqimjsLiEv0F*3&QBcM8OWi5#%$4=JOjFq4B=(MS(Mi$3*xGtB%=_Ggzb{ z|CfxKiFotShE>_cu7$+Y5dfJuD}2f#G-CStyypVi-Fz7UG|Yg`Cd$$rbP&dC{;a^# z_d$r_o9X0IIP1xK<*X_Xs~PPc!1*ki&j!2f2BwaB$!l-}ntAs465A_)qL?ZLbK6p@P}G^Tzidxf9gu)c*kgKLEhT%7#%&ly)R$mWa&1REsko zjUg(YH5@QJvLybt>80aff$*J!C#s6m&wk&~3lmpg1G|oshgv6H@$NN&5-f&e4?n~j z{SdSP8Rk*{ap0V47J5s98|~2fBLt}5h@%etQh^&w^IoFf%eFQ%o~v_mEwb_|s|WPcIR-9wmu1%yO!+rVmXm(2KPd@WSfWX?<#gt$FIS=JoGat}a~ht< z5}FeIG-O;z$j$fO8S7f27@5c z4R~@?8at5@mMBu`=^bUdAmsh&OfjPVK_cp{iWGo~Pb{l1>uWTk<34391*p-aSp_3~ z!%E1Q4#6S)WFy=h9XV1F<47wg3VMhX*mqmy`I4J_pp3XV9de{sv1$2%nw4?ewv+!4 z5++eIxhj3Ut)xRQ9kisXc>XUL%R=izM?V!F2b3_Dvb-< zOnW5*`%D52QdLB8X;qS2KgpB_mYI?z9CbS}A}*TzN8vGY6?eB_MzPVQ_yC-B;*Ko1 zNIS;Pp|J7*_R{^gF-^TdjgkaVBUS~VgtH_oGyyISTp-R_(nQ2bNJ1Y$zLOM&Nmovo zhDR+_p~E`dm#_($dMNr5Py73gx*dp1i3XaT7U1}LiuLwtBF6Q*1vrScS|})nr$sm( zR^Jil9Gn?qhrtNqP13gJS)TnLMZ3tcR|0WQdIo?d{@{{km2m_Tg`CFZ4AE`R&v21b@gvxy@lj!Jww0O4rzs_{S& zr_vQFTu^Je7iiASrU~j$&%i3sb&EerB*@NddGwmH1n778Fk{-f_9_TPhYjiVA#vDy za{?g#-2RINR#M~luqUA(7O_kL`r`tGQsQobuAs3R3^eCDE9zI3H-w=mK}&m;rT?6u z8`liVnlK_axf;2{*hQ(T^7QJy;GhB_#3Hm01Xn_Jx{2H7sNu{d;9!mrug;%J>iHb0)=da)M>2^eFT zVAuFiLGy5hneZTMCFPrqr(|X1@S)KayXqb>Hdu_e_5%j z^eI<3zKEU@42TeZCve{Cn~oVo-HlF;q7B*m`~tuA05Kccy#{FZsrv&`fJUPLSiM@2 zI1ApPgHpzq*DU2a_0vEl3B+jl2&q9SMQ|14ZLhY*j{w9s5o#&r1GuoYx)>1m>l~fc zA^jT~H7Nf*a_SwX!W?x>e9_=d&m^-1#ZDuvPz^v}!Efi03|c`kGrcP8Ex)^xIxKu% zLzgX=&dTvwsA)upbk$S+7AbCiLHN>@8WbfQ13*<~(V{8pZ4y)il2%ET!X|B383PY?*e_hp@SL&1FuJgHqAf(8lwFou+>$_NRLw8%>;W zF%F4MbJ5WCuzA)T##(D)BlS4IzW|2*QceWAWn^l9e0r{0ZxA$)^_~cJZ=Opu5o$OR zS6vEJ(jj!5SH9pW%2sTgmZ$e#U5NtBc&&| z=_EQSaMtm_4|@)sp^~qa3Wwhh_Xv36#LU7$EX)mkPj8$F^uss5tM$SEsu~5cgAt_vyhfo^U?(vf|!XZh6P*0;qmQde4 zN?wha)4}y_C7x+Gz@q8c_7--U^vT^#2HolDsCFivWMJGj3ud+#MIDdu4;9Hnv@zn) z1MRRToS%gIb>plQg`9J(iZBce6Y|soO|I{WmS&G(E<$$H%24O}mWb8429;cLU;FUc z^L{MB6%vuaQ|m!W#dAT$rc0Q{UMA92q?rt@us}7Ci67Dk)msvQrcmmNgeO=)@35T_ z3;ikTKx_nL!LiE+KqlN)QN~T=S(>2KB!d+Gi=$0d?JYpd3oBGgn*lJY|ANrSseM>v z#;f?Wc>C1d{ifz5zo_cG7h6(@yPyp-^`IA=tkb?%LndMCMXB{buA@pK#-i{`50M?4!xcqALhVQbl! zN)?h}Djud9l;$gI9 zeYaomqZ_U)mXvHY_7e57vEh)5mXA&UR7E1;(P-(^W2QeT(gp z!y_U$yjOn3-cIbUwUVrb<96||&&jiTtRZ$dFjcZcv97F(qXwi3kyfuK!T4;;^wQZ6XtRxezWV3al-f`xo;GjVS_k>>cA168vw}%qSjk?qwJ@;tx zfI55}{4n_a_)Bu-0>R=HkT4EKtQpoZ=aAYg%vJH8T^FSu`O!rlS6C!Y4)Ug8z|?$$n^ z%B_NYPk3?Ve;hPmKCCemgPZ6tR#fc&D57~?7EdDUeZ3V3zK-xq_PHlXQ&_>?BLI^+ zL}#+vuZU-jqM6-^ep`2k`4NI8*yY;_E)}l3$9Yu290!&oqK(u_ByUCnWr8wFCUd0|R zk$L?}Ib~w@48sU`F0&(k<3PEGDk~WS&976)w(#>8w76A#0fl>Xl-&0bVL}S)w&EjM zOXKX!&a0rL(q^t2B;KJmZhGA$Ezs?$rPmpcp!p^TUGd!52>XwW{N0;Vcl%C}iUn~H zq4`kwla*0y8zr7F`{W7Vi9NUneA|ZzUH(N}35@FQn+N~$2<@uy%F2y?E#Np=rR;55 zJ*O-Bytp+LA*riy*b<*3Ko=K`8%jWp-B4V+y6y-tCe$s^+i9=Pl^BbF8 zltP4O#ZDBus}jf(KXI=8L9Wk^|4Fujo?wt*XNml!4sQ|`S5h&MCHwgdk*2iaBx>0- zAlL_*Y&vq?D6}kwV4dXrF+X95&N_VX@oT)OoH%X) z84t|20->{6=QEu`hCcAOrO2%ck294##p#)B5M3J6q0<=@j<)L~MTs@5G|kyBR+t-c zR3NlcZujwgR)rAYn}O1HJJPSaQ&N`Xj)lt%Eip~m!B;>AwJA@8 zt*K}eDcyTDM8A`$^w79C8%*ZWb0aa>HMnW2+gLU){a*@f`A&dcub76(0~86ps>nnL z80|Z$#KD*;^?RKvo{S%0&Zm3Zx#1nP8IMvyq<#6ef?tR;u z+5lXcX1dHl7np7~C{2`NVaSgY0*%BOmqzmt&xuANOi3eJ-cD!HrPfrT%=LfX(<3ly z5G(P8C+2EBA6Em38Hti!Hq4TCpQ79y z@tKIVUf>Z!t8V8+MS|Qy;$}I$fqrD-zC_I=^I-n3tMWwRrs3Ie$`epd4E1aL*F10R zu*SkC-N{l*sH z%Ep^xh~ll_mJ55plrTd@8*+vf-=8A%e3-ZC+@KmK5EZD0*7H?2tFA4 z&b4gH1gUf8_R!+<po@YxTXZ;y*Qni%K@x`5jV&Kj6JZptvbtvIhLJvTH;P z0O-zyLUPs=nns*bM0CU(Y@KhzdvWsS@Eg>%@^#dp#)&_@@K&zTY$JE-p zkYho#o^abR4j{!>w@^Jet-L}9ncX=~Q`!bFR1DHvd2|E*`wO~Cotq!%O@F_Q1-|d1 z06-q_Eo3^e`1Oh-Jton5?@Su;e&Q3Oszf{WJK*r#QqSEC6t0=5CO^B*PmkiN8W_>pp@TXj_ozmM;W?g1)_4Z%klzt=-tt2mF$NQqu!T%-bWLHQu?6rAbN$f)c=2 zL9;%_3W+&n)n_*%K{s}T(ut>~1hD6P%L;hTjk-ls%$~lrttb@+Ut!~M z#t?|0B75@eZE&1X5FkVZQqBMsGe11dYf~el=PO(Jk?WIsB{}dPM6w`wWPSd?q~TG! zfB9s`MikUKkY#!i&V}`M6LXdBTOwo3O%oKBv(6SYw@%7QLB`re45$7pt5KKR3yYwS zxGWg;ER2op`ej7ze}=i-s})B23mLuX(FXW@qQ~IFYpGv)Jx;ZxB~*HUWKI$*B#lQi zx{rr2cc(BVO4<{vY%b3cDmvu0v}D;dh4|w2r1omK*%(bU~|CD#)l=!UxTk@6vr z+l};O3PKzC9T{T2$dRw&;^sk+n`kDFux`Suz;Z{3k@?^S)}SWlkw=Xwer3{$nu0B9 zV{%)54wuv2M`85U415Nm9Ih%wd`m8w0n0k}H8$H$72CZtf{l|{WiQRNP}kWTnu!^? zX$oV7l4+kpzBfG->7&t7)4{H6tE9RrvD6ji^Ve#;ezj>9B4$61TTc%7X zF*8HFZMlz$1>b5$irxetAOq)Ux*Q)-5O|$aTJtF{*eBer9e^$qQSD z&Llj&w6x+d!Gj-lasm2Z_zbdp!UaFB?Jr{wi_#}u)rW=TZ4h&d)a9Pu47?%49T&@& zHq(XSzAUqfwL13A2cbs5ea&0N8L2X!|D}SXd>vam&q&6T{>5X9LT0ey~Ll0 zF$@Bl^!a2IhiXrmHRgtgCst*V$&b=hxY}i{&-{)Zcacg8nX{kyD-=f@xIMl;J}S&R z^|YB{5NhLUp|s~&z+53c=0x8I61o`9Zh@$?lHoo=4kKZ8Vn@BF)9h1lM{;EH(7lTe?9c>Vc{@1B5raIJn|o=&f9(B92&9diTPcosjZ8rSm0(SHB_> z=h%e=@j~w>2YPgrhi%DtJp=IB{!Kq4s*xwLXk9cvLh$&MfyJrnP>UB<$bf|Ac>N+# z_})j?nWxH-UVpZVY50!@Yn{)`IV%1#a$*m+;dguh;GYA%*t$(yyAXi*9GPHmrqNCz zK`m_RJ3_%0ii97J0gz-9anAx%7uX21maiAGaE8SQFeeF2U;XYPbH0j5M}PB0*QUjT z_qkw-c~uyy9SI4SJcWXvO3Td1TSQyOh!a2bJzcl4^3m4pM|!9W!maG>y|NCp#`zPh zyR#CXAmH+tgQICUikK6Y?$nDC7yvzNQ+I$Z+}M#T)K%gV>_UJ)nFQt@1=QG8@J+3c_GMF?O)GELg$m1^^S1SW0n#LxfoQv?mcqS~P?=Cz&t?=||876X}$BI4sUI21{38qkH{u zu17PGXrM($F$1e1UM`#hQ#H~|&}n#(Bc(u5IV3|JXjF&22#|#N_TsqQCd`_zG+NmG z^OW2A*+?WFrUS<6sot$T@4mnkT0YT!qs?8xzL$rHK9<0%!)kN}I-2+aHV-=Ao;-|& zI}rVxmBqe&@4|_dt%;ebp)`u#JQ~rrN6!snPNqp=p)Upo@lc-JNuC z89h@5XWApSWKkm`9c1fl7ZaWFP`TAn$SBFeI-JrT!70E~%D+gaR%9XdZ z#=TU)ahDl}g==|FJkp!>j)_E6M3Mf#vli@(AHtj2`mmPyEazar12YNy z(If~TUiQ~4=BJ?uHyzqkFd@`aYu5@kpH~LQcKc&qiBP=A(|8l!;u^Lb_!7m^4T=i5 zTMr8fRR{x{QXonXvyIE@U}=9R(M<0`7~QB7zg8@V#h(A03`^p_% zN~8mHrDdFAra#q3=-p{+Y62bxyXg^UQCh6cf0%X;rMEb$M1ST(+bPf;zm6_ps`ziJ*)azFft}q<^@I_L5 zi>=F7*pfpP5@2u@m$-R^d~-W^WnmtHD@{Cx%eu-a7&vfx(mm88x#M-gh`HgLzfYOt z!)1Vm@yP?kW%r!6%rY8O)rD!{9FkgRGy}{8!kHry>6Ll0G_enHz=`(WJQ#n>+{{fc zJ>JBo!x7X_{Sqf#brDKEC*75s5R`NHEdkV7NjYLg{eG0U9349Z%~W_S#^GOrWGT|z z0iXx<+ZjOk)c|>WFrJpS|tjT7#fmc!1 zkwC5l)wcJ)Z+ieY+Xx4fui4B`;V#p*6H556ybT0j{V{P2#5KSkm&nvNReNcdG|yq1 zT{bXxJJ_npcJ#e{|E(Zx9k0^G4(`)SThfC8H02=Mi-o=O$S7^g&}q`{ioQMG-c!fp zin+OqPoC3=%w0Nmmf-9RQJRxGJAJt$1o)5*9U458V(#I+W#~7$9lo0kzjJs^@vxnP zsi`(|*^hDXf!ytysz_10N!<{Lvw*LfXQ`bSC)7T4Hm;PB??KX#2(HmuVDaNpc9YA% zsHAYf++j^gmJm^h^qh;Xryjc9AA5JidpU`%ZbsJj(-H`!_+|0yO{!g`56YSiz9%@k zrvf3FruJb&Z6{`7r8C>0*@9E+tyJ6&4kNI_N#Np9%se7#@j zd`(V-!3AqX*?FwDb<@M^Kulb)$on}gV>r6VY?T>!lMshhl%6*MBN=;JHP@-Fa zacp`F{H-peW)DGG;k_-X0q8s$lG*7)8h!qcLxA24oi$ee`?_lJz}uK*f)%HQejCdb zB}iF}Z_Ptjd)Z~|SfnVLP}cyF_!5@Z=aaFtl3^&5reP9^f?nJ5qKuH_{vSn~?fy|v zlOxvUVlY~Tb@u}+(!krRf^r}%y*&w6*r5htw3jg#A~#~q4JzA`RqKK zdg=o2;R~K|kLsJ_ZY9cVQ}nyXVTVSBY`~bM-M=dmXw>6EaRT88c!{x3H4>^7ufApu zON0{|;?kjPywBDnGM7QfX5YQA>Le)b$Knm!uknk_&uKFnhb7OaVJd-i%3QVf^afvJ zay%?A>hNor(?C%t*yYozN`R@T)pp1|8yv2aCw1}{qQ7hX{F@M6+nfggqN|o0t38*m zY7U)IBhg9scCMbWQ>f@c%bVT;G5vcZ%Hw+D(XAqf41D|a$TwTM@&tCaiMWPW@Fc`X z_6r+vq7pz*-(FO5D+dL^HmCEXCiIF&xd$uB_E1rc2nQiYrnrFP;mUD#s7;w2Z~A+PegBJA44UOt%f?OzEpK41Xu1V%JhLbPN3`-&)CijdnejI9dR zv^HM)P*{3{t9b4g%)_^&*mFsM$|Y@SZe81!%*;2(^PYw$jADJ=dDoy9ESo8~az!oI zjDnXq>Lgdj1KAodi~*4%poua|k@}&}5XASjApweRn$tX26Q@WOh=I#{L5DpSivHob zVCHYo6F4K3)uKs|eXqO}txbfzO*~oY4)GVHy|w#}RPYy3a0+awes_2$rR_^FJ7Bci zsg_*!fnb2yvVol^NjmTH+`sggCrfxHZ!{aX3cEj8i|PnZ8D#9`%HjyDiw_JTnxJ1v zG59~6-1O4IKLJ-yF0<)Isnj0SLK+blQ;L?+9k+0mN7o(LzZx=ka`PI%0;=6%VH_|( zv;Z+hT6^0A1#LDj$*%DG18%}zB1U#T{olXrsDReya?r_bA-xU+qm=-WWx>40c0&>cYNV`Kg5UuIT8Fr+h&R`|F&!9x=q-a$#M|#V=XuDyw^BED!m< zgqDACxh0>sfCy=K%5BJrgQxO9WJge{8or;r2(OOG1J2iLYr(heNBUGOo@5G(diPgb zDzUVF|FV)9yt|C}x6;4c(i9ehd=BngIFDzL)7#zR!^boc1A9&@e(A(Sh(+11_qHj? zjT9zf@75z$%N0~iLVGCaSfPMgZ@MC`LuS@2)`FcvpF@f%_{r^PYXZy=UP^xu<<@-1!PnH zfn@qeBACpgbw$Q05>s~gF5UB1ekZGyDYefhf0^_hDN!^l^=rVD1cyc$kAF7I)pN7K zVd?y6QV$m2V?MQrNJ9nIPH6JTQ2V^DEjv4f81RUQ(qu9o2r?M!uJ-X25&pGGFomK7 z?d97lM*-UJ8?l0*ov{syWJlZTaa|)%qfoSGhp|9>v-AG$Mr^l>5$6ra_;Kb_$F&?8VD)|+v5(AY7(^0DeXtHDG#@6CCN*V^5n_-CAcS;_+H8fH+IV% z@_2tE0g_6)O+l1VdG}4PHHPS0rju^Q+6*Vj^N8 zgcoDCk!1m&fSZI#;PapZJ{3V4`tCTR%x6gy%9}+xk~5d}8U`IW2b!UqJK==|&YlhhKFJA91+hi0^+4Wxo@bs(4mWJ0YY`tXab*s{ zKxZAsg`W+_|6ru}0p($38n^Wc!CP`@&u{v{hadG-f&rWyYS?=<{{gA8$+Pw{{^KB7 z8)>J*W3N|#ICG+X$#V`@w9}XgNfwM0nI#CGrf@s4$i^+c9RCpM!{hZ}v*QT_{Q_iU zJT3e6G)d_#{il3qg$qsHm$U3Mwz7KIp{y8N3Vrx2P?MI)hw-4k4>EETV-JkiNg5B- z*UO!)cJ^nB#JI-8XUXvLG&4X9&uNwiPNrepZXCH{m@>A&T~$HY3y5p#%h8~^rDSH1 z|NdA^seNk;$bN?h^>%Sn%zBZ6S=y9ue6APy=`#F{ospFc3v&gHKtuy|$0U^^we%eF z&2r|@O@@grN*gT&U(rxj7{rjoj?-EToJyi|sMpt>78vOx$31hB5yunzYmAXv>W3CNHY^HbNFa_uyaEQ2yPMQm47?3QsLIo86X-fDoB?}894o`N69?jCd^#hGE zWN=?=XZ(-llpWvc1J}tQQh_f>h+g?&D+Di>0!ho1`%l+ z_qP@zVqChw)n!bXD=3afPWnlN=PRw;PwVgvrxnJibDv_|2E4>u8EkT`x|wE8yx&M# z%iwq)p@qmBd^8}~Tv3)Bocb_`WZBEwkzxK{wSHqWv_z8QpwLU8e4xPxQ)}|B~ ztjzweM1(_t5B#!rLTdQwLfKhc#xG3ce3%5HljV5_Z`Z~+tBshPh&L7&XJ*A;oj-^5 z!av!!54kUebuYZC~YEf>+kUoTYXjr<12L%&^{6R&_tA*Go|zByYBzNKJTxfP5@ zzwfZ+Qyq0Ego`3ppupFH=u(~Z$5qEmyOs2Ei45$tHm5!=97O4 zR}1W0Lyf-MELI;7mSJn3aPmn?Kr6~fuYl9;=P&bMTnLfR6*hdaaGC64YhR9VIOCX+s(7J9DuN;7OmM?MiNdwm z?y2kREN-1I+cmKWLivH42IZ2S#kxP!f+VCO?-iqE@CaUZH?7c)(hx27R$DWCK=%GE!wZ`?&YzX*5>ohVimee z(Lz=AhCHyszC7}<;DVRT!VQ`J7ouK(R5%_qdl)Jn5Nr zmrywtU;rQey&XhdSL0arAkIojuq8jnZhB-KN&k3$57sDqb6ucMvDsON$Xf$2uw-T`+43C-Vjc_q^I`OG^^ZTS3;YtnHQba@ zPvt|E^TvfQn-a=a8YeM1dP?8r#D2-Q~v=I z)!tSvG3-t-78ANlmp-||urmbq>N%&sGg%?ik}dAR?nl><_rDesE~wp-VYU%fHbIOW zP(h@y57x6Y)9P!n$^^yh&CP2X#_yhHs3Wef(gB};F#3UCq_>A{@#FlP*@~8ZH`hV< z@fa|OG*^J<5WpwNm_1bn`}<*3J?U3W)ivKj)Tc<=R5)OL8W%ogKEJoT9&_SEcO_U+ zbDzn?GTDuXCe=KAmWFRRCy?(gM8N7Vlu=_D=FHy!E8?*igL6K4=Ciqg;IZkPY&WfF zF|&|3)v=qdhFZpp-gu(O``A4jf<3*6Ttd)lYroXk7>`R?lkBL>9VL4Bo+RBTBC^Nm z%&=6wBe&j=uxX83fso~V<7D$il4oZjrzMDPS|*%Tq;&>sI9v$CrV*_;@ zge1OH<%L7v=ZH<`aL?p9b*WddgQdi2Yrg7)>ADF^g6*4;qjRf9r^auE>NUEz%k7{l z&G_X}gL?f3J!@kh&(Scwpv(Dw?FG5zprf)!JCQHx>lv5%l;==D0#(VxnAJq(oC)7u z4bF}sBa6L5H@-fFAyC!%k5DkSIwcLs>*-=e|M#PKg&B~uLVE^G#y{=&v{5yQOmBzkpv%Z(-sz$_%OX+zvm<;jb+y|enRaXFw z{;G`Lr549M=o7b3N9eQneMV1^~oXaLDWwaAY08wcBA>!XHmyEMY}q&=7=Se*SgIgW(Es9R47mT43TTdxxijAw2bS2=T&$B;k5 zwAcEwHBHV0YNN0Jg-y*a)86s$7`Ka^ES`Zsvjy$>diq-Q79UEl-^iLN`OJd^eN0!V zcCsQ+gCvLrEs>(FG*vi#&<=-9iuPBb{U|pQos=zeDhtNdh{iXYt`s0AkgJUe5RjS9 zd?d7!gB1T7E)i^5SGpErz*Gfag)Nps*GeFetbCZ<1%a#1EWG=^agulH{fmpU^N2~d zbQe3s&W|{k2!=PnrFhuVy?lB4wLAkVjb^3)O&~ z#*nS=6fg78^K@kRoB*XU7z3xo(G!2F;v2}4rxog;nB`-}FA+BDBY5L-77C}|HkTb) zt3;$Kz_Pp!e_;q?I2fOkAptm;d2XD{G{tt<+|0Qs*HneOW)8@ri-N~v6g^d|dIn3$`bX;cHkt#oeO?+Ht_y6&?tZg~X<&y~Ox&+5| zMQJqJtgS7$$zn-)A1f|QjU435g+&~oa6k0B@?mgD)fPiWJW;VJuKQc|GQ70+Yk63h z_??F7!K#i}qNMm)TJZF$;QT&-Z3&_fj=axjlR54nI!_;k;F%|3v>w;^{9 z7`WOy%+=|6@?E;CpTV0@ayN0X)VbaCBkRKmau3+BJEAnCYcs*313}pIZfkP8?3`IC zsHPMMPSr_Iv4z=3V!N36Duzl#!1`Z8Aq1rTHNzThpV*rlSy1H#6Bp4sd4OQv}+ekTBI_ z;})iDN=tJEojS5vWk6b-fG`|2ENegPdq(EKn6qkpX0xOBjF%lWw$0br=L0y`L7R`res=T_}rT zmI85djE0>r#gYCw3ApY(6n9q~|D#!oY+a4B9kMt*w^=${*RVy~N@~_%2V<E{b?}3$ygyA-tyK_deycfT~bq8JXBF{QEe1v z*IbuFAsmS(YDYKesMbqs06^gT086lv9RE_>fBzUOIz404Sz;_{JC%C3{v{vCN04~h z8Hh9Qzoz?L?jz1tMYg8Lx+RVX=595x9-}pg#DS6yX?;7zVz2{duy-}Ht5DqLUr_M+ zMlx(5ft8Gft7O5Y2b5XjF%Uph>jUOlN69Z|T_sd4c*R@anCAIWM`->xn3{AHl&>x{ zge7O5Qaal!pmp!{TY;ujy1xkmQpu3j%S&aSgzQ`*-jLr1H(uzD7cpP_x3=aO;6jJJ zBAZxjmToJ8PKa9Y_7EhYc||q~1_2&!g2aMWi8a8)@%B0p7I8%_-YD>-0?)M!x(QA? zxc@oSN=#aHZXlRnU~L&Xlyj4E{b4}$7>^nK4_rjsd={%+LjzS6F6bMs`*u&RsB6 zABu&Wh)rU56)hms-km{;AgenvA^kYb0o!PhkO=dQ4cO>vS@A4$>@)xE;SMV;K{Sb^ zw5wwF=@=t+pWHCD_t23QrDpZhfUpu$499~+I==`nfWl1=$a0D?M(F{3z|MGkaJl`M z0E8@0(tLaT)7W8pD9Md8IGPvyxMjK!U5~6wVqy%)N)%SV;f5WIDm{dfrqy0ua}-(K z6q)YoNENow?aZ+ib2{7L=@84vCTW(P^IBFQO=LglF7pvi?P5v?s(rnuAeOLexy!FE znD}Jy^p+BJ2_u>~v<4^CZ8vb;c+V(l?ynaq=8{&G_##%(c9-BX5rm@V9XEs2p5+ihub&NZo~-a+h>08U>Z5mh!v}Z?ixs*td>~095{py|K;DXVHi~ zGhbx-NI34yt$`42)dd%wcQRjX2%}hlX3?bfo4&^5|NwF`HG$4*NMqy=e$0qF_}$~onxLJ zb(|D=D2;n(d2V-*M7(Y5;659YgI;ygGPg<#15fT5)x!F)|6F__d);M^%yK*v+iAgzofRTw zYv|nCL5>qBrv<)^Z9UPh+j2PugOuo}jU#%#1SJL>4G(cGb277Yq+mc`d^7C$b~I!R zE3v}(ONs|Hgh(cYGp7i8fm9Mv!2`%6puu{WE2PaC*t%2zgJm(E#Ja>*_4)jXq$VbG zjyebH5a3(SKBn!%xwHl{-X{yFpmfEV=Vp&ktQE^t~+KC6|CcvA(O+@UH2oQ@sZ=KvNCtYmTIY?@!B?y%vC!@GY zqQCD>gI`zL(VvE^55ojeSi4sS2p-gL+EyECU8c5Oer>VHz!eFRJyBi~X?TmzO;Sdf zGS-u*v8sNrMJK6udmvOXb}#F*Q1mL6;uK=aJAXKj4WIW1ZQhv_ zVMhVA%0=4Ba!`BU)e29GY@+bw_lCC_Q7c`1@-bFfc};{uQoyHD8@ zIjST)71r(U+AL$FaHGCor;`f7#axH)CuQ2ceO~exoq22if=JszQ`6QN2o$9HCCgNI zU(+SsMcmv5ifkF%?4;`YD$I+H+yTKKufV4b=^$L@`tN&iT#kId~hT6r%0>yvTEpbI}f!FJn85o1a zrUria+<`RYRNPw)-~&pHDd95r`5$fNxOU5t^a?V#Lpfy{wwf$mG_r!o6Z)3ax#aeLIvoqg1k8zrb;6|pJ~=ta)KTLgBIw`O6pQ;Av{C+vtargW?XkVb zCZvGQoX%6a_}j6X7lJEiHd}Ts=ufqdb4aJdyq()<8i|t(Np*@x4UojpG{a%VcPem7 zew6sp58vV6Mi=6pDb;GSwx2Rg@H6m(E9DopL3E z&@VE0?6-HQFv3N(^YR8Bot!{QDf*evIH6Qg&uLFfkXueKnW&QWICC5 zq8HyFi~?eS9(MF|_4kDoH%9obv1JwY5Z}e9cccmNU=3-k0l6;#Xc+_chF8k$|DEZ* zLcqmOUHtnR>1Mt%X*e3z`fh1*W<6z?lUX|F94J%=cU^aIor=1Cj9VPIP)qH3aoZxk z%DYPzCN1GAbk;2rJ&;q+^gyP}EY%0l4(Rdm5HLjC^Bs~r!Qa4ZT@TpT4sv+K5HwkV z%^X3XsbT>o)%OYzym?vHb7djq8!ZcSA>wM@fO;em`EGLY`#KyVEf>_+MP4rZ5|wHd z^?0%z^L}JIYFJC%Iz*{jkL7ZazM&{6#FAJ67k?Qvrq7$r;>*#d`PgVVI&_q! z44rB$LQTwLT2@&5aUDl3J{c-H+iCkU$`e{68w%U`OxAVK@K}M@pRT=Ir=>;M#f87- z!ds^8ou?G&T7Ff)kqA{Q9Ot{oh2YuTC$%5iFCCZ-6Ue(6ZtlS6t|o2103r?1Enefn z&lfA6sb7j^K%;t47`N5*UtZx?XA@;AFdBq?WNAzYhpPPC=n_mcC1$pYI9yK#;1?mk z*|{tW!s$~{NJi=9wkYA_*yvsN=lP9o>l`%*&ZQqp6D&x*fDvQRFeH3b4DGlipWYaa zk6RV`cgz5Ur3KvYroM|BKPGI&BJ_^rwa9AMv=&I7$U5DPW|gorx1e<<$pBs?F+f{- zgi@zOTN2BeQF$@LLKYvksaI#3cBdZif@DFjjACF{mj!^!Y zR-y}1srfU|t#mPidA?r0<}d(9qmYg}TZyYQ&`aa@ZQEz0mVh%fHT@}`7vgTMu;7X$ zfJX>BlB3wb?ysq~D3Ml=xKwk92NWc|J*|xG*z39yR!fLvm}kX}_JxF_e3ZergYA~I zIntWNM0Ag*P=I{~EPUYR{_cUm0bf=Qw{4-H36G`!XRr1+2DH#UGV(F%>ptjT_)M|mvh-yCs# zNqC9TPZag(wo1>kx^VZ1QZsOBe^pi#z)0KbmUMTQGcYU;{ZJ9TsNtGq3vqaQ7$xBf zn$=(cehu4Uqj?!g7XfE-A~QSQpp=^9{M&8$5*ur?Fi)8sK}vct#r=0tLCV^wmae;E zx!X|h2r4aT*xl6e3?arJz1J!WR12PYc%{k&#m*m({484fzO3_-=%9apE+-y>U;+N` zWgZ}Vk7%Fh)+(=BY4SN+6!B(Do15s>{Z4=$5K;QSnQEq|j;EZnE;0zkzC!~$V$=-t zn7KOuK`H~!DiKt^98$jMfFokeHY`vw70E=gE+{)Rj#)#Y?7sHe7DB2I0wSqTBhynr zicQoAsKJ(UEY6XXbGcG9uJRacmf&7J%qw~gFELVVG-K|MtA)Q#MNXmlj-2F#T|ZTT zAFT=6;c50a#7{%+7|}EzvU*;(U&rIaR$5I^@e;6`3P_kAuyMenI7hfjdX7K4o^EUY ztsT;vF#Bb-@k9#hkwFV?;4%eIFh0~SHnEk&fPj-4=bBcLQdZ<@AGKucw=|EKERLE^^*ligmDrg{)xPsS_a)5Kcz~*f!`#gPqF0Q z>wa+Mb-=q?9dvheYA!WW&bAf#KmPDmh*b>_Sb43bqOc`TTSYelR|2tPTc1^!lov87f!HpO*9`9S!zo2R7-3@6SO~S0!G(9 z+CW5`dLe-aDe%bh0G1j6Fi2V@-K%a_zsBqJo)VyRoe6+b^v{ud^3kF-wgS!iQG0)-=Ha7tMEtEC=}`LGh)XhMhjm1 zta7(IUXGnP0_Ojt?~HN=#%}-aXXU>HxZQj|r^!wE$_wagA)K&|QAH;Ks)t8i16%{f z;5u4OkxnrHZD2%W@p#wPM$6USRWpq(F=j?jG4WMC7skTwPPNU$ZOT|g^r!490W5d{ zVOsv>ck#J~&jNq|&7px;fiI&a!!5|Oxg(C9*q7PRmRmlRvMzp;N8_-7==H>+kzGCm zUL}BU(KLXYuz##`V{kk$_*WKRWOa{L8R*t5;3^&vXbq+>;#`XYZQr|It3vEWUx)Nso6j=^9J0uz=*r zvU_6)<&uio4|OV8)@g4D-y2-<$zCF5=Zfeh#pQp3fu^UJxuJRFB+mDJHTxnrS1KqL zzx6Nvj_gmk&5;Neg&ztjHya{2sU4b(zB`fPVtb;X1;6DZ@Fx#>hw@pp%a)7gH4rD? z1ahEcPI`V5t404{Sfb3oOv^~*HZm!72?+HI(oC`Wa}v+?-}FU`eEGQEalqrly}8<> zbm-UP|&qFZ)!jT&P9qSf2FP8JT*zl2btGNfBWz z(JU;_D7ADo7(NQ~y$e83NsKXs2Sn8#xOLt5SQpV@(XrJ?<9Ue9IUoVtJm*B9NH1;C z{2iOQ9CkoclEPD@owW$sM$6<1B3QnNV5EN4Ev62yUB!0-^F-0?ds60%FxnGy6o-1hhX}gzWT=c~?T)j4hp4V&xoaj$&u5Id?*hPshb^_1Qz;hZ6x;&F-$Vgy`fvJk9I9b zXN{NrZb_?5B-o&JYs&4TD<#54KLq56#TQuj*(}`^>1aRGjmfxA` zsw=*E77@z7TLXcZjCc7=kQ^uQ#KOT^0#pX-jh{j%P1)q1TqSF#i zN#_);{Y|c|+(<0=3)6TB)Zw-WRTO=D(ws--xb=v+2Gp z;Ta2Z1VJk`Q1Kf;$xVk^!q6`LTYh)O_sV*!>IKHVvSGLEa>15bLGd_02o=NjlKcAV z0W{@tEX)&C-#x?Ag|O5UWH;SFY%QCAB8UA17r40ETYT=&x5Pz(3XlWRJ?k-*Z{o2f zDyqW}$X5I6h^C|9W*@Zzg3m8LHAjuIbuW@5M)P<(+t3b0dxjmZgwC-G1uG5wAke@y zEd%lvlGDp;-ZpZ`pW~;|xRopIe2gfBT zT>nL9Db=I9{0*4-x2qmD+FRs$H7Mn~fv z6e%Ahk2&puVCiE0_i0CD*NFe7jDJpE;Y!yNkWvC;CrCnOsk8m#PEJ&@2B*m&+4QTh z0R%p$XG}`=-xvXxfhgqR?7Ji2#}!B{W~gyJ2XriW%67121j3lUQx==4V}cjI60}Se z4_&HBv&>-jMEoR6bdVEGMKz~Z~}Z&L6F&nTQ0Vpxk-ylx7S5=XKC@8v-5{; z+dYSj8C`E#qTCWBo)5Eqtf3%=HWSUFn7Q8b%jD@&QFAa}S2Q3WYkdtCHvKiKcE~Ni zrb3Y-xwe|nVhXEcLqo)zi=cFwAK2^SkdQO5i?Z&kgN|nUAWITntkOj{pd=uHjIYl^Pb34h`>yd9IVonHu6 z*}e!7dBD`jsr2mJIg!UhhNq3l52xoTuJ~bz#_9DlddYsF!ZYF>ph4=+0dw7frxg*Nv;_wZNQ6jtpUba6Dm65naXt* z_D5Hl4O85}CzS!7mt+{@5&uQ+_4sp`;DB$(p6hS26cgC}mGeSa(A>TO$$JK&bPbEH zElA1{?tiK-K$z=}`(9SM&plI_0xxlK;47}Um|`r>zzlDp?UlI=8wthGK2kGr&sMS@ z_Lbc~xDT5lB+Oq~MshGRRL*409qN4>`$_8s2$IMdgj}!=5veagObL8!C3p)PNmZr< zeyIsPrJ_59OXaHQZH+1ONz-1TA+m5=3B~VjA8Ww}WnxWC=0{V^Sp+`eyXr8MBNPsF zdUM1-P1ExbS=@+j>+o_FDOz9QUO9axR5a~#?kt>j{v@a$cXma;R?slHdR*bQ27Rf` zHi-6xWCenV&kj#ePT7;OQX&J8hLwC!eMq+f2>#kCveODj91ZaAgutD=Nm)hb4Cwz^ zaf9%ULDi|k6(57s24U}_$l9K9Y`!eXgO$b7!6Zmp=l2Px=cRoCkpB=(jANT_b)*tB zP&{>`{Py?a$Bur{s%pfwmgFqU;lVsZ+BaeyRnxE+`1yq+u-E=~n4fLy#OtQYksi`a zqKeVVA;;Ro;b0VtxdL{+zz4HdeJsL&PRKtD`Ptc_OA*1NEReWt3w*E7tQ@|=yi6PF zC^k)n<&u4b_m(h0vN&Q4W>A@T_>pjkTRa<{qC;;L7rlNG)WwOf&6w;MPo{CmALM*7 zcr_xqUTj3GW=XeA@HS~{13q54xrcgNd@5{S5jA5F2?j5S3$ZQZTn~&Ahez!-axrnCh`Jmu>O!j+s&=!?y7Jv8(sYHQG zIB;k#tqcQ9(nxoQpFUZ~^U~C8;-ayL+4xwe@mr^gXb=%e7>QrfEQ+FVfQRl!?A1zO zI-?qdp~e}Ear@44!L)!J{WG`O;gFR6*04sPmo`0r0BeH%U1>z#Il%#r7$GY3tPMMQU%R$$3KPnFU`NRN(LOfBA9kl?jba^pXIpf=j zb)$BE$}9Yv>O6(wTHy+a?Vpqd0~&rMFaMz<3y>n|5*TEUE$+4&E++)MXVqyk&_w3~ z(^Enw0N}~v@)4lLP*PMXOY-98J*;T%7jeH9DOPT^KZm2w@-fUwj?6eCB5HfR|I7)@ zsC3UW4|PVOy|>_|d%YDQV%U6tN+Q?380pgXXa%=6kG7ebgmR3!13IPnj_#U)f z7OqLsj_nt5?FQdvA1nDNuy$W56^dKU!o~}?kXEQD7(vF>SP4X*v82V-8C4* z#gHWZS!l@_h+Hb{D42mvpUynssjtpA0t|r|hxhYUPsWaeC2qoWKGEhE2yQR&%O-j7 zbH#dZEb;aq9fYg_)C(=9MmEGbq_bJp8mz=RBAwXG?e1{Ow5Pg_TPP<|9tzZcq4=1* z)_`#H$;3JS=xB}Th2f$`#I=jY>U zn%&elTV}o}ScqHbYeHD!qAY$DB)L*eEBZn63Qpf`%th&u42!@<&3s zXPV(xeF_IC1~V6kHwX+OyuJ?ZmELKDR{>7pFiJ^?6P~>wvM`rfdNRx^GIgkK(1P~@ zHqJco8syAd$uh6-&<-Fq$?Bppu9>lCtt~GDCW7l%N=b-^{cyw1t7;-#tAPqS)YRU2 zf2ZOITe7^j>4!A297Tg2b#~C3wA4(C6w>Z`GS4SqBrST69H$SnztZAne(Cff3{8yp zrv>vxGf^uhfi!qK(;)>7go^RA{*EH$Ub6&6XG^^uE14EF{Hs&4Tt1$|?qE>!(lBx5SLr6?+mK8MSQ<5KH}fXlqAI6rUEEKm-TT!t zqazM~2dQC2x+l{A&Z@p=J%@?Ax7|`&WM`PYE1?Y#ipA!T?s2mWp+JF`QO%jMPm=!9 zEuA~;#Qy2&K3rM4eFC{QYwS&1BeHT8B>nRSGZP0Gi~AB!(!}b{dutG`S|ElqK6CT- z+wdCa_r(R`Y&jQ%A%*ulU}ub!z`r4>B;y^O6I-?aeMm$IwUTiuYSE)+1GXf3w!wu& z-~mDOsp*)Kx;2R3QPG+f6b$*(EuZ#TV!I7DDwgZOqy%=~2@W3;%bvcw zEqYy~H^%L9G@hDSer5dqn{s@n*~W!tsta0oM`vwQETm*rG$%4+U_Io{2vohZu(gc2 zXoAj|jFw512;Rb>Z7#IrWd&0+HW>UIH6G9U4y~sT_sq22D41|~5$d15TWAs9*4DUI zDkMlW-Wngk5z=I<>IJNef0R;4C|hnziZQCE#DI78>)sOE>G01fUb8`lArfJQtoJkR z@G&5*wDD_#uR%+wJk{nnLn8Q15Fwa(KaQiN+&V(z&-i?Uwk~vKY18?EDBjwg zsab^sASYpDI(!q$n{RllO|tGd=~j7A0jrSi<=?5PDc zqM1rC$o2;VwD}0`d-4{0P}0O^?L(HPo})3w988k)e9G($%0Zm_kdz3rPngEkQpgOc zjt+#tX^Q2JvDu1jdpum5vA}}q5(irl$ig0I*&3YiG>5`MkEH$#xm?X!o+L0WIC)Fdb_2 zl9u~Svelp1Xf}=Adu*FOLsEuzOH+;%{`%@w(W`J5&UF>w8?Z7%@?OLiiOE*)pR*6C zsxKME+04gI2}KG>fkSSon?zpUT{LpiS)!MXdB|8htSW6GNbe$7WaFf8et7J>sGS9n zw`a`n4??MArbS~lrD8XE$Gxne`Olm~L^jP0yGAXr zG|QF?%^ELrSh9d)zPE9@U@UKRd(jp?;+9`?F2U}?Wp}p zs3++G=&5%q2Jnv}$EX?y;6g8AUAQAWf`caIAD0{=vsGM7h@nD(Wi^byteDP=yab|5%eaX5Xq;y3 zX5M`GMOV2R=8pUBAq{6-)L<5Zb04x=b>r>&aVWhLIp?A?`ALiU?qFCPJjD5jM`#d4p5rmKS8a%z0VgkHG z<8Fi?ON~L_P?55I>$es570S1vgJCkk3$q14d!+aaFpO@(zcUP<4+xXcrtuED3#m5S>YR-$(Ha1ffMp zUj(nlfF2tPfgzHzCUJ!)>en&YAWy;h24Lw4&7|@DR^PJQAtKeLJS4?m^y2``!Fdu; zv+iuX%4u)rHveXG4>i1Ig))!5$a z_*soHElE76BOPQuCF%yde#7Ec&<`-%XD0|etx%N?Y=eIoxh0~~hL%IdLa)()bqre7 z1UmR=zOJME)uJGe`7jp(qsd+h* z!qHFs+Q9zemHo%uPg^OKM^7g@IA`H(?uB0smPh>CR5F)sW9Zl6qkL@7_%Ya)Tqgb$ zZa*asZrWNR$PeM^a8=MArH9X?;IVW#q|Q+viB~B^o_!vx5O`!637M__i&mI0>ph_` zJa(g+LV{%>uih({#;wL5;_B8iot2>p=&<>P>h80j0hW#-RhympF4YYziUhfOf2{IQ zp#LbV=rSPF5lMA95f0_rQ@yd&vOnz~L%;e^9ciq}JwsF!cu1Dty&rbM)`Hd=^0&$r z99Z#h;3)~naq=N{^}m?IsJT&1E<1t}i}DUI%|?Fh?{etb2_i!sop(nctKB}ou7I4T zav$9eCIeexO~u;uiIdaoNOu0uH`2bf7nx;ki!6Rbb*7Bpo{WOYC-jv#Rgk-N`$NYy zB%CnB zd~F4ypOAVk*(+KjRX*l4MvM-*@`%C`j~xm_(vV{HEfltU#_GS2sp=F+DhlIZfs)J8 zNia@(*$pAK2gHc^p~!W`RATrZ9HT%*jG^i5cV%{MX8A-v7y?pwRS$V+J$Rnti3vD$ z)weyS%&k;sqh;LUb)7pdw*Z(uUIPJZ9AmO9=W&svUaDH zIi1N>dK3jy{Ab4S2TjbdJdMeo9t>&{Ve?-Ftw)muT^=s2T-K$rHp7Ns@*UAEQhMXW zZQW%9VC9n_sU#)V{e!2`4dp{~oxhVqLegt)LR(MnV>3Pv%~d_3qTmapQFAwP<58Tx z3BwTTnJ~&6efHc)G_iuabVDwb7cKRF2*O@w1O09ZJ9(94Ml6^As1!U32=SRo#H=;2 zvNO$I5Z!8{zL>-m3{YXH-e@o+v7!g)W|=yyB%dGBAR^Mcsv(A{mm};XOiVR30R>6~ zMCB7h*c1zb%TB}6!Hnjsy>lS+OJKUb;zx00Z%dL|{Ox-_t#+5XS@6rT{f=v^o$mm_ zk%Nh#wcYuuu>yW`INLV^_TAso>nYS#J0*+3N$F1}RB?5@VUK1bWby>qkU?ErfCI}H z750WTEbYuXe%^}*S1Rrc4QVWm zI)Cp&8axNu(~$A|7DOt3Fe_+YyjQeKR>f%o!>aD&9t@t2mo2Hz7iz>CvWlIvr$yPz zbH?`9m?Ev3VU4sVNmuMPCKN$9mi9ElRu3zB{8bsO#x~eNWL_+%u?&?M;%G5JGD=R% zGl@}|!1?}k-e+8+)c28ZNV6~5{$F2d45M8g4t@r2{(V|;o|rCJFPr%-ATq$5N&^TD z_YZUc1gR^&YY-O+#h3*+I_%zw3y+^YkZG;f!Mj1i*QaL9IZNY_=F$8W{kGmftP|F@~O6GtDW?A7QsQ(4ePe=jY{MsQzgKkW!VOTtB*s{S)z&^%S6*#%wv= zX*ZL%kAG*iraX@Fz<|{{#gK}$-;+(WXJ&ib+BmjzG2H1cwvykzQ6_odzCUz65`mE_ zF1^pce39&YSg~vln(B6t>MtMv*RrtsV_UA=is_tsmx|H2T5_5UAt;n+18YcGv&c+V zn{@ZIJ28)i6G=D~PI(_Ax6cTB!rwx1OH3H(KcRg!9yMeqQKbRs+gag%jES5!zLsYG zT-QSh)tV-{y!e6lk>yr?x6afiIp%ChH(2ik>9rvCK$!?ylG*1-KJ!GA%0SH;-L%KF zg$fUcLe1Un8U0TlMcO0VJui2))X?{TiPi}naccn~R+-URyLbh*?BS`si0i)Q1gS*< z2O$(`2qT=+NAbhsP5Teg)0KDZOXc=_Zd9Xy2)TWGCtG^UZ}WBf;um)^@Sn!DrazI9 zGZ`am2)i76fR!dL``2jx1q6QsY5QU;eq~>zyfTd9Xr&g(?+BZMNZbnnWNF8^>wLb? zPmKyTUU|*}fe^R{>e@FRto@xraOC!TvgJk|sU-7N?ya5}YQ zU=Krq_F7hTG|q)+@gMj%84;^ZtQ_~RZ*g8FZp^p%t}if;0OtahKHLl5oY2^kckuQCEhbi`O%X}!$aZkJ zvw^;>bo#;Kzyzhh_Wy{p7fi%M?^7avF=hQ4a$M>;xLP~c$w{|}t~2BO^EKq${0;QS zZw7dvX;v*{STY%BNII+z-^t^OlyD@;_VLU-m#)p|U(c4h0LlrqkvRnqqydkqBN>w= zJX&AZH&uQDFl#%ot#)cI2vlZO!^3)UILyjIsN3wFyRdwtq~`J z=ysp}dWs=Gmw2lVNG)CSc+<0})f8AgUmC^ALc=L^qFy#rxh5}LY6gR-I62%|pzh@a zF%I+rI41!8?vd>ei#w>_m_AvN8du5^iv2!AZWqymh7R9DtKCA|s=81->M&sIv(HWB z^@eemLGCnRWR`dY6Vi2R#MW-g(aM#9n?l#j{tb28PHu-*Pl2P)*rcVCsSEe>i@LK` z$-j(g5TgiOPh#I5YsnKawoHi+-d^;f2Rw#g9%5V=X2mv^gB1V}NbJySM;Pkz1fFiP zut!=9&zQ(F?{4l;NV^&>dY&cz6L5J z(4Day6{|76|8I^Hweusgd| z`QiPDVJNHc0?sX}*21l=2u_C4SCy>`}{ zkz^BY!y!sgnuKfogQ0dTY8I5>Ek$?mD$UrseoC3Igh%AyuI}N<3qy*O&)y z2z-w|G@CS|T_c!{PyoA|x$3-SH8L^S^jpA^HvC45iOfReq-o%2E7 zE9&Qa5)G~RRrg~GKmhRc7bgPb_0Ef%t?1YewY;yrtsF>kqkMVnaKq5fPb|{bA3<-g#~`J*r~D!rK~e zr%N=j?#=0O%LQUxZQiXEt}KTqPC-(8UdY;uHO*su$^Ywf;*~&A+bb3R{m)hoYY0!= zr(k`JUY5>Y0(=`{`(moiWdAxt8r&{5vDRjM%?J6vG@^fL@uY8mru%cs)Ij6ye@{ta z$Kc&M_?kT&%`tr6e|J-p9_Xt&D}uKbl~)P^qFdzT@+&EyPsc5hr3bbpuZNv~Dpe`7 z>EvHjOrJD-61Gi<$Dfxfx*eJC?1Taa{cjT39saQeMz^C-{CF$HXz7&ncI)rKGio2} zARBVeKKts8+jt)$kETr?kd+7NS0;Z5)}V}Fy<#maH&H#9eyXZcDjAOocjbQ=T81{w zm-|XiCr!Zbsuv}~2Ij4J`)l%E7=C9+fy4|H@@VPLMnIo1lcJ= zv<_+VG+;GplLI7Uub{*Of~nZAI0#IwQ~(0UfL_u`U6ZB$R#({6#_AuB4G{YJ(+p1f zlI=dl7;MW&l59q~-|vf%Ju@ZybOX^%%hlXz_j?thS(k;~K@{y)=v*BS#Gju{;?xU< z>$q-`)|TX8)RbSZStk^&4!ywTM#*T+;7lX>`+CyB)T5{C{eh>7qFedM>N^;jMq*TD z<=&${&h~B98~W4#g-628rt$P1c86P-q`31O$;Xxy+%(J9N4?le+&X-0qwi}L54RBa zBxKxwRf9z-MKFbnuRVipT~OARfrS}qqYiw8?&~8NB3usAeOPtYnh}YvPD&WQpM-(m9L^UFC&yB1>%f$p^SQH&c_DQ&V z_RE~))Nv5Cxosrp2`H`^&zDDi@@;yFzve(~Z5eKZqMVt(IY{?Qb z#Q){7DhakxajfF{OaD#c-T^A~Mc;cotzUUMW=d$CscaK>#yXtK(n8$TC>nU}C9?V9 zDkS-N@c&AW+R&%8#u$iV36R}PG6W0=D>M4?F8O~>AhljWpZEGsRar}!3$cc=ozuIv&0dr?$gT$M(ZM#7;r)Uw6GE- zXWf+`_@X3V-)JG>#eLmEu>fCUdq1uTMF=ACO)Uv%B(?Aq<4{^J5=;fP;ody8JjS6d zLa&U$ZxkBjbEXSDCFYH}g;;s6=;wHeEJ_l|sY2-3r&-!O4%_(EFnvvGh?lAB80=oF zvWoK%?GP~yOV^-9NcoU@9s~KiDk(!HgiSgA1o?vCDew>zG@{KL{o*)mejM2iT-b1BmY6eIUZC+&_pBz;Jx_ zGL84U@$vZ#?JMLpKfxLz4}chY{#tutL4(Hvlh{Q$Ynx;@iz`^dGk>tT$gGrbt$J^i zE`{+LXY)7zD2eJetyRWLDegfk95Sa6=8IS!pszXe9s`6z$8|varYb9)FT3RlG7q10 zyAx;Aes;bnz50Whr(n4OxedYM*VswG!p&s<=-D)!^M0G6!<9z}oaFzFR5gh&z3H`J zb`ph4ydsQuGGHdhTP^gSdv~hZLAvMHZWLfLbx{PATu$60Wq`hD@+l+v_SF%FrgwG6 zXq*B+p5n;JkAn?&Wy(b9Ia2jpoLO5K%hz_fG*rTy`bVcoO0S=)D7|fal_fm@Yl3;W zP2msmd%$VWdmSiF&P91mQd+uP?^N&stGvE*^v%`T+__&a*rhTgqwP{3pToEl25(TDm`c35{nfdm++!S8^J#e6U~zARMGUj%=OQdQF_fuBE6e4Pqbzvf#wCeOVL zEGyJG7Z|PGSVyL%oMi0a5{NUi1f)e=gEk$cJL1KhYN@N_+rrFDV0^^d++l>-Yb0x2 zA>vFchL5a#WXFXanH^z@+BP4%Xbz`GXj<_8Pw|l!xBq;(hv}ME5y2pX z8i~kB*lmQ3CE`Ta{A8P89T@*fhroeDio8O%=Soq-`=oSMN3!OkYNujde9)41R7Y{p z_;6>Ok~GF=@a`{(ncsCyY>Uww>`Eck&1Rj;MV6)9j47oTD0)d7r`jEU z5hRbdE-dkce(vC@9~?Y*$%no9UY^ZHNsYyrurcJ*Jy8%Tv}JS=A`;(f-1S47_kt59~Ju?!5^c(>oZ*XWzG0{!{ca z0~i!vww|RAGBL|H|AuDd5ewEmGvm?voe^=n(t52ZH+PrJj3PyjgP6iwCF_!wGs`~0 zJ{7iayMkQdhjCc6t7-?G6eaU@QZXY%ffz1-uw^zu*t$|a`>Rw>{*2SvF7`L&j}&7s z+VMxdp3l_>|59?c(!*85uhOMwr9BoqG&jdiUp(9{N;5huMftm^0u8~)j<=sl*9)z! zw)2(uq#pZK2l0kW?wH$(Q%x|9ljs;FGh?0ud&`5Gs|HL}PC_R2p`GgU8wENE*;;op zg2~dPj33LrrGaX>H%syG}hdXlBF(A zQAU+dB4 zWiW89LXkQ{TwuDz8E_1;pmiIJ+?X&(UFe8BMSqt;+&7&^A$ss!qc6)bGi_hLeB_pK zGaCc8sta=ZSu385SIWKP>yo_UxaN7-_N0j19W7)Vjn6KFPtQedh^o&!X$?moE<@uj z_l2w)>bekFxC993^x`6&+cs1pGlP6$Vm((%@6Ny_<6(k8Efie2tE1+{=?(t%St=}X zW#Zw~c>&rmddYf=Fti20d&ch-T%hkIDP?&p<7+mI0p}-<}`{w7Xbj@f=GW^v;+Z&^y#52Gu zDU4hD9Z`0RucX)nCXay2x9DSk$B&?|d(&wXb=b^!zIv>6y|-(Za(7@_nBQK)m;dWH znM7FHb5y<@H+5|_?Vh1`I(sDMT=d*qQWT;uAnUN#?rY2EWHjzRDceMVYB?O&L;PEyp*W6B2+5Q~Uv z^yXEpzw}@!Gg7Pb^J<_}?60oU2SY}VcVN52aj%SpLh1FA=j(oLxGc7d(5`*Z z*o3vSB6o%q z>m2m-dN8@w1`7xy5)aga^j4Avk7DZ$+93^#v@a(v$l9XO4Mal{D?s8%QTt^|4bbV( zkI=@Pqp_rI3pGuprdn-u@~Q0v6M-^9I?MW$LFQbT4w>44;dZSrTJ8ww?QqVB=WXGm zR3V&Dc$QZCbO}wtAWtvp#UIKe$uV=iXO#Vy3{Dy!dSt_}LyktQI5M#;0W9zho&2|l zZWsGO#3g3fIPwg{KddEC0C?)&*}oVpmb<`_YmPHmp#{BIqC1zIGv0TT?dkcmSK)J+ zJ*vkeC&!&pAWsWA1Y{-MpGPUKZ}F60_6SFa;f?QGZ*Q4LmyuN%zIdF&0;h^W4mTeu z;!ADXtyoo1(7)G^&qy=)3$Z*2;RV?hi5qEU^QUcK7XPekY3IE&w6n>?TsW!hTiP^# zaq*S|?+`iuW>g^l4)&RiZ6i};;E+C_k?ZHi)8I@L;5X;;7tFbhK>8b(MDbTO2_mNLs#~mRv)b zZ}}IA2_b07OTGCW&H<}EwZ(xVpoUSm7Q`>vZ~V&f@8eE0 ziZhl*tpr155QJ1K)#_dq>t;TL^ByjZOsOqRo$q}Egcv$LX0V34wpz$FK-uiwt^XP# zc>tqRiJICsiIpc{&uGWH-Uag@B^M@jk9F^$5@V_+2WTp>6yy1~_;d0QpE0%J#amZ= z&yBs~_POqgv6A50d!JY}&G|I$&%cZ0`OIGhDmT_1cYVlg1Sh6k)vAnfRhgz6?XVL? z{LUutERF#xR$0wn#+)m=K<_amP$5WcbR5p7?0 zb$RdNf>3)`2R8IcDZTVo;>5A+yO~$T{H<;2ROp9usD_w5owuc#=y@hiHk`{yzQ{jk91K>ekb03g}=Js9Lt zkn?t*CBIO0&#tpZ8`(n-!N1-&Q2CJ!v;x>~Mn*^$K(EX72vD6<(e!%81vhu!Dgs_7 zLoVDW5oIo6h-#*LN{3={fm60(0;caYGc4=;l&H(K3gW)mBLY25aKLYv_tuIHBiGvv z^r2ux0mcid*p?_km$C!C;wYnSdfxygx*u`Fy!5f7qYlJCX1?d_4|67k|L3wzYiTc_ zMIE%-v5}cfB})%HLmwv$w^Y0ox=H-s_5_7_kZ~pznw-BeC_#yAMs$QFGAkdf;7?n2 z&TxW@hm%RgmRr+sa4bs2jd%|__RhBjF~xAoUTlqCy0Rz<^jPOiq%?Shl%jOLS|K~y zM-n!hQIC760NIC)9})6PDx|B`rD2;4X|2 z_D~%JF*rov5qgxgSKM0k;?UvN_cj_cCa&T*W5Th0U~ce7)kYOkKhl?#(^=v^54{(M zp5|0hKW7(bR(_rJ?V0*# z5$>}6>1bH-mR{OMzC;ie;7_ykxmRY!keyyQPWwP)m?3k!j3E;zkM{ug6=$Ra02&88du+k$ysAQmi$?jGUhjPR+Sla@z3t>N8b z0?5=Rk@T!cMdGX@^7$p&fRk}e?<>DxuJP39-(=9*1Q$+U(X^iIuYCWmUCR}YQMh&P ziv}%W)QFObyfiIfpTg2ejhhmWOiO6Opzr|UJiLx|#ETfLEb~YEu?%UCND(jRV}{k2 zWiV>9dATg@uhFfLR2LxliW7hq0EoWd5=zqBiDmVA2tJ^b>|Yq4dcO<0$qile(^c)+ zW4zKc0`-u#uUeEqajXsG#x{kLxkr6wiFEIv-B(09YeO6HH41m~fCmzRZ_`-c za!#x)j>IO3P4RsFpj>iSzuK?Jn%2C2g45o2H*sv32UvGGM5#0)p1a5C+<(}4eP)l4 zQXkr+x`=P7U$0oC6T@X7_5o%z$D&N(Ck8@lNfN*9o3C(qB>pNoe;9}JuAgk|yetZg-(asr{# zrhsXVMqyhbg~EywjTQaMKc_*uBZ;`Wpn0fBXsN0zQ9%%pAMxpX0tjA$m-v|FL>@&} zZKgz|u;#v!H=>w~N6~t8Swgc%P%8bGMlUcVwD9KXr*ixF#4h!{Fy`sh+!UiFDZhEj zvEwo9+&1z)WC5ZIzzL(g4c6-pYW_ix;1>Vl(-GmKPvs*{*J7-X55o+Ee@#{SMcI^h z3$odzc5@cNM!3Spec6aE`V`gowm^f= zU3aXgShl`8m}CYX)H`{jU+uAmw$T@G6Riamngt|VmED4D=_Z`&@v($2EFO-YN#Xh? zcSywWUP{G^%G?jx0#Wqs3m}S4>hx2w2uhY2!dcD*(RRMC*GC}g! z&WWXKUtw{`cQsW}FqOnhBKGRRQ?nxx1%1*vJSXi8DiHL(b1{i-NG6*w$C5a8ZJyuJ zzJbh2_lQA1)yIBc+Q()_De|@f%NlW)RbcWe&Z?;8Czm6GcsaHD{-osd{H$g8oT_Z0 z`^&l2%fW@Tyq6=COitY}`!qi#5H|jEobGQO-LHIN!%^#7PbRYh#Y6O#R9R{{6ukV+ zpy;ejBOm5FcGwl;G2MfPiuQN=5E`Z7h^xygyHa3?XvHX)p|$x;K5gq*a<@K6p?s=&lg*MK_7BDS>yN-fTak+6Y? z`%MoyX@~NGadddD1G0a~21{q>s956e(PszTFOW)#9I08Un z>B``PPuC?T9ZS5bP2bUmh1H8+nx4t2MJ4&lk3R1}`5Eo!RG8iZ1S=)B7;E!-3R$@2 zMs+STF>#ma-){et6srLJB_921{D-lq+Yu{5kqMW=23LV(q38M?Gw40mtCqHi^MofO z2Oj)O90t04)Y!-*eL~-yPmyLhWHZQwZ^VIB=`6Le&OJ})*eD$ONHBpeS1^AU;!zc6DDsmWJJF~22OD5nJvV&Xpg~PL3)z908$0iRGLl8R=XH}T@+3T|G$>cOo^Y_M?AaO*eu|ODOnT-&-+(h2Y+p~FTk6h= zq2+is@t_&kw!+JAocE*{?O4<3&5|+`J*0dFPy!3FY_DAw0aSo9CTg6xl12L|#8L?YFCJt8aajtuz=r6&^Fn>X7LF2D zFjnRJ#Eb_NqoBET`HFqx_a)$lJCabAWSstPQoQ(5q!+Qxp<>dgWxE$UjX;cO4i|?% z-lCMy+3s-Kje{1R$EC@ipiPa-0~eRdmnQ#Gt5QA8UL{JbW_hHM1%nI;ft=7fb8qQL zF+^r^mA(^dwE1rv?{V&$0%V5>qv=4UHXGLdE3vU$7fI&tAle~4TL2P-d4Qh_1?p5> zJ}a#cFA7HHzo{?w)ug+51tOzZ@caTwwx_L3&p2;7@y&<9uFFO`)_%BoC%m@E7tC96)AH825&Bj14TQJD-CcWV{$Xp%)lTr!JNa$c^5k`%MYR1_-vNc?>^#w zq!f;tcc703jJCty^>}0lP2AS>aTQoEya$FNI~QnO7^*AHa@NY!1q1Z3cAg7X7$TZ- zDjT%B45r@}KS0Yp{6ih$2690Stk&HR)+9H7K_(EyM01U-v4wU4T$SRbGO%ID0@Hu$ zX!|5X5Z9JK2qKMF`DXd7dRZ1qcFnX0D3O}e{g}aAl(~qyOHnOx&fv@)KS`ML-SyBW z4O{e$Hi4dY#0y4UC>lp4c1jLL)BDf~N*}~bl!Nz}pr0-`Dk|z^NH<`q_tN2omLf<# zE85iz-3()5Gl^Q8_{-<@JFqs+fH$RvLvkesJEgMNF_Gt;{~BX(%;#gy5H5zbM6m z_($A-vyOhk4wMkUT-Ro73srdMCcc|x9+;k{^hOpmKVW#q+f!6JeDGwtnzBPG*nEMI zsv|BnNk1aX&O&@C&y0Q_493sLBU<|r$uK{l5|RopoTM&nM_|o5cb7v-#mF4>9y$#tu3|o} z^MHI#tb0JolZv#xr-ZyHIHYXrN3+dSvb^Y?S}#dL_QLQxPpf^RqTc`F(G0>M2)iA` zobplT{j+jME?{7-DBOIWyn_JRxD?Pao+xQiURMFzsR_Oo-VsRQuziQREQW=%!jA=IU)F;P#apyk~%!bw&DMumWm!`O$ zzWtqHfNiU!orbqHt2-h+RG~V`lwEYB6y+RHzH~h6<)Z=$99t%8l0wG1O0l8JGsV@h zUu!R*ZTIFiS4i*OLy-$b=e;{I7$XDyt#!Fd!G*HKn-fJ=0yCLOA|N6+8j;gU4l;KJ zB4eU&fR@il;*nsVzi8K2;UV-2g(f@!(wpjhS;6+Sres>GLnu0FdnNs?usfS`hj|0| z{ z%-SldBk`!;?ZWc?2;c*jT;YQPV}yN-O-X6I=W5fl|tMBy)k?FB;3e@~~%&;Iqy*H>aaPX+fRvGiqC=ehRSeB~+eB z@lH62&x0sr1&QLik7OXI5D#5Ye+`V?DUB-ayu%ugiCrCAEYtr$X&>fFx5XV!NBny@qM)zTVk;N)u9I0*E zOacnw1vNL<2qrxHz){lhU61Ah?e(dJt-Pa5H>&|$u5L1B3U>9HPg~x0RMRexg>~1F zYO3}%rrfoXZTNLUegs9nesZ6y^ zakBr{O+wo@5vt_gW;k__y1&jVS>l70iqUA(V6Z!Rg)Lkkfuwhg_n&`33b&5cJycL^P7HOhJ@*& zv)K4X`k{fau&3qOmE>OkOZ}OWzeTtULdX2LyZ zP{$-gX3+d&=-d}XkE!3XBTNdu!23(b7wQu@1RtT+TZxcvn;uyEv$gg5zGEmB+3b!h z1;%#VT!yA(lY&<+)*0$ccdf!Qa{_!oUU1gE7OKNhB4#=XJ&0)0DvS<8oW{|J9^|`N z?s#^CCX(!Ar!jCu?q*r)IW)`up_I0ve2l<$PD&HlbKrHgs*r9v}NCH5;IJJB6Fq(q6% zU}#Edr zcPr~O6%3k{Lg9wt4q^+;_pDN@@($hKN;-HFJuxw!?_OgWL*f zeT!B*r+K|1(9dKFnkhzB0w)2t**-49rBk^kTsg@jTO`x9tjj!RY5;w^N|(-4U6?|G zX9SThKmbvMwy~GowqDT>IO?b!4zgYdZ)Vb`if0Z4CvkM zb2({K$lA$RQpnRcH7xKyu&ngLqUk28g)ZLZGY`K&5K!+dHJn;##uH{XiY-{-nkhAU zB*a8tv$^P$FF(s;FV&#mng1B zaEduIMS*h3DHr~t<)1Q&-xx8+x^Y58)FDMAT|obwVOz;Ib8|d;rZO21TJ#hp$7}J$ z?QdrU=pd?qi1F<9VsRw7b@vi&&HB+?FZ21~Ep1U@e&Gy~5A}ZmJRnknqN0s!@tY%C z*9{MFSVY%1Jz)QD;tYO=iiA}l!@JrQRgsMJTct3!FKu?eYS^3FAEnInF~ms8`S*Nb zUJez{U^S_Le*HEn%K{P z^;-4_C3cZTpgb^esM?@%?I<~19jF4b1_bvg`swXc1-PUs79K!w)Q70Whfv!tf#EmOfpK`#1kIUabG`eaNOZV!AoBi9uNbnh>BdIIipk8jiV zq6wk(n_Sp)ODeAgKSozs9V#p9W9)@NGFte5Nx!krS|PQm#o^8HGm4PeB<|o`r(~Jw z7jmxKFw&MQIbV<12H7GMk%>l5sY8Ye?-F9R4677RwNCjf<8<%WLK+mDrj3+9uo$Nv z|J0{acr4stuZcXnChTx9Y^;r0rPM*%s@O?>67Xd6pD)`vEw#om%^_^mSDz#+u~d0dy*1{!awdoXkEWwdMvMy4?0E7pnDT zI5b<<+M3)}v?{<`j=<2xi>!zKO|?cZDVRY}!fJl-+w&O;mC*4*t3 z$kR45-vv4kbi=c^P5i!-xB9pc%sBr5ZvvNd6|mmKg^aCkrAAA>k1yryYk_o9f`P&V zcipz_xbb$OOZ#1rJHj)kCO*$0x&;Qy6PiVU{OD(odxg~?zRa`lAMq3f>sY_&;PPO9 zvC#gfiTXA;=6y3I#yGpv{KYja#_V6!6fmE8#t2erhA1Wr!2^AQ-z5fqY)oLSv_n&g zz*jZiqs5K+81UMs4}Ym_`AW2F2|optSG5{*c#KuM@!uRL7R-k4XEbqUOEuZU1XXO& zi5ennV%(fXnaIT6sCFF}`vJ9E>l`@AvxRSyNrxE7W-poQ~e)C@n2@Xe!!!2;oZ%XikT)&tXWW};{ ztk1#)Ghmv5#4d7Q+mnBvL;YPON_w=MqZk&E>u)+VF;sH^YMornb}k?YCg|FN9qWbO zxIHJsF1D{372aiAQS-Yxmalxg5YhfrEpm}h;6|5`ATIMn=msK^pGXFKi`G_aiDmKS zEW=BybJnLP=UVE$ExN+?Xw9xFaz1KiP{11e6dVyTl2n6Qs2LUd-Uz?By9DS*im(~s4P=uhS z!<|NcgX}CFi<0_zHgW>MpFYrgt(J+?NV=WBd>N2^7qh1`SnA+vPpxA79zMsyUx=`CD_{XHr3t(RUsP8A&m*}|dR*VDKpTaQ*l5{+++THv z88*Wr%2GK4ciEQ3n$)89w$%t?sr z$xxP`5qvV?(%=P3?F0o#I4tgH(JtH7RgGakm8b|8jkDNnZaLI=R^~I?SY=QoV$6gB!clA|~1hsnJvBt(f|zt=}Z>2wfr7+~EcT zeh4eX;2%Kx#TlfQMGhMFZXfsYaPiwE6t&r2c)B$%CowNfl&<<2E}lC270V0ngVor; zpTS0dEX_*r-$smyT-8?WvvsHygmm2A%Am9=SD0U`ap^tkyDYk+kN31g8(KT-iuGIb z!eyq9+~}(lmFDc}_L{@6NN!{@!cdit++qwrWA46tt-t`V!#hK zRb13L(}_2s!!sekJm{zjT-OjyBFu@ql{L`l6#HD(OU$_e_Jnmi>B}4fm$k`_9m&l9 zjetlS%aL}&L5z@+4Xb1)jMIdxo&ky>g9>3fv{ExYP;QZ5#OjET<}G) zogiPn!P^0$Utannoloc;`f=b(om$k_E`C_HoSgf`DfH2t91AEvR?h52u{9eCOqZgP z)m_C3`b%78?y$Q$$5JD>I!m#Lr-QvTa35BDT`Wy$O^Sr=3GWuOZtsV+m}=}f)3ZNJ zi(pSHA~4sr!Tx~!;pLFi6amb*;9$EWqJEPsMt+Iol?TdIW@xeZrX;^+SbhgkZk?86 z6p#ZOhDe`_&`M`~7J?yQ5GFSB%3a790%tv!Kuh>N-7fS)mtXmU@;VD8CVVKN32o~xhU$ciI0m4u zkp?*Y%mop}7RTtpi9A>CYoOC^K6rM@AKr#%1M{R3{Ot27g4AHgE46v}CT8|KZxtOR?hEEv^?xGvHRrF@fgG<0%l$=p25I}~U!M5Bv*I)o8-d5iDr)($NyMY(SbUV8$(M9Mko7_8_$Vw8!f`tqYn%yZ zIGIriq@cNkHR(K|z}qhwdNA!pcoltjJB`6b6`_H-)+-B8>u&Z>Hi)C!yz!7DwMr`P-#CXt0$kS0Nq1t( zSkxJ-&Ek+XLn*dp^$KafB;KkdU#o}r0iG}pVnGz(eaEY1cH7e*92k&wp$=vf@q=H; z2E}?-s<2sfcP19sGOa6t-3fS2nhi@k2UD+t{qpupNsT@Mxe>~fU8C=OrYn3-F(szsFnN+m`~N)Rf#Rr5e(^ennEYL4;2OMlI1xk3rRWwnCKU=y z>Gu>EH)9jhKMlHdT^h>}PULBIWbn8Coh1>~21U?%o_xi*vjzh*S>^$R3!{CIidO$1 zHt{B<&SuB!&d?$Kobv|hj`JX=6CuqN*>Xs=$ba326NeCIhqz*nNWbz7bK$3M+A|4U z-aZgCBW2cpV9B_};K$?~&SQ4nJ~p3!Ep2-uWA^DM$*Mn&EQ-!TCOwsC`Xf49)Wl?z zBPSARdE?Yog&Tb`v{x4lrcIv`nazQ}n|W=7{UT{4W%l`=MqVc*grss`d;4a&!al0v? z7v2xI{>8t&<3Y>hSt2!c8SYEaSBJl1NU>^nEnT&*cL#Qk&M&-cK?9%g>ac%XctYRY zX5t?X)>rB%afBW#N1pmYcHMG*$;R+@WyXjnDiD$;=;} zuuXfvtv0IM&j1ae9}m57F?S08TD4{b74jD!0 z7VwjqLB=c6l4wV(Qp$14bKmk)%47Ekw_ks|(1WY7I5Ts0)0jrCD-kmmZK6(WW6Bvk z#miV;?R~)1ewnQR56o7G=kSirGzezyeuLN`4ZN=*%*um&pei_0SVdCukuN9)`_>BG z%8yDp&yqig9F1})iO~bU40Qrw*@FBz@5r(I_x$P+i-j5*`0H;L3RsyK(NL{gk|_bu^L>P2-c9z7@_gWy z^^Zw2eV?z&wuTBSCO%IV^h@u`aC&TnTSJ0O>ZxNho$WXoTMG}g@)n%bJ;#+i1~Z-9 zyozjj+P@R58ZGQH%#7PMzf}!zJNYfKny!p)ZpUYWZ_c^VRySA<%i2 z>)YmgoZ!uLY;0Wat)XINJ$69!3)To{?tj*Z5)j*nQ`OkjpRmqc?sv+UljFkf-=cvmH#p*iaIV6chsYHTGbp9^miw;B=B zQ5SPFz>t4_Vx^*dZRO99#Q83x_%q3B9#N&^o|&>P=@I(bm04-;1Eox=5zoeZ&>|j& ztMjD9+58&7OC;z86|Rn4!NuAS)xz4O0P zKj27nIP{b{QB>`%8$QSwTxmw#5brmkg`32I_`FzEos~aP_?^Nds$(u+*_PfdVP9J# z@odk28?-%-Mne9Y!SVjXsk{UpuGG1AJq}Y=$ua?%zQTh(y!516HW$|@)ZFU_5BNI> zqB;@Z7LbJVr5)FJSs02nPK>VodqDqeIYzL3$fUpyd|FG5_DMi8gU_)z65>MTJ9!Li z*z<85HEMtct^&o55ZgfbI9LnP{))FuPoxJ*sJ~hPcvE*CAbPw{Y@*?KA99<@FCh%C zDsqjXmVH3__nScpzD;=|3EU1aO?$^=^dRu+>}0APC2t=Br2&8@myoESj3xRI(I4LT zI+wF%#&d23kyIp2juAlbHd!$r4&&Ji-kv7Rs+bPzCuY

flr4%;w>f0XWXfn}bZ2|h>MwISt^u{_SZy%bkvx4z1WU0QV@Pz(bQ8LF$ z+agTV_Utv`1%V0m`EI5rP3UI0{C4r_9n7ZUdQAY+=BwE(3Lmc3dM z4+a4VoQcmP`T)viI5{joG+`()J{Qe42I z;v}U|vw>B8Fir$Hk=KD@J4oFWMAI(Ko&&O5(r>`G@;kls{BaOi-bX*R{s*9NHCku# zI%~i7gqUmqA{vl=b5il@WQ=bNqcxHRPK%J++Kc(z+Lbfmw}AGk>K9|Lh>ckuKjIDU zZnt2x0BXs-fgMDAhE2DOWKyvf4vZc^@}43c!6Cq>gEm4)jLqz$aJR2WcuLsQ)+vxT zaC!wtKvid_+4vm0@VRhpPQ2D>r*||hpgccP}6&5O!?{LHuc6<^f5{g zL=?H}^>Vk+L4gHLF)|Q8V8y;crIQy{yR~G}Y}TxuJG z2cq)3mTOFU*LG27S;QaAl9Kf^Xdp45D}SImRgvX=tGlQ>iO>xj*y_@cm2c~^5Emhh zfpm6;@d60!Wt?3EC6iQu*&QfCl#P@ zo9Cx=1iH|h&30aG+Lt;+4a)C1&c-)MvR88pRw*i==Z3F7^zl%V`u594_OOQwc~SKg zF>|x|Q(1&p;lI8+q?G@Q68R-UH1FN*I}b{J1QhCvv)yS-i>0wMZITGVaA*QSgUMtp zJ4zDPGO7^o-2G5Ucutj4fm>}gnZ8p1oN5FlPXwvFoD$H^h>s*_K*EMRXn^}?M{4^4 zeCz~q1MzA!1hmC~N*Kl$+pSmd;=k26>yFUU0NejH(AKfNoIXklvJ}3O1rz1G2@JB^ zuh+Pw-W!!0q*m9(2bia)rlA2A6t6;p3SW0bCVK#qxnbMhydDYpAlCi;2(JX+AO28!=g}OSFaIq29XjeL_rwBVo31my%%KIn;L-Z_Bm|{Bs%?~5 zPUIBnD(7s{<2Eeqm*crn9DV9Wn}Wa%9ltL8+SG+g%8*u@tnuo3`TV5_sOS*NtV2Tl{TEymELS?J4LbX%?{l|v+==rEz+N>f2H}Y#{j#$!{*xO0ulWLW zp_2D^ya?v4kwGQ@)Uy$T50aWJw4^SDR%jI6oF0xAU}&%%j!|GA<^Y_4L9a5`cR30f zt~d^|QW|!f3U2{1Y8Z$m(^!Pl@(4vDk95WQ_Uuw{c;JO}XA7B>@BjZ@RS(t9I(TJV zETtNqz@KrSE1`xk3WHSYXn~uT)-~e2YF2xoSbxNS*8V3?4cQ8m1RIfwmDvuco-^hU zDjM<~7KT#aeGorpCWu{dA|}DB|5FZ3ddqElv``#j+oevarBisH7EP+ zNusQo#*Azc&-{L`o136xKJaCS%hx5)p{L<9j6^J0y3R^afLj@2y~eH}2H9YVVQVNX z7KI*(!%O|d^smyCd7f8)@4O-yKRA!#CqZ;siJ8TQy(Re`{K1A~xh)(Ta zk76dfcX?5BTk~iCyqyealXBbBGSi%WXk86Fd#163ezXI(Ehu!mS_X2ckVE4P#Sd$n zv{X#31FrDxnNz_ZX!WIrcyR=OD@@>EehpcE(y&}qwlMR2&=h~8T-y7d`88~NS=Oi* zuBhPNt5Y>rv@h{obqLQz0JKj){L9scIM>7p9{K%Pl?9X2BmSAqZU8EUR?Y$d80qn4 z;Fd5_m$s1OhuD)*7SXh+omlqAN2y@FZkY@5;#?iPfW?m*Y>UWh5J5DX?yF3f65(|Tx8rky$uKQ7 z*5~B-SIy~mN*2;yDloH!vv+*|QuU{0DBc?-89$$M))x?RiZN*A%vTXAXsvI)_X$}mQ;zv_BTu(+Y=x0uDCW$f;v@|l zlpmTB2T&gfAnLlF? z8^hv_X$Bh{E7y_gz5B<3?KKCQBWT_BpXhTtNm6YD5Tj3^D!}m1WH*p%&Q5~z=69&~ z-xTWo8y>kh!P;&=9fJVCxwIi==aaR%M{+qY1>Fp$lFHJseb3+=3vHG*)DvizWhGB})X}7%|Y`aRl2o?nnh~K;7w(CYjDb^jDC^cT?WZH9Z#h9;C+z z(EkkPOO>lfa|o(M7I;g{lOc+xB{O+^R@hzdEa2xor3lhyX8r5^US%$!ukyO7Q-e`JWSTVu8 zeN7KfH)U7&jQpzJ_vVVnz7XS3=D%HPp{{HdwSb(OMhBZb0U^~T#)=u^B}1)bx4IOa zPn9`FE44|O(rzo}cZgGn%zGVv2U;z$*u3fSeY>EK1WGO^0%c+2Cok=}i}+s~6I?RT z+k7g_=b2Pr8S6}^>^?ez{-XQ$ny6)Jh{&VcaN7rwckd$Vsq{qTdbJde91da*FQ9wUqVXLQu z>}0EB$73QcOMm1l1gBUVk>B$EK!r{XY=_{{-8K>s9k07w2x{9Cl2?K)^57{zfjVn3 z7QR{SsaF@@u~G?l#4mq$T~tq1k*s(|M1CK)<<4{LvqOubSM@!tte+)kKQUJKVDcQe*_u5V- zj5z&Y8w;t!yGh>9MAo|N2raNYl9O_0W3dTB9>93^Y*}kIsFJnOlkTqWvL@>pzA!}u zAOyisj)l9bhNS}EYkIOA^golN>iY4-hA@KKaulZG@ zrpsbIaydsd-IUrfBax-hZfY)QdmoI093!j`ek=MjV)B!=U(Kbqr*a-#HJ8t5?h&Ma<;)hL_5ZVi%zNV?m6{B1EUXWS(!=*$4aWp0J1ArmXrR2 zI5J;wPzb2PjS|x^m{x#Vz-wk)XxZ1TF8^4ZAaRwS9SZtF+~fAxw#g$=^3dql|(RxFXY7IA8hB1F8OX%{; z&yM_?03J3|6yUSM$>Z$&M> zK(Hd!N+=U$4@U?z>J)|kAy^2hE?sd$nwj~Gz4#gw50aihvp2^WJ`EGKb8>E2t)6gz zH{I^}!HunM&oF<~Iiy5sp4}9hraC_c7n)TeoqH zB&XNIGVL?k8kA(ZrANu`RD z8ikt1CnA?6<8yYO)thOeEo&;$#n;n)=%q?q>bP^Td#h;1aK+Y}Y~E~qa<5tha>pJ$ zPTP+bF}SFfOg!Dq-Gcy#&2Un<&V>PT=fefSr$ zBUM6s*CP4}!JCwa!003eptd>wCU<gbNFe1%VVRUjja4Z%C4h$p?)4e7_rOXWW9_)W9pg z(1L2+DQVpDoyks>I@_D?#@q<`p)!p>_Uh3C(B+WxX*%zB$#B7aA&nBTnugc6qO?KV zh4M7l{1cejDOmdX6B<2N(zO7{sPi)JP0muAOL@jC3D_mPCp1*yg#xqgU={3;e#n9& zDvL0W3RE{~VC?d+0sK4Kkbw4#)2@GEl(4UhiH~J=Zki;h-_E)y_1U(^;SNYYDZ zd95g}u)j}jG*2)iCmyLW{Yy8$hrcty$Ugrt^yA;_H%!1}$@7Dzda(+3rtXS}>Y2q4 z+!-o{a`}Rec9B)MXesP+KNdv8bWTVneLXVJ+0Z)60Q`d=7e|R{5s5=adiHMHURv-rA;814)2>Hr1J}1`d5(3 z%5Hxk6a*vkcvG$VzIK(-U*8nt6hS{0+6|9q4W0YG#B_!_;Z#U7O8O>qs&%Kz&?ov~ zY$mAz6a45!KVb|Z&z1t~DR8vgK32~Q8XjM#G>a2jfYBZKQ=M`)rY z$VPNN_`QLkPISR?|NL(vUVL2V6kM+Z4~kso{gC=f#tvN2if5?HRf}^JZ|zN6yA#%N z1oV~dS+NSe;n8lB4k5>0vAl@HwjMDUP^;!Red7}8&MDdtCi-nq&Ilqx@Tzxp%A%E4 z?CIwoqxsvARaYkTSpN+#A2QVQ92Hf?Z!`+|(Xgk9!^>RIC=Xe8B_u7R0X4Jx%%>8g51eSFY9wgbaJ(K z1vkdYJ&ru|r7wc`mpJ49=2Xo)#1l(!Df>0XTc2I|I74TB-ma~w z$LLQkK04#n8Y(O_cT7Yq2{sYSw&|Fsz;&^_f-r-2)m)0t^xZp!KFt*zIbrzx!PcGnlONBvoQclp3Iefz-Nsd}eruL;!$iy-w! zl-J+V97!tJ9RER%T^bN1hbM{i1Bl$CKA*iTbZP>p7ozz4vvhQq74}-{)6xn^Q{`P= z314%gA{?D!yLexIgF>A9x8loOzOLaP-k8nEOPCaI8?@DB9)xGF=qZS7~a zTXmU1BPIeqaWRL+UszL#tJIQOsi=5VZY>>3wgJv|wFoadKlAnWncS-?2}aW&t&O)& zPK$^Uzi-R_#sUFNsO)e+7UuX_B#3f!+&d>2uk-GH(ziU}fs`V}vCKAVyEo85fOlx3 z%O7gaPkNE^5ezc_-jfSAQsTrD=RYq)q8?CJ;`aBDO^*vbL0xQZk|WR zll`G%DW0H_Z4M-^B5lvJf}60-VWTXAE~*^qQNk{aBi?Y%-nX6B^pbA323iISlJ`)L z$`iGp;+L4H=K0IYrq1`|_*h)$E*~oCrX=rL~cb-oN6B9P{%Z$ZzDoIZ1 zOmKs>^=jSaB&JbE5}3&GoNV226Q@2X-7p4b4Z2#vvgN1QBBy2*)eBRDayqUj4LTBz zn;if@_c6?>3Mb$5RX;d6v>qfSB18;w2aCdf{V7vt9`OT?Xa`fG2hBS(ju46F6T#3%n zBsT>Zjd{2wQXVS25Ln6^%&RN%jRhx8ntB+cbZ|`b9GK-?mza|LF`TUu|3S|m%K~{} z%70hX$tPv6fd7NquJHSMjY(qwdcxEWDfy?imY7HrBQ*>qJwm^v^XObZeZMBNk?hjJ zb5lNLOA>sC0<3s-emY+Ze{sEM>yeLZ{E3w(?MHjBl{0x%b<}u!%A(n4MVAGfh;K}z zB>=I&G{AExQ)Mtgq3GOwF%HVLwLE{n^ zEeD%x!PsKg8f8Q?h_|dE}iiDz=7L0?+(n>ngspvh!jA=qdEVWY_Js3|5VDi;JrRFd@o>^uGNj-bn?pg;xI&?k6BFCEXq&!oxDyAA9a)}S>ps5!yasSXJ{aR< zr$++13iEySYn`)U_lOlY*DKD;PV1p*#Sv&}^iCQCfvKK8q6Lrg%()3sjM3UvGqNx! zCv++4R+T9FphRNfrA%WofAk7SZkY90@o?ywIw{m(27iH6;81T1a9j~QDvpTyGvhhz zGeC6-U+!7Z;l$|iShz+*b*C5#qeRu14zYpcM|)U&Rb#`feWie}fP5tSvjIP?^{X15 zFQpa(Jr4WCOzdj8Sf6f4KgbeF@B8kP&eNg5-PN_qiuo15E|C^AS_*M=8Z89jMaco0 zOHYX#Ezy^jr<%R9D~DAFeCe%ZGX@cx=VHi!mTxK*n&+3Anvu~=`(}YY%-Q9s9?jen z)dmBHR%-d=9aBJhp04c-lmHz1gvCIap3?fjj8x?9TFmIRrtYxwsQ%g?^IgEDF#3o^ z9YACw-e0KZ+^y8&axUEAOo3U_v`&JL+!<5LDpIrTx1)1D#V1uW%j2G4Qy^UL8Cf02 zXX|VhA}i--cfbs<2;q=HY}K=!g)-lq5Ga_)Nr4STt!g2>?`0k+iV9-t&3UMS%iBkdPiwM%Ep*}K-wz?8fiurks#-rzixLAyvm}hHRP$L|P zIq)^;s})3vy1B;zKem3d7%UnQuRe#PTVJZ7OQjCFM-Zhh<5+B8zq&=|BhC|N<_#NxJyrPy(*mHQ zN!EVR6|5}`N4-smIm3!e5~h~)M^8z=n%N3GQ*#~D#M&xXUyDo zblufUd-|XrC|oHP)XOPu;|QO@(zW;oUmLE1JpvwFpP|klpyCk{{?@j}&Pvl9@u2=w z)W;7>vk`h}LeM8PE|W|}0p6IMRi00x{iJ1t4jK%4PU{l3u)lNe3jEh6N83KjrG@{o z9ll#s($1*9io!#8pd7RANNA~;+6joO)hTI18G${sqYUNfZ<9hS@ET%q*TkZ{U|W#H z5iFCHWVV#dwB|?e)wy8G%0rdzsY$r`FG-TTeU-E^3R8@O30atuqlcyjpAW$!9cCTx z_IZ9(Z4W5hm~4JGM;PIY7MwI3C$ocd?;?@CzQpemM+6#9-m*Khm#rQSYx4qk4z+qx zd-lF}tJhH*nj5BfF45!~1qEK@UzcWVj!!Z^gU zG+A4dJ{F;TLEEYL54|%DYA|AO=)WcU*iI-DF`VMsO&A)wUtp2A znQyBQ`2@Wy>g9u5P|qbase8r~qV15?S)dL?LdgfU zggp8}s+PYZL)zCS2qLsozPqSQ8&mmtwRtbyIng80af)%a+Io`hO^6b9{Ql3}cT7YP zsUAANSDj-GebWXT`63_2Mp=Ad3Cu44=~t9{$nGlGi03fp}CSp!Q-pH@ zk)B%A3Y#KH8-S8MXcGtf51NG;gx(}l-v9mJw`HNB`RBGbuugH>O?6-u0rxp7hG3K5 zV%LlN!u1Q$MFpZVpWaC)O>xN*q2EtjG|*8yxT~n3Nba}k?pd?;5zStI0{VW9Vy{9k zF`@9wYd-60J!+6=ozp`Qk!EYlu?5dn0OT*Z0p3Xn6i{^0!8R3o~N6QHUx?*2M+`uWg3>Bp7;5x>-#a;r%N8(c;3R;e#^C*%1;#YHWrCK7 zr9B$W;1*pG#s|Nn=H$Icff8(>R1!T`Y2>S|1aog~7j|`}qKH@{ayX6h9ApCRb$p5a zd($A)|gO?}`xUV9(DoZa_-$0K#j^AaJ~QNarl)(w6or7(moh$AR*Z1N8&S^jF_W zh0Uj%H72^p>#I&gwUgRD>~fHC3NAcBMt79HcAeyShxuayp~QX@lMZ>vT?7*K-J=Ra zp|yUlNmSeKRnYW&!-1@m;c4*5IT{$FE9=$-@Ej3d3Dr|V{L@v(xLTFGzj1k@EmPXtl%Lpu7YG zcWPp(1=6*FOmi75gk#y(6lFa@GCDk)uZn6CySq*;y@&e?AzF4pNyLlM-+Lg%;e1$o|4ev|{x%w#9f=%T@^UmV& z8~HNKpZbT9eGf8EOS%N@lCtCAmR?5WF*#YR4=k}0%|2cHDF#4Rxntg<&wr~r1^Ql^ zDn*HbgNfxAHnou}!4(-knTswb(6xkZEahkO)FVksw-vt9=Rw%6vg=#~j`@4kd8p3| zCk>aEeXYR8sYRS0lLl&37sfL>5lG7Q6_-}CL}$!j!w{Tsky4}BG=*-nCmb_PD|||@ zDkD~#hj>=7HVkQ>xTddiv( ziI|9}O759mKL;P)T3~PEP%bX<{771O@2xJ?;35ngccX4YbOlw%NB!jd-H5daHWES` z+2bbV!BQcaAFw=Z5o0J?0W+4Y44Yd||y#`Kwx%Ym(yl9~e^OG_8lF5WCtrI_BkO02uOTO|E z-aQ`9Y8M|HwK1MPQHNmFM#w26MJ%L=xZINU00V)YLRxst*wwy@&mi)Y8#d8#82If% ztV^1CU($a^;ABR~kZEaxy5cR|ValcM?Qu_&UJM7r>tk7|9fc>QYRs&V%m*=vi`3}p z%m12~UKz9r{C{F(dc19ptk6vhd=~Z$jwj%;4*K5MIASaqFUgA-H>9;~tHO^@34-;pPdkxyNs57rp0nAo!yVM^GvAcF`6HbMBGI%VU7nFcyAt za#dpU4o>l4EYP)U6pR{m!`=b*`gr1Oml7_5H4;)BgvIP*8UFbTgR!@T7|Zdl2MM_r zTkS(Q7gf~;us?6Q#j>^S(PTKFo`(diGnzy3U7&U7eg(LGB$uA+fTX3<-A|K0VF+?j zYVvw^E_29sI-yV?v!n*%QY1C&PlNm@Thmbm^&s!H@o4BDCXW;|;Ha$5*U3!#L`!He z8qSVh#)^bP9$RsVJQ2 zR~u~8>iIEEeW7X_k4xMJK)#8V-=dG_M;+zoov^Z9j8xIT2}uC~++78iByO;&Q&Is- zFnvl_A6@$dxvUP&JkxYWttc7t@*Y>x{2_lrg2+TmpQhNm(pq^!6^+MMp*8W4C9j6g zcCrk%rDz0#9oVb`_2Rx=R?art#2R@2#_Z4KtQs@y>+S=xrouLb!x_-D#G_8A=Ek(q!@$|!T)$9hLUm|OCvt7@n7*j!mjkU&i zp-+yON`dp~P3C6J%|ckniCVK7j+l_$cz(>%?q*ub(*|UNO}Vqu*ify`I;Y?1H``~m z@@9f+_j6_sI7K{ZGQ!*w2W*^d0ad2)T}O#Ycp2XvFo2+AN(354b-Pvr;2B+t^P>{9k(kRXt-&zg zTHFw8`0aT-6-!3xr`ne?nCgK8?)Xqq?h1zwL)!tb#m}ks_yqg%w&2*L)uAdfsEQ=5 zJK?MDnB3$S7<#WLZurq*+(;a1G`=_P6L8egg8dgf1BSYy8?lyEbrRUm&v$DgMB}^N zlZPS&3GBvn4U~Goo26dm?e_B;@VJ@MxQ7~cdj~3L&b6N*-0Pqm#DrxF7qw<3zoBb* zPp9l*1et6qN;gfxyJ3D2n&BBkVe&*5&vO)%C7p#f8ku=F-IGM4{aMqct<@iQF~hiK zqPjnQoodc;vH7~?%x{=Kx_!l0Mtn9|&b&RvPdO>bNf=ZEI2K?q^$%pWX83$zBKbQY z?m1((JD*!b`6%2PbY{DV;dQ?ww* zl1c90Z(8ww;xSTLz$Za;@!effYe3(L%W0LJ4gC{+{F>Fvv=@S_MYh%LA?7ZZuDkPe z94Q0@g5jlmMLqJjW-8<~@US=vXg7bApUNa#KjJwd6_E{0|sQ8UXvYGriHT3@i8UM3I-Z()aBKinVwP(p4si zH%S_NnbHJ2YcKb$NpfWauxlHlas;7;1)V<~cbcUXt3O_G6L*FW99`pK#uXUd8l`0O zn5%$X;Mv-k811R|;5%k#hC=^*jr8t#7LFI8KjKPx&()G%7G8WFeLgsj?Hm9Kp;n&p zS0N=a+jiK$QfelVqMk^_&jc~Y64?+ijZiTq1>zoZp1eN%uqm&iab!B4Ovw`H`!om~^a zt?rI_s!NE0xb-k3Y6im`e-Upd3PO^GBmqJ1NfcDF4Nr4YUB8zxK1BDd=5#D}4ZV5J z?>0I0vz`AO{__Cf-+iT@62msf(?>gjNxr6g>*TD+KqKF*@jLIGoIa_{>8y2fU8a?; zz>IvyX&B>4XQeX$!=CIDIye+hFl+-+7A<;wWiS}a&-Y0Zl%<#Td3|0`-#0>I3K^H! z%k6{4{QJ|2#%{+x3L17o;cupKQg@7$FDD@fe!h?@p^5p$ohFFYDd{7Lw(7x+;C(oLI;wTg@_$f-D`J4%IEP9mGc&klwC~cL3*rp z0?Lx%T(6EBHn4^<-6jN30BF}21_p#aS>$+*`p#N$)-HrfBBox~=@jG8K5luVRa_fL zE9RcjhVOnSC;633cFUP zS-Z2RI{Wb<`L+zhdW%+DsjLUB&lI(Kbo`Tu`434LN>jO&*M zIa3;7=*3FyL&(+x?3-Zm$`lZ#c4|;O4-vNXw(Z3VJePGfnV&0RSG`47HMKDoFvBf< z0xKG*_jGCE2ILh1jYqe(4V}}7ET+KJA!ybSTtBDD(FF3VzQII!&4?1O>6+VTLVo*- zG3x0@cj0w+WOTiljJd9pY07?nhsWssc(CV8;ne;?A(VGdzAj4o_JCc{r(q~OnYUlt zK6`%3M-$v{><{;WZv{GG#c)m-um90terOhjDpQH8Q zc4uiBD}~!Cn#<@EHi+D{7SnYK!X&!Z7-~Z#;)6;5-#X+gcuXIWE<=}E3o5@7v+Px# z3~i)pyS~Rwlc0z5OWMMTyYh^d@2Lt<5~H$3;#ro+m+FrFE%XeFPWEI=fPKSKgx1_2dgX;T4!Q;7JNRh1YxY*sVXHGJFVU z6z8%mI9-}%9%(wtuh?Tayp2cK`Jv`)&EA(zUTwWc40KCOz(jA34c41n#|r==eZy*) ze$_9z0=+VNE#)X7M3#gKyxMXCcn6qD5rYxtM-Qy=x%n;lK1I_MLR3kIH^EaYQxY-AR)h-lv-l@oJ_!IqiymXAQI^8-xFzXC*-PwZOt` z5H4Dkn9`rN?^0g#;1(HdufJ=8Ag7m?L_^ z7{6O+VG8Yu|2m|NR156I0qn~4SkJ>@Ta7PQEPP1qD*))^=3*!b+=2${#ZFd?dVzTf zdP$kPT?lZ)BbF@lKB+44K{@sZv(v%f@q&PN4rpZem@vtz<(Ph^&K9nJ5TpDjkH-zc z^oz;J8t)8ANI(3-d7f<^$_$Z|PpR$;U)09$hsE*m&gH)4gqF70^X1oN?1L9ScJDU9 z+^IsdVEvE!Ywt|ZBqLRa*J3ODrMv(S0;93eh~V|I`?*VwxQ!va7G7$Kv5BXXK`pdV z17V!o>rCjovnbbFPtQ};{67cQlQD?sq*uiG$#9t|!8+gGl$66i6`6Dkpf!YY6VElz zM?S&BBXLtchXPe`|EZk_J6^{icnxNSgGEu!>g^9o^Y`!ajv{+d?%y1y?OAXRIdhU~ zkj27}ft?;lMKS1BHHp{Pn6-a3jaU8k>DRl<12Ek^{} z#`*pgJN*@zhQF?i@{^A$@-|SLwx}bIqbYUpyf^(=-W#`xsvHg%v zzndK7;)A6csdZ-WJ(<7k=!x8A(!et=M*Img=-51;5+9g&CT<9k5Xc~ir%#h1S@Jkv D6d~L+ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512000002-Config.rsc b/MikroMaster/20260512/20260512000002-Config.rsc new file mode 100644 index 0000000..83b033c --- /dev/null +++ b/MikroMaster/20260512/20260512000002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 00:00:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512000002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512000002-Diff-Config.rsc new file mode 100644 index 0000000..ebc7250 --- /dev/null +++ b/MikroMaster/history/20260512/20260512000002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4298a4298 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0