From 542f274c65c321af1bfc1b7552ed3401760e4e18 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 16 Apr 2026 13:20:07 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 16 13:20:07. --- .../20260416/20260416132001-Binary.backup | Bin 0 -> 315604 bytes .../20260416/20260416132001-Config.rsc | 4535 +++++++++++++++++ .../20260416/20260416132001-Diff-Config.rsc | 8 + 3 files changed, 4543 insertions(+) create mode 100644 MikroMaster/20260416/20260416132001-Binary.backup create mode 100644 MikroMaster/20260416/20260416132001-Config.rsc create mode 100644 MikroMaster/history/20260416/20260416132001-Diff-Config.rsc diff --git a/MikroMaster/20260416/20260416132001-Binary.backup b/MikroMaster/20260416/20260416132001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..fa866ee1aea099bbd2cd9cf897117faa02e4831d GIT binary patch literal 315604 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%0A^{D6L@c2u9yzt9{x;26KD_H6Q?NP3Cfa&#g>}q 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

5in}d-m*r*b+L*YO_A<)n4J?{qoiiY2 z#E!kFG}|U7>1Sap+4^7724KEYf1jbf!aZXJ#^XO^=eQ5KQ>MZ!k=H?VZYR_EFh zXWxp{9N3bEFuX)sWWTv9A(rPZYcrKmloFepmLPQmEZa0YuEMn3 zd16WD4YBuovf8k$d)2&PPd&0<&PNjb7HyJDSslqt|=E(S?5>z?Yk%UwtJyn0fO`05;exRW*gB=%=?Q8lGN{aowYHHy5}^*nFYiikn%C^CI~CCOFK6{IV?- z3N|iH=iM9{7riHd6=A;=Tz@$YQr<;7Atqc~yaOgz$lck8%!_r#lu3mH^sb6+m&$do zT3sX$8g)72_t|^G?g83wtjxMhf4ES3uRIXDT>Zs>zYwu(W7Y0Gms^`3tZ?HR+ij|g zE&PYR%vzIDV%sTJfANhk*R)ffh1@S7p8kY$$7bK3~O3f_=^Q&QF6%g`3AO?TdTgB+7I=XR?a7ls0c} z>x|%j{zrGu0!ydh%h@`C$$VDd8fQb&gx#qKlE>2?Y|Yx+qEMTFn?%X^?n4z0_-A}2 zEJ_KR0E=3Qc-$v(!CIOxKy4Hogt6#{b$hcxJ}}f45GsjzF8#>!-7S-@4$dbs5T{LY zo^yo*(2kLRNo+T|f^jT5G91*9`+Lathl7SUCL%6Pvc3yFBI6&ToH_1>vphdt9u=hd zfdi%^>QJGtF%S&-0_l}67;91Wv+8v9>ENFJ&15nb$~~{02|2JFinc}dBBquq-YYTt zeaYxwb(_8&-{AtdbEadBfWdt36WQv+K)Ch1Xjn*T+80}JZX(V#oa$T1X1wm;Ugkl) zKpN0;?*AQeEpW&L6N3(M*{$PIs}iTiGYIp{WE^f)F?M+6@l}A^b`))z>CaUg$dCN< zp{c!8zs(h@pa}MMOTPF)JX(1NyU8_|ekzVZqg{d5*Yi@srRG+V1XzMivR$vSrg5yp z9OpTLw69@H5q(h~&Cq}4j=sVCF;WKNA24MxKh+xjEm;Az+hM5O6oHixyp=BV{H0I* zo6u`p7p7r!6tqX`nm&ilfM`6514LV{}YdR zX+=v1e4C-d&DQ76jb__iYJ%N*#E=n`5dl2`|NF(+W^?Uxw^;*LAp#p zFl|44Yb^4&M3sfPAJtf*kU5M;P1Z&+;pm;}Ih|bV$BN?EfCMf+Qis)oPwFKFH2RLv zbgWPXxTSkiMf_OY<60E_d0!?|3Yh3F(Lfmi4>-1o`E$8e2=$N)`j2@1T%v8KjiR+S z$q<`aiO-M;@4C&_uFL-4F2Ki8{FAwXUs;nsnt%81PO(B_L`B-f#Uo1xENuHw2_5k3 zY<-(TBACd8RV&o*9BCz@aHhk8ksRX$G(u*LLbA_s4h^Hf&*>8$IhhN8QGK2B6&2rl zNA=Nzcc0QM(a6i40R;T(S3qFvTM&6>nQ`ODW{w$PgPzw*hV?U4#k=_0u;oo<4?2vr zbg(QKYi!e5C3l+N!RnL`3`jIy&cO~j39Nzf?Hf=YG>bWiw6chXz9EGITzf{`e?1KW zo})=ExfLArMh3KqkQxj8A_IKTgY6O~N0D|WAl7C1AWrZf2kxxb%DQs*E|v1QjIuzN z|Dy9qsab$PCQa1dE|*{X7!rp#ypZD`*`$72g}<+>|3_M9JR&QN<8C%{(JQ}Krp=%j zr0qXRZD`XZY?DnZlKRlgc!DgUqsKyO;#<5C&SfaLJaP;;SAeYhihTO~Oew-GWT~ti z&>*Nq!ji6?Ibm(B!kx4?gz6t+xX8i2oiH~z3_W91@Fj779dU~gZ6CpQLx0hcn_$r) z(F9$vwJNDaXTX=5_{+!?B6?=Px&msCKOw4*l3QoA6f9LHLNO|5B#UD_3cjIZvAH4& z^>FoucktKfWiQO><32PS>m%76K?sfaV6uxEI${qv#Lfr^$#czs2sVMMV}f*3U#ZI0 zlS=A$6u^^Y%iWXhLwx}A-0O&lLoN8OZeap^3_ZKg%B@8CKwL0xT5*a`B`6$3p{T@& zo;_k2q`#M9L&ezy&lWhpd@PJ_M_w8`E^W!HAFaoi?uUY)%R}40a0^58l;xAdNa4m! zdbc%g>T(nf&9kHBeX%m%JKWLMtD)TQfeWe{)Ai@j!Q!>m%=zdY0BrI~vWOyuwk9u= zkcdi~(*4u0BV9y@G-PGZ9?H8tk>(iQkwvgOPWQ8322Ju-Llb_kt9j%Z;gxkopLgybz=`J+xqZUXfRX z`i4Lt18&1gsdL+wMRjf(Os|;}yYv6%%)G&x&~cE_J#b|)3hkcXiT!@0` zK67+N3PTaD#L9JXHUuhWN#y^1|M$kN1=Sw`AD1&kRC*td*JsvGJcBHc%qme}$ zdh)WL$v@PdkXQ|Q2zRD3exS48lA$^!Py)5Vng|WnYcG zz@7$gs+TNgaSnsXY%?ug24Ia?_{XdM*0EoK3aA@x65P~37+^ir8ae`>t^oS}y0NCe z>j=tCmj%2=y|!_C`KwU&wTGNegENM#c`l#Nt}W5G<&MrPJ?1>FR5L1;rh6Uc#;59B zFEI0vjqpD~ZQ42oXExn=x+U5N8ae@o~Mwe-KLVG#0d$e%d-by81NyktQ;$Z&IBIY;< zmb$El`|4rd{@(&ND=#_A6jm`n)0fRo+G5>5#$1!%$BAcHZwLm+7M&A5LbEgD#9_;F=G)!** zfuSYFVbKS9y{aQRA!-F9VvCHc_f^c9)9x3%==ThSmsXd^)xX?-O*HdXCex4Z*OxT%r(tD%TPYwZyb(NZ~Ydu4Uy@OFBfw5g_3j}a_~^>;3`mQQg=+cM^@ zyoY_$K(OL+P+vV#1SQ*v7Lnr^Fe4nEKfN(78eHq~4QbUOr#2N3V!Jv@{hXCCVVY7` zhwt|=n5bh`u4oxATi-2|z!KC`rTPo#t3=v8e8?QsC*Zn>qaeZSBx+n2Ha{=OQiqW- zZQu3wt?Cuo8{SI>>~=%TThuIXh_(E7Ky>N*rZAZVoM?FRmbKiww+w6QR|B)T}eq>TSfmmHQn~$)GZO+3!); z`zqm`YTh!>_f9t#1;)%7J#%J^shN(NIE&?Zl_NKT}J)g3K%{zrwrsC-S|a-j%DP^EeD z=dR14AZGPdJ`Xg?E*5G`^FE9+NOV-FG;NGEM6!hd|33i0mT$?`{8xoYmBnL1BWGq; zCfk-z=~<2;OmYLxWGP!;mdf+432Iq?kd_~W2)y3A?;0!c-|t#kxO2F+cS|GLiIIBl zlc4Tv=^8KiSB8<~GwNb`il#>(?n<~ZV*}m%JqwYgBq`@r&tSwrCa(~wn&1l4 zhye(H`O;nzkw4nsU|0eXu+17vEp``KsqLSo$%3!*Lngf?iWGk0DhnM(uOc^m=dX2Y4M=F)x%mP3LvZugQ$UuOaJC+u1PF@%&b?y7$9i7Q;Xsq8X-J~}~ zbyaUUT{&U&eq-|LJA#p?@!jz4TRG8tob zmDla7W3l#W0Z~1Y;u04&*AlyRNlouBa&0t|q^;rC*=+TQ6w&dMc-mu~Tm?kp4T%L`&~)*22u4WPyo9$A+;^?aqw$tQJ+t*53lN>_=) z4WBv_ zM(TW6Gur`st-Dts?UR9vFbZ!yNJcMH7wbtYzF54Gj^o!b>mwbU#LLWWDI?vIq1;QG zGxCQ`yIXW#47l0A9IXSl^_iXLC&ESH_iiXjM(|KElZI44Fm*Ct)9`o?n&I~qNz5EaIh zrlETPIyDeT8|4fFhKU%xvcA}qD+Wr)e-w4BRa_nb?3F-D|E1tq8Gn8KZ&E2%u`V)n z&~>2HsIL6dy|E{ooM$mL2`Bu^L5j>e{CPnit|TH|sI%;bYDAzGc9+^HY&{2IY{Ppo z#Rx-_nljH2r-}DWil+k-fQw0sW~0KO(^&wHf=a`I-+i%_@8;VL-fTTx^|(BBo`#e` z^&41y`+Wc4OD(Xd;Zc^Rc^qZDW+6|@{X5RJxg`gc7KP)HoLG|eVW|=?_tUeb|G5o$ z-!qC?mDVpD$BPPT#w(GP!?z0_w#KnC!piOs?aGL9J;kyLP|JepBu^^nIuDMm@1|w9 z&+xa>k|&XsO&pSlEa@+xko z-}IQ$yVPNvAo|SZTi6@SBHQLo?W^~>3^%`kW^h~F&U|i#Pn7l(Dp&(hgd#6wKL(>F z0mgl;coHQEdiVLR(=_X^+;Li|gn`*$)LD67FgBx9b$VmwgZAu77zt4{qE#$8yEeS8 zIGzUGIUQI;P?oViOOT{b20lZPyu?Xy!FQoP1hFR0&MgyFu^${hweOeUcYlUQ(s$9t zm41fy!1=%PGgA=a3_Pr6uQVOS8wdcrhbkpHj?NAw7s4lG_O6KzcAb~5HM@CNjImq= zvu!oU=Qpo&nobG776rrOxw`v=>^wr|hn7#R;_}}%kK+>#cfsQbz}_!^R_Yop^o5yB z*Nd+Rdye%zs@60;^cV30$D5O$`8b7YJBfC7B%dTbZ_V3D&04JX@IAEvUkp$JW?iCi`iWh+ZML#L|toRK2-KR z_DAx-3`Evqg1+WHG<)FLK1Dko+bzOJF2j2-_MI|O87x?96*B4-Tn&3*8$hiH`GU0r zs~bQ+?H4K;TT+@bFimI$f9QWUx?Q$A3Heg9t!vTM4n3ck<&*gu+y4r$I83)-08cPY zUokAb3Oym-VkuN^aFm4!jK-2oheC&+}bIITk+mfbp=e#z1tuL$O1dP$cYrIWnmr|uKY29sCFR6)5Ba;0^wF!x z_j+x;=ZbLc@qEl3EYzZ)j@k^RHx>T5bN3P5b?i0RQ!Hg-Ti4hVd+45VSH;QG949GS z_1~JK7x}*(UZtFc^(xVYnd`6k$ZeqcL4IHGB)WapCK(kYX(*90bkm zpQ^ABy^hK|G&+pMkF3T1V#$r=5UiO`e5NH^-t_pD{?CBt37#!oEhJe?a%pqgWc+rE zOw&D~m0SsOw=z+!H?FyJu9P$03{@#Q?+r8K1@yy}!h!&Hc(B{H!nYG*=PSdDfcRzi zm+Y&`;5D#UnHUT!lDf!{W7?9#30uM60_#=KL1M}6lHO0>bw={mnUW=~?SJ}h?U_L& z>%D|)AOFe7f1qRu`VT`gJ6jlOkV@ZTP8xMq`Nlh-keGdSQS9y8?`zwmx&IBbJPtLp z$}jOq2bH{vR@@?hX|y;zri4Ao>)#ZtWB9ydl?y zUmJ1yf4ekLRIAcb6*7-twscgf$FF^#$xusz4d2)J`(fI{w%Wy0PQ87yEQ7HjseG8NJ*34BIvULn|LSE4#R4s0RfgRPe(JhJ ztFlgx250V!@5;`8lCMjlPBK>EqoejksEZ^OPI+szvo19XNX`G!;wwo^=5cnunY4N; z-=y~MUG$k=@S>i}<>{J5dD?vxSP2wCW_!9oSytZ(xz~^O z&j3n0%r|v`G9sBLNJ3rhn^S}?nzI$K8uASZ7##(=ejk$5lWgm;x~cMvj%c3?Q!{QP zx4UZ-0io*KjT~&h9Ay^=ZK4)iABceN#4JlJvX`#v1m3b96BUdvYcDsNuF96LkIY z6!}caCPxh2tfmKPY()Dy?vkWVU;qR?9*A^lnFK=^rZpz-d`S9MQ_a9}2*8Z4xfA%2 zf8mv(oN1VrRaFKD@S==FJ#+T!G;Pro{bHq*2Q!D9I}B(|6S5qgNY3d#XSWYGRm?3H z0RMO<1wpLsd2HIvu8(HoOc=4#TK|@zDU&+^{=#oeik9=Zo@p@J^YOY}Tsu^u2L!bGFfyD!Bc*#FJeUC()e#7qL!y zSK*BWnj*Wt^CcB}ESBZY+kce~pC!!JT79c7116}2Eyy|Jf7v?Pc~BembBP*A-ZelY zXXt(dVDI@s%P~`(6;>6muHe0-SiN2!gNWc6>u3Mu&Boh@9z5I9=HOrWp=?XaygZlR zzMq$xCs?qXoWr|JW+$L&rz~e2knk3fPWBF(r3YW)=J_ujhtwZ|%+24n_k77g4=rQTQ-HZbH4#cZ9diDHfwC_0p6@ljoSAw8XdJXBDywbVaK&hnIpN zmn4@{qb6(uH9mCOFuV829acD;*Ms8=!siRBbtJUOV@+pD9;*zI(~=Xvy1*S|jo#ix zl~=KWnC)*W&@6`X0pLFNm0Ne#-{XlY&QQ#LKVhY`5xk5JkIWNn^=<3&M#GHCPELFF zDzy)l(AW-Z2Wq#g4RN%rYwX!4UE+}!DgU8XNjG!7lo>b*NGTHDL{tP;$<4DJ6(UBZ zuitH0cOT<3=TVl*N~W`{DjVXHT7W*K$pcyr(jF~1fNp@S;cP}oq+&7VX}##vmCIiJ zKw=(4m${GUvU);2^%;80jHkx7hI+Lp`hlQaa`to1Y0dQDG@=f}QC}PjdV|(C#YE6q zVHJSy%VfFmwWD%S=vB8_-M%4*TiJR&)N{Urlf8I9W3hke@s=}^l9^$` z3>_7$qE`XfEkdojzh(i>O}_Xxq45)MGqk|scr_IG`O&I5d2>pc6J!}u&rEB(1hSZ= zU-@@tDG~-XAs%r7#r5{@3@Jikb-;3=MaVAW9Wz-@0stToO z?S!XOlTxIv%;ce^=4{OTs8JSIJ<7x2JrQv8aYWNU(Pr87o~>@sno#%u5b)WJDez!sZYmS0aYaB`nafz4 zQ@=&Raq*sSxR6bepMngnx8_fOtFDhZ%k+R^!KTnk+;%SWrhsvF5d{b5Rnx@={$t@(Q( z6z_n0DxwJ@`Gu@5ls!f7r zT9f;sk+6*T?w;KEh3qAP8%7xRyFsuzKf;L^9ImnWJp5Yab18Oi@1=xE^)zVwjh?5v z8G=6Lvdrt*@R8rIEqR(r!I1`xIG5=eH98iCy6RC11(RN;z>wf@l`=Wt_B^o?qwxyU59)(7Q47-oHfMqGv}$ za^Nd7Thix%vzlVJc-fgKKM+}92YyqSgTvu~J+jEBh)Vse?OYJBM%-ozZm%p-a?p!S zX=~IcP-^>m4HBKe`c%xipTCHd9Q84ALRNqkF@ST+3NdX-;d9(NRIphZ}I-iG8r8yjy@axd!=f#Q!y(cH9+p|w@9qd-aj8DWf+~OVJCsUP!>i_;fkn4p(1gnuc#;tQg6T@arAM9_Z=ievN_%XC`Y7SnN8 z@b=+>Z$n6XEe1?j1<=$B&q$Rz{hb>eF+Ya$RuWB>6?RU%7B@yX7Uhmh6B=wAR}(gq zS|WEy;^L}lh_9NCESKWg!A}52(lq6V2*Z8Zj~c(&-yyi|^yx7vvPGIYncrjUn0$Li z<;z<-9Tuo|zKIN4nffP)7ewGVZz6E-^Qd_MG87B_Yu^ncL*bb)jd;md>LtMufpS}ZDF%cJ6255 z%KHT(sqevg{k46->ee#sbllVWe}e_xml*06`A!f#W~=ftk{GacK0jMGEd8C6Cw}n1 z-%V*qU1w{*izTvZ$CLs)&&*2FnT#4_?c$1CQEZWtozt5=11Tr+lpBh8TnWN+X3act z3QwJ#zx{uQdkk5tL%N$DlN0fx2$Gu=UASZ1%v~}Oe1^DWNP;>5FR-gH&VL>*`-ig6 z-fDB=$wFp@6ce;jBch$+P#S9+w#A%GcQXz|?R+A+AHJK@FG*DadibrmAEVN$`#j?` z-L&BbA77G*;_kUioRD<BmTf%`sAW#FIBO)|yS13=qs|LUVNS=q z)Yx=}JKk`ho$STWBt|V%u^@1JG<`=)=@0t|l+9F{f7Y`??6yfp4lhQHTT>z20{JiK zzEYN6Lh5j)M~Ad6-@NZ0)pMzWsvD#fQk<9}Z1!*1i8us{m3S`Ic3d4IDPXyO;1cuU z;!5G?VhSkstX=)3GjUi07vC(BH{C@i(KV{W!4;`HYE9dI!Wd^!h?bOJ1SJVl#wfKH z<&h#8VI(YBN(0&1^Z1Oxn@{s#cckwVwg(2#8!T9`53ARtX4}p>R{TjvEYl!jNKe>R zUF^%O%^13HVo%2rsAIC96exvGKniyBs2?~XT!z6i*){xxj?y8t~yPmiZ)SD;efd&6X%A3zHL|FyfXaq+ULcoL% zrF7Ke4uP;0zncVUcGv#*s*t*L|Hf{v4)X=?pbBK)FR@E~#e9p5dvPoJ|BmL~3(3%J zI{rb9z zI2T%Kn^8?H&*7uago~=_#Z(g(kXRoUvv@Qqtg&5t^wZc2efFrFK#b4A(@Xb#GR79M z3G1KWbplH(jE#8v(S-6vq#(|7xX0XaO=sb`aEdpC;YL_|nT=8q#X!)b%gS?hFjK9# zkO&$zganERa~RCQvu>Raf?Vp4chArA6pd)IDWiQNlDgf8o*c|Veqj944%4U=3yYyP zR{#3FpQs&QxWAZI6O|G1zR^p?Ha;n&CrwtriLu8VA3!DBr*o&bn25BpGU-40H~vOk zqXfK9PKSCz-*7g{G?9OYz<$7F*JrE=!O9W3LlB&jKDGPl4Z5UNPDdFE}wmw*095D$ldC2 zHXZe0UU;y(JNkHbR)2CJWV!A$x5UF*c({wk~R4n=D??M_LLNk9_|&KlvSZu|ag zIJ)`41;=t?ZWEST$fOF=mL;kMfTY)083*&Z4?2R3){?K`zy#?~KuOg$nvWf|jhmdp zmDXBDHT!12%SF<5g`}II@k9sTcROPMbYzrsE6}LYfX>^8Y$?w0&b`NSZdDd^ z1I05d<2T2`j%3)xReUr96*^r2?WTrZ^5(F?=7JBfS0nQ_V*OlXbQ|LbK*Yb)BlAQ( zdKZm*6mRsz@2%0&L8$9%p`w<6LrzkgT zmtFY_##Ke@U!9&tt?xjC`=&t@`S!Bvxc|`Cz5Tn7`D`ib zB*LB%EA$Fz;(Kb13|&6Vf3XBSBgH-BKvSvZ!M~&^zSJM~hI^|&O~c6bf6k-Y=2-`Z z;iIzOMl}~U%Jda4WvU9X_VQAeqfj*xcww_(l4aC#7ha`~ zNkzseYTTwiW7O~#r-zez4v_Li0C}oX08Sx#0trUdTz7}BmFJ-%qklMm2|J(zbjCtg zSwYmMS58%&ralgpMks5Mm!b3}kIJP>v2bT6qVB$q!(0^sDFK*|?92sBTB+0sC2_%U zZ6Kf`ZDP!?>IGlR*4*Xu>H)wt{29$|tq_mn_CaQR{JWG(K&vb2{d&y9v^tzpO2Yy@ zoo*ujB-rT2vtBYYq-l3lHhmnwQ(J^(*?-DP&*8X1+T2YgX_JwkMgp2Ei9c}BkpIeE zLioic@5r=|=3c3h9R%YL9Y3f5p)2Iqq}*s)*5%?r--xbRHQIkF(u({hjMp?fnLHDX zaFRfc&TLUjX`3;bA>)M*%kY$y8A^Fj^LAJ$>%cdg_hhLR!}6`>MNGoj=qkHx1H--k zte2-x5o0#XM%*#LR=$dvB2$}Y5lI^ChHcR=q)>18Yc;kYu=_Lhqt}#pj*&V8M#QLL z@{4qu=3p6C3GHXV!oi{HO2yrWJ%3fKe#C5nCPXmp$f!TBalO>k6V%hO3{}lJBL=Wi zKLM(iY~9O%$WW`%0j@M32BNDuC&P-I-C7kHXbmOdMV?La>q(n%Qeb<&J&q;P{#)=! zOVB)PgqZzYcrM1<-wr5m^X2bJNT(%Ill?{ByQoU?s4SOAN@={C)S&Zi&;9{aWURjid~*@x_+8tY5` zD61sTH-?zKMF70{hQg5@9rS-L#t-6s*t@U3A0ND>f%aon2jS4f8BKKnvvUs!ZUBe! zFzI&9q~#(=)>Ih1nX+W*2Vu@Ql|1B=AImd~F6sH@4;7(MKrT{K4>Kks3(dFt8s+AN zPXjgi3b2(%7MU%Cu%th=_b{JhUYr#IxWT7*JhK+NcTT< z{DK;sHNBiz$IW?uU}eVizo5wW|L(Dv1T@j0)4KZSdC2%Hl@~Me$VMXSqjWet6zSMu=QMJhiQ`AW&Vl5 z$+ed1)<=ZrZE&5o;2SYfn&j5pcSsYe3)F`ozU`n<_g9Z1?SdfTYvzm zu$h`>fkdq({HT}h4&L&P+!0yR7dG64OmCbgG}d|8XeB^dTjyc$UV)HrfB)28&D1{) zHDbS@WCHTUbE9>9bD;`mDxR6@*GbCHBDGpCS3R*h;(FSXz+q{kHB!4jd;TH0zZW6T z2tOa7Xd@l<{5Mhm6dl{^~0%cX1Q5NQ6%z?Q3bH&qt8Njz^Lrh6rNJb z{}MU9=!0b^eU!g{`|$)}c>6VzK5n<$bnVnLIuf8Zy62hL^wgUNpIes10{e#{Gg zsHsK`LGU*Ln_6wpAI_*ab&3vuofpe!Hi&3t8ZO435Azk;-o1;8Gio_*6Kjwbh8!W` zvGCzG!$P$V@E(b9q!4}M-JTPP)>c;GstefMOrk8EH3hQsf*ProUA)9vsNo&vh{GEy zfRm?TqDs}}%1j79D*N*2<1^X=v=EGlclDEJQQ{UNMPYunV##Vs}L_?KNh@jJX$(Jct6ugl_o+;I?hb&*S_ zrqHv|{bK;vK~w(V#ZxbfV|HDs>e#YRdrPegWRsX>)7kE6^GE~a-+c@Ri7*MPIO1}) zkWTxE#Ecv%X_E8A*Jr80RK_HW5Dd2(P*Lwjm=dYx3^w!Qag>N7Ty2&Tcx_^{O`}cp z%c`g%HFK{YF6vlG2X#r2$Mn37_!=s*fiffQ3X4p20>w~%^jMU+xi*kwppo{{=<+sT zoQ`otx*G4k<-jUu*|kG&>^N^F4l4mV8MRp__D6!qWdh?;D{b+dMil!7T zgtb>P9zaG_j1A0Pcc@tK^#b-!dpXY1=Q$kS6i6EzR^;}=)TKD0_S2jK#e6EF=xED9 z+&$O7b_JS&(c|FoE|C;qaPs&bY<)}SOKhWbaTCeEo^AGHGLc0<&{Q7&P_b}8Oq$1K zfDTotDU2Q>WZV0iF;Z9cOT!x~j9w}Y1;MG}-YB4!s;N{EWkrlN%KWq-URPg+I5Mc1 zO$p%VO%jomhH~S^oY+HvHaq9H@y|qo%dIZGzp-h^@ceNz54XHnNTFC^wb=*NM)#lp zKPIHt&@oL`YkL`b-y?ktgaY0$H{vghm ze>9*GCo!arpU!C5+tL+ppRf}%t6bLFdBzf(detE65sHdw zz0Hr@z15ObM{I@nQ4@M^psw$T@3la*B;LVE*`KPh=`P*k?&n(-;|mclx%Szhq#iZF z{Ym9?qjGY%GbCJM`~0<^cIi#~Gr&cEwIc*!8uts?R;~N>rvf`>k1k^YLIh6_s1pbH zf9T^xd1gyJx3;L{FKc)<=#tY3rC4MH{T%YG3b))oQyPR}R~nSMg2G|(6#A%Y)JWvp zZaPY_ID{c|b(s~719Y5lv(9-i7>%mFI8?Jq42Qv$OqmAZ1kARD8A4xjPz)~9hQbai zSyx~JEtcftw(Bbg1vBNN;#C#+{6ObZ4+5rtD2*`P6NuM7mUBSG%>De;6@woJW+(7w zBWt8w72?_A7>~LQs)4Q_Jxs_D6a{;nJWk|4O%@t)(s?VgD!X3D5vLf}{3-L?Tk;kC zg&4n~vgyE21lWXKA;%6)Di6|qIpNdBS`we|Z=gHpQyXia<4eOJ*=?R^YgFf}LV0lY zp)<=lQc}obr8Atv_xdskMv^3YpNH+6l``8Yd-NFz6P0ky@WlzqHW70A5a@;#4)HHp z%$jJTr^*)XBu|}vHx!BJ&gOnWoOWt-DmcZ8p~?_IYtPJ7jL^EYoHm``h|6j_RXyL@ zdUhYi9gVxtE9QYtR_i~{Vs$i5$y1GH64tp#)%gFHzr9uJ7q~!L4FUpU5xlq;9A40X zPr=dttk50_prXHQL@YF0 z?q>q}9H-zOtp554FI2Ks@*bVqX@}ZkU6>BWAG`UPN#GpXAB6%r=3^IXu`-tAh&p1{ zS(NsiW=fZEy?^NUjX$^7*?EyBCKEl=I$=+fk164m0j8kfvnJ~trLa$sMdmA@MLz?( zdsK9=3h$l7^V*c+nh}BG8k=6;G-XSIaff?i2URu4^iW*tg-MpNayyJQ&arjM|6~~s z(=+=!zj1_;pVAxBPsZdyi3UeGwqg(pux2CAYIiL+L;s~UVp1!^X zv}!2@1=h6bjRJ{gP}(1x^LWvg4QK-AkY6J@>l5mNj4hM>Z7ATZ>W60)9ik< ze;b(pxmEa&O>3;%K+Bz}=`XBzn(r$da%(15z+oas)UNTn@pl)=AHoHby1t4%VkiT@ zg+qZvCY2gz8hlYYgi2yni$g@PP1dg2*$>?hZM)$TZgC0jOHWSqw~gFc=8?xCDF=t> z(1)Wv%EFc8yUM2FKj{=xg5yiWtoLBsrzT^Y6E*J$8>6>mWjZ>TO)}i-^r9{kTgig2 zm~Ee4eOLPNu?PK~WNiloS&*U){R{+IVP@j_Mi{SjcomD}v^)9L5_HQ~=k+vQk2)Lz zOVluisS`$0+Ipi_(DxSuvd2-jX>T?pte>p8@*x_xu51bFqn6QBV%TC>9M}Tp@y97E zH|3kIf!p}+YT!V}d~ZgH%<5o7_op(R!?PIZiIs#M0~`KKGZPCktuyVz7n2g6lip%D z+*J$_?2($1*WNUyjCHGNC&t)L($n~x9x|^7FgS$3ku{ylXAsk-8LN*KR!*R%mvx;K zw+H}16^KEh+oZ2TC#DvH1BIwPwHM>+#hckbU!#J^m!BJE(T+v1$xn}`y=p?0(bSFw zfv(Zv7p^WndRn8S98?&@eoeM8I8}k-}Q$M7)phP@FZvF z%z+2q6tcAuP~YZNx?0?*ChY8>XAB2+>JcCM4kKbi?GKmKNR*bgA?P3U=*fOW$iOK< zcSU#I^PWf_enxRA0V`$)FIcvk3j!qq14jjeOG+Jq1}i{5VtY8JSMBRhfA4lkEU$wf zqSC-j;YEI0GG#3!&JuHDJ*neNxHhXGmY}-5?)In^AmfuA@It-8Ds#}8^?_u&7n7xS zXd=tK*`^NIsYOuO!@VsA-HF*moXG3Ma zqZwB$Ga$V**vmYe2lzg^2R*7k2zYHJvJSz#(Cs2uR!Zdf~J;bvf3OLs|chF#X0YLyf#L% z*$+8n!FcyN5CpX0msw!B{? z=J`$IB6`AA0U=cMf~V@3&22Jg&iZ9C(PyZCM;=+(tNS8sip9Ry7{6b)YM^08=+neP zy$c7jAP!H*Xz4T_`;QwP`A|8^%n_m(Oy^;~=HlI>e;1S+B~pct3!*ByUbI;(+|{=f z@kV_%3i7;hcaePoJb+|%aBDz~C=D-Lm`~p4vykcw*Zfm_7F?_8ZwwW>ec!Bwo)`oWn{Vw6g4hQ2eo&plBurj_~LXk0C!lw_VR#uM?GH1G@B zHhmsorVM9kMiK1FOUI}#nVPgwme}J~yQSSj!SET2I zU8kO}Aqf~uVEG^84v(}RenDL)8=x$Ie`7BX81-WYe3wyTMAfaIbLtfyNu_k=vB`!8 zQrAp6`-tiL%N5J*m=j0O&`-<0@z5OUn)5K^X@)YxvzB*#q0n;s0;0#^3Mi$lTu_+A zFNfx#-8W2N^)lOqv}v7Mn6q`oY3vr6-}`bFLPJ4I59JfX`=UK9lY_7-E?seqK+l&( z{7Lf)DzS$CrebZC%m0NY;gZ6Ws27|dw!6Vi+MRVkEK5>^HB;S-1rc1t=eE^$lvT(V ztRx?%Wji_EclC7fU98U-0yzjwI2ZP)vC$yQM^MF5wFY(R%4a(C0%`dBM zr>oBCr1fs9Z8{_c{@^)q+?OV$jdpMfq;&86`Udv~_k6?oz~=B22QCjjwaf05T}bj* z1TgZRT*O2vUh4W-?bq>L4U46nHgF3|XfJ!Y7PxjZFad{v3PMu05zcvZLrDmBu{l4% zW1ne4h}#t2JuS)~u+99lRe(4dFwTwqXFFO9apBu;s z&ZS@*TCy)+_IqNc+efADgBuXSBl<)Rc%;bx|G;Ix3xg^BQxfs`BQ7Mzj)Tz88ZV>Pj-JXF1k|b?98|!@FU=hK>t)29&~8Bv4oxh# zGO(PZI+A$_0@Z zD-C6(ZRWxPk*7s7ZlwVrsxCez?xY2M_~v0m^%{BF7c>`SsC0fdgHKGnP!g4dDwX0?z9@CSD)tY(|!o*i6G7An4H zteGnps&oFX1RwTVTt#%m<&pNT*mG8flU_C9LjA6T-oN}n!i+z%?wstKN2Jh*PykS* zovbn(U#+FV23|GGcbws#c=g|d%FCP84-LAhE-w2(`S{!$n8gLRaAKE8%cwPyuBrBO zBjT7du$RC*cP`Z-W-9{?BW;5Q9aXVt3nR1;$t}8nc1;#^f^83c_i%*aT81AK+sawt zl$#sRy%H9OV16`Zo)0XQGf z&ykpA5sa~8|J(pDL{9LOJ;-jo$&E2l%`Rlg1pQBQlNDJH1jU9suUPSDt6Cr#JnQ~i zEl9lJTC0r}W4W^4OqcfLQ8Wf12z%;`Ri>g?s%z)*{5}Pz-HKMVdiGC)MMtnT`0C6zHTY=o7db%|j zGKYS+yyn{K*cpqLT^KILU&O31h@_lhHUhMPg3>s=Ze|0^EfhgdZ~;^gWnrIA{ZQT> zx6@v~=tyBb1>EPB<+bP2y5O_m&2>VsH|ex93v>G$MXDNa%?Cr5&~fdQ)9&P9cc<+E z<>Hj4ILewp?MIxmT>Tp|nR>an=36Ijz?_e=%^<&)x`T?EZWG-ccwtC1wDmgq2#ihc zjM)}MqNYd6!k)Pbo_TcuITwX)#zJ!-rOLC@`sxuAxMtGZ>XE$-K2aXtpYACX7U8z5 zl!ztzNZQ`3o^dg9LD5vL^4WSj9+h>{k#rG4aDB{Xqwn0Ub#|OL=A28iNO@ zyyl{;(mjK1{A3@6{`h%PLM#{s zd9D2@X`P~1=4p9dxIO9aKzfKZ)6YUKbUvIfopoaSh*br;{EQ%TMP9;7Tpm96(`t(_ zFJv@(Pw9N>^G+q_sO4d46JJz0Wemv_?S`%Xwu*bP=CCHn1AE`2!mCTi*XwWMZBzfw z$GFmt;&K@G*B`HOA@eWvkiQa@;(~GD9f$@w8v-q}Jb@7+U7pTUDUO>}KO`eIFZpjKRT zGH-4k+=D#^-Ffkbd4V`z$lOPILW{pp4@@ZH!ZY9hS+167nMS)74K@}VfxtZyN7VDv z`OrarERSc!y!<9NJ)>C>dp2w2toUV@Pz9OZ6R6an^|T`s8$mri?cV|k?_;B4PuU5< zzr{$8-qDThLYD!bPW6ZzB`mdR-Jy?~BCb>X7nJg1l7&&X7d8q|hFJcNnIU$;FY(x5 ziBG_|@3o>rBFx7-0HNVwhwpQa;Vj$_s!~>_A$$ADj?aZwmQ91$)WlymVVvh zw%`2QTh?%o5crhc=d^juSUIB9+|6O1rFTnne*{c#OjfUY@4lD{=7eb*r}upE`;+WL z?RLbFox`)U#2~hfP2+*Hnv(1~1&x{7JcF6hCL{&KHmk|CQSS^-VHr1> z>kOCct^vyPO`r4ILv7n2d`;GHIs7-7`Ueb^<&oNY^%~I*n3F>jd56OzmkR5<)n9(S zkg{AJwX;nQ4M*oquRF&F3AM=Rw=`@=e1t3FsLVjWsC(yS#cayei`B0*?us@_a&|H& zRPQvX#HaMtn}RWAmu|4X=*F#0JF8c`hb$R6KqDE}*D2_vrz+FE6p*N^VSvDicnb*3 z{7N6x`#nWSmC?hnmj9V_JKva@gP)TDrkSw`K@tYTxhVGkPhRmTU-bUT=WB=MqVfk^ zlKBaa-wr|Vj0t8#zDK_E?bRHaws@i8<_bV$PXby{Qw#vSAgjqO?%_O`1kdBFaCl!iHPa4pdI(~Ql^9|ZQByUHWXFAEdeRM^EUw|9Q)dQAd0 zv$c^5yOiIo^d}Rl*srnq$BIrW{jh_&J9XBcRvz2Z>5Fg6M-*9m+~Y33IuL04ZCT9z ze+XW}d2?19QQQa@o6H__oKGQdoHwkONgysXzmc@kXtj0;LBZ3`@qX#~{kDExyn49k z6jV|&N|~@8x$hqvItj|)MY{6cpBX}(@bz!dtO(}tnrE z;nN263!p|0=>h3#!ExAKT&8iyaG&rz@e*tC7|9;^oS@Ar1M+olKZs8U?x!zzq|!nR z*|KUc>r8tb)XR$Mhd(E%d3V(WL`$c|85Q`LiX@^B%=$V&Ifbgcyk)y)Bc3w+VeU2N zt)!wZB-FnvS__rUk!%dHpMgX4V#CTsJ~8trVD{ZL`IAlVhOfadZO{_HnIIr!&t(s- z10WOcKLTDb?e9-C^$?^z?&hh+h$pcBLgo)5qkOxJv>Z*L{8r+5;5T)N+@^zC7|AWQIQR~zz4ztpD6 zx-3dYfB*2=764y`e%o!oU8D5QycR5Q;I(o@FgR&OzaUH^)N_MtWS1%_#efjTk{sr0_v+q2x zWy^e|46ReY6x_zQ>*~Y}FQg9yLA;s#5}SP&8@8Qvc!eFfWt9~!Wu(^Oq>f;`9={=2 zz`q9A_keQQwbs(U4}C=`Oen|dlGc~kyWQ}u_?k`XZM&>k{hzbiQ%HOUKhERWzhg3# zgNbaq8s9`cL9+2#uCshXg>Azo%=JFA5rA4b*Wp!U(i%6tH6b5Y>d61Z|aCP%@tJ^2E zwcb2`B?&m@CAI!uAJM#as%rIZEn4YRLSiVk+Ca=>e|WC^?rnJeAg3R79>%?%Zn4df!$0Rj!&gZ5d?yyND+OsPZQ6T{ z4;w(|SG%#J9_q{MOGh#Oa8-1;Z;AmPVpe$uHi}TYfx!y36?nwOOHUi8mY`at-L1^z z^1GBf>V<~RJb~k3IQ4`VgtsUh@B)VmL0ovC<0xU-`(m#RFvGXh;(H-jC#DjO#qO#4 zW7b>Y(?Hv6p?>to48n~IUXQuBdMY)E$n7WL*hb6biB8@@_ewte%{dYHuG|V)76(F- zTSz8ZPx%c5gIn>ysX~cv`6{xk`(E=n4YG(l`ngF2W|JLX=9S3cJ=M5t_kdoy@5=;$ zH7gm9ITC(@LN%$+{vaZ(M5KTE?klD%kz=4I=#PK8Oo_Grxugd6)5pq`y}s!v4p!`| zo}^EgS?y`h_?uxw?*-zWUjR}=CJHeSZO{_5btl4MmX~%vx-WcM`hUu{`|*f*H_`#K z^m^qtOT#P9Y|iU`92fXop-4;a3`K+BMfzUIG`?B@|33i0YdC4O`WRPy zWk@iK?-$#seB8`b_nwjx!vHXR@M*kI`!++!CtO+wP{c!xu+(|PlUXlE7D@%tL!zb1 zOL{P#h|GN@PP#L3NOQrM0E+Voq$9AR*#*y45>rzB6o1*Jsji%h+$i?{3M&iHXnqTr z-M3=C1~*QELgJvk1X>E)KGocsw2`uuODOfy6uHhCrbnN{8t#$e-D^EFp4q9mVKg!#~OK|&0r1*;wDJC^3?BoSFaL1;7?hhyGvg-QA z6qjw5SPY2wJg7df&~C{38Hj#}v9R|e4FB}E3?g|fvkIg z$7l>^b^8Y7D}|ogksmMvyuRFmjJVYZxLO)jtr$2x_PwX4TZ){1oJCqLKnQC~S%b9L zx~c4LRki5T%G`G#SK#w!=emmT3SVf37chVod(Vk$`840KVnI70rE`Im#1f#%YO4t) zWu*>!3VKnU;~(94eph4x)9Ja8CrjQI4x#}+aqdOF;d-I9ADlSiS;FQ3t=8J8=04F~ zI8kHk%Wl|$`b0ea?&cK|s<*GDu069HQ=wd993XLMDBwyx?gKp_R6g!8AbR~98To)` zvW0%%$pM-t>mBX#ob;Cd$;Afbxii)LVBNQx8h#4ca__J^s;Qx4GZU%E6LjJ{KjD%} zmzwsnF2-w`S+2Sm#R^E@;bL`B*5qLX%|u3`?7^{a_=nvj>TP5@3Oza?qndXRG(;X6 zJ7t5Pe_IPUiE;kKNA%*-_=8IJc3>j()NP}6tM9wMF>TvS2W=Q!5cX!2i27r4rm%8|OVbjFyv;kb(s@f$V%Q-8#sI(P_1Bq{%sdZsq>wtw| zbCLUQ|2l;axKTVNb@q73nLFOwot^ka_ygTnL|huu2l{nfXQ9^8>pl4uO1`?|h@>H% zu^C#Gr_0*-Y#(jwWfVYTJntL(%-b8ZyZQs@8`Q%_T=T&CvLtgdz@47A3l6G@K{=vN za{aJI{GHGqy1RUQWQrz5v$)e79}C7%d3j6Zs$*HdUoXL6;Q$ehzKC{}lRV=r0P@0U zLxe1DC3|an>&%JA*_md>wA%ud#qP@&aXxec4v5B!#4E#Jza zq9$?Voq(IoaE2-eR^GALv=xvTB9Em@ItjdxQHJx1T7sCYffkJ;8FNa6g%3^ZY5rca zh?o02bHV zxDr~U$0AW-8;%U%mB&tbtCKJE)dXf+LQVX6um!q zUmAHrQMY%YRN9TccEU-F{iy#nUqPzIzn9G(>*3NL=vxNlVC)0T?P~pbxR75Bo$y!w zS)?`w0LZ6AXL7}}o%U`qe$sbHe0D`oV=`dhoZi#U5jaK`fBwpTLJ`qY2qpnh)A6AzD_4*!NMQ0eMXRo9& zlp0eP7y=;%rAAVIR>X*?%nEX%@Wj&0(IpvFqG!^C@&h{gl&Wx%8%`-6Y0B7%JDus4 z&2M8M{IPE%`$c?^C(Q1?b5a@L;ju~*9FdO9^ew7JktL9(ZWFBS$+ z)wa&@(i_oOIIxPC@o`_Uq7s9!)FCz$x=TF@;7T&)di}5xFnfyFF|alYw!0*d+ufrQ z$!}$m`mmD>J27mN6oxp+RQBm0?Io00g(XCU*#*y%#h&?s!FGju`^s>7hFNpDj_HF; z#Zua|RZO{p<)FI(sP`XLTACPA6Lls{Vq*fk!S#GEm3Z? zM12cdzwRU!TzaEW8~FkLObUn~wEc1BV_O2^Xfel$Y3)|QL=1Cpfx)_88$q#jqLaCZ zM1S5hyUddAi?P9-9Qin6n2;wQ2NHwQ*+117Zx3^*xQkG;xb$EYTSD(VbJrz}p?t0j1!a z6q}8^QL=kQIUl0?)E>sv9Jl+MwAV+tg2dr$cccn?FUyYu~f@(x?Qp7(jXrY{@-nX&}ReWCw>yC=Df`y!5;VbN4v zksO6nFLV;0w%sshD{S7_WC3D`47zZMy8Ps}Zrr_PHCEmYyleyiCuMyU?ai01>WnGD z1z;N<^U;-CGLvJ*Qr#{Vjkna^UYgI`6$P-PfHfKQ{>E6^1Q9_GkV>vJK#27)CfCtL z4iIT9K!8U1!t0=5k$v=K&dfT>+Vg9ovGKo2AHV0ShR0Q8s3D{#k_kjBi!a+JYFkT# z+pAi+(iy#Br*w}Ty+CesG1Tq;HT8pCReGJS&`lBl{gWc6VoL{B`?$Sqj)I@}&7!-x z(|12Oq595VP++{%mC@50;uRoJa~Q>r(GC>ur5{9_9{6%DQ8teb2$Vvai20wfOF!z< zr}Kh-E1b#yBs0);%m_Wt+rSN}W>8E_v5T2BSBwz#bHDX)FCz z2=8s2fFdPLyOj(#Ag1R_+^fqY8AT2sa*1e@8Hk_B@XeH~{!o5>~AeK6dm2Lj1r1O|4t%=@$alz#ViJ4uIYNE$05c`t%eTtA3hofsG2oE+0 zylT)o+*0Bjx!j;v9X0S20;=PIzes*=O7~15n2~)0#`X3QDF6%payq0E>30tYt&yl#ibU#|7cAt6P5f1f3%`Zz~HAo zR`knK2xI!)S|~)HS#(lL9Q7 z=t56pRx_662ug0)`E<1iWqu(z$hugYm}$d3aV3-&7ZW5=dLjMJc5}v8I0$gA*+oSd zXZ38#^QpiI)SFBFCwlQvzvY(5t7hA3scZE2w$Hd|&i^fvF{X7bQK3;Gh5`-EVYGI@ z`2HKkwY>eBCK+W5M+S4o!UI)H`qQ{*E{B2G(-#@Z5+cnOHX&R41ywM(xo`NBXy>}} zNfBweqoVn-Am+3)S1EG*VDfEO9H^4AzmJP^NIs5AiUPse17tKylI;U#^z944 zbWD^*{>x3*EK42Lw4oAlY&-)HPMje3412AJ)A%bI$};-{z-|_=7IuKwX@qdfGuavJ?8h&i?W(Vj9hMC*Kj!Ogr@!JGMAxdR+wZDusZa zSYc$VM@un0z-sIT*7~%9_kJ&wPt)JbR2b>(19dAEOBIZj41SMto5rAXYl0h?Uo}I9`BtK0O69pK8?VVU zMf<8yHE8j%pXKS5S3Yz4z4A#^GCJA5stSv_TK)*oTvMzO`RK+Gp@zxt^c0*=pc`C$ z=0iZh1vW+Tz@+<{e~Nr$K)HKG#R@;~sXf?WO}!etWXK3d51|2%Eoclc^;W6rsJOimkjh1G6Kxwun z%}p^hpUTVVchwx2PB6HT&xE|*=<$?JLo9e{Odf}Zf&jH-^%eA><~emBY@Ma)s(7MO z-qQ=6vD)hbAmX$F%#!|O^L=?4&Oxm7Fy&M&%Z&P?(!7hy;2()T?GBbF3}MTQ@6y6H z?0No`XgcM*KzihMu_P1oc_sN`5{_U;khT$CV$v}9*Ayp=cX5Lr!YeZFqCZ>XX{;NY z3040Zp+ozjg|L{jk!fIf#Hv)m66Src%LSMNsQvOeH5fO@&mGH-jODw+Q#%viCg919ivur`Ne?|!+tdHEu|O4DDtBTfqRr4-999&s5e}|<+W>c|w z&!t60u*zveX z_-u9d?k&-d#!`WgEV)k3pg0P}pyj8GZ0 zT5AQQegr8dc+i^1%fO8^0`vtdyi6xDKtIw6;FE3dcufu6Q5g&Awu>OIT_N=3SFEr= zm!Y6lP$OBu&Qy*PlbFHIb3cHL2bsQ->=emCzY@)4eqmr@I2Bi;R~=V32wwZ1=vb0S zCz|_OyW>gXycmhTb7I-l2m4Vzuq=b`8*5d4IEt=oJ}Xe1OA#Hx{Vq*O^I4)%oUPDa zH;5k&u#zC!X`)@T94O55DXX%DtusyYz*C_N#9$xTWjO02Z6$g7XIx)^~CY#i;?9Fc*b?&ITsK2Es zi)k70Gm&kPfovD^_3rv*JA-hd4@EuT(P1Mz0|VC4#2+!om2wiaZI=XEc!LBy@Kh2l zN`1HHrRcT+c~nH`D6HqetG@p3Ik)efiF5Q$h5DArh<(@d0FG4<~lnNm-$FLL2L1HgY#<`^G61~ zYG_LeJ^^Uin6hpWA^_;N^H);xTfJNtfR+9w5$7gdPSrTHn3Z-zE>yW`er{;TIR<@u zIQ?$D3V=@(@`&w`y>X`(>9$1hR4@c5OdpnK4SbQi{oY|d)C5Y0D_i%W3j*}-F?>~B z-R9#|y%X4*y`W!66yev?;RVv6&E}XRhUF_AsL&by7-g$Ue!&hmbLZ+4xogjZyIC!k zYBw!H_LMzmdl}Q(2U}}VIYh)uXc!Dgn#W*xU5ejMUK+VjUvJ7}Fu&X}RxMDrGCZb* zns8bdmc(9E1~8xesmKi5vIDq+IXx-J&|bGEGN7C* zL9$04uAqM-FC>l%Ko$dXwe{a%gzPdB*YV@*{~Arr8)M9z;*SooXZj=!N$b*~@W!)2 zaP=8FG;WHEYI+4pVvPHcvs+fsidYX(PH_-P6i6ZA*RbeJWIWLt(QKt!J~nR0&RG|} zeg8(*3V1GfiW+oz9}EW)4G@WD|F49|0YQV*Yo@5PWA5p|rs7fWX@>lVqiW~5p+L-n z*3(IbDPjFs@ic^tN!#_uHp{%0C9_mbMWq3)5h~tz(AnTjhqi3b!tWS?qPHh9mNr1T zhaVP9s(SkMNl92Avd^0J|FF8xCq@qNfuSJO7Q9C4E(nUfdFS|A6#`dwQb!2&0ht~U z0hbV@-4Y@5JbV*$&pJi5jfgWr2YtmokISVN+#7jJ{Wst2{jI6PU3XfNf77$uGUJ^z z>ga5)%FAcpqJSJlHEW<=>SF8um8{wc@z22_9S+Z>GDZL{t~!hD>+82tQ%2a74k?{( zn;rCG%%0R3^8bc_jSF)tNt8S-+q9Dk6XQ4WBTF=5q~V@u`Bhvr2Vzo{o-@I1yF%)E|2?+>SEcbJSV$YK&@CCr+mwwi(F4=F&`$nN@FLv=UQwQ0K?<>IA`x%fM1StZd|k+7 zat0!|YiR`P4=m#j9S|XOzNUkP?JI<~8B7Xzs(rRlGxoA^Y?VPjk0u=OxE&I7nw&rK z6G0f0bM=rY8YuNxCK-D8){7UU^@(c_`Yyfu!KZ!`7{drBy=ypS`K<0oWLUGf9MuR{ zcthWt_HBXMR!?fS=z$ODsba{u8q|1x#%i#5%VP!|qKO@5ILntWjGAVzXp)(6Y_bod z>9RX5p(~5IAcV}vRyds(GKIZsw@S7_3^m=={on9bnz;5uT%?G< z`*#47hJk)-Hb%e3({*O`T?o2bwPQ$+pI+OUSK25CCZoN*_% zr_!c^CaVUebhlE@C?`u#Z>%Z}m%%QU1u_m(DK5wqZDgws8Ub2=^AQm1YF^AaFNF(@ z(WCp&O2gH$7>KP_P%Jx)6LqgJJntNQ;^q{YPK}h?{7$M8*~Us*>Uqk^-k@68eA+x8 z)m}4E!YHdOUr^hEO7sMdeg|8s21(L6 z6;NDJ^lbmE*4C2vn7M(kjIxIzh#p&J@ssmB$f@()*?F)5?&Q|(gmFa-s4f-vdcX(B zpa_d+idKatODyJ|Vr1Rg8fvrRW;Lft{%2*p-|@B%!{10RnkoX@I+v zEm?jwwH!|*j^yjxdxKd$L+iuVdt<|kvHAgsB6GdLX--8?MbyEGJZrV0XdR52=v6%Z|L$~S=Z zgfes1gA(+4buSXMva#W29q3^-f@P6<`-g(EFeu(L53RV6!ytcj{gQVJ!U*CLEkHH` zSiS251r<{eNko*|^}f~Xq@N(IlC9-_-ClcU(|@_S*oX{oQe!E|ZIPg#`T5egI(o4W zWLqtAKZezy@7XR?_i3m8U~<;jkXBSXZsZe?g-Tb;VP;=)N9$d)-OJ?#h_q5!Js1C^ zc zSs4oC-5m#ZO>&Ysv$o#;A)hr(t*! zH<98(NK__})8Dn|DYn)6tU1o?JZ|FEOLnpmeJ8*?M(}#xSw@ZIfT2Sj099FzkUV1W zN1Vup_bg1PQX&LgBgV$Mc79d9II4Yxm?q4mP*~(q>jDo^g0u*QA&%#- z-+yU>5vv8`0uTp-uIW`c+0oS^!5kfWbD&2q%pZ>GBBWp~TOVS4xv!~P(ik}n#hbAA zsY-P#DBjFqsrK8O1i+gmQ96-qfcI7F_J~h)KsSlNJYay4lFz$X`z|c^EUZ4(5cIB7}wM-2!*>}Duv@W7`ZkOw*vwJq0OuvL0o1g9(|xH;LnH$ z#_29jfRQXPTIav(1kH0tjw&+(*mk)m4ZJ>`p5=y15sqFFoJ#=2C-KgV97ziY zuZ!Md;?ddubbAFA)BD6jfx?gzLyA^2;-n#g1Kc2|KAqCJp(F18QJ@|}?k1edzEkxe$ku2N{$t;F~tbPavxqO%kS%#7R6N~&ixHbdVzQ1z&!qYm`s0In( zCl-G-$jSVYyzkRY^*?X}pU)v^qwC=eqIf>W$u?CtxC_iPY~uL7R<+xD>dklktN^L> z`XzI?1<4S~T*B2rV!S9^mW2&mqZ?!6my>Nt$tWN=9?3LLf&7kO;4kW4u8cf`P2K`t z`{7Rm!;EmNt5`_Dxo7I8*-J+Xcvp>Ct+B<8;CBZC$fQgb`C=E~Di%G%J;)2$gpFJZ zoxcgGB+kmKQVEa;^#I33I!X9u>1?CiVLZ(!=JY=r`l&K)^Qi=v_Ta2xV72-}(9 zNrJsys3t5OEt&t~qL2*EgjFzJe!xfdQc2ResEKwg{ZK0)k@Hw^VKHhaNa@5!+6qR3 z<}w332jHYHS6y=KYKNdz;jDYf>-8r*uY4ilou5<4>x0yt0A7GDsMI?3R2Hq*K8`is z1KX%pW5Uc&rTQt$kVO}nGX39Z{_`spF3{YnZ|+u=fqat-1viSTK75ss<)I4_9t>>6J)aJ5Fj2}QA22`gb?)$DN zb4We>tWG0iOi1)U1Ff-vD*xW!UIDm&!je<*O*(!HaSy*%0wfdCUGMLyxkl!yp_S=a z)p@3J3G^Z{-t07t^hT_jG(c5EWbB^zo+H;Z%nZK za>li;qb(Xp^~yMy`WI4Q@69%lxqobWEV$v$UokV9g~;GfHDb%Nvs)|7mq;RLhP72^ zo1Ff^T!@Wn>W}FKYp0GoE=3e=xu~a2v@c2TbV-hs=GoO5$}5erj$|IU7)VoTStvXs z{Q(C8kv7fPJbcB}8|EVq@HAz}LNA=QKXS_Bi-M(+|IEAy0+cIS0uzEk;F|4vmy&=5MP0*HR zvAQ4XV)+BCMjH45awBL~6-dlWqEG^o6CVjd-c!h5OCAA5c5QcwG;06W{W zP~~R}N&>5$vAN^^b4z^OLTAnCU8IxW2}1%d_ZKn=qFXUKm!sX@%Nkm#sHG&*SeGh~tdR0W`7D-A|KXNs?bx>R>* z@rLoE)`3nEI>2eJ?|Hu4`lei7MXFz&m52B%BELZjc~*(GYldmPfg@MljAJ_WQ^iM8 zTCH%uDcNLh&h^M83NUo-1+erReB<9*NL!AB!_EfRoiatuC+HvnmQs7o|KZqhc&Pdp zeA!wIjj$uS2_+3Tbd_e>a5vrriKe$F!Si8tx2;B1qLqMSl*Ilz1lDmUNT{hH+U$6? z!tjG;pd|pm#8&h9Ce&uUe0hby@`6KY-k~%IG?xdu5NYNWE|?F}lTbY(s7RV+N?P;W zXCw}z@f{}u8%pw1S8a0%(i$C`RUqyCZ2m2AL{03nHtB1786I~Z}o!WMiz0c$@^ zKnJLYuoLqWrYKUFflmbB@#q?_YZ+iqsw^;3`+3$ws0d)})z+JOwMX*0r^D>3cxt zq7-er$K|rEPAYe@@9;1mB5*ZK?!_!cT)k$k@2EcQCqDfPMF-e=6SKSl12L2MuGc^u zcp3^;ZjRgeyxvit)yK`324vbP;q#gOOyfmR6i_^MzG0TXy6+&`xF`YO1=R)s^xPC2 z+{k?(R;$dicB#?)~HlEWTl8Yhe4e=7;kVaW#wTFu?nxBnCbfS zct{`lo07S-YP=RpgjClqXdwg2R}F*+j8}>*L%o`Oeq$LUBYDr`{c+?TV@{E&CMSi8 z`=KuQ#jgt8Zz$#WTL0tnkpPE}(!um#P|(%9ZSfxxZR+)0WacheO+WFZEP7sSa@ z`I2O_VP9`bo(!gX=L8*&pOe?2d$Ddi$+@;BTf~Yh!L|njytg%vi|unEameBJp2>A? zW{umVaoIm7w)RECfXm&%_luh_0ME`#nz~65 z#>=*zMfJn4EH2lO8l4VMfSe72B!UC9Er&6{LU=Y1UtQOyG(x{3)W*+P+fPTSf{tCR z!!3jqUw)`kCmfxki6Wfbl1KT}^oNyxNntpaN9%j7f6VU%w&~`aScuSv)nsd7J2Hq|o(1?bh&#`p19`%c})1h>#A9oj2J8k@gP}YXTVN*Y_ zF0Y+(Z$ae+Mv)-rY3c#vHzkDE`WY6i!rvz@{lM3%kw7-s=7&2uU}8Re^A0&SZK_`q z_pU8aMNqGhL47a@Ig49o`6zD#2D&|%b-(~m+>MS58C=7-e+s|QKF%b&)_MxMyU5SZ zsid7wUI)bedJD)6K}4cj=BlK#kuX6$`S=m%@$d^K(pW;{dJdjw$$2f3Jy!|s>WrX< z5Jnc0Zh?jcgIVLK{TF)UG?nH>rz%ZES6P;8giAAEDWy|m`2QemYh9Wwi4C;zwIE3u zRG0E2jSjW~f**disO%wGbs5QLh=~c!&1XNA#*6}_jRxM_V?a$&^tAt;jsh~_85sF| z>kYfOTL}^n3PY&9SUeViR%Ud73)&xCZS};<cVOV`DS%Q`M)y!ovP zM0Zn@(UI)6Zq;1U!Mngg(a}Mhd#w<>BvT@sHewGK!Mmh>KN%4O4>BOb=fT<|Q%e=! zMZl65JAw{uR0jR}C{%%orWa^+mk`}v4b@Bh^tg9M!vs$79pS*52w%r68ZK9@>h;G+ zlxT@u^IZ@Es!7EK zs1QvH#nWJ`PeOIg#onC&sn0LjoE4W~R(&VMpbPpXBn)hT@LGC)GUpHEgO#IQ12bjk ze2%<7IkdhhRqB76v2GKo_yPl}BaxJyQuh+C7d6M>p#qxQD599+im-Sz4X8FaL{zf( z9H+SyP94_MB5Eh)ZG1-KxJ@y&7x3IrJlu4iVpM6(5>ps7_x`>R_i14N$7M8TR)rs5 z-0ENc#7b%>>n%a_nOT-y0-sClp&*qP982dVu$mybUj{8TvM_*%}PK#hX*dlsp%X z>BS@FHT_YrObiy?Dr;X7qJ^?zOZxQzB<2OoDsmiS-+UCjSJ7SYu!f62@Ep&)xAY(K zB1L*Dq!viL?Uut=^LuA9}PE&3}pQXLJ3~YCj>8#F}%;}F=5+b5cUHSv)jL6 zH^b{mQ z9UGp@*zTL$_A4}66utAL@bdnKagyDMdLOcsehI`F->+|Arn?;lXcZ>xw4dfZDy4(d z#E8_4n>69lM3!yU3Q_#02W;*&eWlX!pR=ygY|G(;WHVs0ap4+TP@9OZ7B`1w_hK3V z!*&d)w}YN9IUi8&6XQVV=!=D4yq4 z(|AbrJSBx9p0Ih9QKIlQ}&bYsTr3s&CbbJd0c0`qT`wm3% z`cSbUzCjI@6ya5|3~b@JA3$GRYRKxMxC%n^_|K6oUzukPdUytETpCJ((q2S=euD^~ z`@pp-9iP{@Qu|N$=aq4%vD%uRRpVXt09FZQIowHV3qU;4OUALN;)nz)HhD%|bdPP1 zK+qtMTl-k$7pI&vCbs!rikb(xk`Lhue{^AEh;-BhW6|19sd8Oju1Ox3Ioa_mIBl&` z!Epkpbx^vv-ifkoa`9p8c|(lVd8L*`(h%TEXP2F(;V4&?jci{#J#&J*FHF{M;~~{Z zUJ9!05ny`uq>cu-YAeDcvq2!ggF`3K)AzX^+)nyLe0J^THe$8jDe!4%U6wlu=F0V#-fjO_dHfE-Rd2zu#JixeYp5_it$~U?^+o@-Mqn{;!<7}_l$r$imx){p!FL5%#z zO%lo)ugOYCUV=0d1I5;X$9pNrsPANNWGTu&B`xooktCB0Yk*a|KJiWJZo#pcyM;xD zPPDW)9A2)OmCL9yCKlxiviqW&v`QTNciLlj0Ky~QMm7GvluBQnYXNKMQu>ReI}#!< zBL}+}o;G5Wb?(RUN{{eI^%9Tut8}XC7Cwp-r&n>yUHE@m&^E;J{V-2Z^a1(wJ7Q0C zUxAu!bd?OslFv-TQSQFqj}VT&>-w!fFny`%f~u4^1Iio^HN9g#PRqQZQJO|Pk!Qml z->oRGYTuPuC5!L^7&`uAQkX*|)#@oJ3jUFd<~`E9?jhUO7H8@3*NkxoUPhRoC# zk6npWm~B|pBmxCffA*O!ka3O8Y9jE&U&YzOUiiH2)cVu)7Dvyj=hF=hHYs@U0O!66 zYj~xq=xG{01@unlM@}SG%<~J|51`GtASRZy*l*qn9Se*~WE6{PgcY=vu$A8GLjbK@ z?ZOs*kjdh62BC!S>r_0VCkZa3Aoy{N{doW}l+&La4}Lesk%5YC?+U(2KRjb24@H3g zK^uKdRu4r9bAqE&53@^i^tGhLcVaFYYvqZe1*n78c|GK2j4^r=z4J&9&bL>9-}&tUfh&b$RZtKInsBwFC#KvC7F7MEY`euUp|N>z|HT99opkJM>epzF%!X)#%ab?ce;Mkmwz2TPB};85jhB<4@Jt$H0Ve!LT^rXEqd8* zSD|zz+c^KTG}23)$3eak<2Vnj;-mS0=HvxP0mNE{9$minM)!uyAs?!PW`vMSiHaVJ zNNMisGMfj^EPUx&Yo8z5P`SRKV)yU4IcwY!x~i(mJhB78bF??>Yu^`lMnEdXCfF`5 z;++Ty;=XjpJza?tkZgbAtqoA_be@)H<1QQ$G4fQW*VEe&&7rLH-(JR;Q7eUjK#+AK zl2>LbPv5&RzxNGAvg&cO^R8yJK3o?0vtn-$WakP=W7>7GKzb5M)Q$0Y@|r}}$6jEy z{YqU;_cb#hMS*9?4U z?U-kq)ur;K0yP9d>PgJ3@e&n_qA1{NTyb+XK#s~ZfOg_e9{_n4T&xN@|B1GbcuryF zPuG+Z5@k+&r{iT5)n1`dzj)g+J>7(9dw9Vfd)FJ9v)=_X+Wk#MR&qkmGVL>$AVSX$ zk#Wf2#of4i2mkCX4J*=T0iI+sL{h5P^zw@@Ih{B0qrlRW#^dm!Q}LfvDJL*Tk%@T@ zIqLLQ0EUj05Q}{Qn&e7~f0_hix@vu1t{7HZ>PUy#{KOG#6Iwn3)fL*UjW9teDmNNW zfXYeczn|}8SYANw#Vnc2{a^hl;x8OQyOymmxW%7IAs3ibgr^{V)++IZhw-nX6zJ7Y zW))D?J&m(qZejS3NA5hjQWA=z5CeL;oZQe3e*X2|PyQoERKXN@f2z=ekBhh32KH1c zg%e7)C}l2B**_cJoE$W6vyJ?J*G+hcjk2ja^lMt<3_h+?nryPtJI(J#m~b12f`dC{ z5Fx)%6jP)!%gX37_lr`6O&Y*JbwOGA9|vHu&9$gz)T<@b3@`#WL@=><$&{HFYsY~1 zyw{0$xME(9K6m92SyBk`1MtU5~`vAjL} z6@UKx=E~EeA{-TY`-$3>UFjW{layB_XxKfNWhR4Wyy!Y`8~}22!HjsYAQcqSi=dQ# zjsR;y%6dUAK3a7L&FD1L)xAF;Ryt}qL2G7(H$|s6!&J`DbzGamWm5kgnV|ar0L6ow zM%j<7b;6)fPIu$EE(Arw=^M{QYf%C@I5Sr&nXo;J#!{y6o&mdlIEwbhb9t4B`+BEa z-Uf>6uE~91S7_36h28F-1<@f6>){~^@XHVE=kVZ1)?0CoNy`~S%VbN$+Gi9=8~_Ik zki|gp@%Vjm-+*%}z0?>Zqb=NwqthI$XL5tjKCS6n##h}#Cdy$Z1C1oG*&joVF)R5^2$3(JVj@;H@F&0V^} zVCM1$P$q94{L9gqGsC+?S?Fi+pAn6okJy-|sax0xyJl5`&)2?a`crwQ9kHRWkX^yp z9l~$>L2GHdLTU-(D7ZlZE?HfT+28zyPK(wPIrL0XE^u5Bx6yPL!mgq^=@J^jux6(B zBqC5XA1cBJSw}U@j`wHmW>(9WSB}uBKHbj8vDj&US_g(j;@xBDW7orKOe2i zOq@cF7N!VvuCT4iVK9iE%}_f0=A)qnI6sie9z!!+7BErjWQNc6YUBeJ8qXjNf6U0!wP=mJ4|_dLV<{5?iF z3!&llpD1LG{%RxAq@)6)@Rfj9d*ECpq}LW<&&i`e*<{RUI|O|L65JHNH+1odtoG%u zLCKz{V4r1Cg6y=1`rC6xL_^lJ`gTApb}khRmIGaIMgI=}?yL2^QBl8|ISjN$l83uE zu*FdOPi^iH?!H1PC1ayRsKyR|Oo!rc<;)&Awq;0AZaB`0HHR5if)h-B)gB1RrnID_u!de z?k2+Bw0X3u=)~9bK|dc`Z`H_(+sV;2k&>vhb7{tp!G5serhcUl{WKcBKN*mZjjAr? zEPI6Fc8X1tF)1PnLGRzB(pcFUfg{QU=f8I`rb9Yei0tWP^ctsZ@NM6t6ZiXn0fF=I z_Nw2jTU9BdUTbpwh}P&4(jLSrw5e&z7t1`$H+mX~xx8EqwK#06Lb~#rvSE@dVHVzt zL1)BvU*1nCD9Ct7&bE1K1*=lB$HpAF3n8h*L^hM1t9 z6#g!*w1Gh)?S%lZJr*$K6{EAg01wo9h!e6TV(@XsbTJ7|cGh_DNa9!$jHLKdPd0$wD-@Itg%>u&2AIIG91qu<92UOj%;h8=5e6agJxSq_o?EwO=7KCBJqrA=TrW4wIN#fl2=iSiZ< z2_)bY&srW((|wU^)y9b#xi=C35OT-A6;*WqS?}Hg^hiOLC_RMaaVP;L6hvoWJHwi1 zu``Q8E#V?8ef-YIkj=c(h03?MA0b8zKZD3`F{jw2JVH8%|Ch5(_cfeZxM>Q*aogmD z{$uaG*=HyG@{tNzBDhVD3pz%^KIy+|iqs6! zgB+Yw2hx0reg^@s;ac@cHEYPSzhQ4lQQcECyyc~!EO>8jz>i%uulE@x zzA-#Ro0-~jvm6i_UhQW^vc9cP({~bsJxVj~Z6;;mB`nZz$M0gU1x~+nGvwuP^fH7DP&|2{e>Rf-xtu18>f3I-efjo1BDXPXGrMh`@I) zk*&}B7cuxPRyTd;L)GIfd*(9jaebje=+*dPa)ZgA`s(gYhcoqvEs&=T6UMAi;N4t@ zvoJv6iNYw7^=Zutb%_v82(5uuV1VZ=-@_^E-6M5>-6yU4*b6HlGKsmS_#0tJUJcp%aShoOj zVInc90>Z~%@OsrQEz6w><|E4mC-Z66eqk^|i+~AQ%0$JRY0Iv{3l|$}3I)jLn4n$$ zZI`hm%&sNLuA~Bx3>*-bifD1H^4(LyOT^%>6J}kf_vHNBdM)KDD@ksdx$EgY-JYKL_kZx@VxtcO1R8 zTyJF-$-zvXa4Gc(={f}_#4))t)xGBi-GFj70YWR%$3j@?!-3BH{?VnZ^KrNp2ku?v z*4<@Bj|!{Xw6hO#^2K38bQJCRwJqiQ-da04+}Mrd3S|JY&IiktzHi*Hxp_{o3A=)z zOI6b*+_<}gwAuGNK}J6g^_7`1G{{j>`uY9T(V=pyWM3T={2@DLnKZGE{n6r%a~O!7 zHn?V*x&S2PjVaAR$pVGw0)&L5X_Q0zo@W3?gxP)me4T-ub9BOxeeun&O#uK{Y7)sWWTlSogZ}1nGmwZ*u_I4fO zbX{pWby1Q~NYjDU{QNo{Pd^N`50(dCaWl|9F(!7QBd%})a@*^$+*dtaG5=w;lAd4h zM55HuV^t##b5v7v$@GgGx9C0*w9(kTfi+#Tk70UzzWgnUKm@i|rmFwalqqAD!h zQTaEM#@e_{Eq${bp(f=uG~=$fJXW60_g&L;PWt8&aJVw_AXcPjHUUwwHurv#?t&{L zJ0+(=@ZA~)(nwpaMdL+Px95_sqL*TtaVTI#b?8t&-N0-elyzo-Sm-vtP81TeHCBVs zH=Fi5h31R{#cbn*IWMeetUgKFh=AX!G?cEq^9`*;%32h^;gXo?+~2Ch;FNeSWPKj) zMOnSQFDKKj<6XXo<&xu#!q6VL2JWO6{7MC@0CH^i1U4BCu9(y%iKgw} z`S9S!b;c7USZeV#3@Cc_^GRA4m`5fg%1er5)pE%g&a&eLodSUx^f5|?NL$6X=-&;( zr{MQ<{_}&?=r%~H!(WAJ1x#zU(ZUr2V`W~QF1gECkt#v4%=HE$1iYcT&C_=>m&)@c z7BPMmi*YW+HS83zO@KxlSGES0{ceKv={U&gp*%&?8JvPmo^X29Lh{b@g+=cFz+ciT zn1fc{q*e}c=0$LfK~Lyxs7EL+VYmWX6#`G=QV$ksV~T*zDBr}yrp4!IU=a_^6$eX4 z6GV>cjuKm^Hhm%Ym-lSDz_7W*CJ3wp>tg(de9Qy?r`f4T#AEn^E8aK?ps|NothoeEQ}0oMPR*wgE{u_NT;I@VBEcR<&X`Y~}U(TJszgsN-3gw25U-niMxWI4mJ{i9{* z(h*KOtc#v@3tN}-5h_hkK<*~Ar_^|BZguC&I^EL@JcK3%ZA4C+5vpMeHYT*d1MJt@ z4v95>LTtmaAAwNs&sFX49h%9=#r1i0p#5?Fu7qqmm&;An_xT{QfFJlJZiO4nx_bsHx zZX@X5fHwg{!~!Y(4HNCo8UbgUFbqbH_>(yQy* z8Dvr0$}4kVJ+od}O4LDyQ3?uPo%+9*4{tlcd7#@Nsg;9Sfn#RW|Crg5fra#7o;HYGwV1!F$ca zbZXV1Xx+20U9|}jcqp8P@%~e{i1t=m52&MX?GYCiaS+K?dQ1L!{S3vY*Q)LRm7Uez zsLM51p>|U?4DIS@F*m++nUX&~M|sgkhwMcs_e0NA)(@ZZ@g^1!*& zmrlElo_VyT3(SZ!-B35sXyz{J>Z)8-n^*W0B8EWVy(pRP<|U5QDML3D?wVzdRcGdm z&}y@mojE!w1i2wS3p#_gVv@M}ngEJYk%^~4=n>_AHGmJMNQ1E|9+DTmmd3tmsSwfe zbN=Li%=vt8@>j3>53G#|88#u2O}vyfw5L##76%zA0n87@9)S?H+I&OyrH>gUt1yD> z-B5X_sq;varK~+QFp?23HBA?OSuS$kpv~of<8gV2-$!L}B5WK^ z29O1Ty1rUf zq+M5=>QFm&s1ESE8xs{P<3V-69nCCi2Rqqa!sS?F*2T&n0fvdD^TbryvB~jRPd6H_ zIrv;-n6(a@VCr{U?2^ zIH4Az-U_+O_uEm54tQ7DB#qt5`(CA7-}cry>k()XOvI0E>Vct)8M_XRa;F>jBxT+F zyy{Y!=2=9qtpTz-=HV*mp3Q+Yi7l=bdP#2C8J_KUY&~kOC}D&Gi=acmsY7l8WSjyz zU%yG?Q(gNo+U{j7z^F0k=#auAK5_9C4~G;x%9zgxW4(214w5)_BTer#(-n8JX_UBe zDa@39HqG*5s#Rpm`dur^z6|p^#lWY8S^Jb?dd#9ps|{`?njE1?{SaEAJV_1tN>Xl@ zf59Ilb;Yyw-2(i(GIH8his3@8BP-+%Gv)jI z{m!%nb?uL4FjY_rK9yuObyt(edVg;;KiiM|+8K_CG=<_&D>>-#M@q_yPliePoE)ba zPfVYQ{FJUR@QE@7F;~_fz?=ET5e*Lcf3LwZ0t5H3bxG(fZA!OzYOU?(H0m7Dk?Z8u zdxxO6pRmZ6u$NRP8qm*oN!JhH9yJIOLL1TXZIC)A!q#5ruL%wm5IiTYQ;uK?*nPa{ zkTT}Tz-I`QMko%L^D67OOYnNETEP_C-*n~R{R#%H@&;kY4fSo z5Jz%l#LUvOJeH+MTzcos=JT0R8SFCzsevGHZlbB;yrcm@R-SFY0r_PV1$Y&7YcpI* zyLh-#KkutHg@&*Ltnw@VrQ?_DaQ}GIF))ZT zq8ErCaT^^wssm>dc+p5mL;{L2{~^0NXVCGDviB-R;+`HoH$LWXDDYGiHvn>vRewke zomreD3z4eTuh8z) z9we~t!Y2Mq;1_YeR5dVz`!Z>F4!%bl)PC#bTEmPp56g00sE5@;F@FeJNa}O=NLZ_> zZ|C?&9=wMHU0RQ2EwNFTv5MS33mOj`wc8^3E>3%5aFk!iYvJKKg}PvrP0HI8l3ZTp z#G1oV^V-e8#zR=SS_!3+QuSlYP9;GC~o3>Y^Ym-dcND1`;>$LRHgyvgsBmhjqoroTtJvfz`f}is!X%FR9mGH7d_vS=RS!9*LNEGCF_i52?*>jG zZR?oN-@P=F8GTmZ=*bHAJyjAedAWXRH6ld7xY0`;JcM(rSr|gkU-dYTVlU|=y67cmw*5Ou<_(k&?hUVM zo)fS|@}(!ZG0pjBg}XTPVY@$`AD_L+iv2B!;DJND9AvcfBHirdpcOG1B8**n}X-w^kw{oF5BlB_H=5*1);*K zW`Ky1xTiOMyJ&V`hEf>nQ8Ngc+jK)LznTqq)mclmW_fz?4=DU&|KB~aLNYZs>1UYy zq;5jwkszzdtD@|x>NSe2Qd5S&ivO5xY-X#YX7Wj7DL;b{d)DL37cA|Voa0dtrgCDL z)S|u}MJ1?9HtMQQ)CbGV8PKPDB07{LSrsU{o`Y+8q!$Z}2YiIwA+ec$13?;d6)Lo} zf%N7hA4OcCaoJ&R9%cD;o6^eJiofs0V!2jPEpbT5p!z&9+5qH+`IrL03xdj>&jFVd zw#ZTxYq{J$_O!3??6tuyEAPf}V7XbMw6X{Bfs zNP=A{2WfMm%1fbq3lQSr&}-I~Z@~$T*-3;U71lvXeQ1oea46ARQ2+ff=&L}>Ai` zoS?fZoh^)el}VmF=iBK{Eszg#^`ZM#@WbXp>^`UAa|L>cl3IakJRRazroD!+=&K$f z=0RNZCD_k@UVlUk_%xz?exy@vnY=Dp>5fo3H`H8G2zJr$$pUx}h|-<%<${X{BoA!- zzA7YZ+`XJ2IrtpoyrUllQlSp4)0hMU6btmQ0PBbHQiUG8t8v;Uq`T+zcxMKP5UokH zd+G#)D~jkW6_Phxh7`uHel4V5oQ5q~u(;A+glRyNMocey8t0_9&u^RxNQLcBIthnE zFvvH4tAviNRU4)xYx$Ga5**_kfj7xDz)&Qic=qOjq$n}&E0@wt8YkLM+^#T0QX^b& zS$YwNWT)c^-VkLBFUBqOOUcA=LqG=ZTUqO}11^wMN>GsL&=QSYrlms%qzueiHE?^! z+vY=cG(<4|n27gTB3HyuYTj^L zb8w|^v>JOMoPnAR#mo;2l--XZgG_K*vm5+dRg`!gcYo~M>9%&(nAfc%P0KuKs;Q8h zHU)0iG<|mTcR0iT>9%jj>tfmXupnbD-$N;2N?<0#%YT6jsM`DUTq15D5UlAp!~T@V zjhGry4XQ_?hO0_tys7+(cO>MN!*;v>k3O%emFHo;W%i+0?M;*_Iq30eqPhWYdNR8V zfQSLJu`oo^l~xi)Y=t0wY7oPso@F_`E@!Sh7gK?!`~b$Sx3Fn@Kn5j>9rMZNcB-0dZZ@q zaNVS~_Gij^<+6}*Rgd0sXm`+nmH`{lwd4_hR&4O)|75ADqMZEEpe0ATNj1IL@j4~C zk8`o?hD-K35iRI1^ZE*qL}ya!(`Af=YX*90)8F>S8HZ-h!Qw^UY!Qn2Up)sf8|y-j z>#6W131i+-4*t)HjJ)Q%y59o;{U$R_OCH!rVnAj*$9&;6c}6dgi8^urf*8K7F^ zVfuP;4+HaI_jkUzE!oMx>kJ;qx*~!o9==spJo>;V0X5t=lG3#%GW}l~5A}slj$fZzN8*1Xl3qWMdYx z$SF$q*VoMx_BzgAZE?aeb{s_3{!Ajcs>ML`L8%}TL?SPWlMH;Y-l-s(#n1&lCSwAzMqP$*az+Og$b zy3{}`sqh<@R#}B=j}ShA8Y2i|LDK8o@j>Jq?x)y5wm1=N5`~=k?dm*vY$0~#32=7Z z*S7b%`gB>NoDwW&AklKXDdz}YB!+1ot&ng%+l?rmF8^Z<#9jX$V5wD-nA*3~T zx?l-A%1az${lS2uYv4KMQY(fZr6>9}3-UD?jTt)Sh~3y{_HBqMe|`}1VISHYsn4S8 z4biDNdv_H%&JkG;2hf|8cVr>NELoi)VYXm>m1tR$$;kvtl#3H$WFybo8q&4qazIsK zBES)K9)lBFZC-OnJ1*Q^1+-wx;X@~koFLT%QBred;&FxYdI=k}z_x<=>`Z7Z|JhXJ zOx|g|x&#EW)wR$I45{;<3y7q1>G_@RfJOjxj@ZTWo1+ZtRG(VRKq+yTq!VPKapu~? zV?@NhH35vXMNWK?*M+cpcA(D9apEf0x*j^!sJ*^z4&U7QlvI5toKLsWlJ)z+>AJfm z&!ez@jrK{Xerv_9S?nf{Zm&tBCRwVf#SAZudL0eE{STd-U8VN7ySOy1myU zgk8bh?1@9fo@+rqBXzWB399>z?iwLkQ^&Mwbhz!Y-Znd^{f9fGFXlHftpKXCF|+$5 ze#P?p58CP8Gh&DX>Papjz5y%kl%(2Eul6JJ&soj+$`*W4j=jy1I4Q!Io15WDXr0|! zuB3swVT6yF*wz|c4%P2uI?MARwBu@n<9P)8)%68M!#6#1TP~k_7(}h*v^MwhqF+4Y_7P`yC z^?B;JU`n*^m#&6{W=9DKzBY+?bhQQ}Mg3O|>`x>BT**``7UM=Bd`|^IUHki!aL2Ji zg`mZlq|VS*-`l-%;}OJ{un5(AC2f=Z))o#R;jUv?aE`X7%X&0VxW6hxs@1x=3NEgF zEd+B|mzjxIcP`|5$vkpy3*|Y&zE(K8pjWIUQv?a344P(AanZo93okh|Q|WrHQJ$g& z@+MBdBl|TW3VHJ3MGWWFi+u$$8zP{3eRZYrci`roB*mCydWhBg9Zh}~8(cd@1zp+R zv6Lo5e0mNYNpCoQ3ao10HPkQcNrfeG`97zWeMMIc>>SN1$Y-PHqMbKn~i` z06RaUapv*~6ubP@$~Y3W7t%F={Y<*1SVI9#U zK}BqfpmE1ZKo#|oMT`N=Hnfd(`1R+f5lY3SMeJa1aorEb_7u_)-jYQCV+;}NkX2w3 zWOO`)5ik{Hje!Ko=!*1<$xe+OBZQakfjfrTjV3nv{!^{3jK~P4^g9I6Tu`|YWp`3S zehNhVc996t)+|sum()GHYYX=?_5ur>!l%`2bWDGfr zGM0vRmCR#2W{8{6vb*s11e1RMyr#JXYdGycGVYh$7s zgDT6!iqJ1n5{7lBG|IM!s&*9ypV`wX4O#DIU-7kLduI>abhqMw?F&~-SMxU!WL4`L}NFSwV_k9$kJNbX1hw-Q8OoE_)tvvA$A zktAEgd0g9ntd5#`J}19Vg?ua0f+rgu9?1!2CG_&>823K)V0blNshb4Xh6^cb-J zk*({`$Xp#b{B`EbB<724B|>L`ymNBX7g2w3A=4_zlom8uKR>J*UnKhlC~cK5&MW%& z;tH{v_UIs?nUo_`&xXf}H4U1xyfzRVs6M^j+v%X+Xa&cQZGC5h52M?Yk-(# z6?6q&1BcC6n+p4@7S(H>#j6Q_Z0XVPDy=<1XUB++n)yj^@Y(3@1f5x`gik6ifQ&3+ zKKn_0>7G#)c;YkRZYuk=;}5dNOl}F!YjlGt^-JMG_a(D`kOdT;2sxpg6@TwR=qIJo zp6dT|X$*uRTtM-L37!e;lsDMYE?GQ~{$HYjV9!oGFBob&ei#!l^fM1A(HN9uI6NwL zu6^6$gIxai-K;qrJ2m&+N=?@i2(hEBh1Zmtak!6R^J}yT)+V%MNjn z;(7z~kChGXhVoAnCCtfXA|ac6t$@7unid7p9wbwL2H!Yl@c?MRaY5J|?jf8GQUL2+ zbMW4*m8wIAR&Ka*HivV1jR*;RtA{zJ+>d<5Jc2rktZmbGQ8Q`>B z^Me5bfr<#q$Pvb^s5BD~=0i^84s6wzyC!H9)uNO4(=`sAwBam*_fsiYV3_^PSN2rb zE*4XN7&q79u$VfvGQ=^$KDw->Rs2QnKd*c(h}VYFUhJVpofoHdhB>ec;r8-QEj36D zHezGFf92DnJ1{*NJ)=1>ok;B<18GS(A+4I3cV@D5EHEaT0Jt2d+ zs3GTT%CPcSjlpm%LCZFq;+Sj?OI&VVWyGeUpArn1=wh}R#V)txMvAp?Gh*Qb;9A)( zs9_$m^6+@xMgpf0IEA>Vj&!*1!gEt0$#6JLfUwN(LuDQ9y6R$AnT&yFs8_wW&&%+z z{FgMRF+6YgI1iQ+GpLS`k>t}UqE=>g@}LWS{PuKTP^|&`WCzI0E;eP7WA7;LQaEC1 zO~Z1X3exTw_dHY3^sHM09&S<#%H$X%3$z<6PRMY@6aTIFDLyAXO*Usa_9p`#pf?SG zbI{&QLZ)LI{$dSR%T=UmrHB4;MG$rsggBZAk0RE`ib1hvj7D>cLIOkDLR;~{ipT)A z{w7q{Nf|e=xZ3k$xK`=&OJb%oa|Hy7ZG|msb@IyW1@eGIYe`jAYgz9Nk?QuVvZixp z%VOL16b%xv`!IxVG_qr zs6Dq1lJ2vnwb7D1hTCpXMMbcP0F z-c5HI7)>zbgD!FEdkA-vjjfSuWMnBdby~7lEm?MutkVv-qpWBG)hD4Eg7+?eI{Mv} zHa?uIvLSY%VgzmzNf&H@EAehGkv39sY1j3t;vT=iSp>$r=cNsXDY6Pf2Pv83I` zVNeGA@NnP^?4{$kNF;R>lQ|dh;DNKGUp7+LGHl6FWA*>Wh*{w4uxd@G?4!Th*B#fUsNZL8u$Ec*V z2ZSj5iw}y+MARr;%A7~leR>qLR@;4Jt@Rh!YB z3$Ay-iY4$R2o_nt2w5Yef)i)dO=_hD7UH^5oCOx9W|1635&s6{VY2(+i7Dfy zmiau!-*6yhYj-5sIESy)y{RC@35B46eC5H1d5fUdL3n{*85zZD%Thx1i)2XZ?isr-;pj#* zvL^56|2&qE-opkuYmQ)plQcv-df8zmC%TD3%Gq{nhzyAlWj5wl3o8C$!>869D(g(EYa2=RR`^cf#UXkndg$HOAcy2 zXGGEYv;d+#-|tx2xKdtC3HXqK!RCMM+}{RrP+!Ok>Vqy|VXcb*=?w`ER%BPv7Z9r!VtI6|Q%2lAof% zO<7P5mLjHDelQLu>pM(v$X=4tyn48fW3wwn@BUG*eoj?f9|Q!de3q-j>QV1Go4^M2 z7$t;#DyvkpCgl%zBB-0>Y~Z1RUoci5OK4IB(s?O%bh~?LU;pxn)ZMiT#cs4B>L@r- zY(!a7s@$yu7Ud;H!+J#D)Gt1dgCIg~6wM7zU6+32Ejdfq)R&MCsc(B}hF1e+cg+R7 zTn;fsJ+Ws=SU$oyt%^>F93#>wIBHv?zZiwr6epfW5%GQf6So8&3J3di>2yIAn31fe z7CtcEPTn(uMrZQpX|}$^?#dFsII?=frg`VOb8fH!{#M}f5+~LmN#q!4IEa|@8%smZ ze9$)D_TRwy_0DOrKWPG+8Vel6*X?tjLmVqu$=Y*9y42KmVFfjRfo~))3hxu(0;BKo zqrIK6`-??l?}DGnODUhDRuee_&wpetBEm*IC{(LBVk?hMD!rwzg0-0`E4-zMyDELm z`M|I8y<~ygTBkF8HhDsAP`{`7zl_x|jS<4l58Sa2BpYEt(;u45jDjs;B3rM}IBwk$ z%m2Nk1^5;Lvb#yMT~;0?bkj9(?g=k@VXP-tGN;hhv)%q#`MFSoH7qRm!;@qw$3A5uMIyiX@GGEJf}eq{==Ih$~C3hxbW8cO45&TAMi-a8F)M z&JQ0^zIRoC9!d0SG5`_NZ@O~s`A+(^?#!VU?o~5^+}5Z@r1%Co1#Umg*BP6yhHEFA ztKAS%Q7GTG<5qO}!7zmK6{BV1m3a(?>$(1LdW{S}rr2wg>&qGcYQl4(M12Urf6~1f zM6&{TOINY~K}qJgzdkta1Z)J}7f!D**tL$tMO{i9@Rj zSUCKHEQJ;Q7$HkUt&~dyh2ipJ@%3W{tOXR>t5SF^!16n7u&8BS!#)4FJ({9niw&kI^`xU7oE z4o+k<`jZ8@W$e08eSzxPWO~?Bg2QW@R6sC6(o+bkZ;0&ok?2oChAl|dB^`*l0GKI< z3cj9C=q~cRN)Fl*Mqhpah&7(PD#C+78RVjBqn&j(dLNIA7W#X{XVsMxY+m0KwNe8! zIYJYKAuZ9DHu)A=s7HYe@MMoyGwrk;w*II62GhcvWH&hRHXR!6w##iLE+I2av$OS&OkwhyE()xiVhj?ua3fcD^eTFlL(UZ0E2w3L_+N{}xt`V3hnw@1FSr zX?DrcdRn%G5Jz^bm}g!c1_p%S6GM9bCm|#4Tw0Gz&t{13faGnE%9+Hvituji_A&2h zoD6BTK~7}*^4uWhLzmo|FIUhPY8+Ivr)0sxHv0yIVY~7DVhWOFGj;2n_>dN&uuo*1 zSr(|aHP?yZ8&?*4qvBmC3$LOa%W;V`*Se70lrqY-sVRCQF}}g&fzS3{KmUKb6kLH) zB|L&zm_jhEq|n-NiTaRvJq`HoxanqVs|0m-B6=3q&QMV!e9JCu#8v&9FGBhVw6y&E z%kAGDjjI3hI20Jc5Cb8ARITP3A@9J^%xi)AV4k07P4T&~dGN+6VM|GDng@o@q@{R> zJ{kH&*`_(CPS`QA;Ped(HwMX7c7)(bxZ=^5k7K{1=!DfI=lE-@~L*KTBI(cmJ! z1eRtdU!(0&2p-BG3s1eH&tQv{A|dGgeE=^tQqcP#fhIghabD7R5EV-Wpjw4A*rM32 zxIzFbV`-f>99dSN}eNoL@E?_uh+I{ zNO4=dWmVfeH4uA%{s0hs#Tn+P11GQ!$ieGwBk=vih=EbH0BfK&h3k|Lo;0_FRe%Jn zfDStSWTmFCUhQ_dv?yEd?O80?>v6(&Z=*YAFdux0n828uWrQ*?PGM$gO1IFi+F3ML zQaLDqQ!2v~BEfhXyy6&k`CHU@6*wQ!SAg@>)N}BxSjA`w%wNQ9#*qIm;-u_e$Yb^# zmzK>%pS=?g<=C!_wZwAy%ZI_EEA(a| zk-eJti@}~k#o8OFK52cD&uIkQ94cQmmMEbP$3$x}8c_MUR6MUXtQSqRu7CXXJ-qM) zsAcYVpv>Z@uhF*i?b@`3h$YW67r8QvsvXT9;c>E`) z7r4DDO1sPO?5O3ws5B<(M6kccl?k(xCAC4*co;|u_(z*f@OxbT>4uI4!ai>Za~5x3 z4zD3AX8={d{na-dyaz}*dIwN#*uH&o&X+wnzhh@E+EPLH^Lw)4I#Vbny?yy*rD6S$ za~T_g4(7} zOPaVj&Vk?Dz77s2t#kxu7EUSjMfz)1Q$Ll{bfvhe#m3cM<9SLQflBjE{8 z$iq|gjGK633%Z89*WMCrl5A`uKIO<^Y~z3x-LBUs`&%@nZNNjqVlSWwb_Oe=Mi%`f8pvZ& zak6W2{U?)HvT)NHVG#xDJdQ!PUVJ^7kvk~xCZcioTbCbHz9YT#fJKW`b}JWr@WJQKj>@OK#M%`YXp3Vf zd?t4t9%1Z>qh^cHm=uma5aHQUBGIRRWQH(Eu`EChr@XHjSL{}LMHLNG zpH4RfqQ`&KXKK8|_cl|TEI#`O%)s1DX_MGKaD?ssAh=?@ zRn7tsm_l9?;{lQI@|-&&feqHA@~hNDE{9ZV=8Ny}WyazoZP;hLasc|nQ>&${WYE6L zs1aDdt5Jftp~#UxP(+>|_V)9o%S;})CQpF*16sDcoFkF>t=VbqcP@Jv^<+L5ez_8T zFxO-NzQ?z5A3d@b!^XmM3jZ&GBHIDOb(#^W#6SC35|mB-k(`U8*}$mIN9`qKnZ~mc zFAU0TK;H}y!#`_VENh%+aVljUkEZ_5wTz47#*SY0^BAB`5SMaL_K=a7C zyd#M<*WFcRXF<3b_&Z$z@!O+Qi0b_CU9sfyT@4S0D=NMLm+77OAiJK}obF(>e5a6w z^V_j5pbS%e>gKLuhUPF-=XBQ$ zovj+&B$J^q2S6gKDLyQDk4Zu@s)1kD zNsMoYD}*d>lsa7i$3t;xX>-@DXP9RMaN;PFM}*<;75(1_Z5YNC?#1|G$1n$->=KF@ zKEUJyL$+gus{BQd$tBGLW-MhNp@veh98srCRfKAj2ZdanP++2G;yW|6Ul{L7P}Ddk zX?h{lFZugsWh9euq#FdklyQkPCN6d!ZC)bv)L(pVkMeZbi2LeX=MmEDe+`l?%1CLo zV~3{vg_((rkiYDqe(#kgL5p47=oL5EC5nXoT9X#r-n7y$%eIU{nfxKmN2*?YR)rwfyb8jG@lSsEc6bZv#0QTj1)}l zyw134BHHg1?fryW+ObdH)S>uSkgs;BqM>w9p&MwIgCCEqTZBQCauijg(!~(L<8W&%k##W51Cl)?WeRql((hIYIEj z(fq0}oZ)*XVI{S>8YPi{>6NbBn!RKau6V@`DAZB2l@XHaokCGT`(g@i)^?vahtncj z1#%)40$o*RMq?7yvZYQ=TG#nX%QAmOl*uJ=APQ4;f~7zKVB1_T#{v-UUUv3LXrWGR;+^h}!79gpnMoKv>PLRX zPJs&o_e_hpa-FnDVazEB{9oNT^$|_~9xWz_>)>9@V&f({^lKyaH3|U$_-DiOOt?Dp zfbkviuPxKz>261KQl@lVSqQv&6GT@>{h=(lLzMfO|v=30fwJNxffxUt$p7c0sZR_1Eb?!stR- zLL^rTm17$R$&#_m{K`jC=7%X))B1HIMhPA$f7h&)sqyV9=WH_qf{}W9+;>DLNptYQ z@8)#bVx>>tWCAkfyVJ89nfxU&gN)4}=`SI^NCysGvQDRdU&=(X*hGi6 zV34M=L(vmw`Gi0~x2cj_!W>TR*y9MG0I1+HEc2{ZL&lr30<_I*ZN9LvipRy~1fu$j8zF zw*Tpxu7q271bv*>2w_E3Q62;E^+coh7!XL8_$V?ec*ad~rN zd3#c)+SQ89iv7eE?EsKMj^6P4sYa)8g@*Mt79fffH{B5Efik&m3?eY|AJFvQ|3`6ZS<(S!eH)J+mu;$2ZATMA*l^ccjJNXKEbL92B;9N!<3 zP6`St#&1O9>IpVb5hA|P?wVZX)(${K2ps==Rp~Oeqxo&jl-4xxvEz1TLvFn$?Y6UQ zMqRxeT85t4WAFH!YdQ~)1C7jQFE5*NEswoo57CnwJL$m~uS3?q)0wlWl3v_3jH zWj2N>XU7D%B6D@6v}B#6qIqhl@yQp^gP6Dv%Pa9R zN!#IpV4o2j#5VtjG&+ItS+d+teC~P%uvHN4*4XEWG?P~VNgQq$%_KX;xu%r(N8&8>Q0&0gLJBFgTsuD9$H+h{oeJR&o)LYds!v@kkkr}BWDuD9fU+m&=s3(h|7I zgiLZRMIuZtVqDAXc7{u^8Z58l8~r6JG$O(eToNzZJ&_g5%a~Q2EZj)XfTVymV}9O& z`2lSOS+HEja=eH-i9F+9N=hm9x}oWTtr(NZrW1#RB*zd1-yPp#jB~?gTRv0kd%`fz zq3cJn5j0BPGr15kG1I=|{7jdVdMWD^YGpQNLe$YOIAYsjTH4)AD)iOL zq7#_dNBe{Y#~~ZfSH)JB)*w66;`D4NJeka7mR~v2fPw5udx!d`@;N4#kNyT>>taf# zM&8S!$Pu+XccK-YU;EGoH6;zC7qLQF(+kSs%?Si82 zYm>CgVEvB-#Gbzt8tTG%=g}ne0k->ed&2ipbW>gU z+N;=p-Hr2H8TMqP#nKT<(2HlI=(_6KaU$CqdDtNPtnyId)YJrhNzcGPwDA~qpDy&JEi(t`r!fkiGrQtnY=XUc7wDU-0(^z|WI6+nuUP>}XB zYetxc?*cQM?1(Kr>Z+CP+U11_6mg_Le9i85_P0OI=O~b|#QCSVu-!6xT_?6C^Ry$6 zAa~G8je|ODTZ7g6WC+{n=s`SxS>AVv*do${>iq7%Vd&8+xO<&CWXvj3TInjosQzac zKJbPD73?$Dqd}ro*=5J0XN4WQs`_V zTcir@uB+)f9pJT$?8K;5_`i&DyX9&!Jqt_*l_Gd1X=Ac9$>XIHK9N6$jDkCB#oiCX zk)SSrkL?9%S3YyC@&jzl!y@UZ%=S82$GbD8Fz0!An*T$219u?8{zVQGIL{mRexd}dcPx!vpxf?^1!JH zS-?eo#$s!veafO@-hwv&6#&TyDPxGTJP&HYm4RR+`|>HZJGt^~+i|Nmp*!b84o0lt zl9tFcq29F)%j3U8-!PgGV!UP{;;NepmgQp9z>e5{H)k9vN6Abnl2w4)eU7Ak8pO!f zuB7=)LBRF@;Pf76k?`7VLffQAgKz_koCk5r99j=&g%wy?c&T}~I!7DsPg?CiH~+$Y zwe|oXEciK{4<{X2G1@eIT(9gN zqr-!p6x%Eo4BD~F!;DJo(hGs^&e0D25Z#cSzd9hsUpF zP!(N0zGOeygGfZ=uD(g(x9}s8!S`2zdqcaYjAZ`AFXv)htDCp-F1(N&RzVmi*zJX> z)sojSEFySms*Gj-!HODwE$u)TtSv;KBSIN)lkJOLQq(z`)Kp)XIeUtc2v=0Tj`=aJZy0`dL!iLTpzqM%&NGnVz za`!+CX*Tbw{BIj~mbB9p3`LfJ)(?Her+AGw+PnIk$_dP|@-jnO$!Su)%axgal*tW2 zb&Oj8|33i0#LZslwd9<@YA}S@6w<;Neu=p2Xk%N1j8i52o6fGdZlayrQ)G zEBP5l(Db++5Pn&hyrRZwrg@(q4k9`3HR|B6P_2%O~mMWm=A1BjhIdpII(I=N$3`0+{_Gn;tY3VPNHsGv-`?u7 zx~lwJCKj|tA+Sfzy)o|dz4YA3Y;5K|S>S-fibU}H*L9RSCG=LkH zAR3KQrR5t4%-mZkuJ&7D1mRV=65q)R#sjQBa_U^=>kM>D(L;ql+Xt ztBp!H1^f)~pNcJLnSp?AaZ;>WQPUqI0nma5V=qcz=$~K0QFADC+B{1DE`rZ4}rnQ7%pbX@0UW zEX1NIttyk_593jG8F9$cYAIRAF^lu>Ij~bDoN0RlwB8EO22q1E6UZ0=l=VnB5 zq)cwSF=KDx6#ZTlz&uzicpq(LIb|OhYK)Pi5f0zLOYGb3P|g0Ra?J*tkR5U+_GeGo z;bXO+5a zJ4u4L>YTxOxS{j<_1zJ|94CUR_>c&%X(DYsAJ)P z2VakIT{^f~5DMV}z!p`*!)^Y2@Urj=pU(=->KVRY{DWs^NI{3ruND2UJL8NU zg5!DZU!cJ{`snM&EOr;Le}HL{t+GnGty}YP#)--%>6I2#XT^s$!5!~SISd7jMCUnb zm`zY?(yqT)c(27GEXN?7_@+NVE{@rSm^Q*uunXv#-IkiAPYe_GRRq+9@c_SQOjE>v zeJ>!cKl~W)hQo#kbJ1GFW1=#0JeS9Y!?{%gsnqy4VehLF-)^Op0Js(J;0EE&b03xM zUR&w(0`x0T28C4t!~VlcTL+I4q0?%_X5t!8G`C&*l*r7$ljzM1<3J5?ui$w*iucw zi+XU$iMy-qEbRx{LNJAF{UQ60cR-hmZpiDZS1DVPSqL`NR?ht=OI+g+J~EX-WIZ9rzl zKhe>nj(gAtzw9>k@+IoKhiGMBbRDMw(<9yBweT=3G*b~OaZ#!g3E`oJCZ8SLzjmfN z1YYiGnpKhA9O3`(*6A^0F{0@yMy`dpV8PQ*8MO+4hV58-PA4W7O zDXR7=k^|u=cc9A(@-Ao06>YH|3}0BXz4m!xZ5a75|E>q4y27`QIjJPzugVl6kGc+- z1wVw_TCIh5-YbZ#(iUF!u}jvy$4(JOOf~v-D0lDpRn34qffX@hkOx~`$@TUwtFZ6v zg?~VMVPfJ;xXSrE`vJ{twRqm%wtT95ccK&?lmB9Upe1L8T`2^KoQ-tT;*=N7^&ojU4k79rH2Y=|Q%3kK2_?wU|xcYZ5>Ck0h?LpfcQup_n^?wjM6 zlh#LB-$Y&d-1tsW1^%Z7YNZ{dT48hKjZ>I7A$M~-g6kcn=~aa4R?j{Et-%)KM=50* z7h(TTe{PRz8R7CZYr4pQf0L6UJ*G{<$v=+Qsd@bOiPlBKtAm@@ksH;Jqq#i!76K34 z<)Y3->{V7F)1hkMveKC;?5R(48(cV6a1ZQ9{zHXq+24yAFxd~M@i}@NQSWl-0Z=%p zvNYe&#zD`@;jzzcO?QjTMBvNmeda&A)kF_yJUr2wWx3P6B}V=yTPO92<$18%8t{u? zW8Ahy2vdi;@ZbGnlE)XFX*Bsa5|h;!wC~0XV4sCqhZ@HAr;L6 zH3o;0+>)ZS>%-!oq4ED>F98TPLq+@Xx~i1aXl;#i50c7@{0qDVm{EK`s&mRzBo}ef z%Nz8NAgZIiGrb;CY&*SDa>SMih~o3V#xYx>{!IiBTw!tsB&U|wFY>USiiiKbqapgt ztkN+8-)%Pm17(grVaROPt@v7ZvQZPMI42@Nio#iM#%X)GQ+bT=J)8}r42v6Os&%Ui zG>6_6r;;~funo|kQ(FV!vRjs(=@ay818;TiUv$9=4Sm z*K8;VVx%S)W3?F8yOkR>-9a_1*HE$7#HyE*DW>h}Zf2)$=D>h7_7F&C(Oea>y z8eaofLhmVw_{X91rI>?0iOZH%cES_|&09-`fiCZQu25wE&jfm8p9jwTo(}eS@e=$b ztyp|@c^O+((r8k-h1|R0k#oWWt|VX#D)rR}lK{F*BC`LAhT;x9F(p)}Sj79k^#K8` zFmtQXq;%CdBEa*Kh+~boi$ugA4jse@y#k?q?4jHJlv12rY2a^4#t_B!Ej|Fblr4o&8Rnb>D8vYEVQk)}Z` zKjEF3unrRX?KI0{kqP`GdM0RmJ_6b9x2Dn4JD%w%IM9@sSAf#$g^7M=^X_m5wRE@# z+45(-%ejMqojlXiI+lGCrQ}8UJ5gm*;(jIzJr5IA1^Qbb;GmG~FhxD0Oh2IZmCZdZ zE6ag%*YBjNhI|P)p{V3Cqb1N3^ceBWyBDr-vllkHCM=^@snV#l54_qJ-$XHRB<6EYFpX%-Q^W??Idw)(P*xcQLvFm@$yDyuW@R>0J>)6F+tbQ zX1dA%%ruySAh0E?mowJld+)gsP%VPCZQgqXc9)v#e*F4!sL7}|qhugse&KZ0TZWEt zv7XE@VXbEsvRqRkmiAT-<*KzdiItA(<1?^>L}Dxh@~339!QWTY8e(sx2z|I#%@)J; z=}$k}cOUZShko6r^pP%Ak*Hn_P?}v-zdHS(GpyEHUm1w9F{05*d#xx*^lEf^yvP}2 z86(keO87Lbh|;L?rvaXntjzvua$~_ z4@(y|nupOSYW=jJ$6Zs+|7Wx=kMCvKopS*U%!;UY)2qSm^-FG70$ggh%5sTupN$uy zT4z>d523>dN)mC(H#WvUtiWOt$QV_8v{EzbX!VS`c*R#SIE>~Nqs0_R8aXTGaeJji zok{4M^*}aOj3U|RalaYt3B^RtMK3IbU&YA!|Dt*TYMxKs^G+Zw*;!HCxlL{{m~K$f zoFzcubx(U_#RE;&LQMdw-k^N|25rr72?3s7_Hw&n;b@#X%@BD3ea<=*rbgW!s-*{TY~bviV4Y-Iq=ag_)*d0V4OmK40OUVCiNi-J;t3KGkm5R&gV<{j zvB18A}n^c6t6;qLd4~ zlUd#Lfm{%=s-F{jO5`24`q=C8(DMVYpj3M<+BRhM>N~pgfms`<#ax%)Z9ui8ja|HF zKj{F)ggjH4!@U^GFwW^Kb=uEms6VB<&Z8hFCH?>@OI_&lGJj^H5db$lp~wG=2uB>? zz}k?!l}sAYTe!}!l%Bk20vtvEXuV3xY-vWNU;*5t;a47FT222(w6-oHs69ea4vZ zgRwv-U;w)q-z@v)dA=R96fqw5hru_72K43_@tpSd-53m1FSMmgJc|l#4OflKYD#D6 z>y>!)7%G3#+C7#xqSzl`GiQ@#4iO5MO@&k(u6dleSoHN0lnK1lTA6MN1BN?a&j+5f zj3mDQ_}+8&r6d}zBSZqNHE?!x;@vbkJ&pq!z8DN9T{Jx46RsLzs+!EUd*iN0ZYng| zNQ~Y_J&mr2^PM3hA@cWur6q&>w?@Ce)ciMpjj#3VFE@OB^uQ9r0(99NBRY$Nmf|$L zLIwjNELimjNki=YMpZ(r{(Xto)OywJ>dR?M78nA3Tf=9OPXJbXjenZTNLW;LXB9QU zWItI1L@zCeZc#^yQfNy>4jR^?>dk6|!~UvC^4QB*iAD$SO{H>p^nhpWmeV7QmY=vvj}WTirkLRNl*Z>D!RpBvL_Ov zVq(0@Yu@VqRGu?j5oA;&4w@)fmLS?N6WEcbnm-Nyj^QmILVX!6izQfmC2#{&4C`jN zWDan6Lx)D>b!kD2Y~TZ3?r!OdH9if&zbOcW-^({=Sj{{NOqnZAKC%HtXp^;%7998& zu)bXCv4OE*lIhE*24%Koei=O}?EzoataD4Q{qzf&Po1?L+Kh=J%#|yw{LTW>^I;5y zxSlb2?n0%rnV5mEx-V@%^Otz`VM?wpheOn)TdxYBWqf%>@{D!)i#K$|OC;VkvUgJc z%%yq)*PD3qW@fQs_8Y3{`iD;7r8mJ>u~vw`nU z?+c8KdrbS3*sE2cd?P!<>qXw6)r`;j=WNg@qNR`g!Tcj&c-lyGd9skpGlzZUNaL?& z`IGMeg+R|q4&A^oRC5yA0*-%e5a9Mt!5(M+2)pfQ{bB}sTt{^8QdxnsAw?%0oJC+e zZx3R`*PDH}o{nMzXBM4Hr4P73g#fY08Zp`6=(< z)-CH#^6nX)Knggd_NEMWtYvZ#G(?Kx+E5N{{X&R|cAIfDF4wKaK{$8I_FF{vBwYWk z(3*GJ>urddKR@8U`f{4*eT$f0KMQvdNk|_!J3(im$dWP1U$D-}Qob{g3gx zu|~uu`n2+`xw`J=7eq59&iqvzbWJy0ff2Xs4dRj1#=qJJx>I=QK$rVWPVx(AyBOIE zbljFPbIe{qppA6D|IT#mP~b^)Ga(dQsVq=N?;z9kWB;Zp06^?~MiwQV zOArvF>`o>>2{o+hMY3)AVC7`ax@xw!{N%DiqkkxQOyB*qXa-oSj}{h}`N}fwe}+e< zUb(V&3Rmtb^@hF-%|z$($bMP>fb{c8z~ z=41j{j}6XOTl;phP_LwB%<|ed@ME>aXg@s@*To!l1mkR$_FLCDe`o0#i7`!$G%P3u zja4lD5~H(`D7@McAwp(8Tjde)kgu@j7&t{(c~eE2992Kg35(X{lFqPW@@i016+tn| zUaZxOy6y8Oa4AH8IZ{%l}f;vcL#L6a4 z8L_CvOacyH5jDDflgP#+Jo)Qb=uwoNs-!`6zOB#bavVb)6Xu+ics`f!iVaTV0^R;( z>r}?%37Cpd;Y$Itiwu>XNs1)*pz;JSSNZuGQ>F5AWr#hKyJaMZxAk~+Zn{c$$VgIS zh1frT-#|yt&}Y(e3QLhNk4Z~OTiw!mJk_ZIpVS_LdlETb2de?Fnv+hq`(Bx37!cP;_Hu@21%*33xs_9YeWF@~LHZ*!*bY}8W zXAbaJEq1WYt&yVs=rhU&LwY#!`)B*88<(CR?beH5x$ykFK4=PkQhqykquCw=!Fp`g zM5F3wUEEO3JFGcp?7HsPj+@hkFbidq#wBPM(b&Z$ zWkLXl(w#!dJMa`C{2+?os_S$7&ZG%(!0D#F0niP46b>OfB@3u^=&9X048{f0E-n6i z5!6AYl!A`9J?~Kk+Wf7Nmob&!UTNtqu(?@dM*-ynq@#B%#usYGm&@Y3S9vQSBMWc> zh3QW&)T<#;j2aay6ctL@Yt4~L1=1ZRe{9nqc1~{ApU(;Zjj&;YucTuDaWYqr0OzJF zE;xQSpD3&uUXKI}6nv-@!VB2q>^!9p+=eTM!uL5tI+~E#v?pE!vor98d9c&2L)z_>j z-$j2sd{?iBNU}g^m><|G>3Jz`Jt{R`|GWI7T9{1lpG%BC7lEHNo>fd7B4yfKvgwCo zf$Q<<@5Pzttu`P>NJxS4i{~c#15}By3!_MZgmZB*jk1jV-Isw6X%;|nZiKKEj ziKx4IFhb&Au~v68q+tTq0$-`^$dL@jM1UyA5WWJTKg)|}6056^gP(J_OepB11}i#{ zD5Deu3`sMcH8L80knT$ujW>5O&udW$$%Ri1_%nR|jk8h4lE?|L=i)lhZgWNhi!v^B z(TC*h=63Jvdgpn9at-O@ee_NjD7#HvdTL;v74iVX$@-XQV-xA(_b`N>x_+|=Nd3=4x0i3%DGvL-L#ZJO0ztc*D(d8WXV_2m<1Lfy=H|J z_L?IaKmAgLCDKy!hx7c4S_agndU6$5a8?5M8F^V!iOkER4Z{FE; z@;wMv4c1Fh3w9jw4BalY{lH;Z} zS!4V#l_kq)V+1&dWO6IIoyH}zNy;M`^^`JEoS=b?5+I1q9q$}M6W(vUlZGoEEnwv6 z)5V!Jrg$6P975 zfx;iI6yx7S#^J_%?Z5Lz@#04)h-z_7&LMjDMIu>Y)1}2g99e#;;mwUlFYT@$c6?Dy zYld*b4)8oD`s*fuD7S0IdVj#_GmGHJ5?cS>GcpTfo2wKiL~40;e`>>s_bs(imge=6 z>syr~a2@c!CLQ6(tm$b&uUK4SaG#ys%$UQ|4HUjoPJu!8Kqts`5gOGjh{#Zm9TnzMtCHrg`uY+e#0(L?Cb*1Ug zK{7kK0TXb%ffYg~Wi@o#rk5?dRS{iQP%#Bj3UQyxdR86evhNGY*INy{W>5R83ZM+LKCr_~qzSn@mgVz3-qc&|`F*y!i5gIc*B&gQg`Sf_W<`AZS<%pv15cim~D} znQW_m9#VWZ6kXMV;)gwn9+^g3|Yj(T_|FD zmDLdfS*gCxMsrU5^LexT?(<$h_PI*8CXVGSLKB910v7P33KQ!<^I>ud3BFiaUM+=? zZ-)f~smThejx}hMPT12DeJKbsS6{?F+KVbPXT=4Q80f2zJwpNOmB`6FL8&j=FB^gr zJ`}m6t3T#O#JKc&q3Q?}IQvY!t+7DFA6&l-|0bpQKp#er@yxQ3;XLm|QiYLZV#l_1kMF$H$*aD<@S;vO6M@v9s-c9&A+v2# z-hEBGEA-N)ciycg?QJK(LCQ3AKSpH0}l<11h;M+rx;*9BQ}< zbXFsszmV_S^Qww5bFl!!P`?OH(Kfnm^J!i=Bg&Q7?N!4Zymv3@;<){i&HfN;4NTsj zIdKR>cezrj{hneg=+!;mzZ?&dYs>|t{YkHf{o?MeIZf1Y__aztKBg_tD4f=h_mydB zVrSPOH@fBf=a+nQj#TZ9%d-41T64+NP zLqb#Rcl7yUE3WE&a{>G`mgggY3-hEdC_4pIr;-t($dXSdOFgC3u+{P4pXYQix&CD2 zv;~(bRsg@e;867re`SYP*a+SbHr67S5#@R!rSRy)8CU8i-dja)mi{$##bPdMJcNuS z7PSYOY+sKWZ5%9bXn^*zsWHyf({#&-K}oBO#!>R2BFwH3mJZ9qX@UMZ5{8qVO z+A;*bt+bnU*E1*~c&X|zj)ljA@~X#3@)hb~#f%=%g6Z%a5+fi$5S@*Xh@l$(n`MHaq2WQwc?6n z{p9`+#$)n|f#GCF)gNy~p}6(C^6rsr0m-!06~@S7UfbJc-> zik=qf>w>ItJphNP|D^#zx;R#CuUN8&p7J+HRz)Sun*>6^ta%n-W8Sp(s6N+NvC~O2 zgDF4y2B;a&o^rgu^5&ILrQ*m>G9D6cY;YpDavIV!;y_-fVV_-4a?W8UyAoIsm1pZ0 zeyt5m0R6R-74|W_N{eI0Y+;Tx#0s!G1E>T~lMUhtZ4pUDG@F-FB)hPSgTdaI4A*A3 zni+N6W!vv zKZYvDu?ua7wVsJpam}ZUJR2YnOHrH@s{eV=<`XBBz=>E!o>&8b!on#t<0AQTrI1F( z0L=B)WM{p=Zj0}9gwa&0HM!_n1IkB+wsKfaxeP{O_dY3X*GC&*`VUU{^vq0_gb3y) zlhvnPtnaU<&!rg{-by&HbVz=QU9jm{5N0*lT7BfoU*tq6tQ2XflBDr4P4CzgLkQu6 z;)W2vApz!$zR62LJ)$IT8U7c0TSwdvVG+-s3s}~mOjVx0V;N~gRY-+X@g`afH-$AE+w|oLo6ZgXV&ynNW6oN3?OaqBx>c<0wng~ zxmTEKV-w<=0gJ(D3gYEV1Y)_Zk!p^nW_*i8&HiZ}P^7jD%gFf}yZo=KUK7w>LP=ML zjae>M&WQs2-*gT)AEDWzW&)vUW=>`(aHKPntx}13BaYPw2m-7VLsg29)v4&B|*dmSGMMOE2GTw=1Dh-+qzk2H@K8( z$vh|;8eKF+__mMStj6;e+tUn5#p@Y@&B=+9fTtZ#cp1~<^Ne9DP~F8qr3571vA)3v zA;{JXMl}PyY*Ua@uGatCOtY${_i{3Gud3oRDY#f)r`i;}uJ%j6xA8;cMe}=hC^O(I znz+2$My%CG*Vt2y`E@eZTF$;HQ9|iO^z~p2L8msJYb-#9H*+;yuz5Omy?EBUprdB? zU}p;@hJcjSb=_DBtCrYx_EP?El4hbIaJ@=}5;{@hv%k(1Y|hy+;01Ii>KuL|%@|1S z@8HygA~^aj_h-%63jA|z!3MR$`%@5}$ILW1%|D!OOGTJQ=58RXH>;cr97V&Y%7g54+T=8 zjssq;B+{i&e)*ZO#}_yP5*2`L3a?|#yTMV2b(A0+teG|l=EA9OF~K=h$&%!ZG-2!E zli9v4uyD{%amySU*spTK)vZ%)#cK_%YI;+8pm{>uwm;L45Dpi!C%@2$XTraK=)Ec& zV>tYS;S+B>bP`2S^CcLO>*_3sZgalVOQKY8(|`_l4D2M5FV!J7p95tzQ)$JqdXe4; z3IrOmN70n^;%lgNIp7Ko)Tyu|Xj?_7Or$GVQz&lZX#!mI5*cm!h3Zh%V8wBWkTWp; z2{P2D8q*g2;IwCc%oqHowmz+j+i#~iA9-~E6EHxr*P;uyKrXMUGTo0nq4qMNW&IK) zR}VNpjbZm!TAtIEE#$R4qURys4kCF{j}r~Z=)Me{B$qZ_Ul-8)GLk6dd&bRT`Pc#` zLmL&>%K|tMS!|g|kew@s+nC3|(-3rZzy{D8C)rr(^=*z!$y6^&Xytm8#b@X(FW#K? z(CS21%J02pv0X`+YqoAfEH)sSv7L^J0nfP6*r;I{$OcV?3J!Y)TI(^j;Tz#K3H zCD3*YgPi<54~qvUX*o45op-b8`1pE`KhM1M@)Ho?d>T5FZsPu<6%(IYMPzpnzVv9P z7HDID4gpW?x@{j@sKjMvpcElrCDxvh)B5`4WJY!?svT`Nk`)_{(dT8j^RygPfh$4m z1-%^4vZJ$-i|VC89UV9roGN_&frqMjP)OcNkn0?RQi))qmy#LJZCzp3quhNSiI*0( zCwau^r|)*5eF>(UHAYNrS}NQQiTii2r+|oHEbvkRMl8fj-Qd@;n8b%QQgQ*MXi}#g zj^#pmYIajczJROc%CVqfbD_l}4_YLj+GFqG%zR9_+OkOAGc`m|fUF+Pjg$t{Ya6rkK(V_Jw z9JobZ9XO0qWD&}OU(M*g6L@5zO-)?>$uH@f6x}WVv-%eF74H}TSWJwp`rLpsB|eDCA}A*I{MOaY*vv1o|?a7>853xvG_M2$lZB_VfBTNHOe)r~-}0pzskMBn2hE^NYXX*8LZ!-=<`%=DrG+3A+B>D$BXRvuhf zeNSGtVEStZ%DQKqx1MQtJVX_K4bPw48{s)+?l5)A|Cib4Ivd~ZH_MQ6dg?v55$Fqk zwV7)I@kfr6i&lAAYSmUoqc7u1vHzichO9G6y;qydfzpupAR#eJTe4ainxQ^(p$&YA z+9=|<;#7I&+xT-02JlP|UZX6QFj5+egr!{*8Vz_Kb`zoUPCY)e>3D#Ifi+8^x0yN8 zyp7G=X<E8brVcB0~T zH0*_;n}^$qj&0XU>VlpTC&%;Hq>qa&_zW7MYTHC1nQpGY*Z7O~{q&c4hjU`MiyI4KM-^((5HYV3wc3j-`N% zd^q1Bh^%>QksHlWCqBzd&mA*1+v4eOhPxfyV@dmq6n@~9#Y5}Hj2UV^t&c-@`&3lF z6qWS8hkqN@gAkLC#i!D&=D<~@*1MQxFSx86IO%Y$+%6jLU&M>&`DQ;9rQc6oVE1XO zsku-U@~|s*ZqBYaExBX}BbgAh2onVBEhT|SU7hNVs`swx{HJ((Ujlhy^4Hkc0?u1Z zko5DZ>Cim2a(vVU&uuEHc|_xRT3ur6FA9BW>?pcG(jLqpbJoJd`8=MBPk=AT3X?qR z1TQblavg{AQfaTuKMI(UtN=;vU(n4*#SOyNMl6hUg#21VxSwl5>nn~UCB2opB*y;7 zi@?CvN89*k#xj#tg>^_%=+w8qRf+#1y|7S7(fx1L#l~gGWRa^P`da$5(wZDp#uv22D9#PPkWS!UQ8zMJ z<6~$8G>-_2{d{ZjX9^D^qG!5~@}@S&@r0=SsS2Yxdy%E-qb(rFRit>kOa?;0z0$}V z6gvN#SSnCW+b5QEpqI4l;|E~NO^AQw>mA?#gJP3W5}>1|D!LHC!PElChuhAjGl>rQ z)Q#~&*^wiy4!N{+IUsAQTv8KNh}H+{GCkO7WGe@@4USZLu;CycFp%MIQ`SmvnLp^kd(_`g@9~f?Rf+ z#53orhPM5@(O@_>>NIFD5W#Ea|0z8SJ^&&B_88gMXYr*2v*`q-YZg=96t{=TP7~+{ zM_~MKBp?`^Z^+DE^O)4H5r&yJBA)_gxk&TSZIUMxNmMhDoKi_u*O1^As|p~MQoixo z7|!V|+pYMyI%HKbpOy0*KciY)H}+Huox;v~QPvQ#E3a)V9u1GF9fi#+bKaBHH_?*# z;psgv7DWu8etLk)6Y2g^fIvWxNs?O9Dk`5*p$WH??P(plSjEq(Gh>fI2CJ;^0TAdbf~U8zDGHok)`eIpVRQgPQ?~tA*w>LBz2uVHS*!ye?|Mz> zTui)(vu8kTHCJKIn_oJzZ`@={W)J*K3(T`+D3~d z9l4wrm9$S_oJYQBKS9d{@GEaaCSe%Vu{TZnAGcamooi3`V%fHKpu!vz$tO~5iI`AK z#PUV9f{7rd@|R|#gF33iT$FcQu-f35$gI&|%jQ;3UbRma^EBM=tWT8)9qKqsebque?bBdVmvKVWYv}l&&Qb*PT=T z9TyF3E@>x%7lQ0ZS8b*a@Ey6y7KtXd)969vzNgTN?Z@5IZ0m5R}l1fFn?>2D~z&wk19O{sb6LKF-Oo+!>4?PVG4C*ivO$^UvRX=Z)ni%dW$Os zuzpz7lHc4KEP)%O_kGW%*_G4co5?6lG{x7;N88|0xJ20Xrt<*!+gWJb%RsCqo&=le zysfE?oauTU=c-4A?Q=lP8YJuUa=$_to$YIa zd3f3f!_Npk_7aQaMQ{FufU!XC`R%FYun)#Y{WD$gzuw&qm~^S)NDmK+oXV#M=&`A# z<(dOUW?&#YZyjAPDgZe!;w+}8MG;y-j??#*JkGsytWgH>yqV#uk_VLtuDNdG%G6v& ztC6!L*kUf80M+?TCr6O-qf3M?+p7E9yKXKUVh^nFwxq0tHfriGe#jxH8RkyFa`0xJ z#13l@N6#UNP1ymw%!~`?VLiEoipdkpKZ)?N~rkE4CNE;)rBTxHA9%TCtUQ2A9`!GWvr& zLmBrYzqj~eJpC(6#ps7@mYc4o&kK_FZIul}neIJ}N6@+Ucqc$dd&LJWiOI+{+>jsT zlr;-V0_fdTQ$k%b?8zN?EmXo~^H@PU9&&B?;14!ek)lvV(VARLb*GQyPkN&Fv@XB$ zTP%s(oiUe6XR-dDgd1nv59{&`D)R9c+h^US7(_*0cM_ZM8ULgsY)b6Hs}(q})! zWvsg6u>>QRGO|I5NFdfUD(rfWS z@BJdE4{WQbuk8H9IQQR2&1g0ss9K)1+f;ux3%eMA&#R|&Cv^9#Y~B|5&-_6^DX?~WS`yNCemp>C0C;t(n6 z^au3DGeg?DaT%qo3AGJUuJb>sb5SR1v={PbDSH^=Az1}qRG5bmM9d`D+XH++BRqf~ z3VG6Hakzj7cJB{kVAl7o-Az`-dp6biI!ZOl+enDD2udV z@@9AI@>Sj7Y*>$5w{vVzO(o`!ran3-cARaag5kctLKU;ax~dUMv5tle(t3LWt3Nq4 zodu>e>ISue++Y}oi}kJBXzI%Y;BJ=OIy||3u`dfp4-c5JqoR7lzJB2+Fbm})fWZp` zWB}LGmQXu-ki|3e zd_HH&3G#h`IdiPyBIz8B|@Uhj%s-#9-kL7>r41muw?bI zDDyR8vbQs$i8KeoL*m7shl2AMGN!c_eULMa7babY?||HnX~UbWRs z{0#gBf39wNL|vz|-PPwUU4|zPyBhmL%0qB@9*JZi@OdcH!JTmf`-~=4`X8^Czjar4`IMv2jGsN#2 z2XdkO_!NI&Q>*T;d&INdw}q~)6CS6VOm-H|B%k}`?#9X`8+ug7oYk2qEkZ?1_*Jam z`Jk?tCl>_lHpL>Ck}b8a*47>5B<+bZ$)7fihw;hGBsi&iLh!NoUH`CN8dxRM+IP9n zA1#K>w6gRQ02Sd!^kW_4cxzZ+b5>&sy}avnlNO zyYFlSgiwJFksO)^+h;*Yr-m2Iod*JK@}4r}`KbzIYgCG(W~spfjiTIAe|tc|3q2w9 zu&T^8#{dqbr2;_<%);X03&>K;N!8xMxGdpS^Ja=$>aqd>pknG0xk;@mN&@1RQ2@X`he! zQee9?pw~BR1CgTUEO|-eh*6VXR@GcxjF9-UL74}IM2w#M(8S+{YRkESO~jD*^aT!q zh#f+8Do3Du8OSF~c2Sv6tO;y62EAAYBA{b}f-Nd40kpH_-MtdD>qfxdUSf((1g{0{ z8}uCnsyd>5UX@QlIR8!}8RX7aRjHGv1E05>_l~&8dp6e7Fy)YK9oOy?T^J9PDPqPk z7!dpY)Q5YEIKh8W0Qc|7k$kb??OY9 ze!<9GvpoeWbsk4%tqE60YZT90kOD4Jhhl5Ied48dq&N#%C}W^0Zuf&Mw*dBf^H$0+ zh9Oz|7KiqGUAit!iom<8;#&uuNO+dwYT{KLZ950r9C_XC)r8%A#i6KV9p%5~I4Viz zElKN@Owo^_F{MqJqNC^2;3?W9JuiQjnW2<3rA05&m>jYFQsgOEu@O=w&#{mdz@;=x z+07rCF8*mI(cS6*G(nL%3|Ez=wWTBqxoRDLLmwkPaOvS!g1dP=f|72#0=Gmaj? zd)xqLLLd?$V@$>4DA+}jIjN%0QNXxNXnE)p-YQ2@ky;GoV284H8J%!q31C2gx9PYf zrE8xC{zU_^!wHiyP8SJ~AYi6x)@p6)p$cN!dJTcQ&svRZZ=p>HS{AxN`&q$I)J!xj zB;w+R1y^PZHNS{Y){+19=xsIj-u6rylQ?bnoE|jL`(CRMPLy#Plfc=_6Ssko^gh$u z?i-a%&C^4$KAH#s|33i0q#KqOcb9ZBu$O%}lMm$s+7-$cglpQCu)g?p8(BORPXq&> zNU_&4yg6%>;~aWBY3I3tY*8Z6^B7nEACNDEfi}eg3bI!g6gBoECg~(uj#s*syG0dW z1?IelM%2+!8PO!A31!lpAEUL;m{OfX0}!D?ouSW%9Fj6gTmPHYIp$jvb8I{Vdialo zW`f{Ow3jdYi(;^s&js{=3&w2@lS~M@>>b4}+=W73E5syb`B;fB<`Do|0CAkh*!3~^ zYG7En47SCf?ae$!yj5n!KMvw-d+$~?bt6MrDem&N%5in7AE&*_Y2x$GT-oEovp|gk zYrx^_M;7RVflg~oo8o*T=blDVu4_AK^w4pYqEM@Io9;HYOVe`FWe<&c@PAXi5I7nE zn3?O6Ov__g8zJZ(AX)I1$b(krkeD&us7t98tF|W4fJVhKQV~^_luk~_kj_*2Gz5$q zF|g9b8*D!l90JU1bjyl%;^5#jVGVp7_5WpJ3ezVVp3LTT!Ed79K@$3T(*am*BoTTIXz@jL?3<)MGpO6s#D~3}32^S0b38HlvTzKI zjlsr)O$uK@EF>ETU1D$#z|wR+TE$^)kQNRRoSD%Nemsxwdj2&`K_eW98E1auf`&P$ zq-f2Nn0G-xg|{)?YpFBXm=Qs2<+NP>^&{ukS+N}(4pT2OUDTv6-Jn8T!ZxYvp8-cdM6CEvR(;nHi+@;HN}6+=?8{f3Rk zo0R{alv8z*n}JP3I^lWpq5^4cxe_BI@ai@aL~}9bag{aBcF-t$9OR0I}!D&*vVtAj>1}dbRZ>Fda*F% zK78TNCez~|Ww|kFgcn`4fn%pj996W}SkK$5tDP57y`0MKpaTz(Ys%-wrfQWPjdp(A2t$4ATLObmp%Qm z&!kdjKp=FpHV^>HP7sH`3y#F<;>Pi{b7FO8Rsa8fKKVlAk(A|@DOEZ^qKVSYPA+qf z8%gSKZNt);J4lBK&n5Z{HrZ64$gd6Mu8^*oTsFwl*4EJ0JCq%CCw+G*mV5|f+5ZR( zwy6?(hoQ?HXrcyi&z4;{RUMtdn#HfR2p|!WoAnCTkQ~g$ zYo|vfW5ydIr(LF1K2nG{a7FJMx487lo{bqc@4X$tyo1)t-+-Buq9aQ@3 zF7QV|wVLa?iKu3%&GBvI^pAJd4pg7#JTZz$-$e=2}s%U@V-~g>h{z!)bASVJmQ793z|V#4LMdNoKJ^ z&p2==Yc!l>Z*J}(%6Y>$to9wb;iOk%5YSHW=VLH+@L?k)nCpXB&7I!qC_ZSOUJ3KO zb#K@BqzoxdG?MN@yFASi%6pV5e{zJhd@Y9dHIt)|BJig4pjs9R!N`6>MKb^j)RWc? z$sG;ECfb#kN5NUj`Y3^C<_Pm}_;YE}W{~_a@W@{e_dz;qEkeXGn(@RWqZ$YJOj7q) z5%RMM?(-(WYtUodq5ZPqkp1q&*%|(PjYvC8{4da=8B%WJtG1{xD=Q1_6le|dqmMv` z=>3zG3=~w`8V^v7Qz+r!wV_&hD?{60P2c-`RC^0J<|^p?q*6z9{T_$Fi{t1k# zO`wl3yHe50UD|m-MBS;RF{>W-z)6=w;1FC_;~fz|Dq-d;ciY`dAE!Y{UzSkAwb7Rk zDG7d^^9R!8^1KC7Au`(X*8c{Ll)*uq0$U3E;fCOkX>{q=E7JEk*YW_eRehN~(^BwG zF!O1J1IF~4eaNB8dXgUYkXP3AX$KmJ=NdDY@1rHZcUmo@+juPO{^s+!Br3cV&4 zeN1K~uKD#K(V~PTaJRICc3ZU+Uu)3GSlP*OsM^DUu))wUjJzd?!`tmC&1ixgq0+6V zDezOeMWuP`u=z@){^L==#1C5F>hB$V_TL|+#dbfrfCQS8fCtBHFlQ}dGTqH={mPsN zZS+b!lnMOENL>Hp!VTWe#JC1yKn_9fS%`!SgOgZx^U7-s9ShPpbsI_W!}bbx`t z2>A5$a;JeaZMi>>Fy=tN5goo0sg4$8H#f2V)0URu)B27@;v4B`oNlsXjz)U+7}Zwu z%`t*gZMQgftOQaSkJ}b#W!#*=VQxuFb$+CKIp%_Su-xpI>$p+4e8k!eDM3hTTLUDG&r zXIXm8!lQV!*FCzCL=BH+zvG+QReG%fK+{>2p@qsif!c?O`UbrM^rz<)wxda4z(G8% zD0X47b-7b*HtzW|H*@jIR%Gl*_B*nJjL2E(jjrW@H%HoG{!WWz50HZDdi%W$&LC|7 zf71=mJC_O|;aMF*ue4eF@h$4{R2vK?5m+SDveChdx^N^cg&%FpQ}Wvv)a&UI63!OS z56`~hh501EAiw$BU+&fPF!O6;nOz-$nP47VzSf_g%4)JaM zF133xh}68>{ZO!yRFR?S2iN2cG3JY*EZshhQm=rSXa1>yh3I&|5!=yJ9+A5ZD(e5L zK_w^Dh>)1$RfU4gDDo}800uUEjY)uR>SM@5%w{$uDBOIyYb_yXR;`s?D;GmH9c-(y z-|#ozGljEkcq+Hs_Rd1{Esy$lq2RS+7UF%F!e1E@xKV9te``(!6d3zRDHwm8h1*5n zFa_zbZpOVPwz(2q!ODpI?yxGx4H_>&5^=rlOKESy2f-^MU~nj5ALH_7rb%p)3}qZ7 ze+F_wd5~}QjcmuN5xY$Mhz%vIQ(THI#EH=JpX~o&;@u{L&)J%LoMz1A@EL3J+R0P> zXr=j=*JQ_6|JtqjRs9^*AHq_VV@Z!8c6h5*LQ8dScF6VzI2;bDCG1uYa#}a6nmSf4w^sl_xTk6S*N~Bz4qsK7`BJ0b^b-HHrsjHlZfmYjuqE2#{%kfp`^mp3~(DiX|rH z_=I-lj9q&3GAI?ZNXN1`YwtHY+Bn%v0}I`@)CLE%d2p1)jb1I{my2S|V$HG9P0vKI z1REabtCy5G@fRy!0H`w3B8~6XM>GSF`Ml5lD=Y)9kLml=Ugk{gQ0js;*7t3pRVd#q$6#W`RCJep)ezl|@TRkTvE%Pv8mqHU=pu&30^J z9URjQ@r%&uHhZe(*t~P~?k(XL1z)hsl`F!BPUTt@WW57t@tcw!8^eh%nsDw5xknKJ z!+=1L)|57L=!MN$Qq;E^28w{BI-1YFl>cdP^IbrpWz0D{ljY_GH(CtbF}jNC%xEo? z!P@PWb`wp~qYnc+g~u{Yh9&2(n^tf4P%O&IDgpWKqF$bHYcjL4>T3eVZUB`VFW;{+ z-^F7WmBW0yYqI;Aw`bE4SR%K?M%$ThAq5vYO>>{@PXO|@#e>Ro5@q*=2-+MHNR_1o zqUCfd?>F7CxUoMkXnWM=OGf)ah#d49>v4-C<@x_5(R7Zkl4tWSn&sAqb?w0+VB~2% zz!SeXXCKCsLvqyF1y`zMHmSNYeFrWOtamiC@oax08lf*`AKRTj`=MB%{U-L{{>K3u zgKCxUbm2w7in^2J=DkDe1PgdkIaz&0`^2PsA{9tohq*4m0AVQpUQz2PEh?YPPJM}< z34kbU-$Mw>%bF-6KR)HduF)kpv#mgNaJqc1HC6Kfr|H>KN$Gj7s>J92HALlToceb& zHGZLKh5Arw%lwSujgn=+wbb9vbF*j(>S?RfHdjV{DR$ZvMnIgcW&JzaMzexaaeeKM z*ofmZtqL+$lwDazSgRMvRl@2!cicso`BoHymxcyxtUCfF3y<*%i_@>%X2au6FLlXP zVfkGL?WMFd=J)8c*X$xuOe`{z22{AXJ4B#OxSqcz$Gvrm8ZUhi{|>@a0hI^`NnvYZ;_N@-q9@6XrZXLiw}}6kk++urRA`{bD(OW z?@wLb?F(3y(8d1J@?ZSnF)GKn!gIwu;83 z3KT6ex#q0Vgj|MHEa=|l))#59lOv8t9n1^*I}WZiv{ zbQV&id5#pRb{AokXzeL;)^{JAm-PE|R&tugnhB?ETqxSrcO>?!x?1N`(PyrawFc}m#FsjJtv-lPyg+9J?zt$x>y0J`zZo~GfR${TPFD|i}y{98%_B$ zC_{G~8(PVFFe7QM9+;-|kE{Julp-U^F*>9SP$M^(499*%y(rCcBZJ0Y-gH(?jA^IF z)`HaHDkLd4+w*g;F32V1s@-}{RELe~2BjNjNu%H-c^1!-H*;T((}r6}zZ`V#34p0Q z5_veWZ;|wpZv6%?I#6LYvZDT>u-vE=u5wzCky&j>XkqY7?smb)S*V}I1#Yx!7q;5h zb#?GLh9_g>vCq=tvIUH7}Y5@tf0_ySQ?bhx8rm*)uuFQs*69Aoo;nj_YX&wCG6aQkwm zlWf;D5L89gP<`g(xsEhcYElg^EiwS?Ux$?I-AQ*Zss8jH@=X7hO~n;<0dtd4cGgIW z#_T)BMz(ujPl4QC8YUY9A&Jys@@tAwQ&S!V&ApGLkoT)8hwHk3)fpXSGhCZy^%EF_ z0~RPmQ#`bns1X#Jt`~Ra)x^nGVoF`$l4$_v@ZAwQK2|5;YGC;ro;W3<%r}qAKt)LD zI9+p7m`85N;P>pQRSjogIU~HhseVHqm<^ENsOmQfWbg`R-uqO3%uoYJ-2;?>ZXH47-<+hFr39-o=fHZ59VL3nuU4f_$_lQ9#I{5cE@R2-x{^`-z)0cVHpYjP= zgO&rf1&K}KOn&Wu3O#!yb_Vd-1aEL6*Nn}K-Kq1UW-+#TkBZ`S)Mf>p8Z0#!2(c$e zso!c_!1Z0&{FV5o5Lya5jgss}$La}iT}-fG6MnI~io8$Lo|O0^cJQP&?kJnVzA4p* zU!keLTFbTwiwW*w8?)*{sGbU-PBZc2kX_RGYnH*;_0aJV3gU7CKd{9O%#)K9HXEIe zZ@Afd`G9C*MeHbdrHku<^l52{X*Qz3AtVHWsb>9s+yxZ2D(CZeE4+)xYX-xh%P9yb zfE8R?Ddie*7M$YtM`FN&8eWvmX9|>~tut^$>dL03xjxJ>Ts&qJjxmfm;W9>)N!>@% zfd+hnq%7k3N@Zl18Xm+p%a`l9CF@6|K#5H(y!?|Ljbk;$U>1K zhD5RYueR+md1a6$h`5CAL)*g1TjR{OsDv5NL&&u^aRSC@R}K^PsefKff8D2cI-aA6 z5I`gn8|TAW{WEs_kJKcmeIAQ&LxDJ+m(N#=VU+>{r+hjVM?P11l#e_2!|+FZbF;i2 z+Rx^ZmJvntlt%nRk;}S44@7|`k$<5Am+5>^$6ZPM4eodb#Q#r}Y+IXG^}hy+;@IWp z4pUGksqWO8?neA!A;q*g%d%&g*3YA=r4zaj&s~HaT4@H_zcUH$yq6uq+3r~IR8F3n zn=}BM>%mDLQtXo7YiBGiA-APWf|_mz`_~Z>W9VEVc<*t@U0j!17~afuQAwUd<`ss4 z?%TofMa3dq3s4AxJC8NOIl<*K6S2c1@PrOxSYuSbd-eR-ZWejADjnFq`vs;i(#Dl1;n{3q$p|=L3c}D1|Uas)SX8 zsLJI2fTLAT){j{^L>l+hgL`Z;*E#P6ETy1P5g=rXDYEp)E2K)!d?>$ z)YG@+{Z-#k;n{k~#D#AQ3aB#|tyOyM#f5JHiF~*E9$_33d$P#~1Lf`$n7C&n*NgiX zx4QMtM>^?vu+w{LQ$^x4x{QlW*e;di25iaT+y_fK(+5&XPHvOpATf+ijx{#tGxShj zBk0OPk~i|hlX}vWRs761rWjEzsU#NEqRULFMALjC35$FX_m9oxBCwa-uCunFDnW?= zLTz)eB&ruVUyY_oZTLUW-=P9nqm_oCSf|5YsU7#*^s*Iyd7R{f9Whcl85+s*Bb!J9 z>G~WTE;5?i9rG`R^w;hLN(=7~XGBp5K;XlwWT^=dASQNAjhdJkph(EU_=i;H_(lp@ zlr?3VWmg2ij?cA~muS1_0v8z2(XG45v5bn$yadXkOUO4PQf=7GK-}Qx#cmadN2y~E zX4XfK1!{lx7Z*zgy9g+4zH*6-%;l%v-^RFGwneUL@ptQFbKvP0nuDXsCCwc~V+BQx zIIw!o5wSF9f zWv3?!5M6f9R1*ToPlgCKlYw+8^GMIovTSD4`cVZy%VU(@<4y}+q*F3y)OIJPZxlFDR|t4XmR2{=nYDb& z=V5Mj>WL?3=6=Xs&kO+uGU%YV#IFv8DuX}_n}KAr!|Wv@K@8XPCpcDr?b~FKERtS1 zx(n=z+uDfNt5^K4w0B(kIhP_+t1&qJct&ihidq>|o2GjJsm9UJB@Py#g=08Mq3*Yw z)cE2G9bBA;$i4zs66l$LV=-Of-jyxB8m?rV+9jaPyiFvp@ze^N_-hjriz&>+lB^3n zz`wTZ+tW&2EH(u_#|5R@&ued(+?*b>KZ+s8cEK_YCYpPTzpxLgdxl`8nqv?mBMCGQSp1!=cCKl|%mBSV6fcxeMY`cO2OMaANeC7y4Z#Y&mRt-PUb-_}jI6x3| zeBi6z==md+B10WV-Z?}PDM4DOJ;5d;ck0eNnibn#7!w}@J2__PZ1J}F zi+O1YzyR{Xw;r>jw=5z?A-gGI8D?RR&LjVLzDLeveef& z8a@sIbmHHT>qa3&e3{!aHn@j1~E6#nP2cw?sN+<}OhZ}14I#{OtL#}FT|pt^=QDp}~>Mpw+f25T~%<&9WxJNv8!+fzh|hhi~tpFdl8da}68x0$P+ReoEXuWTN9du@ixS4RPP8 zpxqd0*A1yppx*g5$3kJJeO=kM@|PaMl0*ik8lXV~0*(nonv3i1vGfjsrrwtWhrWB^ z!bc>ywgt1?9Zo|vyOqN%G(RpC4>mb(|3KOEpk0Gl!|<1n^yK#xxL+4;=b zPoZ~|F$dkQgv0Y>%XO%k z?SecbsbS@1CX_V(fX;_6(XiN+=&r9r`CFL3#*W{jL z@NLAkO`-rmD#QNzKEx(!imB?yxqh7D>@hrWq^;e4wiL-Bk{djO34~?y>1x?aYO{;Q zsz7P4m&h=(5Gb7>_hWG%IEta*!N&g|H@FR7l4yw^$f_0lK%0qZAhRC3?rD^1+b0AC z3Nme+jxl!cyvn2zuDvm+P%o%2M#8j0w|K81U2^wt=!C;4WQ;l!e zt`fV4eU+WL0?sBtHX_b{F5Sp2#J=~c!W5gnjAW~^OXV8vmxJKgWwo9B(UH?}Z`v4z z+_!3swM~ng{qm0(yg?IVDYu8;m$i6GrHK%I_hKr*Q-7J>!!`sg{fjqvZTq*>TdmP+ znox(_j|`!^;t-9I%Z94->bD+R>fnMFIpjJE@sT+MLlx8?g!xWBU(O|dmNsISN2HkC z3el`ib13zYudb;k5)qP2QV+t|h(f)4)+#Xirrf%r;sn0j!tf(z&wt&%&Cx&X3k_<) zHF_7t$2)Uu^O0Ib@EgziYjJ=xDrz>=p=KASiQc?6p$BL!G!7PS!2;xrgcfjRQOaHN z{Uz>)Nx!)EHd_-odt9M((*9kI75CkT(?d(eXsoAg4iB17^IU?dqNjLBNIeisKI|B; zQBdN{1Gyt&a=VG4N2V%e;l$>d8GVh&qnKwUy{ew)Nu3_3wQPB!?J71n@?PWW{;#5I zau%%P_5&%UlC3*`8U^Izbf9`tU^Xcp0{Er8tDf_=%Hc(^i607b| z#B_?fWk^oo2Zuquh8=gzi?-aO)ThynLJHK6F?8nvMy*L3KnP%}NX?_&~K0s}Wf6kRKi))ToH@m$&Zu*rGP$@^+d+pB|29;C9ba*p|_C8DsL{`_sd8- z5Kl$qqocd^kOrC)EaVboyW4d;jWDwK^twc}?Ecl8u*9LBZLiFlYk|7td1)X(*A-cI z^F?_G6Jj`goPdV%Jcclc(yzjr&?Og3Eb}JcPig)vVZvwd@Y3sj;4ql_JE7F3@Z9RG z)hdP}w0XSFuE{~U!12*^?BA%V;{7i4as2gzfWM2Rs(1XchI@(m{I}7n3@uXBaOm$i zRjWK9&L8#qQ-|YlN>(-auy9T z17mUw`iNPNx=}N|<+54R^y!p((i_q(%u|2N9>9c~lSj%S0xcuMg4?CrBE^8d)Y;FA zFxWNp7R>8<-L!k8Le-rU)#$F<-&NW@>gBB3^CVy8QJHxNarTVqCBL!c&|1i{!r~0S z)TCk${kSyGz0GFwttRSRunGJQY9|p+9HwJOR;+)HLfN3El+O#H1`j+mHPCo!+GYzl zc4XgRDClW6K!l8>*z(OauSNPtf3F59$E=n?!F@f76BJu=|0`(4b1Xjig8~IVaYrjm z6)lbR6RTo0WUVRA#)dW(SfzR=b#3Qj2hhqVN!^enL!yAzUb?;0EkS}Ee~KQw5A2H% z+84NQBZj#uf{|#d^Z zt~F>4p4+hsEL!ZKE*h8lr|S+)Qyex}0@Chq7EpJQLAeHRP#GSX5a{h08xl}sMh#Aj z;F8OpfZNbFJs(7~s~?d~XgOTSXLy>9oyv+_18^nEMFOprxm!>@X3R0FBPc5d>Gjj6 z-XkY=)NGRcaCU6}(VY&|Yp0HY3>(_2Zjh?_uPE`I9xg#%b|x|#tdd-UKu`|#4x5&;stt8 zK&MV}AW4k=k=QzsT!Clj#}h!xlRO!PzKJ@H&VCx;;WB;-TTc8inQ<9jNZ)`(xDH*% z{?0!@>BwVl=v$0HNp*bolLT&IK2|uS*|m7*#lmy4)X`uigRd`gQ2G&?&c3d`y@Ou8wq);O4g4 z{!1s-xe<5k2;%FwN}%y?4}|owc+?iHlr~-EaE{(;*d^nR&>jK`a`&(?%anMUAlT3; zsJsyv+GSF`LyD{_I2>2ojFVvXk8?5fX?w!_s_(319PwaZeaZ|?CEN$aqL*u5@{8^n z>bfGQYqh;dvxOzHcT~AWkJ+)0ZTi8q78g{Zw?i|}DaACF+SDN$tSy_S!^i{^?F?U* zpT;{2!I^r@Q(V+(i4(CrT~Me3WdWiU4@SDsnUN;Ib& zT@RVAiPwHWXG_oOu5hS|bU{b5lVi4O7;m(@#`sG^ucUMS_cFK84mU4rgNL|-dU#$T zLKvUNNojOYenT>OzS*LDuoMvL^VdW7{$Wyos0_yepd#KyM+mot6Ig@yVE`BmKON2&d>G zYxyOY%pd@ccUErYeO9S5_*&NEzj7Uz4GE{A38kUs^I~K0HjJDyvk&;yPmV zIKCCRsbG{cuu{tXO9?q8c)6)2s)`3cJYuwr3JpD zj{5Xf(|E4^n^VW}uI&YXsTh6a#NmuC2&b>9&50rHGJq_4ek}r;_7K$Kr)^KDC8zyOU=rHtxKyr&AAx5YkzcYou&HIv``^Mi6l4WetM!wq zb%7Kpm;MH^RnS(0yxsyQ>)amw2Aki*lC}TK!KlXf7G@Z0f$zpI`HBi3; zVI`8Cs4;y{i;1g9xUBlV=0*822)Bt6_SkEh>aAAbBUp&7*rc-!1y_^E0Xt2LrBF~b z@WY>%1n}xi-6t~tY$6eAk#2L%U@yM=!*j_MagaTC7M`AwE7)5{*TFLTkY$u^RE-v* zpK9<-0EG7}SrBK<+W7izSfleM{s05Agnr*(I3A8=)80FXdEsN;BAY`{i{e^~eqA!) zTh=RCil^u$8UIx*hzW>Wi3G0eR4$78w6ZAC@Cpz*^fc zy(Wl%7KZF`Ykn_;1;CUe<)AY}ldF8bHISE*UtBuOy80KL$RRketZbAVdQ<_K$?9M8 z6b%qVJ0j5dbKTDTw#Z-3p$wO2J0Xw?nqc;>6Dud_u#XHd_KR1IRLM~zD_1b3tu_bqZ~ zj@lOcATBiDE^pqiHh#f*1B?nkNm*(j9rOhD!cOro(CuA$m*~MyZ(Sjs6aN@~6uDqq zQ*J4etmofG6(_7c^WI?=c}AznQahCX^>4CIXH8zRD(Tn8IwbGncxd2X$!wYZyp(P+YlnNy__Lmge;?!qTB0!GBNlur?!dC&}%}s%b zRF!72nYLS66T9KZNqPbGR<0F(d2-xK3eIfdi59VZH}WrFsu6?!mB_-|X}1=zLV}0G z*s=lc(s$bra?VG-2H6ZI#fy{pk(o;Y?6gJFooCd%zOvxc@gb4 zi=f-*=6xXM>B&j5OEo_t8Zh%SIHNW`b~pAl_@Fzg^*>GZJ4 z+1Hb%6s98y5DMx^!k#WdzgPl&^Jz2>4HX2uCF@Nv={C8UA~>3&&<{MosWq<&TiyL~ zIOimuDJ%f9%r~T}o%L|X)m$YGM1$G3Z1rTi5M>Y_pj;OyGU=jDMHR^Jb0P6f-zyBG zf?1y$kgHuZl`#~gWobiDL81Sk0soy46F})-rS{~fHOgC@nagD?-cR+`g7Yt~_U7_6 z37^cvZ=1p`^vEWNqf5oif=KjYWsK;-KM;u}AnnFJ=wyTWM)m3Bx8R)=YUz{1v0@Wv z(IkGu(B{27P;?FQ0mx$)arGUlQX5ERt$^b44QE4D972V&*9>b&{Qh1UgH(c@WU(#7 z#QO)(6w7ABgy-9?2=RM2%e2qIfog>c>rKz4~gC8cB{hj_hp|nG(7_$!ktcf$Y$S$>7mz{X)i+5m|j> zH&%e6r=GI^cD@D9@0Y@}$;=JxbW4K=eXHtB#>!Xgs-H68_sBG>EG3cr2Cat+nDezj zR*pb~sx84Ed9<5yH}uXdx|O`{lI#M!qBj|R1dSb7eJWhJcsGQHr1|ea7AdNw!{_&| zg&XGCYv%{jiFdtc@bs;wJ?rpTXU363Z6dNQpIKyuBKyXnA1Ta!my&N401~q3r6TI! z>B5$0>gTB4%R7>9E=VxAbcf|fy>5M8XQK!nnENt!7FqY}1S7*A(Fd}!*MF9%kY#vF z1;VXMB)M9f!{AG*e9FcMiQ%$H>$kr1;AXP!bYw+LPl^{e8ohBo5m=7;*?dt9gwau5 zZN}*Tv5fO|1{;j8Sht5Y?XuVEW_UXvWx|PS&SnTL=rN#}p<@ka38?2Ab}jK6L~u4h zx7_6p_w7)O1m!pL;PG%@H3&HWCc&r`fAKFKD z<>f8rYfUe8C=~_omyq@69RzG5IGwR|gaU%hhj2QEQL(JI9l#=HQ;a@wC|4Ggfj-F~ z8xl#HCQ1ufeMy9U8e9@gcy_O5U|gT29jll0=bd`c2HnkCtBKK|exd$=+*f6(O+lqr zbdCtrXL1%{mqba+2Ucq%W)F88@(J?2akP5$*+X)Pnu(Z;SPshAu5}|BRZ{lJI$AKHmS1~<#Wot%q!>(BSRL*g2MAp^%_WDw zQk!vxcaWJ(MX!Q1MK3{8sj_eTyTDE+ zvif>%8Xulh>TWzyOs*Ldn#a=BtO6Xh!=BSIWUhE(ZLYz%Xa9#5_GQiUI4%s{hm8`J z^h&3l) z_*uCK5KGr)Qhv&~)*gXU^Z%K>7S~ZvNw#c6Q!%%}r66F$Ztq&0EO$%+-SJfI!{sv9 zEnmZ!-h&GrECOB-R$`#bV?n${Os4x#ViDkTbX_a@Gl@l|g*n!bwcFeie$^ zn`h~1e2`*R?3qaNRjFhFIU*M_;uGq&Ti_SYy3`u7h`7gR9FmjQDL{Y-;!LL2(|3Pp zXlvT6G0*X6YO)-6QF1o&>LbItAa%4|x2B(Fh)4pziiU3O)Xl3S?EiBB{VKx>0o;S0 zJKjWA8Qh^Vgs7tgmmHq~QQ^VrlZ|t%l;4ko_F?E`vTAX~Dg=dsso z*=c0;j2UX(p5tY|W&dm7r^;SR`aKiD3pA`d*R${i8z zoE4c(pl%9A7+`ov=wf!U?wS5t4-;V4nH4}?K5=z0vJv4ZgdyoV7`gskbV=mPc)D8+ zTF1>|!U*ChHGXFST@(b&{if3NuMVx~cgdnlLDhR$sk16kEgWl(K4CEw+{vv6IansyIRt$t_LDBtV=^Nk%aW$;nzqmvY4FfX4hA`JPZ{8kwO~Y=t5h*iHb^jG2?(t55 z>(mm4=AhX)iL-`I^2URFKkZXr(Hje=59tlK#gD8VOXe?m;FN`r2XX+P%o}hQd%h<> zg2J6Dt6~9;Pe^XS0xQ*dwc1%|@_on869f1z3w?H)42p+lN20 z$X&ZS!tz2J^b4p?f@)QHQEb2wl^&pOF`c6ote{lK0&qOd(+BDY^1SDE6D=9j)0_!< z^8o0s#_u3f|B8126$ffWs#Ij0x_1|gQHWZ>QX9~z<*IVHdUY~9 z0kS40sQ5(eR_`Sz7&ono(7i^KT+-!SG$7QJ{w_=_36BK9mRE7_vLx~%t87BGHlUQSRk{@>XEAPQdmQJh3@ke zl2HG|uy3jo2-7Gml@TQ;yJJc+`nRn?aSRfVzU@%}avb~+uG(H(iPRf%F){!(tH zjHu$!`Q&r`0xG<9N^*8_K&OU`fE8BC5AB}2f8b@Nh(AQCduJpZr}lgG7)uvxnZULN zmb!;O-YK~HE@wQs>lDR-_NnE3oqE|;l*D_P<(!X7cV!fj(TBMNDhu*6ahJc=sF_RI znjt7Wfn1K0yRS?Hzh7({h!IzPC+ovIM&;J^wEe9T{ONfO7rqy~98&o*6fs!gF>ZOs z*(lb_a|1nW_cMvrOb5vs+Vo;(V#!=CB+=Iv|6VVcPe-)EWm;?T5KaK<}@gN;6Neu&~FM9VI=y~Gr z)-WMn)P^1jUvF28a+xl_PiF1r9|OdAU+boX9H5o<)?inuu$XxyuHRjcvX-iuhJ^-d zF`b9)V#)H77$7~tKJ~YpByMDqsT(+k>o;KBHWE?TQBg zqDX+O<6QAj&{gWvrICLI%OC_Ri@x2W$j{8ZcHG;P_uXZ)6Jnvr*A`wiyy3F((bx56 z2P46+C;+TYQlJrd1?d%~+el=jw;$1*)em8N!fGPCVh3LLY&x9Mmtk{&k)i-Ez^zoN zEMo@hz7PxJ%@bjCRM7L!vTO2&A{FhAeFe?nOZx{VxhU@_dKxN^R!x{&O2_8>Ko=~2nbm(1t#AvIMD4E0W+vKJUbhEdn`a|HWr9WWc zhB-Xij?WuRu|Zl`30rs~+1m{_Ab|f?0G;|TD2{(E@uZ8dGV_kzPwgWvE_Rx3L(x61 zhZuvoA(z9o$hR4_`Ni16)dRq*XRI%3|D^``|G<(A$cOaS&h>qMc@(0K2(=kI z(w7!EWRB+qzl_!9!!XN$I-}pK*(E?tAGaIXz>G@jlm}?A=?d8WI(^xJLp7-Iec*r* zGk(73{;BOV-UJ|b8*sG}4VcO4FpN;e5;eKGH>G7Q`F(=%tiP+7kumk6rJm<%RF0|M zvEd)!q3!jWe#-PvGpg8q&%Z8QLrHAWzR1SeiP0X!z}NVBm#L}Rm4V8-A;Bl81|bP` zrb6<cg0pAt$XOZJ+F|Jqthx*1DcjA%51ZZ1&t?M4ZH6`b>n#fs zhTRRzS#&J$hM8_i5)mSx--oncU(x1HrdEAnrgF2Pem8TrDw-c-XKbnEs}+!L4+(Dm zT;a}e{#GrfTntdhuLW8hN|@c#Yg_3nu07waf%1E3V7r$LabZREi4<_`_ z91n?x^m*qiUopBshvL;wl0#?mc!Y&KRjT7$3hQR>+&_;b)tW}W8R{N|lvcDgIP4nG zqE-t&f@RKAy)aQ*4h9qZaT;VMMQy3*JDysczV&l3+OX3&GZs887rKUE$t7R0AY-nF zDUZ7ZTki~0+F;dsxm-^4C|`xyfxp_o5~+SCdf@wLAVw&t{`>3cLnX$KPQcbX&U^wy zU#KLzBpr-IFJ{VESQ#NGj5IU7?Eg2p3>oUdrP5KmCFvh(Y_K+gB*#yrAr?_!Wl{PX zU6RSxBbs7m12s8A%<^L?a5zJIJN-xETDrR_I}8o2A&5O+hkGpV4#>yzNGt8IY?b-w z(m=|2B+NVu4?rxxoGy@-*ZR)yt}+{aoZtjeR3l&7U|ZDu20g^PkkbtzG%!rGlARO z-l;+L^Y1e4ohWYxYWEQM*Ht?J|33i0>n8zHQT4di)$MCsEaC{nOk|XBcfSdq)qLZn zDo)Rk&!8HTgFSzv z-{M0O{@iw19G(~}Fb?BhU7su9OYVRI zkhR5{T`*Md69Ff2ol=Q1OET1tt^Qr$$;MZ$iH(XNv-!9jj7J{`z0|lQ`~3-sWDD74 zj%f)zankVikig&Xf9C~*#!uG9@)HovT&%IjS$)p#xW?8~$s)~?DMcUxGKpTZIgneI zg||K4>gt&biOGfW0*Dmf7ys4v8Ss>(8s@Gv!d_^Vq=`llt6yf4 zl}z3Y)yh!s+v=S*tdAArKEt{G-r!8g(u1`{{m4*DS(;L zQd&*_nKGd$EBOP2^Yh(}23tluVSLBr*@=BTPtK{LG#Jc+t^M*(8~eQu(6IV!ShcHs zxLRDSUFOi7d?BoVdUxsy9SjwCjPTZjF$2{lOY27oCHUI zQN#Z;2vQ4nZ0>7yNe&g8`3N-aVy_lf(s0IFa;>r(9#Q& zEgJNa5NfNRR6kje`v2$<1cI!PnK`zqiL6RP8oos$#a;~$ra7G9;epvO-54<2k~X>< z^hTr8uG;xx{wnl&$|3+MDmV#bstaEFJP^Efn{kH6ETidckKi2CaWe1ADpx87g|HX} zTt<-uybdNQlviOkz66dS6T^w)T6&w!T&qI^ebg%4-fRILEo%I`-(x5t#OlfS`Nqk^ zghlE$#crcJb&l$pVUhw1g;id1vi30dj}R`ks7o@*9MU$id&`X@5GgAx1qS-8WF`=C zM+~!8mlmdT)-y6h+qgN@9(y&Og=GbiW*d$&HlfKB2T1FQxv9ET;?ueO(9GU&dP5XR zM!a5utG)BCCz6R1zeP$r$NH&T?wutIaydYiuV7({tZXude)V&wL9j`O{jLdbpU!O18;jPvtiEb7y)ly)<$27hmA0>EH70IQ3rxR3g{ ztksTIYM>l_jqe2C!3lN$8OwypbxV2ydf9R{G?sXem6YKp2+r4-aCkDCgDAr)f%+g| zS392Oi=Kjje8M`nf1}R59iAFYe1?SO_oCbjI}Ft&vk2F<6Wv*v`4&>|sCc^CMPjkw z{_4}6GO!yo1aj-P-mcG|-`Xjp&?4w{O_vVDS4CBM1Sh^nBhMH7Wr)Lqki+oNtk|xp zh{0tSFkiTU)I8tKFzdoDgP@QH^0o-l_2RHEr`4&Jy{y_p?mb)@<#e+O%Qr zZ1|>yew6fHNtpGsG=RnF;Kic!m0@}5QfuiDinxlp2yX^!R__VRE5RmLeWURPEN0LF zMy1!yGcnTk9rqHhYV6`M<)ECK2*!?xFU%4tmWnDj@rZ#YvK*U>S+vfge=RXE%x9SkJrtqNkH9!Bey-}o!FzYKxNg!lQ)gCAo*LIZ14}jspm`6W z)aaZEYpDE7N=BD*>$sZgV|Y#Aa)+inn=Avlvu@(@u*ysDUNVFM>{<^zt91ARt`9hiiNwkL0TST18x zBwUUHzKNnX2%1q#S6jx2f1{n0$3qS+(~-h4RhAk8mxOFt#r}Yhjvd#ZjcandB)#wA zS~qHwh>uLhq+t@-%dCg^Y!8MP)!du)3kuuRzk!)AL8i>YO%d^vOk}HXm#Bi3S0R}| zA)ew=u%p77oJ8~TpFW2*mU}j=ZZ?>hmaSEnsEn!dc{lZG{g@*%X<}6u(fgjKqy)W_ zYwEL<>UT92w#c#YZ6zI?Oqi%$N1U`x6bXLaf5O4#kiL;X`^6P#0sQjJX z$r5(~t_Z)F@cXpKVRjSplyI`Mi_O09GNzj^8z?&RgYWO-9Y=;=s%!g1ykDGs#4BZZU3gg6^o&BM+nk21TeU@Dw6)QPG`{NwXRYixn8(!Kd9Q#GJ ze5Pv%XXc{^wQ(x*If9NgLYrM?9_6Kmb0!#!8^NlK`pOin5ANGIZ1Z=V@>_@%|$691?32Br6Z*CB}s zkuwV6+OVDgk!s*1>(Ek2zw9pbILw)%kjI&x(&%w;6P})8@!aCL(>GSuXIG5DZ5?1X z_dBhG3|4pp)hzlZ2%o-T61bYwr)BUrhl}KJU}FOZ-`oZ8)PWtM#DlaU60y3X!v63M ztbB0)Ii$Uhu;qkt3(By~TxK{vV|9TI`#|A}IUzM;DF~f)2qnVc2S5!F;RzE6Ltb@n z(+VGCNJI4@t@NLd3G+7t@?Mmg?CwWCg%a&titf|ZDdVyt6|y6`4wGUzS%A~T1X10Q zIJdgF;Sb>~8*9u|T;Pz{_Oc(vb0G4H+ZZHV1O-d)*=1uzdO!XkD%^1Mqyq);SY_|J zBS;$3nNSIg);2j*Fl}eNfaiju{{i|U^V|qjL(_NaAmAYd z3U;nX2@XI?@sjt9k?hS0H4Eo}OSBl?66oGoaO#b9=UWhuga3T{!%n=Bszy8tGD?#7 zPUg{8Vblxuc~!qz-F|;g_n13I3eb|p3auOcc}2JY(3N-5?vt8(ZEx-AJ-tJ>*OG4n zq4=N6_cJ0rX+t8-0mXlEVv~xq-h}u}!CC<29>AY+1`-$#8Pt2}2Dpt*EUYSrZs_`l zTnKD?29eU&iEJCJCKykc+_|iyUzp(J!mG{1K~9~_%2VvMK^yT8kTfC~valm}wzb_j z;OTU{8XZYu@&+P;5dJu7x}M1i<`*d9@q^b9?iciT!j>7QKq$Y?da1x7qtOU^A>i6G zmHQC$hg+kipF`!Y?hk|94V5Wt;fPuN#)gLb0{dnIaTPw#CmqzP+`l0g*Uo=GHc78f zfg^Ce=DOp`G6FU|<&|$kw8FRMl1ii#VFzki*WGD|hU`SPmGf0JrLLi8HMVIBIS}Ue zzPdV8THeqQDJ#ORl-o`?vmvT|`=x=GR|LCY*blEY=U>%jn3Z`(0%_9cO*Pk@|MMNs z%pllS#?d#@$MJrdwbzp#6Rc-gxuue+rA(e^#zV%d7o_=L9y|zr^HT2_76CeH6+2+QbeUrQmim550*Sh8J3UK%7p4;{MiJrH%9Ra7r3xn)oZ zltlEt zF~E8*oU*Di_c7RfI>z}oMgGJUDagmb6oOoGX^yzdHzDc>uiabMW1n=_!q7X787=d( zA##pkqk&@kz^sMxujcBkI&gShmJ zTw>LZ^+Pmr%ATa%V2v7rWDC_)c2D*i-GhwU&kYgRzHd8PPcv!t4WK`>uoHiy!cs?gopU-76o{$ zJSi`GT-~W#PZ?^h$y={nFra@k*3OVaptrip*NwGNr!C`i`O}-M)7t7Mm~}V@CFUxl z_rI>;6sO=qsn)TkUi%&3<)B~RosItC2HoWRosPSwZC#&xzCfe&r1shm=CMK|0g*WY zQPQ+#&xl%Hl$e*Mnk_3@D^N;3$9B1*8@yLGsWQ@+IkV5DerPhtRz0O1rUYCAw-TOcNn$o1u-1X2lVorBz|$@>tPU%eyw?6LEO8NDp;WK69C;nL zZiY=UQSc-T+n2R_ifgAvNZAD(CO7My^f*k=(*oWT+i+jn_YLA7ca39pcwJsVc?^E( z-9|&i4xhzqlB)@$NwIV+|6dUAyWL#z2`@;iIb09?Iq^yAg zda7+8i6=v_=LZCkLCsm!ih{O4v-{?hxc#!E{!*R6c(3u32Th76g*#p&rWs%SBF@G( z`e$_IJ=L9)R;=MqO&QG9e>!RdsQeu<)swRlY~ff4=n;4+Y8z5 zP|QjWJ6R~*VLOv9-`T=fG~b`WJucJxXhZ#~TpQ(=kop1Q6|f#`S@*Dc$o5e9LVr*c zhVZ~Ei9tzZ6}G{#R7=;jLmnjA_Ja9k?!}IrKH8nDT<*icF}|O_Q@g5lj`#df#|l+v zYG-&Bu=9L_62zRPqE{6r-zr?la z^^OG-h{)~|10aXQZA1|9v@crQzf3DpmYP|SM-g4SXdkmqUH$)@3{D!^+}9J?W6Iry zwwvCiiFm}gOVzkjOIA@uEj%^z*_Sah(hrSHZF8=Y6n&U}r(0#n#3CFygcaG1=GO7w zMePBD&)A!5Czx^;+7V8Ur|zko%b=h#bff-i*#Lcnci;SBLr|E7hHd0+3mrszmLfV! zzaAv&f6$D7H53Us3xkBb7LI(BlbBc|wpvTs5D(tg%7&Hp>taOQXY9a_jV+f?`p-7> zNNJt|D_yo^8Atf+aXGT9Y`nuk2xKGwgg z=q#qR2r}WB4v-T9SHVtQLHNnsmRUG&4Amqe2H_3&Y_?#yeUXn=NLgHT*{j?Swr*rl z+VkTiAAjqL#t}03lSyf^J@SDz2$mFFR0r0fodlPR! zZ+30cnRBPVa21*-J;d)6H%#eBvSp?x`9I7fL~8dD5XtID_4g#f?j={Ja>31%$TD^@ zKD&i(drm@4_BTMDq~MpCpAet5?VVDWrtn2A$;<6Oif3qrdLcL-G>2zZ7*TmMCAJGk ze^$Q=uojDiG+Xbk5b(yL?OAqM^JeIVr1)k(Yt%9t#~7(P>Cyn1;+l`&^amfSi^m7D zx;>ZcCGb*AP^>JAq02=ru!PQ- z&9sK}xHoKeFv5(bGyKGPL(r28u@UL^H-yIz=ga!KJ;u#$1U+q=2W4}99w%-H@-T0% z4f7iP_~oQi;4P|KZ8!!ZkdxR9%Q zv!&g^78-?#!wtNR%l~1$HXC56+q=qSEu1J7z7woCi|zrB^HpO{(BcJriR_lGSvf~o zfo~}cQkynBRF92;o~4!RuHGT7sAXs0iV7T^O%$xfBiQYnh{ZEN>qTH$K20Db@oZX` z*V(E0si2@WgXVj5?1ukta1y``@1^7WmA0I06|woc%O4tC3B=Fi`@C$}1W$o+b;tDK z6lh~c@N~Fg;0ol)Rw}Y-|8o-AY@uQYP$+VF9IQkWP2vYf2>y5%9#aIgY~Q}M-V_ct zBB)j?g6?gH03Dn-JcwO*lzQ?-evxRVJ`R1=@RZ?zZ`*s7bx){PyU2;L?62lCIh*id zHjpGVL6L|Hum_lAl|eS`b=S&r+mb_%_OBOQw6OfliODyGmkPPA}WqcM*C-C8eZ>c=p9M zWmNqMqWG=WJMg>vVX$;-TO-$dhsdBmI)q)|)lr*cvK$D^qEJye+GMm1TcwojYM-R1 zkdJMX`-^m6eYvWeknC;p;Rs7^KhBD}S#3H*{wTM{ z9v@ZBDIalR^7gVX>l3gEp;n(78T>?0*+`R7_a6IA28S)Q&A67Fe@g<6s(J(eH2f=A zzj}`Kdg7<^w6?UE0v~|QB)ezEz+aIhcP1|LqTM{Fp{V1~W?=xca0iaXgUI~6My4QZ zk^jIw->+IteaDR2ROYJK7HY~XdSF(%DpFu|;`Nmd6-`Y=Q-(qY^`%W3b=;!R%bq>g z6uKEPR6@!{-~_We>mUS7!BzRrcp3ydLXn#wd6mNAM6CX}?jhkmK&<=cB68z%KhM!q zT{sJm&CG({+-IjDV#Sm=S$#bc9a~QD9wFzP=WCX0%G4W^pNYI?^*H2Fz;0 z8$05cP|ODS;#-wuVa5o21{K$uHw;)vuz99d5A>Ff&(k$5QBcFCPady`eMi76Jf5Z{ z+^=Dm{X)xMThSWEP!QHU9IUb55DzvTg5*d0O}BDaFnw3ML_kpBC(I~%L<)YOyh9-H z$QQ;IAR|sC`^-gNpLMQV)4j!-T0arUO6VRQc1ESsyhqIF_PlMEq6(7)e4nULXVDIRk73To@ zwFK81koec6bPPTo9rckYO(b}j}gFm;zJ4WTLsDUBi9Quj)MYAP?%FXxR>}6!{ zCzs|G0z%kn3ELy~LP&%)*B_)3Z#Y6?T+;_eF*$oT@_a(V6lH1 zt0kX(T|7y%azXpuyZ9C56QYQS1kV=mL&2)22p}PNEO#go-c(LS$VPP)_HbSUnY7dH zn7^NqC`M~B_jYY9%1+g|#-c6SV8#JAsEV!jOpXhK%uDY~5agZZgbzzNvjKw#KqBXag_MI%VMbZ*2h8m<{UCBs8*^>e5c2f&{hBSW%KZyO0WlX z!zys|zBw+=lI{rv`0sRxN0{U{M`sR!qOO|f<{+QW0Qy4|pe_qn9PyuBQp3yLCSl?| z(*utR^%l=ij;^zGdGAPrT4+ER!rJ6H{Vr;@c}bFYb_RP7oMgW3Ae}rp?;@y#amb>& zFs^+v1O){_4W1NQOBcEVq3aIK_)>;*=#ARDJp0B>z=^mzQ~oJQ-{;_`j-EnE^RdV2 zZ|!gGjjnwI(;yY~32!YD^`iFx}{UQ!ARx(Mf&vK4^oTiS!d*i zIWAhJtl%50FS@=IIlO?3Uv4tA4?E+Ytn4H*kT}cqU;PN=>5QsjFyROI|pC*5e5S1)PB1#))Ys31fT^77+CyM)=#W(H-3_tGQ$ONr9O0-w=7_(`+30P z7=+~Fhc=J3$(Y}6FU-pCw3H+@rmyUy>aA$SnE#B=IpsR*Mxv8uNq52Zy_aa(qMZk2 z*djwqc()4LRQ2je*hX*g{$FzLPmKv%P@KIFt`xIV1?TB^^k`19GEhuJj5bI;ezi<0 z521e*$7qlS7?6uVV%nhOWy~m64yg z7dx`Nq>9UIy7%_)28eb@?qgHw#uZ;F1spb(H$O->_*-w5MWPc=ax@KB_RKcO$BKY{ zDd*k8$#8R5L!N85HdMIn!Gd;OSA1f;EYK~~s>o5d^rr^^I}C{1&$qjg^^KjlLnJj& zo)fn0M&-!FuCWr8%*y=!sT#D$;Ce3BzMRO=vS4inZ)I#RK#*Z>&lTC`qNxs-KRFDG zSQt5Fu)JLgMs+TSX9H(9XIy9u+h)#XC_aS=p8=jY!fkCxJ&pw3())Iv&MLN{!%o%wAiYq5XTzm&6lj;s}xd&zKqy?#04M& zY=%1!9;%r!-SBEn9K)F{VK2nVMxmJeUA+4FcimFv z5^_r)TN@J>DB!(wxO<9a)!KaN`hwRg8W9f5#N~Q_*@d@5-tFS@TAnS%nrOvh;+x(O zPl1CX&Tk33?T+q%!B#kCzUQTG;h$=T@!XLGYSein_-B`;%4y^qhw*;2G9SHz{h@7I?ouf@(Dt}(I=^ZmK>V%7#zMz5zDL=X3O6BzfnK;&V=pw zaFxXQv$jWtQ1+NycAp}h3cFTA`S5#qz@Wq5v~y49S6Etma`)CAZ?+avkI1-W})LHdsSv z5h8G7)-x91LmQzRVRCJNVr^A*|EQ1AXECymCi@Fp%&u?bRNC0$Xu1qKLkp^BjOT5% zPSPls|7HZ>4p4PkGkX`;{>Fa0oA?bBCQS!MibKE&_CGvRXWxi$o2Ru`b(Lor6}JA% zH9)BH`103P4s?q9Zt$@GN4TsIpKI4L5NrEG{!isnrXdAVK~%Wk3am8p*m;uhIN#KI z4#pgU{vL_Vt_%sSa2ETY??ik)e^$M7nA*KsXE-i$tv3U#4m$nTYV!I$VV}>b7so8}Jx@VS^ZizZ7{-F|6Du4vYC&C?ib}>eJ{ro}^ebW{!HAW1 znX@-HcIOP;paZHpCuiiFrtcbVGIF)2$)Bfn&1bt%nq=`+2Yq<~SA+||B9xyMjNdz4 z#A7Rsqe<0(!K9GNRXfxR(4`V@2WJxgWIAkjhy>}5GUb4i-a%#1OOS`UQ&wofmWsl- z4U;=72!b!39b|{ax>d#kFLSUHOWQY?8)LQR4)SREt2t#)oJCF`G$9KPj}gs&8g|Nq zqJ5}lsL*X--|0%F4*rQnOB3WdXJ*pB%o)j4tC5nX(fS~;)in`bM>q{aWOqDezACcsPf~^GR<4y?>v@{{QT~Udn)D5Z zv$?jF-p|=yT05(ayI`sl-hvfFTGU0YSy3KZqmbrzgWYr~Y#8#x_jE2Yj_7-)T(+)$ z^k{~u%KF6_@n{}=ZJG3Ca-S$9tLxM4nZFb-s4c#j+BIjY=RaCuB zvB!;qt1`awthpwW%L*jrzRH;gAqBx1cz3}ZYhX>;1wqMniE^O9kgvAjP3A^fHsw++>?f!e(FjAU_+5mj(#wmKQdM-E+^)0 zG!JK^)yiBEHrWZ|9Rvvv4F%YHckjM3O-A3bi0ABM;)Z)yMib8L(k^+%x~0+h74LMLy+Xt3Cmo3A`;j zZimK3i^$~wAFU_yV~+qM=A}B&!G6 z)SO0x#1tn5!j*a?je@H?NJ(=p(xJA6Wg)J-whl%CVd`zkvB>}O|JA&MS4>nW9xsBs;~co)$AaVRZ9L7w99>Y{Ty-z| z!w9+Hl%TEz35w|(&l1gt3Iq7)Tszv|*t87zKUM1VC#1f;8c=oZqx{_&ROSX$IHyl3 z>$S3#t;DV6FI#;X-1^wbW;oMu#1u~Hx4g23w&d}MONR-$5h+U0$nsN#mPSWA-5k#= zB0xm$()w0mXSh>GrdC9cvQhBPtQ;r^Ua0eu^XZ?Y*x*r0F~Ff{f4TlV(hXz|R!mQG z8nA{0y1cA3w`*5z54YI0kGklN3fPRCScT?tEuhwC3=>F*6`S%Zc&!`Oks16xr$ zECH;_Y{+c-fT*-b*TU0JxD9FsK zd-DjQ_D*lcF?Mo6XuNCBs>CidMvfx{+pD31yB3bPUFK$4{#<-muprTjOlx9oLj$*; z&lc5)tlN-Jhh$IpT(edN&q~T=*e4f15Q<~%P)mm9c`Rd@_c+}1k!f>)-?CbSSv z!)dbGpux9FP*K4v!DdzV$Gk?2>B2SGl=(!NY+~}Kt`_L2JCJ-w2|#8CfYSi zuJ8%n^RKDTDo&@Yg$bzS$q(bKj-I}R`4d>kgxK%kQ2anW$Q^C?|KSRIr3H1X2)RlU{j6@gu_g2)&y67lX9X9% zjk2jLdiBaaL<-%0l{up-hSR-4RRO=WXvOF5;CUEkXotgaLfbz^JP4c(6AOF;;^`r+ znu6L|b6?SK`zvS7SKjn;C0-4%NjFTt%# z6_L4>z2a%wP~XzzP-RI7=GA|d1$|eA+*w0%9lkWX{zNQ}Dt$gNzk+*D{zfr9W zx#FNFm^LFggrk85HJz=2Yco>>1wRF^)jKu|0C!bxMSSYGro^M(v%cI-CnCFj$Xb7> zxQBrhQcQf=&ry6etqCMA9cES^Rdtk^$whCJ z8@BYWp~AAtkBFCSo3FMl_tMq`PfqvD7r}d47uTNn5@T2i?3#bPEnrQ35@Pj=bV#m* zwJVhFB$^c*@Sy(1Ic{^1My3!!I31udD-w7I&R=19oJ!UmVxOf_u1US5R5w@SqzC2Fl?|6pLxyB69(Y?6TdwZk`1o*b`g z9_r|ya2$c}{SR>*ZkJV*TWlC|a~c@ei_*?1%$gLXb(nB1iQPT3jZAHQN*WQSzRX%c zAI1$9Jq{^ZU##Gup(0}cBwBbF7fzp1XpTdEqId_q1+G=lao7wL{hW9K!#PBI0(mpm znIc5guAN&9nZ-_G5z<#mA$Qxc?b#WO<6tt-T-(qTf!dpeJb8Ki`aE{Y!*3O?SBDBC z;@rF(y6?4ohUR?YxEc(g$>~l89dL(E7+@muXMO+YrLE>EYkx9=n>d&Grm~W?p>}V= z8kbN1f`qvfJOC<1sc>(!UJjZW)IRLh^uv3LA*J3>X!k%q6!J4McH7!PjU6z$6%xMP zdZ>2~arh%s8sV=l`M|}?bQwa`84zpKd-)WlxZd3F$G}4-<^PW=Cd}nvo-$IsNs>Xm zVt&W*tt2c@#*@YmXW9V^DHD_%J2Uw1Lp|=u*@mn-&BpgPJN=O5Lb`$JAPH&f1Je>< zwj43LF_EGw;@SRd`o^(~z6_V?W6OI=k15O^S#w8fkrpC71h40!eLh-6uv$f;a1#Lf zgS*VpJ-y=H9x6|&+hYDt$At+))Qgls5bwJ2`jtlx@2`dhG8`j?gGFM|^B}0ywB|)X za5LL&3mW~bX9@oY8d~!T*$&luWalTO((y{q3*z<(U`g+(FS`t##9N*Lym2(oZ&N*y zsuX&E9%=3lcr|3dvz}|}CF*A}s6Z5MUUF3C=^>2`S6tYxmP^lA4PF{E$GfRiYtJ!= zYe>b_s4zYj++9fXe0RmRK3xVEbHHigsK!=gP@S0!Pt^p?rI`%`E!;yg=O&C3;!Q$I zOv`umQ_sm96`W|^{cL!C(OWjax|*@?00^j`yoQv zgxf@~O@_Ofof!u=;sa(f^pZytG+8#9tHS7A%10mlafR zrgpg84GS~ zROOdJ$^ZHaYKb4G)`Hk=EJGKU8)F?OUBizk07|n|7Z~;Ve@3hpgX}RpT>v-Icd9eX zh8Vs6K7&r!Ez~Y#7OrP*M5-w4-osbm2p*&E{PaCu79HX;r`~f#a#maX5Nj$Xg)UwAVk_F*MQKgBPHU z|CE4T&xM0%9TH9f0jFcnSmvciZ;g8s6=IC=wx7Au1Y%HV!Njrj{ND@LLu?kIoM6XZWTTlfcN$r*V5 zbM`zy2!? z$~7!|=J$i>qrv$x><`A<=-MpKip}t(yP+J#+eTUJ7(_W==pCBr#RDPo{JQXxjHi>ED|p=1qNqa5#PTIu`ysUiwoZ%c zkk61D6&A8d+Y&I=6MkLFe6aqqHjn|~^{ZZ7fa!8TVQFyLG?+hsf~eCe~eKViWI( zVIN}}w}*gbqBL_})1CWr47LtNEt=Ce5mC!>Lpou&<|*DJ`LUB*K$Jzn<2hnnyypgD zK-ukr*uN%d>8xQUPsE zVxe!-4zyl>YkphTD*+nb(EsJlTUo59X(bDq>f4VI`j(bI5LB1)@p;`%M~m49HQXLb zMZaj(quOa1j~L#luCq6~weWW~Qe6WQrj@};LW32Rj#*WM9WUZQ_9-#l`g<0~}& z_bK#}PoL~7qJf7|wvW0k76!K~RE7bTwL&JqP7d%3ok$@)!Ho+)2$)K$O>LvuP$GM4 zeo|Y#1ck01bh!?a=?-9MVJb*#b2A5!ooV4h0YsVq3@u^|WMT@iY^-mfX53zq*DseH z-lVuInvL2mF?UuSp0i(17ak(N=8EkLC?iMrsrsdRz`AT2_*(YXGo55ps#FZ@bBvA4 znP=vtEZx)!;>wP^SMDzPj9ee?}DrMk6nyfgX(Aml4dE1xC28dmm*O*pF+W8wkNLteulbpy+l zSyX8Y3h{JyaMxx1sYFmJ>no4|^74KbQQdZWWR0u7r@j%%uDC0;#b~s~IMkZSxdJcd zUQh7Pjtg`bMnv`A(-SVy#pESIOZ)9{jILu*ML|>|d{hQ6WxN|;%4@YM@h-a15yh+R zSIP;@E|lJc)2#GZM~S=ErN{kX{$w;Z>B!FzTfG)PK(t5@M3+8vx_ZFvv{FS!P6vu$ z7h@I^>^TO;u7pLQDM&wsYIMz1sV*Zq<*zm7j-~G!36yUvTod{+jmZ%hlRWRQ5J=rv z4rA@*C{m_>ASc)fzhr(!fV#zndpBqDm*%Sqh%T^7Hs@U}gIr%qo~2oK4ywadh$|MQ z`t<{=kIRiXSc7)}BSkrbBs%uLF}Baf3Aa2C^aq*te{Tfsi zsd&XDy;XRN$O!jpWfRjp6Nb*5#J=|XD??lS=odpu0Uh^VKM-+BMiY-$(RHD$5ffC4H!qTemAjxT zJF6JmFI}a_C5wWs1HceIRCG0} z_7NfGitYIh!u&hrxY}vF#wGwacAI5++aZm+Wkp`SFuE7Id2YZ2Wx84!V>9E~nPbsv z`9v52iSg^tXZy!ZdASN7G2Xb-6~Hy0_uX;MD^-VUBGZxAv);+C??~AcY=UY!Hg&^6 zO9?z>0YWN;;_oh(q6gX~xA232@qSJZwsQwugPm@fZ)O?;wP4Vi8?0r(Q!`{Rl6* zT1Q^RgO4hR5h|~K-#3IM&v0qpT=2ZbTSvW{n0k3;<}&NW3{{o?Mhh(y=C={@U7L;I zT#P0ZIA1uCMpwM%e5y@Dl#sBCvj3}Tx5lMmgrey)@h8CW5G!Bmi>gfQ+eT6#aWT|F zFzOnw60x{l0NO~Bhu$!4oIhH2<@A#EZ=wr_gl_~o8RCr|*ZYpGcW`76)V!-^?%ZdP z(zQOvR0$Vi$h>y?HZTXo|vS0|xn22$WGkqu7}83I7F(*kXz{ ztz+6-3%oaM2ThjLJHus-*#NCo#z1roO*xqS2~E#q+fQ!hdJsdND$16Ywb3e(Kcl6q>U| z^*nm96i?#hv)ygOz>S0U92pKWen728CL1are-N9bZ3!De%{@UFf>K!XG76nPVP*=X zeG&Tn<}$2R4oS0|h{ZcZRSD^ksKo}$SEB9^KQ{5cyjPdL^=y>kPIeCH3@#G7@%S`D zBgjR*5JdhnWv-pBl;NfqQX9-eO>;n(Jx1( zD?Hs2_>ND#cIs5Srf=m|S-KRQDn$V+#)5(2Zr&OM*0pDmt3VTcVd{QWt%hj=r7Z=A}bd?D9`C}D)+Vg`6 z`cMWRqtnfvTCT64gudXg%z5ePx-q)*Ufoy?8{S8l0lCUf<>LPC>%jWul#30)o`NN| zqreOz=lKjmT-JiKB1N5U@)A6IOH*V~pH_LZ6Mz*xnB#ivtW^f)cn`brEzNdwWhtf2(RIOmuF%86$0NMTBr3 zoQl|k4Swb5_?*v2_B~LfRG7(JiCgx(J#ACRi@=WlObYhIZr#oP@>1e+%=lA`BGu)` z&Ra3%&HY2P3;yC*C6!&nBmI{-u7zG|iZnHL(AWY&Gt?AUf|GCQk5bPw{sQ6*iguyG zShQRD(F`i!USyj%e-aDfOA*h5HmUSL5PHpY+R&LFJ zLj4ZBKoIPOag+Y%R3TF{It|%ql$5;co-)S?la9`qK8uHeGFmre@X6*F;u*M1s)tZ@ zy^-ym)1GY%v{wTFcop z*InX#sMJ_YDC4WahN${zNSTHHmBrrz|3W~qD^Bo(WYGJdp3Bu8?Fl*Z9(j$zmL{L# zwnBE7(a5NIUzcgt%B#FXU2*;=j;rNi?3Ck2a^94N>%qg^C{WTBngo zXC*;|=>57CKwYqs6B>Fmx_&EFd3ArVO6X8MYkh~U5E>HQ83sZF|D;vp5gJt!XZJay zf4Oh3J(69+PmA=jFwM=)FMAb@u zA1(_PxsNx*QZVnOO*=~W3%?N_@SY{_JoD%ipEp(S>58HUS6LDh`+%|hx!hJ4Tp9R# zx7ggny=yWu6xj~}>h#Wt1+`WaYl#zHkd{M|q^6aWb4#<@>Bs`{lxXv3y|L*xMINGt z1&PhZM+JwQXHs_oH^N0nzex$a;6`CP_egasr1!%N)Y>tGS&dEG&VW1Y=j3oflYx)7 z`DtQ&Suom?Z5Rk9%sAr9CK4I3hs1SYtKLbrKOd9oyZ^eKImoLV`1Mp&Qa~q%RU`*g z+`~r<=#gaB>*nFEt+m}erxa(}?IA9DAX#{C4W!`i#zN?A2lRs#Hwr6vv(G@BoXzO7M0SrVY-h8%IF2_nDP1 zobPfm6-$Vzn&~Rg^+iAkOJH4LY4tcc*O~pmirse?ChMt|DJx3o?YYW zuYRpA#9gM?37N8T^$+D|#9eb$B$s3!vI!yp|33i0e(QrY!@5-(`m$_!*R_(RX?HHZ z9ffUoyNJ^MPM?PZEmy}}iZ7Y!9}>}Mm+z(_url=!l<^(!oIpq}vB9RiLn8pGnkT9NddsgjI3sP1+63~LFb zbjL5KGg7azi=VZElgEKF5h$XUO^*7^J(SkhR{W+ur7_2K0yJ~2hx+z|&D z8$3#_C+x(HxT)UPOc~De_XtKQ9(qq}`ft{Iu55bpoFMG;Ox&D85ozti216ZL2Xqj_lj2@Yg0-J9c zg#Ob84kxKTFBgk&%n~ZH*Wknj!>3u^P&0KPgh;-QF02zGj!8?Yf)}cP8Go|3_4-b? zR%{Q^S^|G@Q|1&>WmzPUKUS!n!w0Rkcvg3Id-~z6grWfmtn^i29o@E(AT^T6b8t6? zVvsaPuMo*s4sbpg2M2wGFPPhPCMkSfeK@Bk7@^yB)Tv|bT-#L&z5hwcUE=Wd;(B7{ z2rwWmP_YnJvF4BMWKK?|_qnioSFMReVT22-G649A8Cz`cb%5Q*(}!GOK_`Fd1i3tM zT-=_CNby@Xqh=m|ec^YE!MSblbu%gZiS|vqn5GefR+`)697oedwvbO52O*;WOU4>} zoHfZmxyjteHZ>s`gFNls&iG^ec%7UVKX_H;OT(jO!JRBw%$?hV+s_vMlEIqOf2f`c|Ch_RA~UBbB>v|;%g?+WP; z1H=%tohWo4=kIgX+eEf~X*|YN!j$;xf`r8pX)-MXB7P}qwsOw*Z3hM_A8f7S+|xpoJM40hgJDU$gE+tC8Scxc0v5jO~U= zT0zsha;`YiJin=h1J;-yv$}R25h#}K4OfV>{#Y2IH|@BGQDC^yM<@BMim%4>EdRwr zmAf6l{qXk(xB?^r8Ur`)olf-*{4CY6h9!%~(Nx>9;51lkpk0mCn0i{Nmh>nQi8}l8 zC|_p1eHFc^=6NoK#DtT5>y3r&FA|b6w0v`XOpb$o;-8+|qg1p_8=?#;AGmyMW5O5- z-Js0CyGGZ%YWIgwJkv1Q!*LD(O~7&x=-uX`q}nda8dPC=T-kO{rlsdprzzo56V;df z(zN!b*n$8-uxb#grT~ysZ7ZZJtAy-OH93fr;3RQX%?r<|!W%Wk`<;ha-IrsqZobam z`5Ag{n}9qm0UQsl%a-s{&dWz3EOyaMnkVux87Be5Y4+;wa4l^j0O{;FETaANDw zm^Y)srO47a)J?nWe9n{x?%kD_C2!ot%cwXU=~A2XgTDK32^nTLcr?}7=&hl8r(AgKlS~N(32TFp|XT&3q-a z6IS`k=JIDK=B!v>@B8I(1bh+UP^{ODvS2S5>My!AhX-^Z&_QNat8V<0%{!@h z_ziAEw~GG&f6d+pg%H}^cKRW#S!5{8&Wi{LVq9{WxxjR%=H+Z8zmL}~?=xIzEGqe- zqP!$2s>nTVlbcCVI-mg<;Cjeu5CmHh>7i79%Yq)#%WAx9oC6}RLFIxNEr&ZpLO~>B+GFm@Y3qvY11=yx)$ganjliY#LGWNh~4Zi)BzvbF3MOUu6OLcz&&H|ZAWiCqzx6>4z#~Dkcv`@5&wQcH4I?~mH*kV9pr@6|H;v9rz zuV!6ozBaZ2LA(A(#9k|i_~+Ft;b8NDZuIV1n;tBOJ-d0SAM|?`5xOcw+sh+2Wcxie zOOq|x$N3T>yGgoopN~|c~G>o!kn4O;DVIF!NZXKBD;BIHlrg^vo z1xmqq_`mua72E1=fEo)!_u;aE9;)mMnLX{TY?13$g^4QoZG>5g zu~~d?(UY1p8gTW-*gbuqS*R1H!;@_e<4r>z24+&L;yw;NSsy1;A@&?H?K8=o3w<~p z5T;$}Zv-{E*a=S(_PP+x{YWq>uPmJAfy}$y5IfJ$M$kw`2c|zU+Wg%qDGcCy+n;>0 zI=`l9(@?w)X~?J#>k3$H_^&Lrh?r4Gwk)!QF8@7>QCr;Dh4m&|LnTC_SWeIlyh z{rU>vBg|f2>NQKX4S*mrZTzlR&*Hp1^ZhhoZ|mSn4)gfR2`U)>OBn)8LYGi*6b+t`?gLj!7pdewhv9REDcI?6xCJK_PWyL4(QAD` zgLLYZOcmLMzdG-2zKtq{RJUAhLxkH~Y^XMtnjRu=2$nh&{MvC%rw|RfM_RxkD|0#R zsT~pO#ow8B9(>%Lq%@0bUz|iNofi%MFUk;ZeoVFX3^^eD4g;4Y^-6L4*rAsssvJ0R z(eU1satDnjWhmKsBazZ;?wQtb7xL~HnUvC%=wlq}n?xKmomkJE(~Hx-A?cn#0apzx z#lSdhMN!MAoa^Sd17aq>2}DozUi%U{N-e3i=Bx}2xD#$d^sL1j|Op4-Y^RSQaDg?FrF;X4p1Uk`J zL0&b)2$+<&<$VCLu0{*dH&lKS1_!MwOEHD5btg&3G7bm;#$~+gJzGw@^;H_DC7*4& zrCy1P=0>&QfwP*Coy&8}lvh_qBQ%4l^CMj8eydQ3?h1#bhOK{CK}x>xNd85B5cwLZ ztC?(u!u<;tV#zo&>tkLa92aj~Nmj}Z6G2Zx%P{V7_mkh=^-U?g!5CeLn@X4Ts(f4s z@sVrBZY~n^%r`ocHDAn?M;S%CT--AIdM`ZDLSlDw7vkL1{bM%;y%Fke`y9}J;!4k9p31tr8*U0@9ogWWESF8}c$T&h0NIF)W|waP8l1T%8mB=|Ykmb1Q{Zs#1Rp zkFZ1?dz%7Ji4pE+sGH%CZJ4_D$ERIdF{{A)_YiIy*6KIl7RcyzA?wjJDo8pv4Yf2X zIX_+kibK338WQ>V1jQrn=!&V0{{btj&ZR2`DT7E^b(;c5OHDdt)fgQB3xiWr_`Os_ zZ3dgsTVPpeN2wFvpVZP%KNgLA7g09f$!H_HudsN0M2(K~OfYi1ksIdvQc%zMaiZV~TTKgmBY zL;k!-p|T}RCn6$cEUps@s#M8v=v}ZLtV~H_jbI;5O|4UoHMqOTjTs_&QD!NNxB>(p5&=fTy(kgWoeWj_rB@v7;3Ev$ePbCh5AlId+T>yL?BK_ z5mxE-ozV_MXEeqkE|)&zW*klITWJDW^68MKWF(V4>3cjKoQ+Ssiq5u!8~l1Aj-S`) z3!X+*TIOyn21p8m8$h>Kz&Ao#pV@hw+r1Vbv7BtS_y0hc-*@vfH>kwhf}K`hi1O?N zHKdDYXtNgNgY!gyiSrI75~kLLpImY@!}*HQADGFFFCBk}l@nr31}w99s8HP$*%MEH z7xkv-{hzoK0X;}Oe@0#6u@3ep+J@Pr{=4VMxdwXuQ+scC6IdlQyANx}+o+2mPMkx0 z6`F4O%7VUOAn_^wWn5VscC&MBK!%`Xkbl=HUZ8cwhj za*uaEu^DSR-wI_pvnTnOfYrVCe~3a|I?g8%=XQQpZA83?!dIR>YLNxvj0`K?U^op3 zo)R<+%nO2|nFG&RHtI3r%M1r=4_Y{jqo8n87gpOAPL#|FRFB;BI-0_nlj+JRzYM4m zb5^3Wf{%tzh+ve%$c4I>MjiNShL4@)MyN7`YbyBxE?ba1@}!KPtIW89aIWc=31F>y zmXZb2e80ZGi@b3TH>q@~M5?)U*0Ibq8e;i>H3|4+6yBvn^4Y_Sti zxbC%hj#xbn3gtW|t1TQh0LJRCX_o+2vjmNEArsr7+3M4HZuA>7mZjtnMi0Yh6nC+&NFs zDvvTyCu`Wlt$Q1#?Q@ikslek}rJRX1oRZBgp-oUN*I2b^?z8Nrry*_-Mj8i>obZYx zWUY1X8uAgU+2x*Fyx8sIVDk=gcrTFSTl{;1^!;s3{?m)!U===cqPF%cxc^`l14)h@ z6ia1QP3$dpeqL^fuh>O1Z;&ZfExK8g`rXOlI}=!Opk913lJrGBRWBryE0#jvhBxKM z^@n=}IuHW^{NJI4s_=V%1yMEpcbEHyq35xG%5rAeokGXm)pp(q_pnX1H5n4+=;`0s z4bVW7BMw*8KM}|eE@YNx*-R<3_f2oI4FZa(OGuvVMn7Bzc^ca*o=?sZv?FXhewLDh zT@oBOxL^Zil_H7l^m8Y`SxqDhZE*U_y^HR^tdLCG(H=6K$WqPgLpGe7^m})BT-^Sb z?~NRCwO9v0fcW~Ue{KY@BzT@Kg0Q4F`UDWOjT+1ar}zMR-7ygVUZ| zO<#%Udh}?3u(8chD5|CGbuOabMH=1W);KF@`j^s#M=}%Mf1Ij5fd5I315wIfCQ66K zjrASLYve&6BlvP;OQ(^Ws88MFUM=#8p^U`9`>I&l&5g35c#-tPhUki>q{9s!+rDa! zbG_J7`Jo?o8(1PDx+LoO>p`-<3@OV0F5)IsaPqBH-u)xdX~W?9(K3QKv@m%$$YA2H zan8%&|83*1UeV+gINhv24$*Js3;p7zEENq#yY{kKh0hp~Md|slt>C&f)p!*{y_1`1 z?m-cZ(`<0fxEIpk!G%Iz@g`u+M{SZNxj|P2X!Jk8zF@I@Zgd1K)f)}CET zqIQ>X$}m&fAE86OwTRfwrF>)q9vI;9ozXC)xiENwjGSxHWFbb3M6P*#Ho*O59IaB= z42;D&@w%rHY_^Jh_eDW{Dc@cs`K<=E$M9^5iEg|h#_(X~taRlaV)47P4s^j??H7Cw z996gsZ`?p~wpfDB*f^z`*WX~;d_+F<!uh`K=uLK2-$Nxhn#s$=&auLP)=gOeYXp1t=6%KKcIcXD zix%&5>o1~;S8Iiy@SqCK@hyVPy9`SHWA+-vOGtz4Zsl}m03_kH*}5|Y=MWpE4z!L` zeC?6&TqfnCq$tybI-=ZS#;MB({i855DKfk z3YqwZ;`Z3G&*-W88J_`+b6AxYPpKU_fJcoceH~{;69)pF?K!?UBbf(?O)tZzz5T!ypRdJd|^lDhm6puv^I(O9kFxxh+#@pRNHtCg>pk)LCJt2_|RAGw@l(^ zFawS9wvq}FKlPD9=JUUR=Tj5>;gqhA)PGX1YRjFeQPdM-e$e|1FjRSS;FJieuP-&p zvweLOm&yvm9$&3%ujQH)pj*;?v^C1!W$h6u8pIUnp7ozYxPnk_sJj2KNmp@?u##02 z3aI=&y(XjSV@5u_=mb#+WpJ#Z3l)FyT+mg~m+~CX%nBAC+IWRx^xFN?^1M7d&K;+! zk;>Xh?)z{Z&QZ$1L}fDN_^O~Yk64Am=F%9)__b6EY*CCcen7>!O-SMc=AyK&?M#RX zCC~ixHdnbMs&0z9;V%S>gsZw`A+uZ)yoi}O(IzYmx@Ugz=?-XHZ7b!$>X7Jcahy)Zyu^(*Ro(9<*Q2F5raP-CEWCG1Ve)KvEt z>~CA(-@o&$54YIbAf9OK?!7s zuljf~nXcinqH2{bjWz7L_TP~7*e66Ix0#8Ap79WqXVWQ3U(Uh=8|RWKzn!MSIZ?7DK`H;TrORUwiJ&POCZC9z8z1z02 zEt7=5^x@QBBcp3dAy7hObb36?SUYn^x!fgK_RGxNYH|w5l(C*hdc``psO^~g_)M(6 zy=TZfbr1t0G+d)Tbpnj;5v;FS?51gJtl}yE5j!tsr@DC9_`Ojy#E<(aZ9=aEJ1ct9 zg`Y*W%9-LVD!?=S=Z8x9Y0V};!G5%Ti^Ku}47Ct_Rx0J_9NNX5^xF+b7HJLAPS58+ zkDIQB$-}Z;V!j)|VQ`~q^c5y2WLI&?)ne0#?IZ-{?1@jBGAUceZ1nqHy?SRL!uq+C z^fy>%^OLMmZOZHOIcZclZBWf4Mrnk3q7PYmf8T+cD5{`acEbifvnGt>;xGML+j+(- z4GdZLwz8b%kFouLS&B2z>fHQjxTPTRVUR+ZQA7?gcY%&^j|+F#Wz7&2?RuCd;r!@( z+w}k46QV|dfeR0-B4c40Kzc)8xdJy+yyNpNU;4F~*y zs|q5BEgjthJ{o{>I?dFET-$%h#UDwnSJ8mBqUc!w`am)k(fCorad~}4z(v}n_)e0~ zPi}h?B*o##hwI3JB~+h1+^~vcyAVN4G=mxiO*yTNEOAGRf>JONWfou>Og_OnK@TCw z%b_N+0D7Xu@Vph>3-Hs!{SqP*4;T4B;)#j+#_IjcqEbc}E6%nH*K+$uMKF>Wqwtj^ z;FzN6=8Nb%G))gD?1&GZIL`e+XF1M!|H?G`n<+o&?1v2RNKLou74e%A9CZJ`KbmL> z>f=0{&HY^3r(i4?kb24jUujBUg5?_H(}w!ED9l3ojdp7+|1RwD!IDO3Kc`e?DJj@( z5>%)b4=%@Jjeo7on9)A2+?YpzFb_HpW}7Rx%L?swT-_1Zv$Jwl8O1zf!LB_`Q{qD9 zS&RXd#sE|>wg&}fzK3AHA0rn4*KSY&=)4h<$wb!X^ImG;+wv{!B6g{#PSRt8NLhI@ ziy;I(1|7vARpmocANWAyCfA21F`Udf9jYn&M!w5TcLkr{FpUHyZ@}K{DfG1hz5oui z4CX&ep4)-a;Vn@%R~Sz$VtUD6@ucSAG>d^8>vyR;?JKXWHq)Dc55tO3Ryh7wPWUfM z!}Sg7dWi-!>fhddkLJGp)&6d4wf$j^DQXG80w4Y$lW9pSAXOZo>PCPSOLXek7PzIv z>@)$}HhY?EZaxhc_8%!wNphh*_j=M1A5$4__tc+Vxkm(hRV-6hg{uQz2YugzMgzu0 ziZi&GjcjNg!l58A<+0(N6)zW-xx>0$Bz%OISo2=z%#yzl&2`A2NWuMzM4b?}t6K>7 z71>~JK6pBnAj@$gxb?4VQN4pk-U+S? z{6S+E31d~kDF{m?FqkQq&2Cn!!(kS<%y+Szb(d0J%XDmo{n;JjI;)TUn|ad)0dP&n zU&lmrr2!`rhE$}S#7J^U_8eydUVE6%kkY;^*ax|%4aAPgqWwdt7V*H<+=ly3t^ppnA`21%7dRAsJB~b?6{7%WUzroG zXV9@Iz*u|G%`!3&w0o|^XJJt!yzSz{n9?&V;K+Y1s<$jzX))Gciwb3jwln9?ZA?@X z$*c!g=bZ*(Ju7w2JC$nwOWV^`b2)aFhnhCZ%|;N48^Lv*6GAv`>6N_lWs7dH%*#2T^gs#t_4&EL9CG`Rp9V{ zd13PX68gUw>W(jhU%si6j|8<_2AKi0b7sK;V)|rrz7hIrS#Vvid_bXSM_}g02Z#Q} zAK5|QUC3lOsOG;5k&eQgE0@P0!oqbrI0LHJD6p=0+RRnypw{K%QxeX##+R3nMy*?F zEpZ=gXaGz?!G&Y8JOtH|c41CkeGqv5@ZWe@Z}xOa#=^?$mX5}lScnM_0|-joCCz~4 zbw1<&rBZxtJYr8gpIl~D%pqWBL#eX%K$K3(>2@>FDB$!SGRgRE<}kO)Q+vKL{?@?_wPlsDT)xJPbLM;gg=YqrI;zgU&|%+mm^3(*aK%j_E)7f2BeJ-#qpyCvDtcV$l7ce0$t z`M0dchZM1a5Bd*7zbw-2^p586k^`r%RpuKY9<&U%eRgWYedSo=t3cKKHzO3xtFH|6 zbz2?0YckFDzUAhs(pd9(B2IYbfBPsS;P1Nii1}=|VLArmIWeJ|jn>TZ8Jkct?%X1J zsc%zm8?0&KInt#Y@^wA>qOF?NlIs1m4xK$?~e zuYU#Jg~f(!4rsD|Y>`fKF{$7$pE_`+)ub4@ikKK2nWV<>du?rV#@oTLb-##=Onn1` z_FbN~Y+tA$CizA<`IYalzK&5@#Jn*$gp*&TdjxJWsKVvi?~F)UB#B|F1XaROsdYxg^Q}n=R?IWhEHRwq#I+GrFh8gAtCq!pC z!V)tj6dzm?U50<}x7Rz(mt^26;=zef)Q~txzbFW9dO7hb$1zbZQ*DvgGw;^gU{vRj zoL{}F*40LEP_7wAPHv%GJ(2!g$$P-TC=^#RDRf2}i0=TTV5E=Q2F_6X7gJvPdC=kL zB?JhuTaJmZ(=&mfy=q-9v)Kd)=nZdXUmotwa|0`gXGj%MeX|F9GBbTDDWfT|(iQT_ zHdM%<5K??_*3=HnLosWgUW}yr9C*`}S7v0-X5?)T4JL0zn$&|_q?C33efvm?4PHXu z<;mc@nj3wd(!#T#U!hz2rUrpEm_pgGYCjDtlpB;T)i>?X#FPk1lXni({o+6wdyr(l zH@b)-v6J#5+0J5{_x3;CUEGXV*)@P{em7n5R`V!uNAqyxy#SyDn0U!+?}LK6!!?6? z6w)t-^E8@s1AaSai(CAOP#@i2gGV24)CHBIzNo)arQXk4lM8=IrLvO(buMB`PbAdG zM(tjlr3iLNMGAHX;xScWZtvAI(Kf?7=bIa|6hL-=DJBVfm=pCi6So6Q=znZhu@^HH zp;d3+t&cB1Lb4Ef5B#=N9&D-^HVWnL&qt&w7_ zA-BKRxjCFb!W)EdmpNeK3j<_`xAYtva?;7wbB$bCS0@)7)pu#pyrqKKf-hx8pZP@? zl~HGt7@@rqL`P?|Uf>Syqf^}EK~REL9)re%jPfN)sW+DuE0};J)R^F_fUXpYwno&4;OER^^0k}eIf;D$ z(QyGfNC7zH@2SW1J-f5`pEYC!yWvcV0};JU?A3irJB!$LPDi2xf4UzT>l3?jX#ANf zJvX7Zu?UedlX8jKKEQ&cls?lbHVkrX$_a=hzU&QnMxg-Rr_Qca^9!`-xB35X50)=k zWuL2_*dz%|C${9jyI&*UEO6)-e3G();}xL6$C_T?hu=34Vfu>x4DmW`Pn;jctkGEG zzS)ehuNXiDsONcTnne@)6LOV7Z z-QqI52%4Xc;a(Xv+p;S3As@we#>dpSO$W{6TY90jtjuRdGv)lon8e;P{lVY3j76bt z!`0$lydY5Z#P=6xR@73;|0)ko-(b7bbA`s%B4Q|p0zRTPy6!2R>e7^HUIVnId1s@uf^=2B6Dj zF24{x8)!BG4bpc~=gHaRS<=%n?(9$+b|<|1rwblB>7);%CM*~~76^(N&1FU~zV%&y z7NX+PP*G21N3kmtkH%RIZ<#xss#+v1Ml?yng!T&JQpKb2%MzB7TL#Wbxuy@voy#d_ zy#it%>dP|>)9q1Yf(z)9w{-De@gvM)nfk?#k~$v6L;##OB52$dqDC9aFpG%Q>YBTV zgw?7EEr8330dS6uae?^6KFuZM!bmZ63JoN`KKZbih&^ zdPv6dTPc9*egf0NR_ABL(OXfzE=5s~O8bxE7R^`G+%Ly;A>&aOR@1qZ6=mq{wa^^D zFg#$*Rf!ysRnt!VKVeTyq;mHJS1Dk1+fSzkK@;6&xsE?!9O!54C4OQgEz&0vsu%i| zLWLv?D$#0Bg>3Jy;K~fB@;Oz*@#jP$Rb+|bQi#C6t&eZQF*zb0(G9-2+^|hSWJg&P z0NJJlgbqIK-X5t$q!Dw9+0RW3^jyF6%G{!7NC?==0Prh3mY{%baGQ90U;WIS$$yL4 z3)wuI=8{+)VBpf{Au*>?e+TSTae|lh>CxqVn+9+t5<3Lib=9oF;47h{F8M?ArzMZ& zl4k2^G*Tu6LlURh@Ibs(rn9|*G)r|nPNTCVxV}G;lovgwgjAI^sqZ)`#;;2VE6)P0 z(;K2W4Cp(~@m)q%LeW$gyiD%>eQqfnl!@Gz5Oly%{$3nN;$NcLu@HI;R9W zJwxF-@jhI|?+qX4lfSrPUZsoNRw4Lc!b%mv7v{e*9*O3bSuD6&m$ymv`A00o_%)(_ z`PD;1v?R4UN9d>e^x_1d>P7^3wtn`3P$_wga(GmFGQ{fF*0j&?keM+lh&4`rNSC z#rVv$qIvv!^Cmy*ii@>Y&y8J|7e_$UguQ|nVsiY8(qWo2QuYC+r{I<0xpKIeR|kz# zXM*oH(|s=jOfU`q8_Ic|^TTWA>M@*hc`a3D>F@==OCDUMWHw#z+X1J?K%Xr%H0vQt z@n5aP+MGSjy5Fp{PO*Kh#1G5=xX4X)62jn+)o&*a$9M%UG#AIXx5}gGq9^jk!dD4h z(wO5kPA^}qFrqpZ0MZb>5~6|e_CP2#z-q~p5;8xKJpPv2#FL9!z49VUqNaYNAbU>R zrA$&b6Z-D>d5f|)gFn`krt^pPUjBcg>H-E^cEB^EjOQ+tem`nVW!f1EyWj_rOnjfD zxM9eI>{BaHh)V_1C#j&-Q~9St#Vv+kdlf3}sl6y;(5+XW$N@^Z-LcIme4+kW9u0tG zQ-=pOuxTGD3m+ZXxm{(f=T z<~MaKv|A{bdcWK|)_Q|l5B*)-8ejh7i z`NZY1Nr%DLi?ooUA%#%&U_t@S+Xj zu*LY$PAxYKu-a?Jz>eH@1&`vONsRT+_NXtAVZGP&O}^y+{~>@~9q`~0sk|4sYC}06Km3aHL zJx-Tpv57V~u^7Z?#HIpPrweSW$(9=XrIXat>-uB3PGTLdj1PZ?N$|8r%6% zd8|qQv|!BjD5H{-3*NT--dAhzg@wDP5=ZygWagZFP^=A7yk>=QuAnKA-~afUwO;Vc zM@n#3AIysDO7qyS;X0vd_8tTrHZ`WlES`*VG~Y~110Y04?E`z~f67juePpemejrrb z-(7D%*-=wCqALmMXLVMud-LgnB0ufh9JeSfpgY=R(A8Sund~*QO9`mF@i7kv!V~@F z_5;DzA%(EZ)T(q8L`H$lX4FlRj=%0K)J7REDs?7k4y`njl`}o7D+|?VH~rov4iUL} zE{QFJZBpBCpUchNX1B%6g#`eNi+A;;`-iM@oDvQ*wj^5V4 z4&BoXdkwt^H$g_Af3NL~=fHK<$dnT62er#!BW5I=$@!f=Tc={c&Djy93l>`_av1u|ruBaj2ZwS0nUTWq*8r<^a`u1qXzd^SU=>XZKn9xZJ?mrM@`9RtM7YfpdDBh(gLpwzf8lfA1%|NnN|w{p7O>m zEimScJ5^#ymMp%1wRogp6FeC`XoKW<(FUUan@~7~pyZN=|BmKcdfvAig2hIQceu=u zi{ynQ7w6LAL{F9z{nDQeFyI| zKP0AnV)_9r?1+^mWeJFV!lSj=ywxMnWO34s(2zeRaP5pM{xApE@iT;Hk|vGcP8=cz zjh(dajeq*7V0H+z^DWUIpE|0rUBv}m$5p&ibIESB|HkkUCL6+DOqfeQqZ=L_2u|pg zj$zlk8M=tw50{e&$A?%e%Xvg zwK1PCR0~#JBtvIEj(Q+WDPKDPimn@c2qgE7 z0-&G7zk?G}jI1^VK@9Mqd^SqSkBqTRymdR`eCAYM?>s2sPRdf1?0dH?C?_Hx+V z(=@J<;zc+P_ZBC#|NPagz2Btu(?qpeFq?=x&!dNsB>l_s9`xcIKESLHZs|;G; zJnnSL`4{Xk&AFo7$vwNp>rineWU=2C`LA^UM8%BtV4%s!6wcd+Bnj>gkJqx9WWkm?x#FRJUR;REkztE)Knpga35_d7P79Irbj!myxD3SRdJXMaC=mVp-)ao z=9?-+j_i8v**bN^Gk6?T0hf{l_Sf5Ry&a9y5+&YQaLg@pPqK{bstGU*&c~!2(>}o%m@5%YWqQAc!L=bJBTJ8Mbq3cubi=ObPLL`a3g}t2p-|%7#@&sj~sumrgz)&6gHnDrdO5(JF}+3Mice zYnLq`#QOOfB%%rRZSR`+sExJ)U4x9)hSL^&oWV8_$Zds#i2$Q_jpl`v3@vYuRU(a7 zAhz@m{YL8gou^L)UsU56H+lCi|B)Gyz{FyT9VrOj%7Ah(H zAzZsxV&8{{k(ZZIHf_8D(&$jSG2G-f|QzD=ihT_3PqZa!O=u73IrD>D3zQV-} z^pZ^danZ~TndN~dMF|$l+&(9L!e+e6h#4w)d|=0%VaJA7y7Uj}+&0Gysb*e+vzFEb zyQk$XdH)<>`hP9ZhV=aRZr?`=XX>1(vePN2u1wN3-?8X_={lccayrq|+aA!M%U)AL zy;FLS=I(LTKW<5UREl6N{6MHG1XKNFiN>7~?>Gmlb)WU?uY~r<2-1A#arU4spoQBh zARj=9VDPCjGq5nQmjJmdGlMC`c44ScNDl8Es*oci#jz9Z@MkJRgGQS6eTYE=_jBd4 z@@N7@tL-Wx?nY*WAfb1NO}VTZ{xQ3?4|IAr40vGD=t}eAZ`2Y#jUH}T#(B$e_CpS8 zoas`(R!w=}ny?G+|YX)xr&5DybR-xzxu_!L1(DpyFr zV?s;C3nw0rSPC}YMh_nf@f5rA=LrkUPZJ9s-mu`-ejWJG45a<_a9tIdAqZ3t(&hj^~%H!v;Ot4_UqO3Br49BbFJ=p@3_ zdmAlUlitV(rEc5yC25}=baOR0t(Ff#B@}e27A)j2WHl;P=fJ?7Fdn|0MDUc9erQWk zO$b5#8}PprEOaDz-_wm`k>`Bvxb3gkVX+ktKv(#vzt?56V>cooFEnP=b0~mA69y4m zmATa!p))PwCpYg*iHcGPqdXA+?5i#mN%O!CQJz1+tsB?ocQwvAr8bf2skU-75{X&SUXArq0{I5BJZPmc3&lPU5o}NG6c1 z6A3_VsLGDu2w0*PucOidCs#I%XtzciOQqelEr>hCwngu(u}x+$*Nb_0y^O-&l+oy8 zD$LpbunwLp+3o6SbTH_oKtaF-mG4 zB|y#Mx}m4;5b;{iM@!P>Bn54QhetZD>HfivT)e28x%`s!x9KR8=kKyl;n-|S(1&o_ zen$_+pEQPSChcZ6up-2I+9;cvMF7b9RACOBYa5%gylS2pc2WzYn~Hz*Y=1+X9jtnA zD|uIGv6H!?DJKLyD@FBNk}sa>6s_qbv0aYcZ&-}NzV;x2=$+N2^w3QbS^P`dX;N|q z^g%l<{f8fL_AL)KtlQ|>VL$kuxEa)&F~J{`5}et6s?wWCE?uLag|KH0sM&LvZNbq1 zemm_A$h0sM!)Ee*ba6M_V?4hNgb4uM5KBx5-cb?5&bZ>=E+f?JT|-CG$rlvICr_*b zWQ=PmK~{g_tv4h?@4XI&%+|R3;?)q<<13^A*OkGBcpNzr!_)Ys_@%%(qaZj($Zvg^ zG*)j_AoJJ6;mdE)*@?=6POW2-p2eO>wFJWAsa%1=l1Xj_f5DG=bJYBZHt!0q>6r(n zhwLA$oWxso+GLGLx2Q@z7Ww9c9D0>S)sq4VcQEASvOD;>S3 z#8r74Et}V2%M7yu9_R2p*ct<6B(|T71^{TRH0qlnD-twVWExtzE;fz3OD`etHue2e#1Kyz}kblz3bBTTe{_I#-P9rHZ|3R!-8d z4><~1uAs#n!yU(-q+fbUfgYf{dfvd05B*^Evy=G%f?vNSkZSJN2_;g*O-FEoIFQLc zySKeZHC_!0hYQkuMaSONV=wDY(M$b3&Cvx|GG7&N9^N{kb+9p1(3%IpcHS4+tMQg?ZMQC zU7j^Wt1|6RHJtYDu{N@OFF;bHG?e*Ah?ssJZZiDjWDl9J)*#wD$$;&^MAx_2b-iWr zH#`-$z<&1D@;38r0#z#CCq;%)#uus9&)rcg>31W8z194+RVMUu#iyd-u&8b6^MR0I{(s1~Qx{9Oo<+ zY|~PL{EiOdP|b{66+o&JXU=HBD0wJ-2K0`Z?04ZfNaM__{i$Z(XTKZ8;y4C zC|f}W>pt4l$^Vr2s<>QjTRdh2E(a*zvHgz{V1m%IhnpU`EU1+{Dj33cE$rQdcAI?j{mK zD@^4#OlPfKMNu;c3o7(Ihr1yOD(`Z>cs-bwpJ3|B9mptOun~|F^pM=6>U0Ff6_5NJ zz+H+^FYd}{#(^c9^le3yhbFv2Q)3=6W*g<0ws1;!%<9kp|33i0>%P|hefe5)o2d}s z&mA&^oLtm@s2>7!7=aN50enOR<~%k{V-`9veo>AEI4DXpf2Z*6`o{PtHX3jJP@h7^ zNt@_{b`ts*P;`W=>91v;`tyO^>Mx3)Q;Ev-rrT$?5F-LBL9vT1g@D@ew8YS(H{TL6 zL=()ox5$Ngkr(8_6`K3N?9Ugk{3Nm1$-o-|pq9k6Sltw;+a%`qvB&3cPxxG!=E-j2 z*9+m+dVCZIuRfra>tE)Ty(S{N%C#GT(%U#>Y3MQ`1+Z$TmT`|HUMz(ab)}OXPzR5V zJY7b|zeoI@q|@z1_O?PhYF#RmL&7WY>HCR@4l%sqvXcz027Qfa;COqXss>U)Yov zwwe&r{>_W?8l)h63)LBs9oLs|@kI4bW;Bn_#JzS}XmZz-i6Ebi=p9yl_4fB$ISe3^ zrJy=^#!G7SU+T_}m!qF4)TUPE4V3&|Ax}k1N7x&&rws%_v|*~td=w}6(9&(4-3K5B zfC|pNu;UG*4xrIB?bKada)00t6yA#i&N=Zo@grl<@YAMdq1O=rU0H8HkNF@1l0N!g zl1{{#Ho39roT|5*WXfYGk z4=?WmuFZir+%371=9&FtHp{G%i)$e=?GgJT;HbE-56aZy;M_VE%kQec5{j96LG-(d zjK%p}`_Rtn0pww}rZCbwXuM*vEAy7bXaA#`t9m1MnHrzKM${%)WRHPqj=U97FdUQe zZ6t*>CGPno{tvlW%w3paSV1cXM61wQ2D8mnNS@Q!lEQ~94&bmIDYJlNvueyJ-c;%0 zO*VjHZ*w4!;(GD%oJxk!=|_306dh?_BRCHtk%FxYz)2v_XWtCckjXc-^k1vvcJ)i%0PrFKS~F8IyJ*>+0;RB`GmiF#a$XZ&WK{(h)>O8VwA zy8uN-{0$me*U85yA;s9F2arN;loU&Hw%S{)BVwA)B=4pp&5xG+Abp2O5QEB8EyDEm z*W#;u@FYX}*GP;i!l^i^hX0*M)~F?~p~XxLG~Avg1Oklq6S2x)8lwyQdppDGmtkeWH$se_e4F0S<`9($)gZgw_TjGtb_iS{cFLTg{p)N`%_U$P`8+Z?RL^HVSv zJjW`fEmiyX_0X#2($YDx)Z?jwqS-xi{WG?2r%$7<9*iJ=OB5Q=sJe^ml`H=~w<)+f zj_ux?&TQCED!qTguo-$}PLdQwE+NQgu9p^U3c9!PS{1?!#7osc^+`L|V6CEsu zXUlw$Gu>oFPy;Pv9E1;7%_P>=fvtj1p#e}&S98*%LfCJ%2`#vP&PGZkMId&`gI6qI zG@fueyfa|_3gj?+nw5D3S4gQJ4nQP*?e^sGXsyq?E;l{N;RXmiub?Sv`3pR6O(|T3 z>|5JXo_exW-j8>^)KDlKE<>FntA1e5sMx+ZsB&(wM&@A5XtQ(EbM~$@G#9%dWX$My ze8ZgQlmbI3L_7!RDe)N=_Tz;9k4H@|9k|^I2h7$}`jiN02L!3WVI`)0#QHpGRXO3i z@Nj(ZF@0Ars0a5UviDqx<8-%!)~srPM)mV|i4yI4Hkvz#0{zcFgtKeINOTTMDTb|c z(@H{l0LpWf@7m?^52+~vw-{)06mk8uI3K1yxY1uDT=dlx(f3AzE7|H9;ZSDWDND%z z1*X*Y%;Kkv{Gg?-dm<7LG^l<|4qEbjx%Wqz#63OjWMRDKgulW+Li{qKw;*`v-k_#z z>$dJ^k%zq@jsn;6_t_>5iY<0tgWh9>>UlQDuhN9|SD;ZHD3eOEt;iCJUYRk+QS8aK zs3i5ZPvW=-HShB}ltc&j-DS;UF~jOs4v&oQ*%L<_$jifYJ@nLErLQW~?h5{or}OnN z#4{<+{%`k7GU6Ed=Nwr}XE933u9Af`g?Rx#yP=ayYy*QY^6MXq%7_FO>F3uh zI5>d9f_;`@AC%3Y^D+wSCV~uDy-KEn!MOjLB#~tNo;uI@P`_*z#8k_30`Z34JK|h0 zFR|-uvuR6+2-(Y6YC0+~63cr(>hk8=+1U^ckhDekHBwA1$CpP!G!Fb%&PGkffPj*I zwQDKT2&uLzo9pMn6uoIZ{Mys9IuN60#IX%6qkL~E)tC(u!j6dpMWNpzDq8tlv!hQ$ zc@g~J)};bD5HG;|+0&=Bet4+lcKG@(!;95!PJXJYu^R$`r!8V_2dHP4O#v4-u|3Q& ze1~Kmjf-~%Kb7!7{^-dapowK%&1RY@%d3_c0ItpYW{-7~>X^Rq`SHLG7ea)t*K+^g zNxJS-lYdh&e#hI_N-qx_Zr~9*L9wxqs6h*nez^geuAJh~rhYkplSGGgJFXLta(<@- z+v)7DZm!`<$YR*(xT^R7WtG27*ac4cvP=-tqE$H*CZJ!f#Nwta)X6@pf6lR61f^UN zlqxC0SND{4gF@oz0LVqP{=w~J-xAr-rBO-dGK>Ft>1aBIhs$Q%+ibkxkB$KJ?k=!; z-GWI=+0>r9)a?j1RR*Y{$jOzu=uuA&8NJJikq(F-gzFAOG1ck$0Ror~n09*Zu91Mj z5XnQCN(LGgIL1vCsmD$Q;NY&Lj6nLrscu8|AXbAeH?qs^KSOmNZfrw7p#)fMx#)JV z8+IB}gBF7nqU(wM&a4(?>_;=w95_)6E~zYMzEL#@$8tjjs@P3DR3Y-d zaC+si8OdljhQJEV95UW^Z|S|$qwI@BZuH0xcl{}aLJZb6g>|eCOAFPfdQRSqEk+F0BvLrpiE2gHJ!lpm~~u&97qlw(Vj^0Srq2M zpvH`3xvBcE-I%B)?T}rBi;N&E+b1cEe3l1|s{BG+uw*!?Slk@arI#oZfbN9eej7|_ zp|n`>`r?+(eQJxI%uSS|B~Lidn3s?8ue%=xav0e-l%UiA*&Z3$fg5=OFhA^W8bN(( zVzStJ)B?e$@uiy-d86u&$;ER&j-@kXpDUeOM0A&}e^t1fYj4%ETS{63F2RX-t+h2K zaN}k<*>`l33NOS*GRtZ)8GqGk^OJt2LSY|Pxs*>@-2xGKH>d`G%9jQf{a3jDHXsgC)?^NWphBZk` z;xkMq-d{@3>=OP#mwNA4(Rqqq$@Xfp?(Oj;1Bn8MWa?ux0J{Fv_W?!E7!u-YFA9ah zMd`lt8pi!cz*vHpuLwv&YKa*pQ@p6O>uoF1<+{oRkuxP4?<3fIw3G}D;UJsEO;;w? z9)@R!>Q+1+(lqK-vdzHDYAZyDe@gqh7L_I+Eq$yfsed609Oy|YGr8CPRXCdnDdA2_ zpn&yCyIoXe3L#TEX1{fp8bW=xDPqQwAnxM_d|F218MEw>bIG(joaidNd9JqyFTQiD zE2AfySMyu#jlW9rB8U^wBPI@X(IO?o>@jY9x8F+Ss$fscuvW zmZ%55LIe-`J@3W@TEKVw6`_r7#AXYMFr36%4^)x<_aheb*Coa3j(Gfx2|2}DlV+k3 z5%QliMZn=oj?s_(5~`mE9M$8y64p#x#N`yuk*o`SEDnLhSM5TpQkRf$Rk!bCMydL z6ur(!iPrqmVZi=FYuf~a@Rf(wj(D{|s2q7{;*6kd0CQ94y$gSgpfbLJeYOr7cFcm6 zTQWTm550S8TMFRb^jZYqlqK1c!I9X1ja5e>+fo_gI3>)SX6r^^6OXKB{rDIyikD{hBd@HJq;d;8c=@|?6Y+S_}9Z}8r-SF=KOf;y|{ z?YwRsO$<#Zddn{r#F;VkxWBXG5evf#_8_VCRs1Z-^-e2}=#gmQb+sJz>M7gV!r;eB zkT0jbgZQcEPh!W=4%F%{Iu)La7QnVnb_dGB&pJz@2_g=9(Uu4jzwD+5Mi;{rjqO88ro9xiL_b33o-<`s+2A6 z?jH}E>aAVGV_MV)PiJ@F`a z6nCy@*^WR()?5RYlouCJtam3A#qTX;rswHe#1{b&F8J#FBjpitH?Q(KLkQpyzc6%i zbwX++aDUVAutE>B|1W|_0TY@G8m~z%PDwGkM7>k1R6U?Mx1s@rJErvkP)rTdt+R$4 zD#>)b-NNh869JVyROwDu@c>J4qAi8`6i=X6qMa|p)n&7b=!`P#{qf7h{u`RG%zoV! z{(U3FCwjd8QQ_nKIG_%8s+boy+5KfMk$11}$0XDwNCn&!i$c!Vo>UI^l4cBtqA%Qg z+D1779xN;UuH~3~LJg*ZU|JjGb?5EC@v9Zaj(SqngZN&Ixwq3@TmqFz+I2=8N@kzC zOlV5gaM9bDNr|eht$1D_Pk8#;u7-~CrWp|=_xkJZ;sdXDQn>HxQ935~LFNyuSE^dHRIoAXgZE63k5yN!zLYv}k7M=0|*DsQfw{#K#_S{qvvIk;# zwYRy=J~I`DsPa!8*R;0*7pFPH8<@`08lZ zFw2!!nMKEa!XbYL4{*qbF2srjl+=Ely~%i5!bTy=)K45X(9IdbR9Us5HHlWi#nwW4 z;k2MKu{HHStOJSj$B8T_D~L$YkSPJIeC;fadS<))RS%Nyd{1OcFZFVv&@jWXb>h0v zmM~M(j&?Y$N%GFZmstO2(I_ULdNF9sb`Hy^C?ns{R+o!5YWx?v&ggjUDDBZ3i9HWE zizx?1N#iTXI+YY{ksM-Fz|498PVt>s_72&`=% z$?E44`xBAuinepmZfH^W=cR&;!854QFQ~+PGX`ZA5miREQmMc+n}AglfBB#cikt>t z-T<3T^?T86Y(LR%zMam*}0Vuk>b(u ztJ|oLq>BHd2*YS(u*Evlki+qi(S#KB) z=(6H4lp#N!3=}}-dRiBBBjxC_cs5pKavfXItH_@O__+%^8upZ2ro2Bph$v z8NIqr({NT8LcSPa{+LS0XYiE%2$SfVZSe{=1c;`QuwrrS0$&nS^FGdDxwzPVt~|QB z>U!uoDFR4J8?%vYhBOJu$X1~nFUj8$pbLOCP%b|-KvhUYifL~SLf43*?>UkxDJCg+ z{9U{phOF>Ffy1v(Tke)D5zdM_gC%2uMx zX-z@w6)=Sk&!`pyF^uH_>PG-lTNc5Jhs*m=k>#))Cl%>LYx?YuqYPu4gP@NJm&B>$ z#o7*g?{B@-TDKHW(9%?1@z^z5bk&IO>&DC1FlA#{l9|n**bsqA{YfrfT7epp?lKlx zDM1Rk7XSfSZ*cI^9kz9?*Cx)iI(l3&?HmK>;bG*0r7vE+TFfzSG|{}p*kjv^wEf43 z5rU29e`3EC^mq0<-68_BBJlsGDKKdoqb~Di3`_+hR1;7`B(w*4!ZNvgaYvlLaSxC6 zBGhzZY8(J+iqlm+8ttg492bOQYIozz>qzDs-kGOqbXVr5+>9C*bg1K6_;}#JIUTl* z@@y2F#M0If8SMP|EX!NRu`qL5MRwn0z@oQKM31Mo%*+KLWWywAL^HPj@aAFzE?%p9`oxQGjWPL^Cy&ZpOvi2wrwS)UqJT;yzR8{~5q~fCqF)_{ynZ z=VxNJ0T1TP>xYQ}mr3OelD=vdpMKSP{w>)}d(hok?a#Pq;9ct%EA1;tFI`qlx@8D{ z4hHa!w!Hm4J8|jogJLcV-}H|?$f<~AYGlPm)#%5`|(8UXL`)oJ^ildgCEG_K}+r0Fz( zD1JJt6y|uCFS7#?1O3maSHpq9JxjoD^RM7=wip_k29_zwN7ICga_FG?-BmJGhsqFfSe@_K~R^`6iSt#342uKXo97icoFa*H*} zk;ip>o7{w1cnExUQI^;DY{|kY-XpZE$v$Fq4|wAfmAcuJAz8prMhseyEb2~sNaX4_ zQR)?^;gR>Lo*SD|o4QW;E(Toxs{B(nIyqgX{4a@Iv4RvrW6Y>k?T^E2UUuvot((~+ ztGZ>hUmDQt_5UL1$+&MEk&$yh@f%a8%KA1p?c9=BJl$q#$8ACmoY zk%x|7#axH8Vqu)}oA(C!GnLsEbBpbP(Iz2DjSoKbs)p@dw5-=yn=Q%ce#Q0^O z7(n6MnXz^25i3HwkZ?(l2|U4)m6fi=3EhQNrrY4nPCFcMLkvXvI2-rTG<$>%ED%qb z(s=DTK2VBO$hoA@9;`y$orAPT!C3cjD(MF@D~=pQijxIqs`F;9*y>{3X`*NOb-5^- z8ZMGQBXbz9_unPkL#mbBvqIqy)HjjDp3(5U^C7w1D>kqlHl9=qFU%x-9amK~_er{{ zcBJwsvI0R8A0tg867^sYy8@CTbN{Izn`FtmkbA(yl_|ZfTT|FY1xx?%qxjUm$Y33a z^&-kFd5PFN`U@_0Da{29SH8FoN#v%e&OeDkd9hSx1# zsS~K*DN(+odnc&x^gxqDlFWa&jk*E|GW~LfP!^P><@g2qXN~pH(nO8iga#Qlf1!I_Kq?&H4=Y)=o1CoK<~-Ef z|BImEyhU(XS|9wW8kQvp>0mx+#;90Iozle}ZD(@o+nDV_J}9vd-Jv_rxpWTb4QGW< zzM4j99>m;}NW@b%4fIV|ReDc%!E|cy*tjcUMbxqxqp%4}SJ5p8H$<#x&&h@yFbNVC zqsLmMcxFalM8z$p7)&=TrsR_6laOvBC*;W5`mbE1PYOo}NX7ZLbmSrKpsn?`){cv3{k2`hRhG^3zfSJlt^kZCFE8f~S zx_CLMGPgcsKOT5jhcA05(iiSvM9|qo<;{K6VzfrhLl4;a4GqFSxBOhH_u!;LLGt1F zCAK2`(Kq-(=^Y@OuqC}1kpE~YR&kfCaK#**AIj2BolQ;U5U++RmNyy4LU`E!pS@l@fu#OkBI zUFjR?<7%?ZUZz3_A2~jF)lYWS{QXRO?1ht45!$?jd?vbIco31+rdGW6+HZ;r{yIA! z@r~6*M>bPkkdwB$acp_Q*P%`sdWUnt{jBIVs+x9Zer9Rlo$_nlP@B2xrJL8=PvOf$JuU>x#`9cvOmjY zg$3sPS!$fd(JPNeO6_;tC>*Q6(6Y}VZOow>@d6MFTuZ1aU6^2eAZ_dJ`(1tual5Ej0>|i#}((e{PJ2gEQt-H@?iH@^;tYITd$T+sP%qM!hgZyiLY`mS3~ ze$@O9SsHI{xL}hoh4D?MoF{2cevY_wetmg5B1k>pTG-m1l1+7%xhBCD^pf_tUc>L! zMJw=$GmYPT{#VqJ;FACVmbs}$sikleJG5S>ZM~JT6nu!pqo4GJ5ohap)7oClnxZ4~ z9qUKc%LE*^|1V)JZ-|VJD{d=A(Na)saig`IxUAT|+upu?4i{eOL0h(;7MOF%ZPMPY z{{#P{5~`K@>Br?q6>7bc5N4y+KP+x$C`pL4^7fGJc{?L}ygUD*Sr3FE3FJTH(gUdg zunHzm=mEb*#fT3AE!hfGb!cNhw(NB?)Zqfm#-!x=~NV3wlvalEy*PD`JX@8{o#Wb@sBmRtWHicff7&A zJ}%T9o?~5->b?hJDyyAQXE+$8vu8r--e38Tez7$1(Q{Ergpp&n=RVVB?UsYN$t4AL zWjSbL0Do4MPPN_c3dK5#6+%KQg57K*kSxbi%_<{kL7*&TJfY~gn1%|vo5+@GQ{+qd z1JV5T;@Un0hrZzC53C|ludh3p0-oXl3E|OFXXKw#J;JrwJ`Q)n0b49KGgWCs9eo-n zFyN9n<^~Bj3mU9Pr#=W;z3|{qlALc_7rRWLZzJEsI(Ty*XkVb^vx8nC=b?_$%=KlK zl}{NeUlfq6t%^(Y1v3bYE{Xy01s2Lrp7K+SPl(N)Q8p*WGr@D1Uq+F~)M30^-YOT! z9vZC|--(uuLOSLOLnhcu^f+s;NVHn$;{Pfg-P74NJ^bw>`Q03y5eW#LtI!wlfMF-V zQ!?h1Z&wv|)fuE#isz3clvl4`GV_W;1X(zhn@wx{xMygaAoLKWM`n@#kxGD=bYoY| z!xFw+uWX%&xK=qMZduu+x;$4lVuJinGP7WHHG@oCvG_=1I;_^B$u~e|NkT;-yOu|VUKPaGL5(%M?S6_%!rs(fM%@Vq{ ze9|WCur4mbqnUoqEXwBGj;7ohlK07Jxbx+TY#W4Z7`;|I6#>y10y;G)NINkoRbXiE zazyoI650PDaj`MNYs|!SiFp$H_e#da2pTf63m)d@8xfXiM^6|Q@t21r;D5k|nPp0D zsFDYe;i)utaG6fh@mzS^(9YEj~JPScO+;8qA;PFUZ?!1Ps%bC2J&#K?6spQPk!V*^D zs>l|C*ouR!cT3SVTM0(u%Ws7%G02K#ZSZQt2l;&10a z*f*}i`qW@sHGoErE11T1f>}f3S$+Hhpk<8+2OyMHMk&kVECv-tyG~>)d|{<;M@dru z5A_)*^(c5gnj27ES%B1m50#Sh9A9al))DfxguyIu=cM*W2tB&VwBO@lsUcR@C>yf& ziWkPXM_Hu>ZCVZ|i50|823cBUN=12KO#)JSM$^KnLF_$;_G)NxU>2dwvi(s0AY9>V zPl7Q=ZME07lQ3|K+P9EFLWO{0`E($b`x_{F0<_wz?XLY=Z5wB55?;U34TR;D^+(0v z+RQ?%gtLWyu+c7mk4ECPos3MNb~4}NcyDHi0Wpz<)E?~e7-18PXL0JVd6H|5p%uKrDZNO>6f3!NkL$n#5H255HWPaDC zu4MS?4LQE_xgi6182=vZob3$!5w{<}XPb{D{Hn2IY31iQmHq7UcjR|8;&g{O-x&$o zRHk_+#eZFD*x)2j5Hc|W3M@m-f5Zdgj?GQ{l+dFlMfIhAb{hx%3^$O;>rwy^du)8b z<3l2WUya0*w!hUcuJ#OZH!iNMWa28!4ATDTor{pDysG$o_O~7gx^Nm%MCQDuO<@Gx zO6XzhB|loNCcK1=PScE!IRASydK#;^*Z(r(2OhoWZ1hH|Tz-KJ7rUeJ@DQwhiqKj+ zn|8#7cdiJ^-%M@S$FSNxJCZ6SVyUEEnZ^6|Ff`&}bLq0vqExt%gKY*ZVD$Ve=m+I5 zv?2jf1U~zA+V1k}8+u8X^cgJ$3e3%O8NQQVHxJEto{DJ>7=N;X5rCq*mKV?{CnL1N zK%=qEc8X;#CJAJ}*mS#{OfE~2{T!-+Zlj{X1OCtg{R@jiM#jl!+I6^<)w^^&qs@H* z9*Ay)2<0h;iZ~E?sslnW;>0^^GRF>Nn&Jy&-nR5?Y!o%VUCL{ICHU9`O>=(Q=-uA3 zTo^5c$tt+dW_xwe_iPSwp~lAB=;1BvPpd@%kqPWz2rQN8$cbpXS#N}CDXh(>-p#Z7m>ngu9Y`^0 zj9f8##Vr+T$birV+~YH)%g~RxK)PH;+_Z?}Yls{y+}n`Q#}$IDE<++bf^%@}`2=EN zLHE*VsFENYr0W|G{2jP7{TZ_#qGPj4D@5wk%azlJt75JOd+`MIwh&Ov(@l z!f_ZA{!ZKqG4tB>@+XHi1LffEo6`7?>V)eM9^Wj14CXV$WNO)tH3%+LXRJq?o~pp} zwqsBt?P7c&01q6kX`~pwLCeI|$)!3))Gt0gO1taV`0E2Rg3+tn4lGOd0xr4(S#$NA zF9j+(AQe0A8XIO?;K@JWc0|8x$g9Ikh&D^a9kXDsJp{_*UxU6V|2Z954#oGzeLE0f-)~p?~r-Sb#79Q1GPNu z3MbDh(@F{8vOrUlNs+G1s+}4J?NV^@G!@_W@K=)sgVG7q5qU}}mYddZk^R#1&u(W2 zGC*^u^=EVrM{m^Jh4M&~Ldxyq190d5faded$dsO1GT3IkH46kF$Cme!-(lRUC(;(? z7-qL%E!D9UHl8$<4L-B#udcb_}HXY0aQKerTpW%-9*7CoroMP?|2tZe1aa^pgFJueFdY z0ob{UCr#JW62JJy67}Xt8Nhyt& z#VFRP6INZ!L(TN#7|7o#DgB~6U1UBf|q%PAjM32za(teSo37al!-SqP{ zrw49bX>uAS6G?65;%9AyXss5^@sMeoH)( z1JRGgr!>-JfPqEGAqUOVzI;IyNbbKaYCttOdB^iJp;#2%kOui+q&W9Jh;OIk*Zam< zrHdEY__JDTygtXRN2w@u&x%xH(-8xpeSfkC51tm3)zA!Druj{K!iEi(M@pd1qfeT` z>c^O<$E6?_basCf6Yt^L6icN>=y+e)VJ6%bTMwOl+%G3aqsx0Fr&6fj=EBP+Nz!QX zEg9L(YVSM72QZ{OA3t<^H2M&NWftAg0MFgyGPwjRhtZl&A6SU6oPlKC+!BQj~-CQlMr5J&b zEt|G+!LISJ`=D=aL~n_H+25j%cy1Ev!{Qlj(yE;&;1}KkNB+06sZ9m(Ye17}tAsx^ zhGj(_L2NJlHoX28Z$fT#F{SXDnc(Fcsrcy*BU8F%138%T6J@sz+T2;31RlC}KF6nn z{S|5!zYj)?>kdt)G7cW7Hg1seKY5Z@=?V+s?#h!03`ukRso`n{;;EFrZ0}n7We|Wl zyG)}(k(|?*TI)Y9;Fk*{n2)sZD?6S#+G<+|eE@SE!9c1-YSm)5MqnVy-^+3u0|**r z;g{9P1SP9FKCk#&^^bC6MoM?vAo=9)}gxG4Z6zB?nozj+KfHqs(hQ>Ojl+WLNcE-`xPS&D=yfeaY%0YtaF~F8HE@10AiErJ z2k}b~JSwpoEEm`av{;YZ0U)FSb2gqh-^!cott=L&wK%eBfE^Qf92>ChOLIAA>@Bo9 zylr^YL~Gc7T>x0N+j_&T?f-vqEY_bnnNWjKHoU4%!XYqFGjoHj0d|_2ou(8U8#dUgp|Q_(j?WY@o2LK(TIbYfs1*!mD%a zpX7S<$Asp=ddZ%LRmm_Z_@0gp4Nj#I)#w<3w3V|vQ$T(%*ERZ4^g!O;YPIp+BWZv< z{peTrxj+!mhog2UevbvL{LyK6tN0*y>15uOE2@Y;2lJe0Vh2BOWg5fwR?j4+({DJgM<8+XJ~sC%+zg6} zrB-gu#NTW(!6<@_`$LL_6v8{|3yM*CU)tx|BaOKF0&S!b@StxL5CNKq2C`^9km+`# z;0gR+E3y71nz0T`1}KEiPP`hCQ7N#A3eRoUn`wVlu2JAFywF!5v0BkhFN*-0U~s|+ zOnM$Yx!q{S|EHE_Zy3M%z^i=iG9(ey+)UGCHKbIuMbvcjfRK*}C(Lu5(=NBw-q&tx z>Szpb%XKELfGbPvuJou$l{t@t<-7Z$a9rkwmq5)almd8>%|jm)i$|y&pq#GR=DKHX z_g!~DMpxdw&|x$2au2k+)``LZE>VyYy=8=zA7T5*otRlv8{zF-f`j$l-bhgjmpK396qh28UdBUT9F;=8o=xq_NtH^CRsVEBEeS#A#Pk1 zYM`A#dsJ1o(2+v>l%wc8)?lvtP8 zv!NcQ>kQM$21k5#bycnep-%k)U0Of_Testud7>QrJ<9|Q71pE{4U`lG;(J11Z2hv^ zGG5(=V4g#uHaF+XoRPz1ij2VlcA++vp%=L1f;w0{c-FAkzIlyO>0_Si*pxq3|f z3A|I~ng74Ba>Mi5_)clLBoEOX5Uq*KiwFs>>=?dcdk8R8a#j0&sL-`0LHR}VeQLB)BhOf5%&q<5r~$kqAa^4?%HMD?%MDcCo2YUEYSZ z$_Rrf=q`aP-NMhfjQKyM`q5MojB&U;R@^R~-}5F>1_p10%PLmgO|h6uaMNL0u1gHn zAf1+LH48I1F`enp8$hBVeOBpaYyX{}IR^U z9d?NeMN4GE9NIj_mPuKYO_mA3vLBl%8vg->?hA{Q_RB4@bb5eL&qw%!#Qe8|Gn<%ic3UR>i}kX{adt-fK1o&Pq4u@IcjO^ zrnd792EvQ9FK8tWCd1lGTs=mj4`RicItVTD+2lZa6{}w<&9IXP~KlT%(W+ zPT7PMM*k57>*j@%U}O7|sc`F=uajlV7xsQ^m};Tr#4XYnnv=URivXux0La_@_M74E zo^hvW$+v%I751tH6Z;+HZO?tN=U-(2H;v3*?hTp0Wakb^D}wtig$@4$0MlsQmWyR1vciy1{9O$J2M@edH4|M0Y*>Kvapp7D~N z$oeQEg16De0Ubx$z2*l$DlP8tA>)dXfxozD?=4n9)gyHIY&W{)?LM{H=<{|1HxGH5 z<+i<+hd2%u>ZC3-tL_|0dNO~mR$02d&;vVnOhP*Cl0BgQIxr*IWqgWbqP(bpl<~)p zgwJ-kpM1?I+6HyJWxAK$#zM8^BWh_C2L?d0Off~TNoE71N3EASeDb09^hCDvS}YnDdEJHJjDR))@XjB}k+%AFS*M)i|WM3_{IYgb>>fYx~;2MMt&kbB^Rkmi1^D!}; z_mULO0~@_#_>dS2EVxi?7ne{yC>cfjo(zGg(*ZokdfA0lq@w^N z-Kjjn^qUSu1?bhPap^6WQ^Xtt?|R_h~YTDo-=ANbo2Z&%2&DbEyw_xqN1&LRd2hO<9-3ryOkwd&BWAq>61 zg`2D~_3p)gMhE|y$ZTZ}0%~S!2!BBcv*_-JU2)jf35Ih{Kph72+JA+G!)~!Tx*V7& zoqe)!(sg&uVd&(7wH9wH_gx=uCc=S#65MH9-6ySKU45{Y@-uQdA*0v0TI_#H4fJCv zbx+)z<!i_@9^PhdXg0ypyDC^yEJg>5!`p44B-7O``~oz=iqFT%~AuW7`HQwI(?3 zc4DtHU6JK~$UpI56owkK#uu+>Mb1z*SQTI;5``ddOqcE*MdooD5gtN+rMmJBxEy-9 zWZeyo;SZ3lALs9BArIsru^l|_b!wOq{o9#Tvi^i+i@wjwxzj%Od`IJdb|*&+=nc)O zjNimr8nSE(zQ@_uazF4gIZ)Bp{j&S0dU?y#=SVGJs|(q3siV9T3X0_Yu)+DvLM{=X zZ_oCyjv6BgB%P^(Cr4W_akexSN$>^hglIfBP(>YO=ryyTa$Bhw3Xkzx0S6}8U=fK2 zpSkE&mvo9jT?$K-SNFWeyg0|F(;=9|y|21t)sY{e+xHpon%P3to`}F)OaUy4QHnGz z86Z^^e^^_&l8x4l70I*_%4tZe^yWOZzxO-A~*bA@HLV{)bYR*CED1cdH&t z>E{lf@6Dd64MLgu7f?^_AEsFCmxppHW&Pg|=eN{w#yfHn@nO=QIViZtBGxG_J*&;q;{6V^dA2ZS_~NvR1khiH9Gy0bQeuU2&~O`_c(&c%M(d0FTS;< zQnvkd$y*vp`#P;TbA1^dQ=O#=g7sc9{cGOiyRD zym9Y3l2uJ6enIsQrTVOxI#&vxNt|xrX6SJp&Zh1w=-|+W9oh}`2PuGQzKejHm&0HA zA%lNeSZ}N=^Glmi0W?%2YHOjX9~;98Tx+k9|TzzU>8W{pH#bRr>tWlb#-@y{krGOdJT!K3)9q*WhgYV;Q6ecYQ>o zFoHDdL0gJI19@E6PwbCE7A62)h;{8(yhtyj=!s-1!T}_v;^v>#v-LuHZMeVmWwQ=( z1P;@S{@Lcz%HqQlQTM`0psFPY)Ku2g5{{5P{Il2-Bg zPh)$dG{o@YGGw2iXj)_;^5C{DCV8J$-qt&;R9*GbB$P3TU|%>rejm`hFIs12Ql6iO z7b}w^ZA78YluSAF34TvtnCAKwcit;hQ<4WnvY2}vDdN0iyoEqCoIo? z7O@6o{|*|=^1L}CbJphALHEb4L6Ro5Mi0u~d;(cp5TFPQ>un^$38g{p{g)1)1S?VT z@9_d|IKKfo*GB|Ai)0HfW11_)6W+7enAR;7PtVOOklI?55Rmw3zJ`~FIgyS+%sXh# ze!zHt&V{;zB&|_sr>mM)U6jCF&tHll-wo%ErxfP4k^Aeh?i^e(SJr4?2~*dr-%tJl z0NDuAE%Zb_JeQZ`!edU<8j_ay8LokaYgNG1uAOuMiRIoNhWJon;RJLzVyaFf*W6?0 zJ2aC98UcYX8H|MQqDHGTe?y*uqNev1oj=Tm&R?yJi@y(=>1NVXKQ@#L^41e)Sxu01;l7_O z^jPLBgi`+C^UdeV<5o>%m*31E?U`_vcd>{6TPUvZF6A7z#wM*!)$PIWL_ODiD*r`p zKaJY|(WiMb9H#-@984R4psH&o6U@Y6F~N|{ctU(#7%RQQgX zN(3oXQV8l;Q4%M*8i^w%Ks0fN$DSMn>C3N^UtXSobj&qmhM;TXoF~r{ zXOGI5r+B$6(NHP@V)v@014(+ply(wNYa=1C-y%NAF9lx|qEewbJ7Qi|#~r-el@`mA zV(9}*atgng3CGahEatel>~Yc^>h90s&#RcDBlAS>c3#Q`msce91S**Cu&noR#K>#6 zV@vBRJVyg?*WrI?k==9gux8%3R z!lo0AX8ReVvTF#y_gZ()$+!zHc=JP^&Qm4af6(#*vAeV#9WpsjSj&mjr{wm-3)2w1 z5)LX_PI>0S{^*K_7Ob;B6+iAPzOr2P%k$AY|FAn!JbL5Dq)$?SyP#nED%t`H8N%rf z%ngpd(RsWy*Ati(G4%8M@ifgqud)V+sB(#`+z`+qalU}p^CJm^*GSJ^4yeL0>C6&q zGH);Agti1m6mO8|!{2+uWuYI!Y8Aa`Pm*jd6+|aLo-Q(3m`;OqN`0f_;K@%z)Hj$_ zYnpEC_N)QQeH85+ftsG0rJ##M8&qdGREziuBnd=wg|IA$h6mEYvEJ!oKrugzFc{ee zTyQv2n2j*CKhAj79M&0nz8=o<;O#NppaRIO%ijOZD&^-$e=y+M(kOuJf;;~Vv6_4` zm=>>yG-(xAq3N(&?d8tSdJF(Him&QtDWBnU%hK#gjHGbHQ41OdudI#MMlrDIe_y6l z{~+=cSoYH=w@@TF*Gk-UvKhh$RF}qX+8bvZeH7VOZaYSJj^gWctGBQ%5ArxK#S=Qq zvYtMRqedc5q+t!s1e&SUbULxtjj-y5;SWa*>ttG;RNP?5&vDgp9T>`m$5QHm#6^FJ zzNU_ch-Uq5u7aq`=kH9Muds2kJwJiqj+0XEbEP4<#w0QB*V zDZyK9!TT3~m9TSuT|#TlZ$W|6#?cbFT76-I!UX`hwZ&UBw`tsJ2+x7uOst2x-_TL6 zHXvmsxAbrQ^nSPol}>0fx_v!BqK~Z#>lq6Xdc~r64|a|n?sEbvZV>gsdura}tWYz~ zk&&A?5blD@0Z_pr#Dh_3ka>58smXVfDe73UwQsHy3}c8E$y@EG_tG40Mm_FqJG02M z#uUF$Orc6oMIFaE#-#aaI7yBgtvD!m9|y>+pnX>T%bDOp6$uFy<#EF0Stv@3yk!#1 zzY(#YqZl^88_CJg%50`M-bHM=9w-&co^a#;^5}>A#+#-9rW3sKzU(YwO( zu1y^0|6oK`KQxR_JswWSeV7>}H_*ecl!XR~;_lm+wxkLVdePDF(Q_$aoR9s(HkPhj zsuE$;!j$~t4(og{Y5g|GwoE8&XJGS+g%5?q;cFu0EObQ$4?o1NW6 zFw9Oypo1zb)Uv=8<$#aZ@k%ITz)2H!m88PMg+15Att)!SP^OCJZ@UT92CxJR$5%Hh zAdp&QtP>yA3#>1!??~kVaaZoDH_11duORYf{4jiAqwc$JIh^IBGno#Kt=0F0%9;UR zhc+k|SrDAvo<&f$;4ebF3uO(R=sQgATq}zV_Bq|T9}({(8Y*=aMohTr9JdUXDTXwvB5>nsPqyLiw;d99zBc4MiC{qB=cSC*&@N7 zy;Ax7&wb!945g`&12+3ALVlG>Vg^n8YlyvHV}!x~1v04q_?S~}o*du21?w47xHQy< zRo=Y^n&qRP2S&Gvccv9IR{t>OG+|Jnnz5lJ4V`(Ck>74ig9+FO+x#7Ayw+xlTmSrz zNx3`zS|B=X;U6QQD}L`G1Iw8sVZ}sH?;5UJ%Vf6ORHqoAxLb-AsAJDg+e;;evxC{#RR*pI?4rZn_1K2pf?qxRnYBKG#Ro8L7 zvI$dbt#kSrv4`rB(Pc4v=ZdshT21J*2LCuK-s2q%yDj)K_8Yal8GmrbK-A zF_G@W8c-W@%NCJL8m^`rW0pY`)2KOPWd+~ujOK|!g?ippzW^*aQr{%1?g<0#xC#jB zf9oZXS1r*-YMWL=$c>SGjdR#)!!og-{ejBF^}wd2?U=*e))*D?e8|;;0gh`1x&TaQ zUHg54sklm|1MLEsyI3%j)^srLtBLjj2*cp7qkZL5aPc3%ni?^-A4<(_*wNXt6}&jxfLa+ z^ik*l_uG+^iC|0C5{@}F>>D-;zAQ>s`7aeFlO3#^W#`&ewMCSfkU|C@AoXXP9NkD> z&SinAzj(3RFSreQ6o{LsiqhV}D5gCKHL#&xC<|NMo-(Q*(YUS=!*6$xt3m&U-p$h} zb676aw^@Mblx!yiU_e4(U(F)ee!U@_dh}ukV7g0YZ0X6w$hY*UCYnY!q2XMwqQvq&F;VeN!CAU8hx=l|7@-Fp;LH8%+``K&A1wlt~S!io^nmV&q!y6M(|Vm4o+p#6y3c5Q$a$Mw2v`^|(VvcC}nL?^P>(p)yCMVr21xgNKL9$7& zN%9l)Y+RHgy8r_r0KnBs(oy|DHu1hoixi(9I^20xvgj`8()eB>2H&;`~SH97|}~E z>969%W-0m;fjbu>|Nx_pVr=8c%knl;? z(Ov4eb16Y3Z6N0L{(! zOF(dr2;m%Sv@#;2XA=G?7dSa7^CtL&5cj?(jydV~EZ9x8a1B~dqQ;mEeYR(vBu@$z z>8_tiT9Z6`DYPT4nH~xV)N+Z{RHSdok#mIa1cNX*4CxzM_ZCu%uFKYIdEi* zoiXkMC1vA(;aWsw18gwDZ+-37MSYx*xzN1RAa9|c!bjOw(@m6?s)ZqzxKgQ^ebv%uBiB? z3IEz#)ZfMF8SXY1ZnNbCJ2M%6(qLsWKVUD5jo#TRhP|wP@8E!0E z)8x-|w%_9J`@i&Nn+cw1T?c3Lx=x^u=ByJ7#N2Rb?QqiiU}W3$ls`aKw-EW~Vw&Oe z_CRdl$qAPGZ3PiX+yAVPqY|?$uhUySTuUKUXBKn*<#10~?MMs5W{dzHXn7()^9~8R z#w>FU%4%bs;7Cm<5e*~vKL&hUI^ZWe*(i+yH0IH;2 zaO15#f9UmTpL1gCv`C$OUqaf5MyalECAQL+iqc3I;YQX%NI+51Q`<=G*S&&pn|d1; z-N}bO#++z>^4+)mp1Fa>X>fyCx4NA7g`CeLz(#Qo1{Vs^Y4s!llHFXkQCN^y3zjCn zcd{F$z#aFCy4zMhNZXI3Yx?zXeIwOkAN?8vst=0D7p`$oUoy|K=A4dUnrNA2Br6x= z5jc_;lN5~x)4*t%(;xK<5sp*zcrCWVJxfkSg^WT%2J5(7d~NOME?;eG?Q65> ze7EHG%Lm8MA2M3rNroy~bJZehX~(xeYTP2hl4au8mha%#-D_Y6EK`0=5QNqz7NRov z+*n?>Wx&UPH8LDwBrd5knu?yTeSJjCZcMP@fQc}IHci9ea|I3-jptTGyK|^wb=QNw z-fhpJHw3K&=7{$+M8&?JSL2MP+cjJ3zyEE9$EuIb3Vc;mk~9sm0TM~vdbgbI@Y-v5 z*S>{sl`hNW^f83^i$gP(Wy>m7BzPEj$CqZ(i@ITV8k{!CKbY=|#_L>gYnsYu<%KEc z7ohznR^R67Q`!fC7ZwKgg;A_IzYc`A$4RCkb>Ch0xEZ1#u~fEK%fDg^J-P=;Qcf*E zp7nq30vv}B9UVutSYcLy;L|}AI8m32#z)P_CEaF|EOCWuf!R~bG*=kX`UP=tup^xB zgb!-$0rI$&bnY4hF2s=iu0vRBT&6X=DfJL0ChE63eVz zKj;m@jrp@9EJFS|Cbsom=%34=>8E5a67+aK<@Cm)(!hjfC}t+$Ss#Jkx`94iv?Th5 z^2Z#?QFB;4yJC!+9Ba@@!pC}iZ)uB^_NHlfwCF6LdM5MhBhLL`o$B!LD> zl{?5y0A?1O!y4+J{>r;Jph}c}NEoX)w-0Lg>_{?`v66o73Q~+v>+rj6N&!0Q4F%4< zW!dfrgQ@4W$nIouc6;j%Se<<1T?F8Rnk0sj8t;8MK=ZEId>}hqM3(f*X`jpnX?QXZ zSv;19UVnUs9^qQ(hc4U`gb`)H4IqNF0K>_;6w_kmy1a=@AwVH%Z&j%NaJtd#a=O7{ z3&Cay`VPY2$O=kPY(q@U(hzuQx4lij9p3QiC@VyJib2AH);~84Y^teEoT^FumgZ2@MSFF*CI5;kL*z36i;YBs7F?2d(}Z=)@qxcBs426yD+i}yguw(O(1{! z4Rw^zA7G!J1CAz8_8>tU2D>5d8a?^JF`k6%oG^EyXgzDp4kpS$Pl<<*Zo-@jsaSTi z3x8Y1n(`>bzT8BE;@t{O`DYIfC2Alq3Uv>O!t!2sn~0JOG9)2U4N9CmE15XJv!qM% z>z^}7ZJlywEQ;_|9_B8!2hico_s}oK;brojUh!6{a5{-Omt#BI`H>?eYyLSFd${+i zzBmmi@}L_(<`wal2ZF`u;dcc3>y%qzf}@=Z|9>n4^FPgwtgGur2{c_VtGp2X+_3N-vilSG%+{oCPIT-sOiPvs&BE91f;ir4foYX*GdH)1-mUXE>Fv!C8 zj>hpKY(>pgJGoFD0Hd8o3aPM1kq3Hgb2orha*A?55L3U773;rg&-e5O;$ZtIZ4TO^ zzvWEYU>ak`8jFfzGAnb`^w>ilo2=(gS)SCb2Pd|Y=;TcZx#t3Rc>}{`AUK#g=_aE< z;6hZYrg>D&HrMMazZQ%Y0CTnv#_JNlL^}OoLYyv203?9-$vjRrv{9t}dtO=4)>D=J zQSdMl&?&D{%DN0AE806C>p;DPc`vN1U&@2(SU(?y3)JYIy|K`(hyj@A)HG{RLf5K$ zT3N$fumYX)CdEhEvfoiEt`BwY*;VV z)q(0tiS_X;P~ym1_CK+NgNjlRm*3IEM~#)9fb)~07HY~MhZApi4U@82k&a2z*U|=l zyPl4gpJ1_CbE5^JG76Ynm~wnvmoiZs1n8xo#L*yxw=OH>ZMG0}0+)3+RlJ8jcLlbA zqcoVU+~vXcBa+EW0@KohwM8ab!?Mvf%?n%pT3o$C6~zMrcH>i6;IvLTp*@A)vd#nL zl7c@Z@Z^Hh8_C!z)o(t@R?w@00+#DzS@!lx8Ss(Z_e`FJc+x1VB@zEF`9l%v2I$Kd zubpPk=yvG?u2aJohoWHNQD=Tnwc(9sQ*|gwj1g=bAjTLK`APKt6=W<5(zd~*a=T-S z%6&~w*56oh)e#;5vl#Mtd2C6%NBaA_+y7bO0y9#vd62mXD9|hl++;dlvPU~ogx~q$ zqRvPfjqT^oaU|hCuHD*#W%IEQnq}&72W`5Za)H9yJnD>kfSej$go3%U1}C6+cwfz? zEAAs|R$IVxH@72ci?}ukGRP#R{N4b#)^sJIs||YhfPKVH#ERX{t6ms-XVHlD23U$* z4wmgCHx+CIms#n>u>M~5+-I#-z2<2DMbfGY4Qq8|l*4)|WsNV^%L2{%LXZf5n6RZG z!vf6V^VfHvaDhP=AsGlCtmG@_>?YKBHv80`Doc4Pai&Hu9w%NT)Q2tc0sfpx zfkW|b%b6tU(!#lfbq<2|{KnSY>%92Daop}2G)h7-=Us}W8ypK3PVzL*X#eyLrQ zw1M1g>_y8jOk%X-|0c5rQj?qA@XkYqOFdE|JJwX?zth>>Iidt>>(t@A6lpjihL5le zCfGFVz4~Om4$lF6ID|Hi5T4k$K_La4Sqn_m&ajFmt()0?DrKENVEe%OU5^GT&sM=S zWYTnmyb*qTbGoQ;)?6$`wwr9It0veJQX}%yD}$wMA(WvVxLo3g7nLv6mlQmLFQgv`gTf7i zerL1~Z8Dk~O4`ggYXvy(G03==WM#LDK%9tj%7H=fgYyUDHs||?&*ngbQa>h)Qwz{u zcfE3}xwgiqW6@QA>wJc)uK5RePwaNWVPEMg3CJyy{<+Voy`6ZbHQc)y$bV}t3NZ&3 z_QG%TiTsY<%|K9r%x%q1&U(2kD4ZO)8OxrpPyF|M^Acc3B2VvL^r{ScnL0drxAUR9 zm0!P-HI9U$a_PJZM_|JBy=9_dYt!`C{)LiVce#KdJkP?Z4op%)V^8Wm1g$ls7`Dy7 zS}*a1(E?W?8t;2cOF(IK)~O!TXp~LvF?vP3cnI|De!UZP-GgIY-zn|V?~joQ6(E@7 z`yPSUhCp(YNe7Vv9RZWEnj({p_>TSF@k!A1pM1#dW&_(oSZWSHvW^Z9k`d*n3%WrI zrb_ZoZz52S#4n=zBY59g(TFOFl-@YI{?%$j?9sZ2i`4I7kBfx5CF-(1!>Roi?{ERw z&VvauJ(x+NS%gD$RZS*wx=&X8ut}AM%^#$@^rs^2aHJEqFoK+m6Ylt9Bi^?T&Xe2< z!y1LST=}P;+-nyORU&c8EVtw02#Gp)FNC{pQx{8$>7ElQ^57sgeM5TUsB^3eV+&bD znSK6ONuWM2s_n1vhRj6J4pEPSyu09dXH4ByZ4D8l{GV@=;qC8Qpf7wzxu1|EK6yh{ zk%ea@R=40SpO56{dPll3h|DK?=~XiJGS#cwJ)M1+76ofC(q` z9;(Njxm@&=+$JIs$lG2`qWx-@0gK>IHm#IGd<3t;D32$g%yRZ*EKB_wC+0`F=^p@Z z2EASP%Xmi<7B{6`de#rS4Ok}qk<2jZ1$H7a5fqe5Tzf1vSp{@7KA%2EhsySG1ME<0mUZEt4eiR-qIY(W>JBcdpLCcm4 z@3&-aSZuFCr_TLcXURS=G5hljZuC;odAjz#eLiADV^wPkFQljZn=j`5LRL7YO?xuS z8?(RFEQX8Pbk<&1;yYlm^ZgPc$C0*lqTNZ*dSicriMXvEt>TK?yf0Yw4|TYFQUciJ zv;j#94^~$gcn{(WuZ5GTP1OF2L-25l(5t}Wu~qTPZRmx|v^-XUM;cZwkv16=e!`6S zQ}q-f17Bwa=}Or)+prb?gb(Zs4yGjsv8N{o*zuzwztBWHH1uli_l7El!@QlIOWbId z?fR~0B361wu&Q^HjC&l|<8Jn?gt9>|#4zJIz)1qj{4qn7GOqp5ROSao3bVN z7}9eIm4KA#^4`Xx?H!eDle|X#Wi7A$pz|h}Fj+%frnu379SL3CnR-u5|54w4mbKQ# ztSRlHg?4wBJ~z26=9V1K=IOm5T2?n{qHC)I0ltgzeti+|tRU&RINb-QZ!gNZN*e5U zn2tE{z_(}e;bf%leouj#tVd@jt&Y4%fZth1mwNWw_ZZy8je}&FDnPx&{@&3%+{{2_z1=KtpDPga%Y!s3> zDJOS=H?ghoz($tj%$a{CK3Q<^@>j~QB+Y3W9mjNxW)K(YS;UzaVO|+U6eF0N{WFrj zgyYGpo0IzcBY+P;30*j{Sp0)t5gp*?h`M+eKEI?Ca5ClzaLV*ImoVfu8$15&9hFJr zVRWsC;a$Pu!eV-57S%>nu?tZymtrW{3%CZa;DFS*FG^3;dLdv4N`dYpCO?4bb zFmTm6I@bg;hVw_ncM5yWeGWb7cXQUp7@dAKIOsW}Hv&PkQdID9U-|$No52PySu%RP zdwvY}gRZ8`KqeLWx|NlwMus*?E)6bImMr`#!Y9&tGZf-e5MvnzNlv|q3jxyv3USeuCxYqABKHx5N9#CoxaVEi`A znPGvzL`nq=NN&E>zd+WIX{MPpcPbLl?n74dIob}av_!u=0{00k^xLflz#B*K*nK*4 zz^>#foHg4(b;4=w-DoO>>~WpzawY2Td6gF#91}+eLs^KrU|hMpyz}8l2?E;%EGBu0-n^1O=r3n9J-4dK(sFpRy4(uXWR1%&4-}_KYEP3NMWmxFec+7DX;1j+6P{0n*`4{B45KFu{>?$&X0{~E!uzB8e>n@W>RSdc(%W~8-*^+ z)@uLU;Y5_et?5j~ujUeZ((Q3bezAV*00x&MM!0=##x)H|l^f_*1k)zKj-2kC?F4VgljUj0WPOr=+JJ%xhd3)<@xp&a{tm`cZL-&nH zvimx(Qe0NKdjD%aXC`{I!G8dVkP(w;ib>XG$(x&;kLm@h=k03luU13w*EfkRt8PI4 zTTrL8&TGm%n;Gps8sxj^%(8msy3C0RXKkM>$8#UB%}BDbz|+9ZjBvjzfhl`v0J(|q zu^WCA@E2Do(XIAmthE$+v{5Q`0)a%Cmvt4lGt|c^I0KqK#~S*~?9#O{O&j?$QwL3! zRh}L1oJJ@ik?Iezk;cfhy}tEhkvX%?TzOrA{znyGX9c{?@y$rAYQ=A7m5UUu7U$#8 zwh-H4gq6rv|E7S?XvJ|rz>KvpX7W4RN0>- z{2*t4)+;_Quk&bEnHaP)l;2+Xuoq~{qX`uB8egV0URB}yHm&~<33D?i6?+~m`)L)4 z;rHlNF9m~%-jY}Ld0gF$ul0H=dZq^H#0O=uU}IU;R4!$d*9K|sB>vV0cQe>9)mCET z?W1SiNu7@?qy}Eouv0f{P{;z5x>7hx4+hbtZZNXRFZl^JNqIFGrrLhy!uoL??0=rY zrE_UnEJ8y00Yh}CU90xPH`1&)FNUidOjB8j{bB{hGNTK{jwgj*qJ1f%L`J*&`jGkV z8(QY`Kh4l2NZ|*ZS*yu+lC>nSfodxj3`=d7`6zt0U_TW@&%{sP3!z*1Vl>L)M)TLbhRClxG93JPUSsB&n)bv zdt%E>Vx?-YKt(%=fGR%sjWz$sI!`7LNl(nFOF9MyTMThow9dmnf)#e- z)k`I5bI`{0)l&-)Z>zD@ED6hy@1aM!6C7U}sQQ-H_Z zjRS(Mzml|WUsT^maJ(Fq2ebBUVrLIuM*+nMq4Disw;!ilvfS&+F(uH~(6d0`IcigA z12Jc{gFG%B8bSBO9MaI3O75UfhgiG1q6JhrLPYF%xT&=ShMe_%g59Rgr${@>d~}(M zMIVc~v;q;c`J+|4 z^#wut&LhioA`D_|zU}V^4x}NTJ1u)bFtt4z;qK+SA6eMt z;u=lauCo84az&&zvlD=;ZTAQFGSXY^A`oy1*d{)e z0F+wJ5yj0Q4=z32lCsI~YrOp{)$c4H>J1H`YGD4`6BRjOXNTx#TvPJiu8(CZu)wQq zO8%}47Bnry{%v%V`E}_oc#*>fA)a$p)yqP@2}{(+X3EK7>eCc;zq?ly!(JQAcW`Cd zI^y(Zglk^u4@N)4uCNC)eo}{~HDE`@n!oL_SFj8RP3GKOrrDJBtVW6AFo`4RSMlnr zmun_pk?|$1G8D?VnS($EbS5i6Y5b-tE6mY6-x77Z&(|ZlG2~j8RSnoc zAlGZTS{w}S1&m1Q#lzYYdHeh~^~hyvgQ&X87Z}&)>OMLMfL;M~BC4*VugagDOieE3 zdP$RDN|6~`KD9>K6|FSDmk_k@hm@VklMCveM%f@0S>&7vq}$QeANz(N@gvVp#g)`r zFN*Oeo!)yIKN?a%t0kM1Q&Obp&oJj3jxm=)HrqV2ZRy7#+?U~)b8>JU6chAKXVx+{m&ZU7uxE5bc50dJ$CM08 z4|E1!XNm#{8FH=3d1=xW z6O6S^(|P%R@KMVc>a@r*jf?f4d$;n`6iXLWw>n(oZ_J654XNiO5Rlup^Kgw2Fm{8Z zM+SqR`%Q^?D3BKNhw4q!UE2eR!39#bwefLraGT@=;K(~wFF!^cApata^=bW>3yyEB zB`@Bp{x;G|565{tw{&Un2Awz8m!X)B^0ZaS36rXwQ^4-iR0i~xFQI>t;)Lo!SxkDy z;t;e2qwp{^Gx|EkO6pwab~VQ}5bXF-#RB8sXLSo~rrefW@PZ=;*H@Bh{y_(Q?C(L} z0dAIfaMGxKYyoGe0N*yb@y&0jRSZxRUnKpkHf?dVtW54BXE>>WOns^=Y@oUaz@9pnn*V*7 zPVCb=Pu7$o&wv!3vpttucwB5DN1z#&6NN7k{lD7;AB)K!oS>23!=2o!v4%wHhLv+F zUcT_#luX~YvhyKKqdk`{8=z$(X*EdxD9$3OrQ(+PKZ@A@`p+`%G~_fjglW`L zs+^`#%Jx54T?pqFI|tAuh$D=)W4R8b+Lg+xmEz8`j?%+ZWY&G?Il05bpK;mFZ1TL9 zJ_deqbF<<*9qrl)YW-lJM!>1lKShMlNHuuZf!_FQ==!@sTj*<(>wO@|MY*Wyde=vQ z5lC;JKaT5FnFL?G(WGLd+5V_{ytAaX7eR2Z-rC%zG8}%dXnC+P`z4}~Y~ZGt&edYa zd{$KALYN>FEMwPDk#NBSxu)x$N+q^-MKRLjHxc4_>S|h^|MT2(=Woi=s||)S;M%!F zI4||}WcK$BFd<(+l-)#j)~h6!V-*&c`y5>bjS%Na$KMW@ZWT%%XGaa4Wl}X=x{VKZ zIMJv_Ay}6n^~at2`D>XSFV_oCH;P87y4L1=qX+@%Q(Vcs%SqRy5WxSVS#WQ3F|iK> z655*r*c)yA^k->^P50g+6QpRc*x%-{0I+n8r+$!F%h~H;U8sSS3Y!_Rb zuducUemQ_mvXk98l#)s_fIF!3oIbv~v~fQji~%~e;EAM5bItw#0H{e#Lpu>lcXfpI z`g23gS%2NohmEnb2qkf~8!Mv;$yAhj=mgzDPwY|Q!y(*9+;ieOHLuABjp1~pLGLSs z_uy0QeZ{L?Y_EF(+qOs`hMViE zRGlJa&KHRhrAYr5_Ce8BV$Yd|;zRrnk$GyUcx9_6;^tj-${lTg*+UO@!pmn9uum>7iaTU*NWqZfSFY&?TJsb=PsM9ET-HaoSA^@^4rWbUGnBnw_fVJ zbTCTO>xp&UDkJ{2m$0Mt3djMr!H10l;962+oz-buyTt8H8*vMQw| z;&VQQtURm_FY#=nNo3Y&-*bJ8@&BsAT~p+(4&{ zB-R{U-R*1`tG$xAV|Oc8s4tqR9e>T{8Ss8Pirsph5j!SoE(_&C^oY`w!ix+fQPKRk zKHCvk+~qINzWPz;=kcI)^&`I$p{eP1$a!!-Y&6oi0`m0$126 zJg-j~WLoBX@jp3Kh=tACmxlb_@LB3T0+o15X&+|ffCnD4t@GuxyF+|Jh9)73!jCV` zo$_M`UXU%r1X4bK2wEjw*_5*rupIHvlD;QnCMBUd-K{v3U?^DJUmb4H?+%dFmwfC;Xw`WL93%3hvXLN}<5nxQ38VWoO1by^X0?YU)db`sdkgI^hII zBuD+B`x^xe=s=7OdGPjceUd!1w(4gwON-9K-M^=%pl$uucLz6#vAxr2m@0lmOVHp? zBtBK)>O&9BZazT>c+ptnmTDiEo5E)UQ0g0)6_Uhy!OK68m_xqlbhIgBQN2}{#rgPw zET%4y`l+hxk;gHnU_l_P-;;;zugE=~#)p!LDf`P6s{WG^6zd5|fD@t1xW0z%fV>Z) zSn|ZQ7{(#y_xA1+E9XeW($Y9zC+aUf>3J5fW(JN*S(iBBSZPug%n2f-m)txaQw@Oo zV@b-aw7POS-JEql9~WXQvY%%szJ0%-((uN)^rzwh5l?`q2XL00s(+e%n11DwQvvE{ z7KhFM_-gl#YkAXnfyoo2qo0V}jnFlU{I&0{5V}}}8T1DR(K^`o?56%8EjkaOyI|U= zZ&pnl#EqQyVIAnva)eU?2ca})KC*7>nUA><}gEpC75bm&9WUf-|DE%xbqR^?8b)$ z&@XNyStOndv2(A=(Up0WNuSm+I8W=YRpvR5fAymL7HI@-q!!Ovm_}L-hSCBm$4Y#rYEvIP2yGE0zvZWDw!e|DX*y< zeH!>bWY=%0ezF99?ZT9`(TG*r7m(RKK7>H+jh!!4yO5)Qkv4eL2ZJnNk+dwMY@`aS z59Nx(RSN^_?2W1^SF?5CIiJ({z&hb}mlMb`;EYX(j1&(bMw>sh>q8O>AqzjW3L)cf z6AOoE8)VMg5Kuxe^(xbcWL^Y`UjLZEs-{K-Twlazc?I16ob%ryB6zojlfgpGY~If= z(nmO6hjX}v46Qj?oZRu~4lI9&hWx-lws|spJjG@~!~CDlFq9)^52kasC$bO$^_nn5 zuKUs+JrJtc>O;u^h?-A5(BHLAoRjGc3JcAtGHkR6OPv)-<@T%8JzF?^io5vq1U=q{ z1c(~BZ*9^POYL$HsGA4knS*i=3n5SoqtA)pe}T^0v!U?VQ+<0GAq25>ZAvFr{bTtf z(ZT-e0RS2uoE-A;v1V4$ZtnNrIZq*wphdN-O_bO!A}s%s5I-v?eJk+;q;JHC|s zjyR@ITb(?#XVDjL7BRBF4^JMHlpEmAK(ighzF*XNQi-(fF6|tbyM_VR9-UTNL!R7C zSUp%2z#|o;ba62fwicm9&07;$BTHIXOsUZ2UGbHov}8D&B5wTCrs!thB}LilKV0=x zI8md@jZ~&wB4;&JgOb3`!UtEUvsnx_+O472t6}L%HoG;jf0cZFnfi(pBTw$Ck!FGs z3I6g?nNPMITvf|dd?C7(LmwR>4+PI-{G{SL6khbz1YVzasm=w#FyjC>M^Bm9ZGj5n-92Ns z3)x4r-w^$sSonCyA}N-lV#j|SRes;#7h5qskiU!kTIh>lGy6KGDiC;o_wiwG!Fc?7 zry46}rYIg~@R)ePhd0jzQ3Uk)Tg?33sHF&>?YrK2m3D814}ZTG>HgO#QetSYNh?PO z!zN1lpQ3F@RBh01ahnUH@JZPAHDb#iESH3nyflY^xV)*+KvLSFBm&UfV7A&i*NBMf9z5(u#PNz zN1P@+@n8$FOYa^%GSk8bwl>5-6!_JY8OQ#lHp(hKWaEC=p#=MyjppH(&WHcW;V2kM zc}SZTPigL@w9*#`(l;fc;ioF!9oQ|gI4WU8CCNuBL#bF)hyi-ZtNoCHb8{Kcd+*R` z$@Y%|s|C>NAvT)sN;mtfH_7d#ODx^{jkf{xxeI(4zBSR54FVC0i;wNx@}M4V z3E;X!awO}6gqedMT22eT=}F>GPZ7EG{(@CI{10XRpeiA(KJwvnHnvzM3D`;EG6yp5 z(!f-j28lH0wA3BdvVyu`_Z4!W)<{XR6t$7@b!j3&BN`*$fRNb{%R@?qsw3=qr1QS2 zU4yv*%OFqf^V`hvQDUfd`9edZ;ad*m%fkvc&7rZ*JG>;27cLmct!2Fce*6%^H4>v( z;WktAx!@&4O%uYth5M(ugk};z7qJ}#8E&=5irnCHd}+;9fk6p43L)R!l)j^J7vSSe zQ;uN}DGt{!(}WIgf7=N--(9`np8nCXXoM2N{n?&SKTJCd%&}I#vvf(GE$cFhM~MHjz(2Q2E61RP-e||X zn(kS&MYEkX&vA{%+V~=)Hl+n%Q(?uHG33lF)jhy=RCgF{wPQ+|0AWsH9atE&S;Y?Ddm;Qugd)iM>m5uiL2X4NI-D$~`3?8!9G^ zMzSKg%K|(#scXrEKpaA?f~%sju6pK!mdQ<^>D}5h?idk@V=uXPrJmUm^|I|CCL$Ht zse}v!51o;NMOd1du~sS#&)I9t_O7-aE!Qbt*-gkQAej}amS1p2o%06cWShadiXB<` zH~ybX5jGO#M?x|n32%ei3i;a+-G!wzRk-%OD;`6VJE9MhZRQcWka-TQN^XcrI@tN1 z--OcyVN()1*>eylm#y)_ITS53um7=amB^;V!PFa;cXYrC>{~4k2yf(j!2@L{cZWqM zAl|!anLW;VuabTgb^PAm6LANn+PoXOd&|JL|8U{v2XnmEUh@%NA}CI3(8geWRxDJ1 zL_hHL^U~>j2qg5Uh8Mu&`^Rp|T6L~TzA*#@B7AGps=&NKYCD=&s5d&onVAZ7zW5s& z1@zU?x`?a(^(VYZOfj$z9B!=M;DC5s!8$1Nzmr7p3*Cz|NWS3APm`Vn!sD38IpPqz zEzt<>Zx8jTjo;=Z!gUt26^I;0djloPbBa^`c~HE@3$nQ5n~=8AAlY^%RUe`=1qW(% zYe-GJOFX!&l=tGt7%rJO>yT{Q1LTL4`%(nX^0cDw;4Hdct*d^dDT&&x@a$%Bap#t= zhGfc#*nVd6c1n8iYP)F>;jnqXNB(BF#WUZm3Akh?8D{5`zp%P=8@>fpNo@#X-ZlE< zjA95h^iBnJ=b=d44&};Dfxh&7pL>47=tYb66V~XHS3-8gU*4!2;6Ma!k|jKW6^MLr z*6j{a6~*DvU-A#nQ0Ya$ijUQfWrWufGN`ZFTcLF!Qy^MBd)B(n( z@$r>D;*0+)s9$p4m3Dl{}|bni!}F=fl~Wa1xtP}(B52=;x(-xQF%|3vbp=lQQ{4Cg-3(*?*;qs z&Cg$9%iq~yfIGwFL%lX-!CZNu7xMY-3xFTD^IKqRd|l#0ui(l(NIp53=Ne+SS0o~h zLHLMih^kWb%bwO#f~)7XATXUx5I#YiHj~uaMC4hly-{S|bTqxg8Dv?GgTDFEA1#-; z&vBA#oyelIVertEjX?HQht*#98fpgrHHTZ>vx8dtYZ9tG@3@P*myb^uo~E6T+a zI~3T)cH%Z~31f44S-PFO&+mbscnC&So01ze_)i5f>KgzqXHu!%Z#pPhtw2zRg!eSW z>fU>F*DN{|EAKbTZor00>d#fq{Hb8BwLmHg6bQ;K9ws7Iap^E7PWf(TI`U7ypcR2- zNdfK(>akgr!eQ^IP9*}~XZiwZwfm#)V8-Lf9~A^-6KCn?#t*Z%b#WWCZ;^gWqUTeM z6SrzD4G3*h9gOS46gfI)dp$Vpy{ve6r3jv_{KBGF_9!2#O!d8JD&`wB8oNJ6m4l)o zitFOOGoCbV?670!wgfwaH(OS~v^9@5v|Bc&=&&A=wnph!8W*j3t0Aw>Kj)-_P7GL?cs!aT8zg=|CY9;5ijyle|2l;NFk` z|33i0ZKSMRr2bnkwD!%aceU$qAl+%LRZIo{{9hEl&EuXl6hp)GM_7(9aI)dTD-B8YZ$!xUGtohk&v?7VJSInp%P4Ly@)AV)#bbLMC5J%QDFX?)>T!A(##N zq+WH&U2-{korT&nMj&5PjGNzk(;WqyZ5+=uN0RT%WRRQn|0oXc=jCjJEfN-&!@BaS zZ(lU7WS?^r@5*`h3DPXQ9yhdGInqLgoyzeKC+R!^;m-Ryh5t%Z1GCTlsusDd+c z#bP0+jQcAz{N#Fy+7xD?`vf^O(HZbe@)3#4Bg#|kgcvSc@5qrEk4pi^N~X-!=+C$7 zke=g{TG9LDS;5Pk^I0G#fyjUF*~x^GbF=1++|XOlFaZJpm2u8RGTd+)m;0FJ0$@Fk zU(~Iq(aj21-VOBPM{kmS(UYAwoQWNNII?gF>?}tn3r?M#zlFY9Q7w7#M2U_k)0YRo z(;`M0qAV5c5pSisSjnuMD9G5gy~^?;98L)dOv_@-YJoaOL74(kR4t6sMOhwWM>2%| zw&1uv5iVY^OjfO(;r1jF6uwG3tD3yL0A>dh{3!Y(!S9fgFx#I#hoIyBQHt*KO#*20 zT*X|kx-w#xdTC9gz2gFiJM$zHFii-=~hPK9_|>2pc6qsV@RM=P~IfHkRi zSQUx4<1511M^`WM&3__NigOTl+jJTi(l4GA1trQcd7DhK2sNPh>s$})LUun9H|yB> zOsz_WUsZpVr+8R3J>L6(^LZuq2WKA)+Vlt#ql~IXT+gcK1xK1@E9Xu(HRdDA%%-AC zQwJ5n_s$=Y1-ov7}cC zccY%o)44X-tvZNVi43Y36TNq$5{7ET)F&W;j&C6%%YH^FHFj0l;cHMQ$IeY4$9yWi z^EA{YlUlUwREssk-SwF-757KwDaynuQuhdh`ZM&{^2B-grggPxa$JA7l{(qIl_pl5CDm3?9Uj|j_|0&v{u<93zyJ~pj=6$lxR5hiJ_Oy{jQ{)Fy#~_1NCvM& zke!g8F%nK03vbe~nHX~eAf6Hb+v+!Z-{cz1d0D%=VF`#!b96=ly;Li@DxaW35#0qg zbt)D{!y|TF+qlO-A_W=0w9vxJAo0%69wDDeV_T+Hviw+i@5n;!+vUmEkkCU6he$Ta zqimiJ`)Bs~ccuxyWt&vSLN0EL@rl4Mz{34$9zax`*vzV-i}^wc?9`iu{I%!6$JO!% zP{Fiire2olfn#JmNVV%AYj_}7iEs?=hzwiFo7K1(+?57J)uP_uI+zwwq&S^yENmSr zQ!S?D2#TQdY)20;IWBm*v$GzRDXehYR4t>S7c)BUGU~ajHC?_4@8yLr5doZjc4FU3 zs^~4M7(V-HiXRaFE?nW%y0t@i2e+FrwuMgT%FHPP!yWo&gS4nQb_zI~z!vesol4AP z?s3vVqV9zg9e$*v(>B4s9_2g^$v^T1baPamu#&$+CO(v01b7(trJO6nw3j{e zU>KB7om}Ud1#;Hcy0aS3Cir2JLx53F^|mWm4YfE5Z!cL(aLr-*0m@$nh)n?p{$b@4tcHe zEst?U7lNC52ZKMot7VH+#hoSm?i^Ngd_akl3M2nXeHvOe9>qj{FpGQha*v(x$o(z& zRY}G3D}p#bD41ON{@nOspE^4#Cf(MZ$Fvzz<*z!X{rm18Rn1=&y78Gy6yLaGL%&Un znR>HZER8zrT+fwTb9xHe5;>yV5MmHY@Zic=btrnHwk9UozoHaK3(lF-`SFVzv-!51 zcQJmP>&g*&2*Fm;9rw=mkfvl-U@&k%0Gc@A zm1+rDl8)S);XHAC&=7o`px@E=op<&C6fCX&x!eNrj|Xr&bBZx%>$q3U`;qC2r&pWv zv|q)OoZb4MXsZ!!*gj1JtiJ2DBZK0oR{OJ52Ud|C9jKW4lopzgO;N!TCzK5^Y{V}^ z!8ZO5*WaSzzUy?zh4S&Q8O_^P30;{<+h`I0K|{)HHmcwe=^-Xb;y#5yD_#iYMXVa8 zz)4<7JV$#^+~1$OCbx12EiXz(JBD zIv%YJi!IRUOycZ|rp&5v;BLIf!C+&ye_YJe^rQ-=3IH)=%DTu0EkXLwOt9-ldx zAwZ46$%-J1s3x=R(A({8*)!+82v9p&%IuzN zoe#bfMFq9kXOd)N2dTO|g|iTrIN`*(TI<2%eZc~!G=;sO)5X)IjOC#FcZfP~_kk!c z&l8r+%}N*`dMp|VaIa)P!bvYe$5zQob*>y%FXfi^bnW>*3D#Oey1lW7Idmwb962cg zT2uUYa!;N#rmQU!;fR$BGL#t#gdpN{GGRLzq^b4>0r7iTtY2Z}&*V_g!~qi@pWzmT zb`}d6mL40QU`LNp>4q4RRl ze>@14fBH9)X57VxI;z@jD3!QCje{hmPxl7^&d>Mp;c zcKUt5D)vQs6iA;9qyw1IR3FdbY@~Gl%_*jJ+>Je;ga!aEKKj`9r6s$lx_siq>81Ge zp-`5Tw{1uARD3ifOv9+T4|c?YHgQYfZhQxG`_cE5gK(h1LOmumi7 zJktmVHj;96unB2kZz6<~sOeXyn3)*di@zFjeYP&ZLMMO)HtYMF_Q~IE0Cs$1g*aE; z`tjKAezEdxf}BBBJ7AZg0V>)$Sz+qi#TsxmE>E{ho=GTDDylMgslB*Bl1^oz7`}g@ zactH1ouWqO--YtoG;Cr@cfxhZgTr-24*ymoAr_Ubu2&UDMjL(Sgj7>!5)^>ywG@t~ z2i6D7nt7E7<>^-l8A$v!8aGo>=xq3Ew#x~Fj?j9^nc+#lU)uXve#TWpgg3Jb;Qr+} zCL>2cIu~FnX$V-EKBn6Y#1th7iUNrXfVC=bJpJWGGc1{weH~sz=6+JXaWMClrkn+r|tgdh(`g%us zB>ExKsefYVC9IGNa+6b+4r#fQ_T*vx1zI^V3sS`kFOqOD{$ zoPwqc9Z5YBxh)(jxF`6nyM)}@@qif_EFWNmdbk|7{E%NN8XXbzTeT-aPQ2@WXYP2~ z`u&AN{^YmdfBqDt{#EXH&7!l!zO7;vI@Pi>%do@*>{agUjplGJW+l_eFZc-OFwNOoz=&K_5vXA-=FQv3L^tnl7XK?xe zGCmK(Q+%z&e6Ev5( zKdYipV8hH{8X0JCb@=&D6H~7$j#gn4R0euK=;p`6kFJYDzEOvY?@dyL>upifT!<#K>Yx-+|3*~Y& zvJl5W+$pV`s-Isyg(a(}wM?q}Dqh619$KgYorFbBYkr0oEY)c;f+%eBZwf9rTkjwm zb9_&+5+7vU0|Nwoq*Dw827XirZZabNoO+KF&p=+*t16*Aul$&FvkA}@I^o1HWtFzs zS&=rKTE4x2kOkq3k(tyi@Z8c0jP!4mt$YPcWX`dzjc+}(B)p55?ZVYp zJz+Wx{s;LF3yL%4;61-oC>GXGlsEObrVOlvHfTn0u^yll1K$nn1P@c>8~U{QYaI_m zHU5>w|Jt3}v>Lr>ii~AAz|CoX+th(il7g}JgJ38a?(hFDjH+z*I$Tb)^gsiKPgj{i`Z4H0eZ{$_7UZA!~hc zf^gGo{pGb~g0mmMD&}ngjr}B`M1)GF=}ja)d6|$36jbh4Ne%SO@qUPKK`=#1xxzi1 zFk@9)m6@!avSef3Qy9Ac90$)30$Fb#(kBc$xObx=mT>{06e4&j)j!(iD+4FR;yMJB z2Q%VER*J-eR$@@D*iZ0cQf8S4kz^)#3q5bQnZ=(Vxcwic4S-7?)|iG@9mz^G4t#cb z!L~&8BKNA$9IUcNmo^#BFea*d-26y`>34?P{N2N{`I>#1f7TRjOJ5tQdw zRaXB{QmXNI2)n|8`$Y9%9&=pW#d{X&wZX&N^LS_jG-4W%$SF*J71d8b+z*ua(DG!k zsj)YwUFq}-RYWr=rkf{4eKBrCrhMJC8Q(ECUDC0TuZC)hc0;1$~U?M=@Qc7 zd6HV;#ptyUb%-gtJz|PPhYK&_deVDHleKhQb5}ttW~I0F?09-`7cD_sn3O7e_g>GC zwlQxFdAXS+6NY>hkDRJD?1Qa~m8Z06*&RUGvRZ@>3^+05EsH%6J%_VATxahX50~Uag2eVs=)K4(W)}&gQ z`W#{^TXYcEZSmVXL#F$$FT%2`dzX)temG-z^7xDdoc(1(8zu4T@~6?=PK;Y$L5Io-0dcFCMrHp z*~xO-rLkprzboW+gF7uuVB(hqO3|q5_&uIq5}0eeMUkC!7Wlo=U)Ee0W5GC{rEeyNH!ND<8b^niuw1phWQw{Rc1{Umc4 z6DVw`CEU%n`CbV<{%9eqdek=+2ZOkLvY6Wvc2^*>iFRB_9gzR>j>ajIIZAwX5++_3z5_uc1PoJx8R zvW&{~$c@-};(2dp)bh89n8``8UmF8gCwxvIsPS=5jiFh8fdSMxfsjRCWnBJNFSo8+ zmCGITS82Ms-4F*5>hOEMIGo3w{$rr5F|hvyLlW9~`5vPqBq@jk@t!r)*%Attf1ZjS zTsk}tSTTTVsD`(o4Dx1Qn5GI#he~un39t!vK=(XmS13<)htE)C4mKbn-4{3_mg%DB ze8-NYp9Mb_Sp=h58lfZExFV+)K@&GLm>3i2)~`CG6o4Whk`f*tQnV!5hki_IZ7tYE zZr|DT#1;i2)3b#wtCc_1q%%d?Gl1b5dE%G}fTXA+pL+mEn+CoYCZl~7aW;*MTyCJj z6#gvtqo(AEj`HV9727yhIt{);QwimDJN2TH6yB45)`P6Cf`*1m<(iO(=(ZW?OI~|c zNqkV_8^~r2h1A0WQEWXPYR2xs+#L-E?_^zvaFLpSD7gS5&Xk8Xdb()TB>hh^>eb7u z@1lGEaWb|uT8-;qIv(=E-h<=8aLuub5R!T5q~*QKAE`%YiGN15lCyxyRBHekqlNJw z)V!K^fcAiMn8k+++r(SVhS|ANYOX^`T0yB6$~rT``_S_~YC4W!wL-jxr|E=F6IF)! zy8f*H7_>!Wh7Z8i?oiwmy%%*!t>Lb9)O;{JHRl6;YqOZcdkgV2eQDAhzB%$ycER^C zy&pq?kK=pM)R}C1OBG%LBUNZY+|mEQ6qjD_JoM=!7PrTA-{EHtVzg&#_L^TTu*xD^ z=1y%*pUr6SvLj!7Y^O>ogdnZ)JdCD|cTW}Xlog%{s))Q@HY(7HUz_b&522YktzX{? z8rb;(`8>i+0`bBxgx=k7&0$mdiK;9psgYdMJf}6_6C>ncpK9JihYrtZEfrp%fUj=# zhk4lNdcjcTaYFkr3|AbC(ONOU$Fdqmu``ac7E}NYqX|o*^dh`{>`a59qlj4FXA(?& zvBW(a2Yf-fOz2jL#r#KNxBQ zH)kDYbpY!1aD4|5TE(RD)}F{*nxa%K5y13)z<@OCQWnU&;97T$ zIO_RR&bjvNE9CJb+ObZ z8*12H!y#aY#Ib*kAr!~XH>G#0&CHGFJytUqo@#FZQ9)D#b1OMVPpU+`W{D0@0j{f# z&eRUJZY7+OUdH9QG7W_V;?=VTx4C}?{HCaK;zl#Is*d#p1K$H*Xx8(z^fmF_TTB71 zpm|!akpsa~##r`vpGM>u@9|ph!Q19JhZrr5GU2ZTK&ZgUs=oKp)btI`)0 z1%Jvrcrr<$RkrD72xH!w{_uKv8$cuKi=qcBa9Q$%PRVNGC9UuLGkc{{L@|79Tbf&v zmjlP6HcZ(3#w^Swv5040|mYrMUk>)Dz<<)AQeB0~`?T#GooQQmUgos_W z!YDt#OMvXOW4(1{w2dK^E1_rH4lkY53>9;14z>G{GBAvb>Wu66^o%b!U(l{@`%4P; zyaZ+!1R`{czY*;u^q0r700k>fY=~Y>Fs@4tEt)voxJQyzvAs`~iI2VTchY?EhJ6;l z5+UvOS17Jlf2R|2f2^u_2OfwzR%cNp#l!+@GuOX_kun$1f3w@&|JuPDL{bMMEhrQL4%ob&9m;vF0B(bcjZ`aD48SeFJyS#dXqvS}*$cGW zr9U8Z%dhME$EBR%)8esMqTLS^qqIktNE-dn&lkWSAjdD8!V;hSbMMw;rmtb@@p}F8 z{2Obj?>D5(7scVBN+FBPEN5J?Hc5_wi(A=}knPBOb6`rocM#_bsynbSD z2ZNsy*F??#an7zIeGRuJ^B?}c5oE$8kz!fNrBb7QRQDP)*s*Y$_|iQX)Q)FX6$rVo z_S4s$5+;8t{@@Z{pZ9pKuSHq?g4(&at((rnK^VdI++(QH^$kn`6g1u*w<-9g@dapa z`A;m$envXm6JjK#_@;Asg8e4QIP0%?e~UV16I*zZL;O>3FQKZGvDSsfLwyBlBi(0= z>Fn*m1p;}~c}{(mC~@B4#NaJ=d+F$?p)bkf-Gc)?*k3A*z|`Td<(rqC6nS5#*;4B# zFO)eO8KRXf)wGUct^=BE4OGs>MrfDr0R7}aCS=-v5{An(^sOs=S}_f@CARxHFC)}A zZ>rt-0cVo*OY9AFERF{XW2FouH!HJXM?(`e9)Z|m5Y{h&=H8h?FL@)S+*hs&=I!7c zWyw?HDmU%qGx9c4W$*D{ncjiUS5&~x;_-biS$i{7i_uY@5;0RD5r@2kEvcg#ZMCQv zaX%7%H(ZbFT5dS}q#HF9hJtzp7wVNTz&uqBK9X_P5e!(|Hh@9O+=$2NjDx+{rc_%a z*^`cQ1{me&?;-(8k6&@rnNbd5TfN18*BOq~yIyQmtkoX_5h(t&Z9WycnHa4D^<8Cs zV^-vkclS3Y{+wcmHZ>!v4=V7!*8HH${>1PVF|CpbZPNz}s52k+(4Moe5aSd+S8y!Z zOd3?8bpW34 zAi<#ZKL9xM*wuA}T0D;5C9!6?pn9~pPr~3|HA;F!hdiCMN~op^dWR)iEbbuF-KXyE zQASY(rBI<5s+vrA3~}DkC-mj^O3$un^YrPlI20Iz$^297H2?sYKIT;vi4aTxXUrD? z|AHeg`%}@MYS~9Z3gI39RvZ_@LTV{hxWAJ7b%ycR7-5-`dWIA+=2_CErpQA+F{Y5NqH#DI1o?owJ2IkiUqDzP^pVO1MR|~L*W}9M4GU)$5 zAbKXP)zmxNh||bNS#}f`SX6h+dMI#EIB=d-=d}@5c1w0btb%w9&tymGvH?OIfNbv` z1D^Em28{t0`ei3HY-3m|8_j3JeKcdp^BGUiZIG3m5iV^W+%C>_CTj*NMdOr`IB*{l z62MKMUsF(N4;~B|T?b*$VX(%sN#)-7-cYnmpB9b)GBk}nQOH&x)xh?Y1!eCmg zEd|8;v#X5fkehdO1+ZG>|~SX-`me0J;?>E4%rrMskOq4e#I3E!=D5Zy>GX`hHn|z|Kq%qg1+#s zCunz-gd4BK$bN_hEMFc71Nx{RE~5}(xxdr3Fzq_8B1uNq#CrDgWi;hWv}Aom*^yc7 zvqOm{O#vX;Av6@k#!NKT#L37FriNnei1fy$#8Oa(m^9@5>C?J%95+UgiRlNJ52@>O z=(aB{ZtT`dE9Y|$6S)GfZuT2kfel6s{N>@&P=0#wNhPHdlpO z`}E?0B+6ejDn8@g;5=rEdnEaHUGYXv95mzm8Oyl#wSx5X{Q+=yl{`eHEMz~k->{8f z6mWHdoJx7GS|B%sn`Ni9wMaTwC{I8*PfKAaSvs%+CCfAln!^bbu?g;1VYb$7@|+KV zTh$G@)%{vIecCRz6bBQErn;M}@ng!#tCDiS2F8K?NyJ*Fsl`s5_aADH%y1 zQeMpnC`{qzG1x%}^aT=5x>fG#?wH;Z-o6uz8YCf6d@uKP8IcJ_GjDZHb~qj6`_mh8 z1{)WMgF`!Vg!8CHyFC~1BhjRBGgsgsAbWqhC!05Oto_PtQKvV;hVvMk2S_+~TsNt{ z(VzQ{7d&mqVF`&vNSFBo-gcC!l_gkXJzvQ1j$7PO%~QNo`-AJxvo3H(c8V;5m{We+ z7GoMg6Jk&7H3R8>NkpTxg{k!cm&0ai{slQ94i&C|3K!XUXe0JK%N@&4S$n-&NqBh_ zY$c+wj)sA#yGi&I2J=->mLM}~$`p(l@&z2L4alXx%X*d{=Ics8-W_8AGaPw~x zmAw6{ei?xHx4DXG4d4mE-Wt2w^a%!qn*fC&@4q64U6ABFqL9zyION-i605WrJKj#N zV5^0Umt*(`;os>JF7>x-6IzL-A8+gcZWJ*^*`37|X7G`_h8djnNfhX2I{hl4{p}(i zkF{*a3Y*me(7deFx=-4X1dskDBs8BS-*Arn)4-h&@Mx&Lxf?T~UJ7CgK~R$?y#$=) z+q;+`^c+x5lk0S%u%M&#d3fOZe5$B-^l4TkKO6} zWomE*@klmyb+@Y;8Ce_K5@YE9U!X38!;(Ibx^fiYmEe&NF$j=-d(G^G zgIVVNxf82ywG(4-f#kpfdk<43BoIjF*m`!|GVVE0B1fq5fMq|qDkrqIUJ;&*h=Gwc z^s>ZTrZ~rzs?k6?xBsE2!8TY9aFsc1Y$5I19QT))ZMBPhL1zVsjbxKl$j{0-Zd_Zw z-i`u}__ceko_vEsd=T4*6Lc;|!Nn*nnrtNxSElcF`7XtU=S}^pyue zwilPGE=5vCZ&zz|ZGLR^rxh^Y)4!c!oE!d=1W0_Cpg9aK2fjIFeATz++MfUIs2TE# zJlO(;J|rQDR4P=>{DYCYEu6F6Xz_hXJ_)dthT(rD`D~F7E4yfC=f|`&V=WoNnVLPc zcdFzV<&Iex+p3;S&aFnOk7A`!`5-)C@SoA>(lH;GuT<-U+w-IZ8+E$3=@lcD$XU3Y;+nEMc97 zP#op^v13fDEG|V%?;$cW3!Tl=Lp-ZxXEU%uw#RDCW6Ne9)2qYRzjQl-A&X$4a^_>C z+5{4M$m)cfz>3LLR-!gi^J`PS=&$9>KkodAYv1-ZJ%m*oN`+Nv2qbsEuGM-Iz*Ex5 zcakjso7``EAA+SY-x+<%a4JK&CkR6|ziMZmJ$%Kg-EPXmU=8CPjrP|kQ$6-%r;P`q z?^i<7kI1`X?|1Ia(%d&vb?U+ajOBANChuXzAHC7Sx#5?cV$)&R&Ur5-sjj%g(_Dj? zi3ca^tW4yxt06!2XNVyUsQ-=9A8J}|a=aA!k@B71{(X^IZ86S`*#Ph5^$if7>q$l~ zMC|ERr~|L2C5mo4uMrTAY!lRNMNSNuB&+$~srZp0A@iZhTE772Gua@YdbRK z?j`Z?D?lfqa-md<=()*8(3KugB##$a z)6V4PkLffJOZKNlf8~$5`!&g+4b{pJ z4FT&T$Ctb4a5NDQ5yk~fiH7i%z{|%@4do}AJZaFK^(s5rpjE?h<~^*3!Hz&w@j zxG1W7m05%hcb(RGW&hMZ{k#y6F4O$#*Om-ZSfRAsAnCvm&hY19Tnv{$DzdwRFlSu_ zE7T4ZMG7l9yE zH1cfIqzkQg(NZd5=ThQ&D#~evkgplgJvVCrjrp~g?rX3=#Vw&9WB?87om+Xm{tQ5x zYi_9DHoJSyB9#{J{}flY>^)}$qd4M2WK1Ln%-@itasrDUYai&7_k3qe&vrxGF^*y3 z9R5;%Mn4J|wR|KX<=nZ&FPl(+#LXkdUU2c`W7p)l~t4>p7PtJ0dL0;wN_C@?GgpJO1rE4r99*he8EQmMR z1y(1X3Hk5){$(~f;IuANF?cr6+RpmD8a&j?(%koP2VAV9G zxXzRYK3^YD=`;)I!q;wLVFkx!#wC2RwVt3TX3cWxQ?mG$DV5{&4xIW#cRYJ=#;)QSPJ9iY@mQu6s>4|zka6wJ4Y%gQVn)*UPjFaiTg|A+ZOU znD9y^85h{%Im@df+tTGYdX7pToNK?2tBYj(Jrr28t@AWz3<5E&{f9~+!xS0;RqJjh zb8sIwM=zU1n7NS;4#zvgCo5Y@0Uee&`k1Q#b3Y6ngfjbF?*%ZD;KJh;1jJ8H)5mek z>gh@fms68E4=c2V9Ux}D{_ zhj7%e(J*2ebj(~VQ!_0Vit~drgMp0hm*W>SLD}U+M0>(;+38MeF z3u-P}N~`4*yIDTo$qp9;t~t%&i_Vp}kxdh1DG7x}y$8QphDX``wU0oUKEYFve)TG+ z6%&sIpv4|z<4K~F2^aQc)B?5OL>#vJ4ZBGp5fK?u_~5DucgT;jSefNiT(5b_A|w3{ zVa}rW|B7Xp$7d+!0*qGsT+p}@MlmNhI@#=RWoDVAI#DXR_@wm{S*2+ajs_dhjSKZK zvB4$NEhZ3KXAEXGh0r)fBKFf<`L>NNWbbCX4YE(ZIq&EsZm88^)#7HvfzG;O!zS_H zCGXlClwT2{CK6?W^`>7rF9`4jTl7dKvOAUNPPmvyLlcv^7OX~DFUx(MXY@qr^+!VG z8U|N)J6_F^$guC+|hgU_*lIECFE(0mflvg}WP~@wY8@ko)3`tp_S{2cR{zmxltrh0+Vtq$LJPP2L|Jgm$W>tP`a( zo#wBASE5C%ygY%^fh6>7!nUZ~=1pdX(2nVbYxI$8_UrK12IfCE=3fe^Qbb_MCykC2 zU5hQ$85jLusPN@aq#AEbqQac*x$U6bl=-Y2XNS?lyBp6VkqUAO`L(>$MFLCv zp)MN2O;A&qH$q9jvH6LE;zP#EaXrdJOhp@Vj+RLh2}UKb~dh>QH|UHn}!F!HYqZT>AkyUq(uap{XtQLJQ>S^(ZA7wtnwzK>tix!BM+Ifej# zsDp;}UT}1zfp^txU~IM1dha|`eJ5btVmCHKA)iYpZ;y}LJl{eHMwMG0ySjyre=n3f zpp2ml9Ex{VHP|vuK4Rg!!R7`cV92$s8zXG5*Jd6(Gf1tm>B^y||BhS{gLy)#>Ie31 zNVkFp-sG}dfc0Q!O}=V46i8o7t+pLPdD2Gx8*`Dbyl}}q7AF&JWUof5v#LB)Wl*6d zh}B%xmL!h8>I;#hx^h3}KH^Ag*Q?$LOT>X$ucCt?aKBu4Wlpe(;RQ$Rjemm!i(bUJ(cJsg9)Ky5$OL-J=P{e_x*~<3AuipM`mi+YqE z?};?X^wIu!{gb^)UrHnQVsxr8bC?lP4nhG;gt5gN$c>MFUW}ZQB6G1y#@T<$x8VOpr%;-amiZm>;+U&1a zl+Xck^MkExku@9M_RtE3mKB=44XQ000FZ7UO5<}o^)Se4kGvXu%v^Co9v&fr zrhw=?mcYXxtw+4W982_szSZW8SRWQZT53g#)8MvSJ~9KB7eJ^Cd+m(F?44iEXO>=f zL#yyopQUEO{%>7n4-ru}+Wc$z!a^_;?hU71^!nyFBC6xcQbI9wxIqE)AwG1iK82e& z3cuMep3w`QR78Y;ku%P zIZP7jjiuo&7G_b*h)@<%n4c=y;=uj2YqFrs6gy63?*dO$Up}|NLdez$O|D9xOeB^l?>i1uGlyHN#>M+yt`Y3l;vLP zUifnee%jrOvJ@r>y{y;Oxuu-v4Qm=eV8zZk84MBdtv!Y7iC~ z!)+j%y24mzS(q+5iR3e(cXvkQLft@&h15hb54HIgs*MmMK5e0bwyLt4#3Yl8Vd_ZI zTW(c0`Z>XShCi@J?ZZmfaO8gdk`*z*u4rMn5EKo8^K4|1Z;-e4%jXQtFJ0Lt-{c=- z4L~u-F~_&UEt%lP;z>ss6F0f#U~Y9XThqX(H5K^8`w2QR0Y6TP43trruoaV+fqB8`s2 z_ZEwqTEp4?7+b5{G?uGfCc(EN{Yo`w9_^y_6OqjuPpEBY1;KbJyeP!iE-6B7H% zfiz1}VQ|Xul3_6hbjZ zRz6lc;-G1k^_Unn2gH-QTp3dcbd(k4w7v{RU|PgF8ZG75GH@=}0jBA1%Fbsb?S+WC zEl&$~{O=j?Q_u~B1g97*;gLAE-M8y%B4jwIF$}j){G%pA;v@H5wf`SC^At~>AHMd> zH}8SlCWvbj4S;$``21*B$afd6Ci>XcfnCZmcQlaA?H-)|j6XL_;;vvYuJyXyC+iHL zVMfmc>s-omv{(64_DkWTLrRfL*)w~A3n%hC{r zKY`U(AXMao{aJ;tdDrO7EgLb9puGg|MV?aP4DZP#Kh^h@0AgPE2)ryAM9f*fab8Ca z!YYuAAt8x{GZET~E;7}w*kmhSK#!>9o(7Aj<2evxZzf|$$|?w%JR{2I^$Naa$U=Q? zU4Hdde-S8&K7_CO34i*ToWRq6agNv+cO$*fTgxmFLYZhaoJ~Tr%i_c`bfvjjmYv#k zhv>)uQj`Kt_H4j}tmikue0_1>Phhz4@jikCzUu5=&oDvF3`~Lce2KzqZzKq`+)8W` z8vZaiAaHg;t7FR5JYB&ws3yTANG_>nMHoc7HVKYXmef<+5S5CJWp*HWH{?G;lJcCr z67_UT9zAa+dp&dx<1BuY6^U*34H6e&s{VxN*6(4=NUv*5K*29w?Y9%Lqb-+(hVS|c zAXv;7Ib~&rH90JRD^)>etMvpN+qTKlQL@qWL`pvA+_@V=_&!uSp3xnu@$|Q|RoOwI zp)&y>q$BHh`C$kjWv6gaX%-mV|IN80>LwONYki;%bda!5b|J6O112;ZP;Dmgu0QA>uUTn?GM-VMegj!D@tDr8valwXX6zk5XOHX^lX<9n|b-6ct z6ZsxOB?LhK4ja6!c+tK9>gKxUBHpC25n=3vaWOl*3170)x?T80AZPLqAY2^HqG>&e zdw)z*9#}n+z8wYrUN;lSfGFkpdum7RS^4u1R5@)mvLUyK27ca4FKyjnuu(>z_pHM$ zw69Dmx|;5=5nTwNR!?JVWfCO#o@L@?ILFE~C1=h34d1*(4Fpsqz#uJ5BLxx8D1p?a zVXpqG76YOI-Vh=0h&EGx22z1!(|5X_TxQ-2uMz%OqTPJ>!=jr;bKYPZXeaSLHXq785*nbNRqeRDH6 za!CX|w}SdPOR83xA8`3d^mp+nd+s^X9AG!BQ}KPb4G<-(eE?e=IADw;wpLze7#YDSpS;BY018 zJMt_?5Hl)4k6aw2m-Y8?_Y&yZ31)D2(Np<#2k&ydM{s6E8P$Usa@q3M^9Va)`GEZh z{l9n$f8z3fKC8%8YeK=z5rJ}FBdBj9^cgTp=J0bwWzF+LowLlNM8&B}l!3V?ianL@ z9r8#NG%!_t$gS{Me|w`Uj4V9vr*GokvVf>U|7;3aKLQ=xnSgf4r_s1l4qx&IHL_=$ z4v4@DMW=x4?5iHFSd5Og02}JkUiwTleL|#+ORF}@bgf}CaAk>f+jOZc&jd;J4?BwD znFlyV;Riumg0=rA<2fzK4h`pJ;rL(hHM`i`P73j4cOY3Mg3auze}cY;-5)y-T#W4t_kuLkFo+U{l?{=pkhhdiqMesg^~0F{%!U=Gi+UmWSJOAs6Je zQ*DHbnRLubl$TzvLYBVHy=sN8O8*53-oxDWbhiK)=AfzVSC4LYYJiXw>u&M zAeyY?TehWyMcW1^4kXT742d`<2YM9p6R>W!(7gyPS&UVQRpua^>20P(~n!plU8t&!HI!TCL zCdjbr@i1G z9jfAC)|LaxC{$-=T9+@sww~*WU|XI2zf&KEgw1p!U1Z1eD!=cK z!_@Xrf;&*WB~~7KV`8MCG-Wy|3aTIOi37Fb(=N?V-dDokS;H}u)diWB<732)9LVgj z#2EsP--kL8>lMiltNy|zB)>BIkfNfx$ak#Ml%D8>d1-AhCw@3Yy(~0cNN#fzYyO<> zlL;XaQOz&f^p(j?6>@a=s>~}yRD_YHGp@+3VbS=S^=Z^Z)AFxZl30$qkB_3OOb9c4 zq)V*gsk*m6#W`$u#S6oLn9!7M-1&dDP#Ez>K#d!tDvax`Vv$Tww(e5TyPMxy;E=jl z9)f4k3(*&2qWXlsbo9dvtpT`KF|f2W9oLMvv|vFK$VZ9M60teVnxx0Zm$U()0<#$5 z%9)hljO%^?^iO%N#^z`O{XR`@{gLaj8RmVM-Hk*;U8nZHQs4xeiF!0ydu(+U+Dy;< z8Da3D+5?u-Aa1J`ol5YxaatDiDZh$Dz0_1a?w=FZgEieR>t3~PZR>Ck;pN~hG{N_+ z$V1q3RCQsJW zmW$}wIb(Q9?s3+Oi?c9O4QvVvZ)|P^$h6KH`~))!=Nm~!=acTb#|z*P+-FlNSHU`a zdQG9n;u-0ue|!P(+Bd3?u_pk{v22W<6xT*kgQSMw&m1wk19ji-i1W+SfA2WP+rQZI zQ(Qnwh~820g!5*pSb??)^aPf>Rlrffd`=d_{M`a-0 z&h%@irx&e#?~l3ddm-=ofj>6+kqpY?gT%v4B@vxD1x)`e_Mt3GnkXTSi94rHfVLe% zLWqtTbjTkUO5T2=ef``CQa2Gb&1ml?bb3+3)L zk)0%*K)i}1%GApN>70Op0DRK!O&XSCus4NAU;nW@win1ltTqdv`nc@_RR@5f><08i3~|DU+~nXs2_^mUoecjm$mR)E&xF^!TZ z&nFRn)L~2FTI>eYUCqiVCvhz{?9xI>Y1-SIQ$a10r|Qg<>waBdP?y8p#l%GyPh>I5)`eeL`Q zh)|EWR$&jn7lr?(^_wys1{Uc2OX)c9lQs0E*^4yo_0#OTT5g)xA3ry2@1TeyAb$Rv z5aq>9sZIvB04BerZ&VRz%pFJ4g`E`6`4wiQC{8v+r~{%^3xJ=yI>Vn({GEK&kBA%! z3i2IuuE|vBOqLG1cxH^$$8s=->`@EEHww)T7JIRO{Y;(api#ex{u%xZ?$X))fU(6Y z(6%}y6K@l{_kCjRC_u)ru=`++_g(pD0ubk!1*2IyYeUJ14B|U60hcIJ{OgC_j1C1% zKC(bIrIuZH%S1|{G3a~LPIH~#(Nm?D(_$WDJ|Z&8Q4%t^o$FkAgBS~Lp7I0RNsQ8L z+>YOAWcR7z+i9H+C=cIqM(?k5gEbl&W5098RS&5KyCS3nxxP{t<>Eu%{H=6sQVM z+bmW#a;+IIs;0mJjrCZ;+K5i#8$%c~00>d2XfQPdk!#~U1X^$g(#4N|$M;T~;sVQy zS}GMKhk)Lx)n;u_e}k#cP(?5xi*$l{nd|i0-QT0hnLG^?4bp1XchGv|F+G+q%_b3) zYAyr|+F94M2r9k@?}4)RG32@HF1!9Tfgt1nX;^%^= zvRMKs94@U<9!VSE#o&FSc0$fwMGROnh$cSVm;Jg56+geW8`?}+4t3-P7iqA_{?v{- zgn*!NI~{$YlPF7n9g+o0j+>J>Z~S@qch3b?BAr1&as)LhZ=rdtS_)o72RH z1Q?I2an8cSr*%}hoOM}jT!+r@j7kDE0@hD4w%s&F!5sH{29cJ(ZLH-6DF7Ci`ep^@ z_s!RJu8%~h=C{68y;Vtg$a1CaE%v`6(cyEBnm(@cPw%dkL;zqg`~SI0 zfsO<{CHCg5-?QCpekM#CgPTikhEwY7zqbW!Ye!a3JoIl{9g5Ushy5Y`uNkGbN@g>v zF2?%z<-gV#435+$CUARO?6Y;@OKzrBv^g&%I0eI6n*xMO|E&Oija>wvFncwK|fBKRA z^AgA8y*5vd5H9V>(CY4>qC7zn1jat~9ce^w@DyNSHVA-6&Up%9`GhDT_`fDK$SFHd zk#o0BM(P>AdAUuD*NMs*yC_f%Ij>h?9h^$Ry{QJ+6N5fH=&Qt`;7Zuw!UN>3D0Nk& zhxa11B|u@fe>4D=eJ-EH6Rzd8$L7DrT|1_ZpZhJi!RFqGhW(BEwFXpp_v zfjEb)i(HgGs_0r|?7!bh0?#tvN@e=k{^d2J(qcT6_fjiE3;yB7OJZ2)_Wc{Mf?{&I zvCM>in=u{GavB(;>v$3H7V*0AyZVj|Xo9*%2$7Zb@pW;$67)WVH=uMw-0t*s+cLa- zzL$8=4BXiDL}*5Rz{V)-CQR)T*?ei=53fSrH^js9J~Gr8Huk%pRNwXMW^u^A@XRR0 zO%Oj(#RfJ8UrJa2R7VaiqCS8Of9BFNZ&x2sz(R*R-mG{^e`LFeZ0IzAkh#ExkH>XniSNMISJPG^Nvb$Vvxj&IMm?Wa?Vhp!iNOpRXn?vf49ar+3dwj! zuhFe7&p5T$sKwg9p06KCBr`(WuSx>Z{?}^<)A41c$4ddX=$Wd-%xBLbJ_WH@UR(R$1;d0+B8(Qwjh<{yZ$;{HnLT6E6 z6igBp2ZN3tg+kNFtxKTi8?tfEWS53UcO&A1MVx9am6~7;lEuTYA&m6#gCAV^u(<r|mQVg}?&`M%V(SS?ITJj(Os#p?gLC`~DIEt({gM+P_v@3fg z1gbd}Ln=ld6yHLPOj)1~l5M^r1;D6n1cD^(GiEhCBWU= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-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/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\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\" } 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\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \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\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \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\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\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/247/016960a4\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 03:45:02 16.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\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\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n\r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$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:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\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\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 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 CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\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 :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes 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 comment=WAN 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 cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/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 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/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.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.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=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +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 +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru 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=git.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=ros.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=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.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.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/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=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +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 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 disabled=yes +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 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/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=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 log=yes +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 walled-garden +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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 +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 +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/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 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 scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" 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="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" 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="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/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/20260416/20260416132001-Diff-Config.rsc b/MikroMaster/history/20260416/20260416132001-Diff-Config.rsc new file mode 100644 index 0000000..a365e5a --- /dev/null +++ b/MikroMaster/history/20260416/20260416132001-Diff-Config.rsc @@ -0,0 +1,8 @@ +695c695 +< \n:global CommitId \"main/247/016960a4\";\r\ +--- +> \n:global CommitId \"main/233/efe032c8\";\r\ +698c698 +< r: root, in 03:45:02 16.04.2026.\";\r\ +--- +> r: root, in 22:05:02 15.04.2026.\";\r\ -- 2.52.0